@braidlabs/core 0.5.0 → 0.7.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.
Files changed (66) hide show
  1. package/package.json +1 -1
  2. package/src/adapters/adapter.d.ts +11 -0
  3. package/src/adapters/adapter.js.map +1 -1
  4. package/src/adapters/compat-adapter.js +2 -2
  5. package/src/adapters/compat-adapter.js.map +1 -1
  6. package/src/compat/born-inert-scripts.d.ts +2 -0
  7. package/src/compat/born-inert-scripts.js +39 -0
  8. package/src/compat/born-inert-scripts.js.map +1 -1
  9. package/src/compat/cookie-partition.d.ts +25 -0
  10. package/src/compat/cookie-partition.js +79 -0
  11. package/src/compat/cookie-partition.js.map +1 -0
  12. package/src/compat/document-member-classification.js +3 -2
  13. package/src/compat/document-member-classification.js.map +1 -1
  14. package/src/compat/document-overrides.d.ts +6 -6
  15. package/src/compat/document-overrides.js +23 -0
  16. package/src/compat/document-overrides.js.map +1 -1
  17. package/src/compat/fragment-boundary.d.ts +5 -0
  18. package/src/compat/fragment-boundary.js +159 -12
  19. package/src/compat/fragment-boundary.js.map +1 -1
  20. package/src/compat/html-policy.d.ts +50 -0
  21. package/src/compat/html-policy.js +155 -0
  22. package/src/compat/html-policy.js.map +1 -0
  23. package/src/compat/realm-patches.d.ts +2 -1
  24. package/src/compat/realm-patches.js +117 -3
  25. package/src/compat/realm-patches.js.map +1 -1
  26. package/src/compat/script-execution.d.ts +24 -0
  27. package/src/compat/script-execution.js +177 -10
  28. package/src/compat/script-execution.js.map +1 -1
  29. package/src/compat/storage-partition.d.ts +47 -0
  30. package/src/compat/storage-partition.js +291 -0
  31. package/src/compat/storage-partition.js.map +1 -0
  32. package/src/compat/subresource-urls.d.ts +41 -0
  33. package/src/compat/subresource-urls.js +133 -0
  34. package/src/compat/subresource-urls.js.map +1 -0
  35. package/src/config.d.ts +28 -0
  36. package/src/config.js +24 -0
  37. package/src/config.js.map +1 -1
  38. package/src/elements/boot-gate.d.ts +47 -0
  39. package/src/elements/boot-gate.js +207 -0
  40. package/src/elements/boot-gate.js.map +1 -0
  41. package/src/elements/fragment-slot.d.ts +34 -0
  42. package/src/elements/fragment-slot.js +282 -24
  43. package/src/elements/fragment-slot.js.map +1 -1
  44. package/src/elements/late-content.d.ts +44 -0
  45. package/src/elements/late-content.js +107 -0
  46. package/src/elements/late-content.js.map +1 -0
  47. package/src/elements/prefetch.d.ts +27 -0
  48. package/src/elements/prefetch.js +100 -0
  49. package/src/elements/prefetch.js.map +1 -0
  50. package/src/elements/prerequisites.d.ts +42 -0
  51. package/src/elements/prerequisites.js +133 -0
  52. package/src/elements/prerequisites.js.map +1 -0
  53. package/src/elements/recovery.d.ts +46 -0
  54. package/src/elements/recovery.js +59 -0
  55. package/src/elements/recovery.js.map +1 -0
  56. package/src/errors.d.ts +4 -1
  57. package/src/errors.js +2 -0
  58. package/src/errors.js.map +1 -1
  59. package/src/index.d.ts +4 -1
  60. package/src/index.js +10 -1
  61. package/src/index.js.map +1 -1
  62. package/src/realm/realm-manager.js +23 -0
  63. package/src/realm/realm-manager.js.map +1 -1
  64. package/src/weave/capabilities.d.ts +35 -7
  65. package/src/weave/capabilities.js +17 -0
  66. package/src/weave/capabilities.js.map +1 -1
@@ -1,9 +1,10 @@
1
1
  /* eslint-disable @typescript-eslint/no-unsafe-function-type, prefer-rest-params --
2
2
  * ported from the matrix-tested web-fragments fork: the wrappers must forward the exact
3
3
  * original `arguments` object to native DOM methods, and accept any native function shape. */
