@barefootjs/hono 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +1 -1
- package/dist/scripts.js +1 -1
- package/package.json +1 -1
- package/src/__tests__/import-map.test.ts +11 -2
- package/src/app.ts +6 -1
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;AAE7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAQxD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACpC,CAAC,aAAa,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CAAA;CAChF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,EAAE,MAAM,GACX,MAAM,EAAE,CAWV;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,SAAS,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;IAChD,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,yBAAyB,CAAA;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;AAE7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAQxD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACpC,CAAC,aAAa,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CAAA;CAChF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,EAAE,MAAM,GACX,MAAM,EAAE,CAWV;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,SAAS,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;IAChD,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,yBAAyB,CAAA;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuBnG;AAOD,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAA;IACZ,6DAA6D;IAC7D,QAAQ,EAAE,qBAAqB,CAAA;CAChC;AAQD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAa/F;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,GAAE,gBAAqB,GAAG,iBAAiB,GAAG,IAAI,CAelF;AAID,MAAM,WAAW,wBAAwB;IACvC,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;;;OAMG;IACH,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,iBAAiB,CAanF"}
|
package/dist/app.js
CHANGED
|
@@ -91,7 +91,7 @@ function BfImportMap(props) {
|
|
|
91
91
|
};
|
|
92
92
|
const json = JSON.stringify({ imports });
|
|
93
93
|
const preloads = props.preload === false ? [] : props.externals?.preloads ?? [];
|
|
94
|
-
const links = preloads.map((href) => `<link rel="modulepreload" href="${escapeAttr(href)}">`).join("");
|
|
94
|
+
const links = preloads.map((href) => `<link rel="modulepreload" href="${escapeAttr(href)}" crossorigin>`).join("");
|
|
95
95
|
return html`<script type="importmap">${raw(json)}</script>${raw(links)}`;
|
|
96
96
|
}
|
|
97
97
|
function escapeAttr(value) {
|
package/dist/scripts.js
CHANGED
|
@@ -91,7 +91,7 @@ function BfImportMap(props) {
|
|
|
91
91
|
};
|
|
92
92
|
const json = JSON.stringify({ imports });
|
|
93
93
|
const preloads = props.preload === false ? [] : props.externals?.preloads ?? [];
|
|
94
|
-
const links = preloads.map((href) => `<link rel="modulepreload" href="${escapeAttr(href)}">`).join("");
|
|
94
|
+
const links = preloads.map((href) => `<link rel="modulepreload" href="${escapeAttr(href)}" crossorigin>`).join("");
|
|
95
95
|
return html`<script type="importmap">${raw(json)}</script>${raw(links)}`;
|
|
96
96
|
}
|
|
97
97
|
function escapeAttr(value) {
|
package/package.json
CHANGED
|
@@ -63,8 +63,17 @@ describe('BfImportMap', () => {
|
|
|
63
63
|
preloads: ['/components/form.js', 'https://esm.sh/zod@4.4.3'],
|
|
64
64
|
}
|
|
65
65
|
const html = String(BfImportMap({ base: '/components', externals }))
|
|
66
|
-
expect(html).toContain('<link rel="modulepreload" href="/components/form.js">')
|
|
67
|
-
expect(html).toContain('<link rel="modulepreload" href="https://esm.sh/zod@4.4.3">')
|
|
66
|
+
expect(html).toContain('<link rel="modulepreload" href="/components/form.js" crossorigin>')
|
|
67
|
+
expect(html).toContain('<link rel="modulepreload" href="https://esm.sh/zod@4.4.3" crossorigin>')
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
test('emits crossorigin on modulepreload so cross-origin CDN preloads are reused', () => {
|
|
71
|
+
const externals: BarefootExternalsManifest = {
|
|
72
|
+
preloads: ['https://esm.sh/zod@4.4.3'],
|
|
73
|
+
}
|
|
74
|
+
const html = String(BfImportMap({ base: '/components', externals }))
|
|
75
|
+
const match = html.match(/<link rel="modulepreload"[^>]*>/)
|
|
76
|
+
expect(match?.[0]).toContain('crossorigin')
|
|
68
77
|
})
|
|
69
78
|
|
|
70
79
|
test('preload=false suppresses modulepreload links', () => {
|
package/src/app.ts
CHANGED
|
@@ -144,8 +144,13 @@ export function BfImportMap(props: BfImportMapProps): HtmlEscapedString | Promis
|
|
|
144
144
|
const json = JSON.stringify({ imports })
|
|
145
145
|
|
|
146
146
|
const preloads = props.preload === false ? [] : props.externals?.preloads ?? []
|
|
147
|
+
// `crossorigin` is required so a cross-origin (CDN) preload's request
|
|
148
|
+
// matches the actual module `import` (always a CORS fetch); without it
|
|
149
|
+
// the browser discards the preload and re-fetches. It's harmless for
|
|
150
|
+
// same-origin module preloads, which use the same credentials mode
|
|
151
|
+
// whether or not the attribute is present. See issue #1648.
|
|
147
152
|
const links = preloads
|
|
148
|
-
.map((href) => `<link rel="modulepreload" href="${escapeAttr(href)}">`)
|
|
153
|
+
.map((href) => `<link rel="modulepreload" href="${escapeAttr(href)}" crossorigin>`)
|
|
149
154
|
.join('')
|
|
150
155
|
|
|
151
156
|
return html`<script type="importmap">${raw(json)}</script>${raw(links)}`
|