@nextwebwg/htmlkit 1.0.0-alpha.55 → 1.0.0-alpha.57

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/client.js CHANGED
@@ -48,7 +48,7 @@ const loaded = async (url, signal) => {
48
48
  * component's factory, each page nested in its layout's `page` slot, with each loader's state. Every
49
49
  * layer renders, kept layouts included, so a kept layout gets its new props from its rendering.
50
50
  */
51
- async function render(runtime, payload, url) {
51
+ async function render(runtime, payload) {
52
52
  if (payload.version !== 1 || payload.layers.length === 0)
53
53
  throw new Error("HTMLKit cannot read this page payload.");
54
54
  const next = document.implementation.createHTMLDocument("");
@@ -58,16 +58,12 @@ async function render(runtime, payload, url) {
58
58
  element.setAttribute(name, value);
59
59
  return element;
60
60
  };
61
- append(next.head, "base", { href: url.href });
62
- for (const element of payload.head.elements)
63
- append(next.head, element.tag, element.attributes);
64
- if (payload.head.description !== undefined)
65
- append(next.head, "meta", { name: "description", content: payload.head.description });
61
+ if (payload.head.canonical !== undefined)
62
+ append(next.head, "link", { rel: "canonical", href: payload.head.canonical });
66
63
  for (const href of payload.styles)
67
64
  append(next.head, "link", { rel: "stylesheet", href });
68
65
  for (const src of payload.modules)
69
66
  append(next.head, "script", { type: "module", src });
70
- next.title = payload.head.title;
71
67
  next.documentElement.lang = payload.head.lang;
72
68
  // Innermost first: each layer is projected into its layout's `page` slot, as its invocation is on the server.
73
69
  const layers = [];
@@ -101,8 +97,12 @@ async function render(runtime, payload, url) {
101
97
  function navigate(runtime, { base, prefetch: policy, manifest }) {
102
98
  /** The path and query whose layers the document shows. A navigation's URL commits before its layers arrive. */
103
99
  let rendered = location.pathname + location.search;
104
- /** Head metadata from server documents. Elements that scripts add are never removed. */
105
- let owned = [...document.head.querySelectorAll("meta, link")];
100
+ /**
101
+ * The links HTMLKit's documents carry: stylesheets and an alias page's canonical link. HTML Next
102
+ * manages head declarations, marked data-component-head; elements that scripts add are never removed.
103
+ */
104
+ const shell = (head) => [...head.querySelectorAll("link:not([data-component-head])")];
105
+ let owned = shell(document.head);
106
106
  const announcer = document.createElement("div");
107
107
  announcer.id = "hk-announcer";
108
108
  announcer.setAttribute("aria-live", "polite");
@@ -194,8 +194,8 @@ function navigate(runtime, { base, prefetch: policy, manifest }) {
194
194
  const watch = () => { for (const anchor of document.querySelectorAll("a[href]"))
195
195
  visible.observe(anchor); };
196
196
  watch();
197
- const html = async (url, signal) => {
198
- const response = await loaded(url.pathname + url.search, signal);
197
+ /** A page's document, whose server markup the components adopt. */
198
+ const parse = async (response, url) => {
199
199
  if (!response.headers.get("content-type")?.startsWith("text/html"))
200
200
  throw new Error(`HTMLKit cannot render ${url.href} in place.`);
201
201
  const next = new DOMParser().parseFromString(await response.text(), "text/html");
@@ -204,6 +204,28 @@ function navigate(runtime, { base, prefetch: policy, manifest }) {
204
204
  layers.push(root);
205
205
  return { next, layers, adopt: true };
206
206
  };
207
+ const html = async (url, signal) => parse(await loaded(url.pathname + url.search, signal), url);
208
+ /** A submission's redirect, for the navigation to its URL. */
209
+ let redirected;
210
+ /**
211
+ * A form's POST, as the browser would send it: its action's page, or for a redirect, the page it
212
+ * redirects to, which replaces the submission's history entry as a document's POST/redirect/GET does.
213
+ */
214
+ const submit = async (url, form, submitter, body, signal) => {
215
+ const enctype = submitter?.hasAttribute("formenctype") ? submitter.formEnctype : form?.enctype;
216
+ // An urlencoded form names each file by its name, as the browser does.
217
+ const fields = enctype === "multipart/form-data" ? body : new URLSearchParams([...body].map(([name, value]) => [name, typeof value === "string" ? value : value.name]));
218
+ const response = await fetch(url, { method: "POST", body: fields, signal });
219
+ if (response.redirected) {
220
+ // The redirect's navigation, which aborts this one, renders its page from this response, read
221
+ // first, since the abort ends its body. A page it can't render loads as any visit does.
222
+ redirected = { url: response.url, page: await parse(response, new URL(response.url)).catch(() => undefined) };
223
+ void navigation.navigate(response.url, { history: "replace" });
224
+ signal.throwIfAborted();
225
+ }
226
+ // A validation error renders the page with its status, such as 422, as a document shows it.
227
+ return parse(response, url);
228
+ };
207
229
  const payload = async (url, signal) => {
208
230
  const cached = prefetched.get(url.pathname + url.search);
209
231
  prefetched.delete(url.pathname + url.search);
@@ -212,27 +234,30 @@ function navigate(runtime, { base, prefetch: policy, manifest }) {
212
234
  // module's identity everywhere: Vite's development server adds ?import to a path, a second URL.
213
235
  await Promise.all(data.modules.map(src => import(/* @vite-ignore */ new URL(src, location.href).href)));
214
236
  signal.throwIfAborted();
215
- return render(runtime, data, url);
237
+ return render(runtime, data);
216
238
  };
217
- const visit = async (url, event) => {
239
+ const visit = async (url, event, form) => {
218
240
  const { signal } = event;
219
241
  const sheets = [];
220
242
  let committed = false;
221
243
  clearTimeout(intended);
244
+ const handed = redirected?.url === url.href ? redirected.page : undefined;
245
+ redirected = undefined;
222
246
  try {
223
247
  // The payload carries data, not markup; a page it cannot render loads from its HTML.
224
- const { next, layers, adopt: hydrate } = await payload(url, signal).catch(error => {
225
- if (signal.aborted)
226
- throw error;
227
- console.warn("HTMLKit renders this page from its HTML:", error);
228
- return html(url, signal);
229
- });
248
+ const { next, layers, adopt: hydrate } = await (handed !== undefined ? handed :
249
+ event.formData !== null ? submit(url, form, event.sourceElement, event.formData, signal) : payload(url, signal).catch(error => {
250
+ if (signal.aborted)
251
+ throw error;
252
+ console.warn("HTMLKit renders this page from its HTML:", error);
253
+ return html(url, signal);
254
+ }));
230
255
  if (layers.length === 0 || layer(document, 0) === null)
231
256
  throw new Error(`HTMLKit cannot render ${url.href} in place: it has no layers.`);
232
- // Head metadata both documents share stays; the rest is removed or added at the swap.
257
+ // Links both documents share stay; the rest are removed or added at the swap.
233
258
  const kept = new Set();
234
259
  const added = [];
235
- for (const element of next.head.querySelectorAll("meta, link")) {
260
+ for (const element of shell(next.head)) {
236
261
  const same = owned.find(candidate => !kept.has(candidate) && candidate.isEqualNode(element));
237
262
  if (same === undefined)
238
263
  added.push(element);
@@ -247,7 +272,8 @@ function navigate(runtime, { base, prefetch: policy, manifest }) {
247
272
  const loading = sheets.map(sheet => new Promise(done => { sheet.addEventListener("load", done); sheet.addEventListener("error", done); }));
248
273
  document.head.append(...sheets);
249
274
  // The next page's components register before its DOM arrives; a conflicting one falls back below.
250
- const modules = [...next.head.querySelectorAll('script[type="module"][src]')].map(script => import(/* @vite-ignore */ script.src));
275
+ // Resolved against the page's URL: the next document has no <base>, which base-uri 'none' forbids.
276
+ const modules = [...next.head.querySelectorAll('script[type="module"][src]')].map(script => import(/* @vite-ignore */ new URL(script.getAttribute("src"), url).href));
251
277
  await Promise.all([...loading, ...modules]);
252
278
  const commit = () => {
253
279
  signal.throwIfAborted();
@@ -257,7 +283,6 @@ function navigate(runtime, { base, prefetch: policy, manifest }) {
257
283
  element.remove();
258
284
  document.head.append(...added.filter(element => !sheets.includes(element)));
259
285
  owned = [...kept, ...added];
260
- document.title = next.title;
261
286
  document.documentElement.lang = next.documentElement.lang;
262
287
  // Layouts persist while each depth renders the same component: they keep their DOM, state,
263
288
  // and controllers, and take the new rendering's props. The page layer is always replaced.
@@ -272,10 +297,11 @@ function navigate(runtime, { base, prefetch: policy, manifest }) {
272
297
  if (hydrate)
273
298
  adopt(layers[index]);
274
299
  rendered = url.pathname + url.search;
275
- announcer.textContent = document.title;
276
300
  watch();
277
301
  };
278
302
  signal.throwIfAborted();
303
+ // The swap disconnects the old page and connects the new one, and HTML Next reconciles the head
304
+ // once in the microtasks after it, which a view transition's update includes.
279
305
  if (typeof document.startViewTransition !== "function" || !transitions(document.styleSheets))
280
306
  commit();
281
307
  else
@@ -285,6 +311,9 @@ function navigate(runtime, { base, prefetch: policy, manifest }) {
285
311
  event.scroll();
286
312
  else
287
313
  scrollTo(...saved);
314
+ // The next task, when the head holds the new page's title, announces it.
315
+ await new Promise(done => setTimeout(done));
316
+ announcer.textContent = document.title;
288
317
  }
289
318
  catch (error) {
290
319
  if (!committed)
@@ -292,7 +321,8 @@ function navigate(runtime, { base, prefetch: policy, manifest }) {
292
321
  sheet.remove();
293
322
  if (signal.aborted)
294
323
  return;
295
- // Anything this document cannot render in place loads as a document instead.
324
+ // Anything this document cannot render in place loads as a document instead. A submission's
325
+ // URL loads with GET, so a failed render never sends its form twice.
296
326
  console.error(error);
297
327
  location.reload();
298
328
  }
@@ -300,18 +330,38 @@ function navigate(runtime, { base, prefetch: policy, manifest }) {
300
330
  // ponytail: WebKit 26.6 sometimes restores no position for an intercepted back or forward
301
331
  // navigation, so HTMLKit records where each entry was left. Other scrolling stays native.
302
332
  const positions = new Map();
333
+ // While a navigation renders in place: data-hk-navigating on <html>, and on a submitting form,
334
+ // data-hk-submitting and aria-busy. Only the latest navigation clears <html>'s.
335
+ let latest = 0;
303
336
  navigation.addEventListener("navigate", event => {
304
337
  if (navigation.currentEntry !== null)
305
338
  positions.set(navigation.currentEntry.key, [scrollX, scrollY]);
306
339
  const url = new URL(event.destination.url);
307
- // Reloads, downloads, form posts, fragment and history.pushState changes, and other documents
308
- // stay native. Modified clicks and link targets open other browsing contexts without this event.
309
- if (!event.canIntercept || event.navigationType === "reload" || event.downloadRequest !== null || event.formData !== null ||
310
- !local(url, event.sourceElement) || event.destination.sameDocument && (event.navigationType !== "traverse" || url.pathname + url.search === rendered))
340
+ const source = event.sourceElement;
341
+ // A submission's source is its submitter, or the form itself without one.
342
+ const form = event.formData === null ? undefined : source instanceof HTMLFormElement ? source : source?.form ?? undefined;
343
+ // Reloads, downloads, fragment and history.pushState changes, and other documents stay native.
344
+ // Modified clicks and link and form targets open other browsing contexts without this event.
345
+ if (!event.canIntercept || event.navigationType === "reload" || event.downloadRequest !== null ||
346
+ !local(url, form ?? source) || event.destination.sameDocument && (event.navigationType !== "traverse" || url.pathname + url.search === rendered))
311
347
  return;
312
348
  // After the swap, a new entry scrolls to its fragment or the top, back and forward return to
313
349
  // where the entry was left, and focus resets as after a document load.
314
- event.intercept({ scroll: "manual", handler: () => visit(url, event) });
350
+ event.intercept({ scroll: "manual", async handler() {
351
+ const id = ++latest;
352
+ document.documentElement.setAttribute("data-hk-navigating", "");
353
+ form?.setAttribute("data-hk-submitting", "");
354
+ form?.setAttribute("aria-busy", "true");
355
+ try {
356
+ await visit(url, event, form);
357
+ }
358
+ finally {
359
+ form?.removeAttribute("data-hk-submitting");
360
+ form?.removeAttribute("aria-busy");
361
+ if (id === latest)
362
+ document.documentElement.removeAttribute("data-hk-navigating");
363
+ }
364
+ } });
315
365
  });
316
366
  }
317
367
  /** Authors animate navigation with @view-transition { navigation: auto }, as for document navigation. */
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -15,6 +15,7 @@ export declare function configure(options: ApplicationOptions): {
15
15
  origin: string;
16
16
  outDir: string;
17
17
  prefetch: import("./types.js").PrefetchPolicy;
18
+ csp: false | import("./types.js").ContentSecurityPolicyOptions;
18
19
  };
19
20
  /** Plugins' named layouts, kept apart from the site's: a site's app/layouts/<name>.html wins over them. */
20
21
  export declare const pluginLayouts: unique symbol;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEhF;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,SAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAalF;AAED,qBAAa,YAAa,SAAQ,KAAK;IACR,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;IAArD,YAAY,OAAO,EAAE,MAAM,EAAW,MAAM,CAAC,EAAE,MAAM,YAAA,EAGpD;CACF;AACD,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAG7D;AACD,wBAAgB,SAAS,CAAC,OAAO,EAAE,kBAAkB;;;;;;EAoBpD;AAED,2GAA2G;AAC3G,eAAO,MAAM,aAAa,eAAkC,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG;IAAE,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;CAAE,CAAC;AAGrH,yHAAyH;AACzH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgB1F;AAED,gFAAgF;AAChF,wBAAsB,OAAO,CAAC,IAAI,SAAS,YAAY,GAAG,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAC3G,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CASzE;AAED,2FAA2F;AAC3F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM;;;IAGrC;AAED,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAE9F"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEhF;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,SAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAalF;AAED,qBAAa,YAAa,SAAQ,KAAK;IACR,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;IAArD,YAAY,OAAO,EAAE,MAAM,EAAW,MAAM,CAAC,EAAE,MAAM,YAAA,EAGpD;CACF;AACD,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAG7D;AACD,wBAAgB,SAAS,CAAC,OAAO,EAAE,kBAAkB;;;;;;;EAoBpD;AAED,2GAA2G;AAC3G,eAAO,MAAM,aAAa,eAAkC,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG;IAAE,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;CAAE,CAAC;AAGrH,yHAAyH;AACzH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgB1F;AAED,gFAAgF;AAChF,wBAAsB,OAAO,CAAC,IAAI,SAAS,YAAY,GAAG,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAC3G,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CASzE;AAED,2FAA2F;AAC3F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM;;;IAGrC;AAED,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAE9F"}
package/dist/config.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { isAbsolute, posix, relative, resolve, sep } from "node:path";
3
+ import { checkPolicyOptions } from "./csp.js";
3
4
  /**
4
5
  * The options htmlkit.config.ts (or .js) at root exports by default, loaded through Vite as the CLI
5
6
  * loads them; {} without a config file.
@@ -61,7 +62,7 @@ export function configure(options) {
61
62
  throw new HtmlKitError('linkCheck must be "error" or "warn".');
62
63
  if (!["undefined", "boolean", "string"].includes(typeof options.robots))
63
64
  throw new HtmlKitError("robots must be true, false, or the text of robots.txt.");
64
- return { root, base, origin: origin.origin, outDir, prefetch };
65
+ return { root, base, origin: origin.origin, outDir, prefetch, csp: checkPolicyOptions(options.csp) };
65
66
  }
66
67
  /** Plugins' named layouts, kept apart from the site's: a site's app/layouts/<name>.html wins over them. */
67
68
  export const pluginLayouts = Symbol("htmlkit.pluginLayouts");
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/csp.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ import type { ComponentDefinition } from "@nextwebwg/html-next";
2
+ import type { ContentSecurityPolicyOptions, RenderedPolicy } from "./types.js";
3
+ /** The csp option checked: `false`, or sources per directive in CSP's own grammar. */
4
+ export declare function checkPolicyOptions(csp: unknown): ContentSecurityPolicyOptions | false;
5
+ /** A classic inline script's CSP hash source. */
6
+ export declare function scriptHash(script: string): string;
7
+ /**
8
+ * The site's policy, which every page carries: script-src with 'self' for HTMLKit's own modules and
9
+ * controllers, the origin of each script any component of the site declares, and the hash of each
10
+ * inline head script; object-src and base-uri 'none'; then the csp option's sources, added to each
11
+ * directive. One policy keeps client navigation in place, since a document keeps the policy it loaded
12
+ * with. Undefined with `csp: false`.
13
+ */
14
+ export declare function sitePolicy(csp: ContentSecurityPolicyOptions | false, definitions: readonly ComponentDefinition[], scripts: readonly string[]): RenderedPolicy | undefined;
15
+ /** The header that delivers the policy. */
16
+ export declare function policyHeader(policy: RenderedPolicy): string;
17
+ /**
18
+ * The csp option for the development server: what Vite needs beside 'self', which already covers its
19
+ * client and modules. Its HMR WebSocket needs connect-src, and the styles it injects for CSS a
20
+ * module imports need style-src 'unsafe-inline', each only where the policy restricts it.
21
+ */
22
+ export declare function developmentPolicyOptions(csp: ContentSecurityPolicyOptions | false, socket: string): ContentSecurityPolicyOptions | false;
23
+ //# sourceMappingURL=csp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csp.d.ts","sourceRoot":"","sources":["../src/csp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,KAAK,EAAE,4BAA4B,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAK/E,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,4BAA4B,GAAG,KAAK,CAerF;AAED,iDAAiD;AACjD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,4BAA4B,GAAG,KAAK,EAAE,WAAW,EAAE,SAAS,mBAAmB,EAAE,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,GAAG,SAAS,CA0BzK;AAED,2CAA2C;AAC3C,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,4BAA4B,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,4BAA4B,GAAG,KAAK,CAQxI"}
package/dist/csp.js ADDED
@@ -0,0 +1,91 @@
1
+ import { createHash } from "node:crypto";
2
+ import { HtmlKitError } from "./config.js";
3
+ /** Directives a `<meta http-equiv>` policy ignores (CSP 3, §3.3), which only the header carries. */
4
+ const headerOnly = new Set(["frame-ancestors", "report-uri", "sandbox"]);
5
+ /** The csp option checked: `false`, or sources per directive in CSP's own grammar. */
6
+ export function checkPolicyOptions(csp) {
7
+ if (csp === undefined)
8
+ return {};
9
+ if (csp === false)
10
+ return false;
11
+ if (csp === null || typeof csp !== "object" || Array.isArray(csp))
12
+ throw new HtmlKitError("csp must be false or an object of sources per directive.");
13
+ for (const [name, value] of Object.entries(csp)) {
14
+ if (name === "reportOnly") {
15
+ if (typeof value !== "boolean")
16
+ throw new HtmlKitError("csp.reportOnly must be true or false.");
17
+ continue;
18
+ }
19
+ if (!/^[a-z][a-z-]*$/.test(name))
20
+ throw new HtmlKitError(`csp directive ${name} must be a lowercase CSP directive name, such as "script-src".`);
21
+ if (!Array.isArray(value) || !value.every(source => typeof source === "string" && /^[^\s;,]+$/.test(source))) {
22
+ throw new HtmlKitError(`csp["${name}"] must be a list of CSP source expressions, such as ["https://cdn.example"], each without spaces, semicolons, or commas.`);
23
+ }
24
+ }
25
+ return csp;
26
+ }
27
+ /** A classic inline script's CSP hash source. */
28
+ export function scriptHash(script) {
29
+ return `'sha256-${createHash("sha256").update(script).digest("base64")}'`;
30
+ }
31
+ /**
32
+ * The site's policy, which every page carries: script-src with 'self' for HTMLKit's own modules and
33
+ * controllers, the origin of each script any component of the site declares, and the hash of each
34
+ * inline head script; object-src and base-uri 'none'; then the csp option's sources, added to each
35
+ * directive. One policy keeps client navigation in place, since a document keeps the policy it loaded
36
+ * with. Undefined with `csp: false`.
37
+ */
38
+ export function sitePolicy(csp, definitions, scripts) {
39
+ if (csp === false)
40
+ return undefined;
41
+ const origins = new Set();
42
+ for (const definition of definitions) {
43
+ for (const { src } of definition.scripts ?? []) {
44
+ // A relative or root-relative script is HTMLKit's own origin; a bare one resolves through an import map.
45
+ if (!/^(?:[A-Za-z][A-Za-z\d+.-]*:|\/\/)/.test(src))
46
+ continue;
47
+ const url = URL.parse(src, "https://htmlkit.invalid/");
48
+ if (url !== null && /^https?:$/.test(url.protocol))
49
+ origins.add(url.origin);
50
+ }
51
+ }
52
+ const directives = new Map([
53
+ ["script-src", ["'self'", ...[...origins].sort(), ...scripts.map(scriptHash)]],
54
+ ["object-src", ["'none'"]],
55
+ ["base-uri", ["'none'"]],
56
+ ]);
57
+ for (const [name, sources] of Object.entries(csp)) {
58
+ if (name === "reportOnly" || !Array.isArray(sources))
59
+ continue;
60
+ const merged = directives.get(name) ?? [];
61
+ for (const source of sources)
62
+ if (!merged.includes(source))
63
+ merged.push(source);
64
+ // 'none' allows nothing only when it is a directive's one source.
65
+ directives.set(name, merged.length > 1 ? merged.filter(source => source !== "'none'") : merged);
66
+ }
67
+ const text = (entries) => entries.map(([name, sources]) => [name, ...sources].join(" ")).join("; ");
68
+ const reportOnly = csp.reportOnly === true;
69
+ return { header: text([...directives]), reportOnly, ...(reportOnly ? {} : { meta: text([...directives].filter(([name]) => !headerOnly.has(name))) }) };
70
+ }
71
+ /** The header that delivers the policy. */
72
+ export function policyHeader(policy) {
73
+ return policy.reportOnly ? "content-security-policy-report-only" : "content-security-policy";
74
+ }
75
+ /**
76
+ * The csp option for the development server: what Vite needs beside 'self', which already covers its
77
+ * client and modules. Its HMR WebSocket needs connect-src, and the styles it injects for CSS a
78
+ * module imports need style-src 'unsafe-inline', each only where the policy restricts it.
79
+ */
80
+ export function developmentPolicyOptions(csp, socket) {
81
+ if (csp === false)
82
+ return false;
83
+ const added = {};
84
+ for (const [name, source] of [["connect-src", socket], ["style-src", "'unsafe-inline'"]]) {
85
+ const sources = csp[name] ?? csp["default-src"];
86
+ if (Array.isArray(sources))
87
+ added[name] = [...sources, source];
88
+ }
89
+ return { ...csp, ...added };
90
+ }
91
+ //# sourceMappingURL=csp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csp.js","sourceRoot":"","sources":["../src/csp.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
- import type { HeadElement, RenderedHead, RenderedPage } from "./types.js";
2
- export declare const defaultHeadElements: readonly HeadElement[];
1
+ import type { RenderedHead, RenderedPage, RenderedPolicy } from "./types.js";
2
+ /**
3
+ * The application document's own head, which pages and layouts' head declarations start from: the
4
+ * viewport, which a page may replace. The charset and head scripts precede it in every document.
5
+ */
6
+ export declare const authoredHead = "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">";
3
7
  /** A page's browser delivery: stylesheet and module URLs, which the serving adapter supplies. */
4
8
  export interface PageAssets {
5
9
  readonly styles: readonly string[];
@@ -11,7 +15,7 @@ export declare function documentHTML(body: string, head: RenderedHead, assets?:
11
15
  * The page at a redirect's old URL, for static hosts without server redirects: a meta refresh and a
12
16
  * canonical link to the Location, and a plain link for readers that don't refresh.
13
17
  */
14
- export declare function redirectPage(location: string): {
18
+ export declare function redirectPage(location: string, policy?: RenderedPolicy): {
15
19
  head: RenderedHead;
16
20
  body: string;
17
21
  html: string;
@@ -31,9 +35,7 @@ export declare function pagePayload(page: Pick<RenderedPage, "status" | "head" |
31
35
  version: number;
32
36
  head: {
33
37
  lang: string;
34
- title: string;
35
- description?: string;
36
- elements: readonly HeadElement[];
38
+ canonical?: string;
37
39
  };
38
40
  styles: readonly string[];
39
41
  modules: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1E,eAAO,MAAM,mBAAmB,EAAE,SAAS,WAAW,EAGrD,CAAC;AACF,iGAAiG;AACjG,MAAM,WAAW,UAAU;IAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE;AACvG,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,GAAE,UAAwC,GAAG,MAAM,CAavH;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM;;;;EAK5C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AAYD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU;;;;;;;;;;;cAKrG"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC7E;;;GAGG;AACH,eAAO,MAAM,YAAY,6EAAyE,CAAC;AACnG,iGAAiG;AACjG,MAAM,WAAW,UAAU;IAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE;AACvG,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,GAAE,UAAwC,GAAG,MAAM,CASvH;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc;;;;EAKrE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AAYD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU;;;;;;;;;cAKrG"}
package/dist/document.js CHANGED
@@ -1,19 +1,17 @@
1
- export const defaultHeadElements = [
2
- { tag: "meta", attributes: { charset: "utf-8" } },
3
- { tag: "meta", attributes: { name: "viewport", content: "width=device-width, initial-scale=1" } },
4
- ];
1
+ /**
2
+ * The application document's own head, which pages and layouts' head declarations start from: the
3
+ * viewport, which a page may replace. The charset and head scripts precede it in every document.
4
+ */
5
+ export const authoredHead = '<meta name="viewport" content="width=device-width, initial-scale=1">';
5
6
  export function escapeHTML(value) {
6
7
  return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
7
8
  }
8
9
  export function documentHTML(body, head, assets = { styles: [], modules: [] }) {
9
- const elements = head.elements ?? defaultHeadElements;
10
- const charset = elements.filter(element => element.tag === "meta" && element.attributes.charset !== undefined);
11
- const html = (list) => list.map(element => `<${element.tag}${Object.entries(element.attributes).map(([name, value]) => ` ${name}="${escapeHTML(value)}"`).join("")}>`).join("");
12
- // Head scripts precede stylesheets, which would otherwise delay it until they load.
13
- return `<!doctype html>\n<html lang="${escapeHTML(head.lang ?? "en")}"><head>${html(charset)}` +
14
- (head.scripts ?? []).map(script => `<script>${script}</script>`).join("") + html(elements.filter(element => !charset.includes(element))) +
15
- `<title>${escapeHTML(head.title ?? "HTMLKit")}</title>` +
16
- (head.description === undefined ? "" : `<meta name="description" content="${escapeHTML(head.description)}">`) +
10
+ // Head scripts precede stylesheets, which would otherwise delay them until they load.
11
+ // The policy precedes every script it governs.
12
+ const policy = head.csp?.meta === undefined ? "" : `<meta http-equiv="Content-Security-Policy" content="${head.csp.meta.replace(/&/g, "&amp;").replace(/"/g, "&quot;")}">`;
13
+ return `<!doctype html>\n<html lang="${escapeHTML(head.lang ?? "en")}"><head><meta charset="utf-8">${policy}` +
14
+ (head.scripts ?? []).map(script => `<script>${script}</script>`).join("") + head.html +
17
15
  assets.styles.map(href => `<link rel="stylesheet" href="${escapeHTML(href)}">`).join("") +
18
16
  assets.modules.map(src => `<script type="module" src="${escapeHTML(src)}"></script>`).join("") +
19
17
  `</head><body>${body}</body></html>`;
@@ -22,9 +20,9 @@ export function documentHTML(body, head, assets = { styles: [], modules: [] }) {
22
20
  * The page at a redirect's old URL, for static hosts without server redirects: a meta refresh and a
23
21
  * canonical link to the Location, and a plain link for readers that don't refresh.
24
22
  */
25
- export function redirectPage(location) {
26
- const head = { title: "Redirecting", elements: [...defaultHeadElements,
27
- { tag: "meta", attributes: { "http-equiv": "refresh", content: `0; url=${location}` } }, { tag: "link", attributes: { rel: "canonical", href: location } }] };
23
+ export function redirectPage(location, policy) {
24
+ const head = { ...(policy === undefined ? {} : { csp: policy }), html: `${authoredHead}<meta http-equiv="refresh" content="0; url=${escapeHTML(location)}">` +
25
+ `<link rel="canonical" href="${escapeHTML(location)}"><title>Redirecting</title>` };
28
26
  const body = `<main><p>This page is now at <a href="${escapeHTML(location)}">${escapeHTML(location)}</a>.</p></main>`;
29
27
  return { head, body, html: documentHTML(body, head) };
30
28
  }
@@ -56,8 +54,8 @@ function exact(value, seen) {
56
54
  export function pagePayload(page, assets) {
57
55
  if (page.status !== 200 || !page.layers.every(layer => layer.state === undefined || exact(layer.state, new Set())))
58
56
  return undefined;
59
- const { lang = "en", title = "HTMLKit", description, elements = defaultHeadElements } = page.head;
60
- return { version: 1, head: { lang, title, ...(description === undefined ? {} : { description }), elements },
57
+ const { lang = "en", canonical } = page.head;
58
+ return { version: 1, head: { lang, ...(canonical === undefined ? {} : { canonical }) },
61
59
  styles: assets.styles, modules: assets.modules, layers: page.layers };
62
60
  }
63
61
  //# sourceMappingURL=document.js.map