4
- import { compatDomInsertion, compatMultiNodeDomInsertion, executeInertScript, executeInertPreloadLink, restoreScriptType, alreadyExecutedScriptsAndLinks, } from './script-execution.js';
4
+ import { compatDomInsertion, compatMultiNodeDomInsertion, executeInertScript, executeInertPreloadLink, INERT_SELECTOR, isBraidInertLink, isRunnable, markBraidInertLink, markGatewayContent, markRunnable, markStartedInPlace, restoreScriptType, alreadyExecutedScriptsAndLinks, } from './script-execution.js';
5
5
  import { removeBornInertShadowing, unwrapBornInertScriptToLive } from './born-inert-scripts.js';
6
6
  import { isDevMode } from '../config.js';
7
+ import { fragmentRootOf, subresourceUrlOverrides } from './subresource-urls.js';
7
8
  /**
8
9
  * The fragment boundary: all main-realm interception is confined here — the
9
10
  * host page's `Node`/`Element` prototypes are never touched.
@@ -43,10 +44,12 @@ const native = {
43
44
  fragmentAppend: DocumentFragment.prototype.append,
44
45
  fragmentPrepend: DocumentFragment.prototype.prepend,
45
46
  fragmentReplaceChildren: DocumentFragment.prototype.replaceChildren,
47
+ elementBefore: Element.prototype.before,
48
+ elementAfter: Element.prototype.after,
46
49
  shadowRootInnerHTML: Object.getOwnPropertyDescriptor(ShadowRoot.prototype, 'innerHTML'),
47
50
  };
48
51
  export function createFragmentBoundary(options) {
49
- const { realmDocument, shadowRoot, braidDocumentElement, abortSignal } = options;
52
+ const { realmDocument, shadowRoot, braidDocumentElement, abortSignal, htmlPolicy } = options;
50
53
  const stampedNodes = new WeakSet();
51
54
  const stampedProtos = new Map();
52
55
  const stampedProtoSet = new WeakSet();
@@ -65,10 +68,87 @@ export function createFragmentBoundary(options) {
65
68
  */
