Changeset 369aa60 in Klonkt for src/assets/js/mod/lib.js


Ignore:
Timestamp:
09/04/2026 11:48:29 AM (4 days ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
aa521c3
Parents:
4425cc2
Message:

Cache-busting reikt nu ook tot wat de modules zelf ophalen (shaer-724)

De bootstrap hing al ?v= aan elke module die hij zelf laadt. Twee soorten
paden ontsnapten daaraan, en /assets wordt buiten ontwikkeling een jaar
gecachet:

een import BINNEN een module is relatief, en zo\x27n specifier erft de
query niet: ./lib.js naast post.js?v=63 wordt gewoon
/assets/js/mod/lib.js. Elf modules importeren lib.js zo, en juist dat
bestand is gedeeld -- een fout erin overleefde elke MOD_V-bump.

een vendorbestand dat een module zelf ophaalt. read.js deed het goed met
?v=VENDOR_V; lib.js (mijn eigen import van gisteren) en de twee
cropper-verwijzingen in post-edit deden het niet.

Een importmap in de head lost het eerste op zonder die elf imports aan te
raken: hij vertaalt de opgeloste URL naar zijn geversioneerde vorm. MOD_V
staat daarvoor nu als EJS-variabele bovenaan de shell, zodat de importmap
en de bootstrap niet twee nummers kunnen worden. VENDOR_V staat in lib.js
en wordt door read.js en post-edit gedeeld, om dezelfde reden.

Drie toetsen die de REGEL bewaken en niet deze ene plek: elke relatieve
import tussen modules heeft een ingang in de importmap, elk vendorpad
draagt een versie, en de twee nummers zijn er een. Tegenbewijs: haal de
ingang weg of de versie eraf en precies die toets valt.

Volle suite 1248 groen.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/assets/js/mod/lib.js

    r4425cc2 r369aa60  
    8383 * aanroepers hebben al een nette terugval voor "geen WebAuthn hier".
    8484 */
     85/**
     86 * De cache-buster voor alles in /assets/vendor (shaer-724).
     87 *
     88 * Die map valt onder dezelfde max-age van een jaar als de rest van /assets, en
     89 * een vendorbestand heeft geen versie in zijn naam. Zonder query houdt een
     90 * browser die hem ooit zag hem dus een jaar vast, ook na een update van de
     91 * bibliotheek.
     92 *
     93 * EEN nummer voor de hele map, hier, en niet drie losse per module: read.js had
     94 * er al een en lib.js en post-edit.js hadden er geen, en dan is "ophogen als de
     95 * bibliotheek wijzigt" een opdracht die je op drie plekken moet onthouden. Dat
     96 * kost read.js wel een import van dit bestand op de leespagina; die is klein en
     97 * staat na de eerste pagina in de cache.
     98 */
     99export const VENDOR_V = 1;
     100
    85101export async function loadWebAuthn() {
    86102  if (window.SimpleWebAuthnBrowser) return window.SimpleWebAuthnBrowser;
    87   try { await import('/assets/vendor/simplewebauthn-browser.umd.min.js'); }
     103  try { await import(`/assets/vendor/simplewebauthn-browser.umd.min.js?v=${VENDOR_V}`); }
    88104  catch (e) { console.warn('[paid] WebAuthn-bibliotheek laadt niet:', e && e.message); }
    89105  return window.SimpleWebAuthnBrowser;
Note: See TracChangeset for help on using the changeset viewer.