66
69
  function reviveInertScript(script) {
67
70
  unwrapBornInertScriptToLive(script);
68
- if (script.getAttribute('type') === 'inert' && !alreadyExecutedScriptsAndLinks.has(script)) {
71
+ // only a script that may run at all: one markup wrote as `type="inert"` stays exactly that
72
+ if (script.getAttribute('type') === 'inert' && !alreadyExecutedScriptsAndLinks.has(script) && isRunnable(script)) {
69
73
  restoreScriptType(script);
70
74
  }
71
75
  }
76
+ /**
77
+ * A clone carries its source's provenance, as the browser carries a script's started flag: a clone
78
+ * of a script that may run and has not yet may run, a clone of one that has run has run, and a
79
+ * clone of an inert link Braid made is Braid's. Matched by position: a deep clone has its source's
80
+ * shape. Only clones made through the boundary carry it — any other clone path (a `Range`, a
81
+ * fragment's own `DocumentFragment`) yields scripts that never run, which is the safe side.
82
+ */
83
+ function inheritProvenance(source, clone, deep) {
84
+ if (!(source instanceof Element) && !(source instanceof DocumentFragment))
85
+ return;
86
+ const select = 'script,link[rel^="inert-"]';
87
+ const sources = [...(source instanceof Element && source.matches(select) ? [source] : [])];
88
+ const clones = [...(clone instanceof Element && clone.matches(select) ? [clone] : [])];
89
+ if (deep) {
90
+ sources.push(...source.querySelectorAll(select));
91
+ clones.push(...clone.querySelectorAll(select));
92
+ }
93
+ sources.forEach((element, index) => {
94
+ const copy = clones[index];
95
+ if (!copy || copy.localName !== element.localName)
96
+ return;
97
+ if (element.localName === 'script') {
98
+ if (alreadyExecutedScriptsAndLinks.has(element))
99
+ alreadyExecutedScriptsAndLinks.add(copy);
100
+ else if (isRunnable(element))
101
+ markRunnable(copy);
102
+ }
103
+ else if (isBraidInertLink(element)) {
104
+ markBraidInertLink(copy);
105
+ }
106
+ });
107
+ if (deep)
108
+ inheritThroughTemplates(source, clone);
109
+ }
110
+ /**
111
+ * A template's content is copied with it, but no selector enters it: pair the templates up and
112
+ * carry provenance into each copied content, which can itself be instantiated later.
113
+ */
114
+ function inheritThroughTemplates(source, clone) {
115
+ const sources = [...(source instanceof Element && source.localName === 'template' ? [source] : []), ...source.querySelectorAll('template')];
116
+ const clones = [
117
+ ...(clone instanceof Element && clone.localName === 'template' ? [clone] : []),
118
+ ...(clone.querySelectorAll?.('template') ?? []),
119
+ ];
120
+ sources.forEach((template, index) => {
121
+ const copy = clones[index];
122
+ if (!copy)
123
+ return;
124
+ inheritProvenance(template.content, copy.content, true);
125
+ carryProvenanceOnClone(copy.content);
126
+ });
127
+ }
128
+ /**
129
+ * The gateway's templates hold scripts a fragment instantiates later, with
130
+ * `template.content.cloneNode(true)`. A template's content is a DocumentFragment, which the
131
+ * boundary does not stamp, so each one gets its own `cloneNode` that carries provenance — an own
132
+ * property of the fragment's DOM object, not a host prototype.
133
+ */
134
+ function carryProvenanceThroughTemplates(root) {
135
+ for (const template of root.querySelectorAll('template')) {
136
+ const content = template.content;
137
+ carryProvenanceOnClone(content);
138
+ carryProvenanceThroughTemplates(content);
139
+ }
140
+ }
141
+ function carryProvenanceOnClone(content) {
142
+ Object.defineProperty(content, 'cloneNode', {
143
+ configurable: true,
144
+ writable: true,
145
+ value: function templateContentCloneNode(deep) {
146
+ const clone = native.cloneNode.call(this, deep);
147
+ inheritProvenance(this, clone, Boolean(deep));
148
+ return clone;
149
+ },
150
+ });
151
+ }
72
152
  function prepareForInsertion(node) {
73
153
  if (node instanceof HTMLScriptElement) {
74
154
  reviveInertScript(node);
@@ -162,7 +242,9 @@ export function createFragmentBoundary(options) {
162
242
  }
163
243
  function makeHtmlParsingOverrides(innerHTMLDescriptor) {
164
244
  return {
165
- // scripts parsed from html never execute (per spec), so parsing only needs stamp propagation
245
+ // Scripts parsed from html never execute (per spec), so parsing only needs stamp propagation.
246
+ // A fragment with an HTML policy has the markup parsed and cleaned first (`html-policy.ts`),
247
+ // and the result inserted natively, so the write means what the native setter would have.
166
248
  innerHTML: {
167
249
  configurable: true,
168
250
  enumerable: true,
@@ -170,7 +252,20 @@ export function createFragmentBoundary(options) {
170
252
  return innerHTMLDescriptor.get.call(this);
171
253
  },
172
254
  set(value) {
173
- innerHTMLDescriptor.set.call(this, value);
255
+ // a shadow root's markup is parsed with its host for context, as the native setter does
256
+ const context = this instanceof ShadowRoot ? this.host : this;
257
+ const cleaned = htmlPolicy?.filter(value === null ? '' : value, context, 'innerHTML');
258
+ if (cleaned) {
259
+ // a template's markup is its content, not its children
260
+ const target = this instanceof HTMLTemplateElement ? this.content : this;
261
+ if (target instanceof Element)
262
+ native.elementReplaceChildren.call(target, cleaned);
263
+ else
264
+ native.fragmentReplaceChildren.call(target, cleaned);
265
+ }
266
+ else {
267
+ innerHTMLDescriptor.set.call(this, value);
268
+ }
174
269
  stampTree(this);
175
270
  },
176
271
  },
@@ -193,10 +288,35 @@ export function createFragmentBoundary(options) {
193
288
  configurable: true,
194
289
  writable: true,
195
290
  value: function boundaryInsertAdjacentHTML(position, text) {
196
- const result = native.insertAdjacentHTML.call(this, position, text);
197
291
  const lowercasePosition = String(position).toLowerCase();
198
- stampTree(lowercasePosition === 'afterbegin' || lowercasePosition === 'beforeend' ? this : this.parentNode ?? this);
199
- return result;
292
+ const outside = lowercasePosition === 'beforebegin' || lowercasePosition === 'afterend';
293
+ const inside = lowercasePosition === 'afterbegin' || lowercasePosition === 'beforeend';
294
+ const parent = this.parentNode;
295
+ // the native method's context and errors, so a policy changes nothing but what is removed:
296
+ // outside the element, its parent is the context, or a <body> when the parent is no element
297
+ const context = inside
298
+ ? this
299
+ : parent instanceof Element
300
+ ? parent
301
+ : this.ownerDocument.createElement('body');
302
+ const cleaned = htmlPolicy && (inside || (outside && parent && parent.nodeType !== Node.DOCUMENT_NODE))
303
+ ? htmlPolicy.filter(text, context, 'insertAdjacentHTML')
304
+ : null;
305
+ if (cleaned) {
306
+ if (lowercasePosition === 'beforebegin')
307
+ native.elementBefore.call(this, cleaned);
308
+ else if (lowercasePosition === 'afterbegin')
309
+ native.elementPrepend.call(this, cleaned);
310
+ else if (lowercasePosition === 'beforeend')
311
+ native.elementAppend.call(this, cleaned);
312
+ else
313
+ native.elementAfter.call(this, cleaned);
314
+ }
315
+ else {
316
+ // also what throws for an unknown position, or outside an element with no parent
317
+ native.insertAdjacentHTML.call(this, position, text);
318
+ }
319
+ stampTree(inside ? this : this.parentNode ?? this);
200
320
  },
201
321
  },
202
322
  cloneNode: {
@@ -204,6 +324,7 @@ export function createFragmentBoundary(options) {
204
324
  writable: true,
205
325
  value: function boundaryCloneNode(deep) {
206
326
  const clone = native.cloneNode.call(this, deep);
327
+ inheritProvenance(this, clone, Boolean(deep));
207
328
  stampTree(clone);
208
329
  return clone;
209
330
  },
@@ -229,6 +350,15 @@ export function createFragmentBoundary(options) {
229
350
  },
230
351
  ...makeHtmlParsingOverrides(native.elementInnerHTML),
231
352
  };
353
+ /**
354
+ * What a URL set from fragment script resolves against, read when it is set: the namespace from
355
+ * the realm's base, and the fragment's own `<base href>` from its markup — the two the gateway
356
+ * uses for the same URL in markup, so markup and script agree on every route.
357
+ */
358
+ const urlBase = () => ({
359
+ root: fragmentRootOf(realmDocument.baseURI),
360
+ baseHref: braidDocumentElement.querySelector('base[href]')?.getAttribute('href') ?? '/',
361
+ });
232
362
  function stampNode(node) {
233
363
  if (node.nodeType !== Node.ELEMENT_NODE)
234
364
  return;
@@ -241,7 +371,12 @@ export function createFragmentBoundary(options) {
241
371
  }
242
372
  let stampedProto = stampedProtos.get(proto);
243
373
  if (!stampedProto) {
244
- stampedProto = Object.create(proto, elementOverrides);
374
+ // a subresource URL the fragment's code sets resolves into its namespace, as one in its
375
+ // markup does (see subresource-urls.ts); keyed by prototype, which fixes the element type
376
+ stampedProto = Object.create(proto, {
377
+ ...elementOverrides,
378
+ ...subresourceUrlOverrides(proto, node.localName, urlBase),
379
+ });
245
380
  stampedProtos.set(proto, stampedProto);
246
381
  stampedProtoSet.add(stampedProto);
247
382
  }
@@ -279,6 +414,12 @@ export function createFragmentBoundary(options) {
279
414
  // stamp the initial fragment DOM (for pierced fragments this includes the SSR'ed content;
280
415
  // for slot-fetched fragments this is the already-inserted, neutralized content)
281
416
  stampTree(braidDocumentElement);
417
+ // that content is the gateway's: its scripts may run and its inert links are the ones it
418
+ // neutralized, and nothing of the fragment's has run yet to have written any of its own
419
+ markGatewayContent(braidDocumentElement);
420
+ carryProvenanceThroughTemplates(braidDocumentElement);
421
+ // before the observer starts, so moving them out and back is not mistaken for an insertion
422
+ markStartedInPlace(braidDocumentElement);
282
423
  /**
283
424
  * The boundary observer: activates inert scripts/preload-links that entered the fragment's
284
425
  * DOM through unstamped paths, stamps stray subtrees, and reports bypasses in dev mode.
@@ -298,18 +439,23 @@ export function createFragmentBoundary(options) {
298
439
  }
299
440
  stampTree(addedElement);
300
441
  }
442
+ // scripts that arrived by a path the boundary did not intercept were not marked started
443
+ markStartedInPlace(addedElement);
301
444
  activateInertScriptsAndLinks(addedElement);
302
445
  }
303
446
  }
304
447
  });
305
448
  function activateInertScriptsAndLinks(root) {
306
- const inertSelector = 'script[type="inert"],link[rel="inert-preload"],link[rel="inert-prefetch"],link[rel="inert-modulepreload"]';
307
449
  const candidates = [];
308
- if (root.matches(inertSelector)) {
450
+ if (root.matches(INERT_SELECTOR)) {
309
451
  candidates.push(root);
310
452
  }
311
- candidates.push(...root.querySelectorAll(inertSelector));
453
+ candidates.push(...root.querySelectorAll(INERT_SELECTOR));
312
454
  for (const candidate of candidates) {
455
+ // a script that may not run, or a marker Braid did not set, is markup the fragment wrote, and
456
+ // it stays as inert as it would be natively — see `isRunnable`
457
+ if (candidate instanceof HTMLLinkElement ? !isBraidInertLink(candidate) : !isRunnable(candidate))
458
+ continue;
313
459
  if (candidate instanceof HTMLLinkElement) {
314
460
  executeInertPreloadLink(candidate, realmDocument);
315
461
  }
@@ -329,6 +475,7 @@ export function createFragmentBoundary(options) {
329
475
  return {
330
476
  stampNode,
331
477
  stampTree,
478
+ inheritProvenance,
332
479
  disconnect: () => observer.disconnect(),
333
480
  };
334
481
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fragment-boundary.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/fragment-boundary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fragment-boundary.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/fragment-boundary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { FragmentCapabilities } from '../weave/capabilities.js';
2
+ /**
3
+ * What a compat fragment's own HTML writes may put in the page: `capabilities.html`, opt-in.
4
+ *
5
+ * The gateway already neutralizes the markup a fragment *sends*: no handler, script, `javascript:`
6
+ * frame or meta refresh in server-rendered HTML runs in the host realm. Markup a fragment's code
7
+ * *writes* at runtime has had no such treatment. `el.innerHTML = userInput` with a stray
8
+ * `<img onerror>` compiles that handler in the host page's realm, because the element is the host
9
+ * document's — an XSS in one fragment becomes script in the shell.
10
+ *
11
+ * - `'sanitize'` removes what could run, or make Braid run something: every `<script>`, `on*`
12
+ * attributes, `javascript:` URLs, frame documents from anything but http(s) (the gateway's
13
+ * allowlist), SVG animation (which can set a link's `href`), meta refresh, `<base>`, Braid's own
14
+ * elements (a written `<fragment-slot entry>` would boot a realm), and the `inert-*` links and
15
+ * `data-script-type` markers only the gateway may write.
16
+ * - `'report'` writes the markup unchanged, and warns once per distinct finding with what
17
+ * `'sanitize'` would have removed. It parses every write a second time to know, so it is for
18
+ * development and staging.
19
+ *
20
+ * **Parsing is the native parse, somewhere harmless.** The markup is parsed by the browser's own
21
+ * fragment parser, with an element of the same name and namespace as the write's target for
22
+ * context, in a document with no browsing context — where nothing loads, runs or dispatches. So a
23
+ * write into an `<svg>` yields SVG, a `<tr>` into a `<table>` gets its `<tbody>`, exactly as the
24
+ * native setter would; only then are the cleaned nodes moved into the page. They are never
25
+ * serialized and parsed again: a second parse is how sanitizers get bypassed. Writes whose result
26
+ * is only ever text — into a `<textarea>`, `<style>`, `<script>`, `<title>` — and `TrustedHTML`
27
+ * values, which the host's own policy already vetted, are passed straight to the native setter.
28
+ * Any other value is converted to a string, as the native setter would, and cleaned.
29
+ *
30
+ * Not in scope: CSS. A written `<style>`, stylesheet link or `style` attribute can still restyle or
31
+ * overlay the host page.
32
+ *
33
+ * Covered: `innerHTML` on the fragment's elements and shadow root, and `insertAdjacentHTML` — the
34
+ * sinks the fragment boundary already stamps. Not covered: `outerHTML`, `setHTMLUnsafe`,
35
+ * `Range.createContextualFragment`, markup parsed elsewhere and then inserted (`DOMParser`,
36
+ * `document.implementation`, `jQuery.parseHTML`), `document.write`, captured native setters, and DOM
37
+ * a fragment builds attribute by attribute. A custom element the host defines upgrades wherever it
38
+ * is inserted, so its tag in written markup is as capable as the element is.
39
+ */
40
+ export type HtmlPolicyMode = 'report' | 'sanitize';
41
+ export declare function resolveHtmlPolicy(capabilities: FragmentCapabilities | undefined, fragmentId: string): HtmlPolicyMode | null;
42
+ export interface HtmlPolicy {
43
+ /**
44
+ * Parses `markup` as a write into `context` through `sink`. Returns the cleaned nodes to insert
45
+ * in its place under `'sanitize'`, or null to let the native setter write `markup` as it is:
46
+ * always under `'report'` (after warning), and for writes that cannot produce markup.
47
+ */
48
+ filter(markup: unknown, context: Element, sink: string): DocumentFragment | null;
49
+ }
50
+ export declare function createHtmlPolicy(mode: HtmlPolicyMode, fragmentId: string, mainDocument: Document): HtmlPolicy;
@@ -0,0 +1,155 @@
1
+ const XHTML = 'http://www.w3.org/1999/xhtml';
2
+ /** Context elements whose fragment parse yields text only: no tag or attribute can result. */
3
+ const TEXT_ONLY_CONTEXTS = new Set(['textarea', 'title', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes', 'noscript', 'plaintext']);
4
+ /** Attributes whose value is a URL that runs on navigation or load. */
5
+ const URL_ATTRIBUTES = new Set(['href', 'src', 'action', 'formaction', 'xlink:href', 'data']);
6
+ /**
7
+ * Elements removed outright, with what they would do:
8
+ * - SVG animation, which can set an `href` to `javascript:` (DOMPurify forbids these for the same
9
+ * reason);
10
+ * - `<base>`, which re-roots how Braid resolves the fragment's own URLs;
11
+ * - Braid's own elements, which boot realms and deliver content when they connect.
12
+ */
13
+ const REMOVED_ELEMENTS = new Map([
14
+ ['animate', 'SVG animation'],
15
+ ['set', 'SVG animation'],
16
+ ['animatemotion', 'SVG animation'],
17
+ ['animatetransform', 'SVG animation'],
18
+ ['discard', 'SVG animation'],
19
+ ['base', 'a <base>'],
20
+ ['fragment-slot', 'a <fragment-slot>'],
21
+ ['braid-late', 'a <braid-late>'],
22
+ ['braid-late-end', 'a <braid-late-end>'],
23
+ ]);
24
+ /** Elements whose source is a document of its own, and the attribute that names it. */
25
+ const FRAME_SOURCES = new Map([
26
+ ['iframe', 'src'],
27
+ ['frame', 'src'],
28
+ ['embed', 'src'],
29
+ ['object', 'data'],
30
+ ]);
31
+ const MAX_WARNINGS = 50;
32
+ export function resolveHtmlPolicy(capabilities, fragmentId) {
33
+ const grant = capabilities?.html;
34
+ if (grant === undefined)
35
+ return null;
36
+ if (grant === 'report' || grant === 'sanitize')
37
+ return grant;
38
+ console.warn(`[braid:${fragmentId}] ignoring capabilities.html ${JSON.stringify(grant)}; expected "report" or "sanitize"`);
39
+ return null;
40
+ }
41
+ export function createHtmlPolicy(mode, fragmentId, mainDocument) {
42
+ const warned = new Set();
43
+ // no browsing context: nothing parsed here fetches, runs, or fires an event
44
+ const inert = mainDocument.implementation.createHTMLDocument('');
45
+ return {
46
+ filter(markup, context, sink) {
47
+ // a TrustedHTML was vetted by the host's own policy, and re-parsing it as a string here would
48
+ // be refused by that policy anyway; anything else is a string to the native setter, and here
49
+ const trustedTypes = globalThis.trustedTypes;
50
+ if (trustedTypes?.isHTML(markup))
51
+ return null;
52
+ markup = String(markup);
53
+ if (context.namespaceURI === XHTML && TEXT_ONLY_CONTEXTS.has(context.localName))
54
+ return null;
55
+ const parsingContext = inert.createElementNS(context.namespaceURI, context.localName);
56
+ parsingContext.innerHTML = markup;
57
+ const parsed = parsingContext instanceof HTMLTemplateElement ? parsingContext.content : parsingContext;
58
+ const findings = clean(parsed);
59
+ if (mode === 'report') {
60
+ for (const finding of findings) {
61
+ // keyed by what was found, not where: tag names are the writer's to choose, and a key per
62
+ // tag would let a flood of harmless ones use up the warnings before the one that matters
63
+ const key = `${sink} ${finding.kind}`;
64
+ if (warned.has(key))
65
+ continue;
66
+ if (warned.size === MAX_WARNINGS) {
67
+ warned.add(key);
68
+ console.warn(`[braid:${fragmentId}] further capabilities.html findings are not reported`);
69
+ continue;
70
+ }
71
+ if (warned.size > MAX_WARNINGS)
72
+ continue;
73
+ warned.add(key);
74
+ console.warn(`[braid:${fragmentId}] ${sink} wrote markup with ${finding.kind} on <${JSON.stringify(finding.element.slice(0, 32)).slice(1, -1)}>; ` +
75
+ `capabilities.html "sanitize" would remove it`);
76
+ }
77
+ return null;
78
+ }
79
+ const fragment = inert.createDocumentFragment();
80
+ fragment.append(...parsed.childNodes);
81
+ return fragment;
82
+ },
83
+ };
84
+ }
85
+ /** Removes what may run, and names what it removed. Mutates `root`. */
86
+ function clean(root) {
87
+ const findings = [];
88
+ const found = (kind, element) => findings.push({ kind, element });
89
+ // templates nest: their contents are separate fragments the selector does not enter
90
+ const roots = [root];
91
+ while (roots.length) {
92
+ const current = roots.pop();
93
+ for (const element of [...current.querySelectorAll('*')]) {
94
+ const name = element.localName;
95
+ const lowerName = name.toLowerCase();
96
+ // Every script, data blocks included: the compat boundary runs a `type="inert"` one in the
97
+ // realm, and a fragment's runtime markup has no need of either.
98
+ if (lowerName === 'script') {
99
+ found('a <script>', name);
100
+ element.remove();
101
+ continue;
102
+ }
103
+ const removed = REMOVED_ELEMENTS.get(lowerName);
104
+ if (removed) {
105
+ found(removed, name);
106
+ element.remove();
107
+ continue;
108
+ }
109
+ if (lowerName === 'meta' && element.getAttribute('http-equiv')?.trim().toLowerCase() === 'refresh') {
110
+ found('a meta refresh', name);
111
+ element.remove();
112
+ continue;
113
+ }
114
+ // only the gateway writes these: the boundary turns them back into live preloads in the realm
115
+ if (lowerName === 'link' && /^inert-/i.test(element.getAttribute('rel')?.trim() ?? '')) {
116
+ found('an inert-* link', name);
117
+ element.remove();
118
+ continue;
119
+ }
120
+ if (lowerName === 'template')
121
+ roots.push(element.content);
122
+ for (const attribute of [...element.attributes]) {
123
+ const attributeName = attribute.name.toLowerCase();
124
+ const attributeScheme = scheme(attribute.value);
125
+ if (/^on/.test(attributeName)) {
126
+ found(`an ${attributeName} handler`, name);
127
+ element.removeAttribute(attribute.name);
128
+ }
129
+ else if (attributeName === 'srcdoc' || attributeName === 'data-script-type') {
130
+ found(attributeName, name);
131
+ element.removeAttribute(attribute.name);
132
+ }
133
+ else if (FRAME_SOURCES.get(lowerName) === attributeName) {
134
+ // an allowlist, as the gateway's: a frame loads a document by URL, or none
135
+ if (attributeScheme !== undefined && attributeScheme !== 'http' && attributeScheme !== 'https' && attribute.value.trim().toLowerCase() !== 'about:blank') {
136
+ found(`a ${attributeScheme}: document`, name);
137
+ element.removeAttribute(attribute.name);
138
+ }
139
+ }
140
+ else if (URL_ATTRIBUTES.has(attributeName) && attributeScheme === 'javascript') {
141
+ found(`a javascript: ${attributeName}`, name);
142
+ element.removeAttribute(attribute.name);
143
+ }
144
+ }
145
+ }
146
+ }
147
+ return findings;
148
+ }
149
+ /** A URL's scheme as the URL parser reads it: tabs, newlines and leading controls ignored. */
150
+ function scheme(value) {
151
+ // eslint-disable-next-line no-control-regex
152
+ const url = value.replace(/[\t\n\r]/g, '').replace(/^[\u0000- ]+/, '').toLowerCase();
153
+ return /^([a-z][a-z0-9+.-]*):/.exec(url)?.[1];
154
+ }
155
+ //# sourceMappingURL=html-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-policy.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/html-policy.ts"],"names":[],"mappings":"AA0CA,MAAM,KAAK,GAAG,8BAA8B,CAAC;AAE7C,8FAA8F;AAC9F,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AAE9I,uEAAuE;AACvE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,CAAC,SAAS,EAAE,eAAe,CAAC;IAC5B,CAAC,KAAK,EAAE,eAAe,CAAC;IACxB,CAAC,eAAe,EAAE,eAAe,CAAC;IAClC,CAAC,kBAAkB,EAAE,eAAe,CAAC;IACrC,CAAC,SAAS,EAAE,eAAe,CAAC;IAC5B,CAAC,MAAM,EAAE,UAAU,CAAC;IACpB,CAAC,eAAe,EAAE,mBAAmB,CAAC;IACtC,CAAC,YAAY,EAAE,gBAAgB,CAAC;IAChC,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;CACzC,CAAC,CAAC;AAEH,uFAAuF;AACvF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,CAAC,QAAQ,EAAE,KAAK,CAAC;IACjB,CAAC,OAAO,EAAE,KAAK,CAAC;IAChB,CAAC,OAAO,EAAE,KAAK,CAAC;IAChB,CAAC,QAAQ,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,MAAM,UAAU,iBAAiB,CAAC,YAA8C,EAAE,UAAkB;IAClG,MAAM,KAAK,GAAY,YAAY,EAAE,IAAI,CAAC;IAC1C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC,UAAU,UAAU,gCAAgC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC3H,OAAO,IAAI,CAAC;AACd,CAAC;AAWD,MAAM,UAAU,gBAAgB,CAAC,IAAoB,EAAE,UAAkB,EAAE,YAAsB;IAC/F,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,4EAA4E;IAC5E,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAEjE,OAAO;QACL,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI;YAC1B,8FAA8F;YAC9F,6FAA6F;YAC7F,MAAM,YAAY,GAAI,UAAqE,CAAC,YAAY,CAAC;YACzG,IAAI,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9C,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACxB,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;gBAAE,OAAO,IAAI,CAAC;YAE7F,MAAM,cAAc,GAAG,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACtF,cAAc,CAAC,SAAS,GAAG,MAAgB,CAAC;YAC5C,MAAM,MAAM,GAAG,cAAc,YAAY,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;YACvG,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YAE/B,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,0FAA0F;oBAC1F,yFAAyF;oBACzF,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACtC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,SAAS;oBAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBACjC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAChB,OAAO,CAAC,IAAI,CAAC,UAAU,UAAU,uDAAuD,CAAC,CAAC;wBAC1F,SAAS;oBACX,CAAC;oBACD,IAAI,MAAM,CAAC,IAAI,GAAG,YAAY;wBAAE,SAAS;oBACzC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAChB,OAAO,CAAC,IAAI,CACV,UAAU,UAAU,KAAK,IAAI,sBAAsB,OAAO,CAAC,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;wBACnI,8CAA8C,CACjD,CAAC;gBACJ,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,QAAQ,GAAG,KAAK,CAAC,sBAAsB,EAAE,CAAC;YAChD,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YACtC,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AASD,uEAAuE;AACvE,SAAS,KAAK,CAAC,IAAgB;IAC7B,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAClF,oFAAoF;IACpF,MAAM,KAAK,GAAiB,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,2FAA2F;YAC3F,gEAAgE;YAChE,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3B,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC1B,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACrB,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,IAAI,SAAS,KAAK,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;gBACnG,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;gBAC9B,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,8FAA8F;YAC9F,IAAI,SAAS,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBACvF,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBAC/B,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,IAAI,SAAS,KAAK,UAAU;gBAAE,KAAK,CAAC,IAAI,CAAE,OAA+B,CAAC,OAAO,CAAC,CAAC;YAEnF,KAAK,MAAM,SAAS,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChD,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnD,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC9B,KAAK,CAAC,MAAM,aAAa,UAAU,EAAE,IAAI,CAAC,CAAC;oBAC3C,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC1C,CAAC;qBAAM,IAAI,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,kBAAkB,EAAE,CAAC;oBAC9E,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;oBAC3B,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC1C,CAAC;qBAAM,IAAI,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,aAAa,EAAE,CAAC;oBAC1D,2EAA2E;oBAC3E,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,MAAM,IAAI,eAAe,KAAK,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE,CAAC;wBACzJ,KAAK,CAAC,KAAK,eAAe,YAAY,EAAE,IAAI,CAAC,CAAC;wBAC9C,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;qBAAM,IAAI,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,eAAe,KAAK,YAAY,EAAE,CAAC;oBACjF,KAAK,CAAC,iBAAiB,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC9C,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8FAA8F;AAC9F,SAAS,MAAM,CAAC,KAAa;IAC3B,4CAA4C;IAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACrF,OAAO,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { CompatShadowRoot } from './metadata.js';
2
2
  import { FragmentBoundary } from './fragment-boundary.js';
3
+ import { HtmlPolicyMode } from './html-policy.js';
3
4
  import { RealmHandle } from '../realm/realm-manager.js';
4
5
  /**
5
6
  * Realm-side monkey patches: applied to the fragment's own realm window so
@@ -19,4 +20,4 @@ export interface RealmContext extends FragmentBoundary {
19
20
  */
20
21
  bootComplete(): void;
21
22
  }
22
- export declare function initializeRealmContext(realm: RealmHandle, fragmentShadowRoot: CompatShadowRoot, braidDocumentElement: HTMLElement, boundNavigation: boolean, fragmentAbortController: AbortController, sharedGlobals?: readonly string[]): RealmContext;
23
+ export declare function initializeRealmContext(realm: RealmHandle, fragmentShadowRoot: CompatShadowRoot, braidDocumentElement: HTMLElement, boundNavigation: boolean, fragmentAbortController: AbortController, sharedGlobals?: readonly string[], storagePartition?: string, htmlPolicy?: HtmlPolicyMode): RealmContext;