@braidlabs/core 0.6.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
@@ -7,11 +7,14 @@ import { assert } from '../utils/assert.js';
7
7
  import { installDocumentFacade } from './document-facade.js';
8
8
  import { createDocumentOverrides } from './document-overrides.js';
9
9
  import { createFragmentBoundary } from './fragment-boundary.js';
10
+ import { createHtmlPolicy } from './html-policy.js';
10
11
  import { makeScriptBornInert } from './born-inert-scripts.js';
11
12
  import { navigationBus, ensureHostNavigationSources } from './navigation-bus.js';
12
13
  import { createRealmNavigator } from './service-worker.js';
13
14
  import { installSharedGlobals } from './shared-globals.js';
14
- export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentElement, boundNavigation, fragmentAbortController, sharedGlobals = []) {
15
+ import { installStoragePartition } from './storage-partition.js';
16
+ import { nativeCookieAccessor, partitionCookie } from './cookie-partition.js';
17
+ export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentElement, boundNavigation, fragmentAbortController, sharedGlobals = [], storagePartition, htmlPolicy) {
15
18
  assert(realm.window !== null && realm.document !== null, 'attempted to patch the realm before it was ready');
16
19
  const realmWindow = realm.window;
17
20
  const realmDocument = realm.document;
@@ -31,6 +34,20 @@ export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentE
31
34
  shadowRoot: fragmentShadowRoot,
32
35
  braidDocumentElement,
33
36
  abortSignal: fragmentAbortController.signal,
37
+ ...(htmlPolicy ? { htmlPolicy: createHtmlPolicy(htmlPolicy, realm.fragmentId, mainDocument) } : {}),
38
+ });
39
+ // `document.importNode(template.content, true)` — how most libraries instantiate a template — makes
40
+ // the copy in the realm's own document, where the boundary's cloneNode does not run. The copy
41
+ // carries provenance all the same, so the gateway's template scripts still run once instantiated.
42
+ const nativeImportNode = realmDocument.importNode;
43
+ Object.defineProperty(realmDocument, 'importNode', {
44
+ configurable: true,
45
+ writable: true,
46
+ value: function importNode(node, deep) {
47
+ const imported = nativeImportNode.call(this, node, deep);
48
+ fragmentBoundary.inheritProvenance(node, imported, Boolean(deep));
49
+ return imported;
50
+ },
34
51
  });
35
52
  /** ---------------------------------------------- Window Patches ------------------------------------------------ */
36
53
  /**
@@ -75,6 +92,12 @@ export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentE
75
92
  configurable: true,
76
93
  enumerable: true,
77
94
  });
95
+ // A partitioned fragment gets Web Storage of its own instead of the host origin's. Before any
96
+ // fragment script, like every patch here; its `storage` events are translated in the proxy
97
+ // listener below, and `onstorage` is routed through it at the end of the event patches.
98
+ const partition = storagePartition
99
+ ? installStoragePartition(realmWindow, mainWindow, storagePartition, fragmentAbortController.signal)
100
+ : null;
78
101
  // dispatch events onto the shadowRoot if the event is not one of the special realm events
79
102
  const originalDispatchEvent = realmWindow.dispatchEvent.bind(realmWindow);
80
103
  realmWindow.dispatchEvent = function compatDispatchEvent(event) {
@@ -275,7 +298,7 @@ export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentE
275
298
  */
276
299
  setInternalReference(realmDocument, 'body');
277
300
  const getUnpatchedRealmDocumentCurrentScript = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(realmDocument)), 'currentScript').get.bind(realmDocument);
278
- installDocumentFacade(realmDocument, createDocumentOverrides({
301
+ const documentOverrides = createDocumentOverrides({
279
302
  realmDocument,
280
303
  mainDocument,
281
304
  braidDocumentElement,
@@ -288,7 +311,11 @@ export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentE
288
311
  stampNode: fragmentBoundary.stampNode,
289
312
  makeScriptBornInert,
290
313
  },
291
- }));
314
+ // a partitioned fragment sees its own cookies through document.cookie, as the gateway sends
315
+ // them to its endpoint
316
+ ...(storagePartition ? { cookie: partitionCookie(nativeCookieAccessor(realmDocument), storagePartition) } : {}),
317
+ });
318
+ installDocumentFacade(realmDocument, documentOverrides);
292
319
  // END> DOCUMENT PATCHES
293
320
  /** ---------------------------------------------- Event System Patches ------------------------------------------------ */
294
321
  /**
@@ -296,6 +323,10 @@ export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentE
296
323
  */
297
324
  // A list of events for which we don't want to retarget listeners as these events are dispatched in the realm.
298
325
  const realmEvents = ['load', 'popstate', 'beforeunload', 'unload'];
326
+ // events delivered natively at the realm window as well as relayed from the host (see below)
327
+ const realmWindowMessageEvents = ['message', 'messageerror'];
328
+ // the wrappers that make a `once` message listener fire once across both windows, by listener
329
+ const onceMessageListeners = new WeakMap();
299
330
  // Maps realm EventTargets (window and document) to a target in the main context
300
331
  const realmTargetToFragmentTarget = (target) => {
301
332
  switch (target) {
@@ -363,6 +394,26 @@ export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentE
363
394
  : typeof optionsOrCapture === 'object'
364
395
  ? optionsOrCapture ?? {}
365
396
  : {};
397
+ // A `once` message listener is registered on two windows (see below), and each registration
398
+ // would fire once. Wrap it so that the first delivery, from either, removes both.
399
+ if (originalListenerTarget === realmWindow && realmWindowMessageEvents.includes(eventName) && options.once) {
400
+ const capture = Boolean(options.capture);
401
+ const onceListener = function (event) {
402
+ compatRemoveEventListener.call(realmWindow, eventName, appListenerOrObject, { capture });
403
+ return typeof appListenerOrObject === 'function'
404
+ ? appListenerOrObject.call(this, event)
405
+ : appListenerOrObject.handleEvent(event);
406
+ };
407
+ let byType = onceMessageListeners.get(appListenerOrObject);
408
+ if (!byType)
409
+ onceMessageListeners.set(appListenerOrObject, (byType = new Map()));
410
+ // as natively, adding the same listener again changes nothing
411
+ if (byType.has(`${eventName}:${capture}`))
412
+ return;
413
+ byType.set(`${eventName}:${capture}`, onceListener);
414
+ compatAddEventListener.call(realmWindow, eventName, onceListener, { ...options, once: false });
415
+ return;
416
+ }
366
417
  // browsers default to passive events for the following events
367
418
  // https://dom.spec.whatwg.org/#default-passive-value
368
419
  if (!('passive' in options) &&
@@ -460,6 +511,10 @@ export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentE
460
511
  // we'll handle it once it trickles down there
461
512
  return;
462
513
  }
514
+ // a partition hears only about its own keys, named as it named them
515
+ const storageView = partition && event.type === 'storage' ? partition.adaptEvent(event) : undefined;
516
+ if (storageView === null)
517
+ return;
463
518
  // capture properties of the original event
464
519
  const originalEventProps = {
465
520
  target: event.target,
@@ -493,6 +548,12 @@ export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentE
493
548
  },
494
549
  });
495
550
  }
551
+ if (storageView) {
552
+ Object.defineProperties(eventPatch, {
553
+ key: { get: () => storageView.key },
554
+ storageArea: { get: () => storageView.storageArea },
555
+ });
556
+ }
496
557
  // splice the patched event object into the prototype chain (see compatListener above)
497
558
  Object.setPrototypeOf(event, eventPatch);
498
559
  try {
@@ -528,6 +589,12 @@ export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentE
528
589
  };
529
590
  // register the listener on the main window, document, <html>, or <body> target
530
591
  mainProxyListenerTarget.addEventListener(eventName, mainProxyListener, mainProxyListenerOptions);
592
+ // A message can land on either window: an iframe in the fragment's DOM posts to its parent,
593
+ // the host; a popup's `opener` and a self-post are the realm itself. A realm-window listener
594
+ // hears both, natively — each event is dispatched at exactly one of them, so once.
595
+ if (originalListenerTarget === realmWindow && realmWindowMessageEvents.includes(eventName)) {
596
+ originalAddEventListener.call(realmWindow, eventName, appListenerOrObject, mainProxyListenerOptions);
597
+ }
531
598
  },
532
599
  });
533
600
  const compatRemoveEventListener = new Proxy(realmWindow.EventTarget.prototype.removeEventListener, {
@@ -544,6 +611,17 @@ export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentE
544
611
  originalRemoveEventListener.call(realmWindow, eventName, appListenerOrObject, optionsOrCapture);
545
612
  return;
546
613
  }
614
+ // a `once` message listener is registered under its wrapper (see compatAddEventListener)
615
+ if (originalListenerTarget === realmWindow && realmWindowMessageEvents.includes(eventName)) {
616
+ const capture = typeof optionsOrCapture === 'boolean' ? optionsOrCapture : Boolean(optionsOrCapture?.capture);
617
+ const byType = onceMessageListeners.get(appListenerOrObject);
618
+ const wrapper = byType?.get(`${eventName}:${capture}`);
619
+ if (wrapper) {
620
+ byType.delete(`${eventName}:${capture}`);
621
+ compatRemoveEventListener.call(realmWindow, eventName, wrapper, { capture });
622
+ return;
623
+ }
624
+ }
547
625
  const appListener = typeof appListenerOrObject === 'object' ? appListenerOrObject?.handleEvent : appListenerOrObject;
548
626
  if (!appListener) {
549
627
  // this is some kind of unknown listener, possibly feature detection for passive event support
@@ -561,10 +639,46 @@ export function initializeRealmContext(realm, fragmentShadowRoot, braidDocumentE
561
639
  const modifiedArgumentsList = [eventName, compatListener, optionsOrCapture];
562
640
  Reflect.apply(originalRemoveEventListener, compatListenerTarget, modifiedArgumentsList);
563
641
  mainWindow.removeEventListener(eventName, mainProxyListener, optionsOrCapture);
642
+ if (originalListenerTarget === realmWindow && realmWindowMessageEvents.includes(eventName)) {
643
+ originalRemoveEventListener.call(realmWindow, eventName, appListenerOrObject, optionsOrCapture);
644
+ }
564
645
  },
565
646
  });
566
647
  realmWindow.addEventListener = realmDocument.addEventListener = compatAddEventListener;
567
648
  realmWindow.removeEventListener = realmDocument.removeEventListener = compatRemoveEventListener;
649
+ // `window.onmessage = fn` would natively hear only the realm window, missing every reply posted
650
+ // to the host — an auth iframe's, say. Owning the property routes it through the compat listener,
651
+ // which hears both windows (see the message registration above).
652
+ for (const eventName of realmWindowMessageEvents) {
653
+ let handler = null;
654
+ realmWindow.addEventListener(eventName, (event) => handler?.call(realmWindow, event));
655
+ Object.defineProperty(realmWindow, `on${eventName}`, {
656
+ get: () => handler,
657
+ set: (value) => {
658
+ handler = typeof value === 'function' ? value : null;
659
+ },
660
+ configurable: true,
661
+ enumerable: true,
662
+ });
663
+ }
664
+ if (partition) {
665
+ // `cookieStore` reads and writes the raw jar, around the scoped `document.cookie`; libraries
666
+ // feature-detect it and fall back to `document.cookie` when it is absent.
667
+ Object.defineProperty(realmWindow, 'cookieStore', { value: undefined, configurable: true, enumerable: true });
668
+ // The browser fires `storage` natively at every same-origin window, the realm's included, and
669
+ // a native `onstorage` handler would hear every partition's writes. Owning the property sends
670
+ // the handler through the compat listener instead, where the partition filters it.
671
+ let onstorage = null;
672
+ realmWindow.addEventListener('storage', (event) => onstorage?.call(realmWindow, event));
673
+ Object.defineProperty(realmWindow, 'onstorage', {
674
+ get: () => onstorage,
675
+ set: (handler) => {
676
+ onstorage = typeof handler === 'function' ? handler : null;
677
+ },
678
+ configurable: true,
679
+ enumerable: true,
680
+ });
681
+ }
568
682
  // END: EVENT SYSTEM PATCHES
569
683
  return Object.assign(fragmentBoundary, {
570
684
  bootComplete() {
@@ -1 +1 @@
1
- {"version":3,"file":"realm-patches.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/realm-patches.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realm-patches.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/realm-patches.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { isRunnable, markRunnable } from './born-inert-scripts.js';
1
2
  /**
2
3
  * Script execution machinery for compat fragments: any script that enters a fragment's DOM is
3
4
  * neutralized in the main document (an inert placeholder keeps the DOM shape the app expects)
@@ -47,6 +48,16 @@ export declare function attachScriptToRealm({ inertScript, execScript, realmDocu
47
48
  execScript?: HTMLScriptElement;
48
49
  realmDocument: Document;
49
50
  }): void;
51
+ export declare function isBraidInertLink(link: HTMLLinkElement): boolean;
52
+ export declare function markBraidInertLink(link: HTMLLinkElement): void;
53
+ export { isRunnable, markRunnable };
54
+ /** The marker selector: what Braid neutralizes, and the gateway too. */
55
+ export declare const INERT_SELECTOR = "script[type=\"inert\"],link[rel=\"inert-preload\"],link[rel=\"inert-prefetch\"],link[rel=\"inert-modulepreload\"]";
56
+ /**
57
+ * Marks the gateway's prepared content under `root` as Braid's: its scripts may run, its inert links
58
+ * may be revived. Template contents included, which a selector does not enter.
59
+ */
60
+ export declare function markGatewayContent(root: ParentNode): void;
50
61
  /**
51
62
  * Set the type attribute of a script element to "inert".
52
63
  *
@@ -54,6 +65,19 @@ export declare function attachScriptToRealm({ inertScript, execScript, realmDocu
54
65
  * the main document.
55
66
  */
56
67
  export declare function setInertScriptType(script: HTMLScriptElement): void;
68
+ /**
69
+ * Whether a browser would run a script of this type, as the HTML spec decides it: absent or empty is
70
+ * classic, and otherwise the type is trimmed and compared case-insensitively. Anything else is a
71
+ * data block.
72
+ */
73
+ export declare function isExecutableType(type: string | null): boolean;
74
+ /** Marks the scripts in a node about to be inserted, before it reaches the fragment's DOM. */
75
+ export declare function markStartedBeforeInsertion(root: Node): void;
76
+ /**
77
+ * Marks scripts already in the fragment's DOM — the gateway's markup, or a script that arrived by a
78
+ * path the boundary does not intercept — by moving each out and back.
79
+ */
80
+ export declare function markStartedInPlace(root: ParentNode): void;
57
81
  /**
58
82
  * Restore the original script type and erase any signs of us making the script inert.
59
83
  */
@@ -3,6 +3,7 @@
3
3
  * arbitrary pre-bound native method wrappers. */
4
4
  import { assert } from '../utils/assert.js';
5
5
  import { getInternalReference } from './metadata.js';
6
+ import { isRunnable, markRunnable } from './born-inert-scripts.js';
6
7
  /**
7
8
  * Script execution machinery for compat fragments: any script that enters a fragment's DOM is
8
9
  * neutralized in the main document (an inert placeholder keeps the DOM shape the app expects)
@@ -21,10 +22,16 @@ export function compatDomInsertion(nodeToInsert, doInsertTheNode, realmDocument)
21
22
  // if the child is a script, then append and execute it in the fragment's realm
22
23
  if (nodeToInsert instanceof HTMLScriptElement) {
23
24
  // if the child is an unattached inline script that doesn't yet have any text content, then we need to treat it in a special way
24
- if (!nodeToInsert.src && !nodeToInsert.firstChild && !nodeToInsert.parentNode) {
25
+ if (!nodeToInsert.src && !nodeToInsert.firstChild && !nodeToInsert.parentNode && isRunnable(nodeToInsert)) {
25
26
  prepareUnattachedInlineScript(nodeToInsert, realmDocument);
26
27
  return doInsertTheNode();
27
28
  }
29
+ markStartedBeforeInsertion(nodeToInsert);
30
+ // a script nothing of Braid's or the fragment's own document made, or one that has run: it
31
+ // never runs (again) anywhere — and, marked started, cannot in the host either
32
+ if (!isRunnable(nodeToInsert) || alreadyExecutedScriptsAndLinks.has(nodeToInsert)) {
33
+ return doInsertTheNode();
34
+ }
28
35
  setInertScriptType(nodeToInsert);
29
36
  const returnVal = doInsertTheNode();
30
37
  restoreScriptType(nodeToInsert);
@@ -45,6 +52,7 @@ export function compatDomInsertion(nodeToInsert, doInsertTheNode, realmDocument)
45
52
  return doInsertTheNode();
46
53
  }
47
54
  // otherwise, append the child and execute all nested scripts in the fragment's realm
55
+ markStartedBeforeInsertion(nodeToInsert);
48
56
  nestedScriptsAndLinks.forEach((element) => makeElementInert(element));
49
57
  const returnVal = doInsertTheNode();
50
58
  nestedScriptsAndLinks.forEach((element) => restoreElement(element));
@@ -67,6 +75,9 @@ export function compatMultiNodeDomInsertion(nodes, doInsertTheNodes, realmDocume
67
75
  }
68
76
  const scriptsAndLinks = [];
69
77
  for (const node of nodes) {
78
+ if (typeof node !== 'string' && !(node instanceof HTMLScriptElement && !node.src && !node.firstChild && !node.parentNode && isRunnable(node))) {
79
+ markStartedBeforeInsertion(node);
80
+ }
70
81
  if (typeof node === 'string') {
71
82
  console.warn('Braid compat: string arguments to append/prepend/replaceChildren/replaceWith are not supported and could result in incorrect script execution. Inserted string: ', node);
72
83
  continue;
@@ -75,7 +86,7 @@ export function compatMultiNodeDomInsertion(nodes, doInsertTheNodes, realmDocume
75
86
  patchSpecialHtmlElement(node, realmDocument);
76
87
  }
77
88
  if (node instanceof HTMLScriptElement) {
78
- if (!node.src && !node.firstChild && !node.parentNode) {
89
+ if (!node.src && !node.firstChild && !node.parentNode && isRunnable(node)) {
79
90
  prepareUnattachedInlineScript(node, realmDocument);
80
91
  }
81
92
  else {
@@ -106,6 +117,7 @@ function makeElementInert(element) {
106
117
  }
107
118
  function restoreElement(element) {
108
119
  if (element instanceof HTMLScriptElement) {
120
+ // safe to give back its real type: the element was marked started before it was inserted
109
121
  restoreScriptType(element);
110
122
  }
111
123
  else {
@@ -161,10 +173,13 @@ export function executeInertScript(inertScript, realmDocument) {
161
173
  if (alreadyExecutedScriptsAndLinks.has(inertScript)) {
162
174
  return false;
163
175
  }
176
+ // nor one that was never Braid's or the fragment's own to run (see `isRunnable`)
177
+ if (!isRunnable(inertScript)) {
178
+ return false;
179
+ }
164
180
  // If the script does not have a valid type attribute, treat the script node as a data block.
165
181
  // Data blocks live in the main document as-is.
166
- const validScriptTypes = ['module', 'text/javascript', 'importmap', 'speculationrules', '', null];
167
- if (!validScriptTypes.includes(inertScript.getAttribute('type'))) {
182
+ if (!isExecutableType(inertScript.getAttribute('type'))) {
168
183
  return false;
169
184
  }
170
185
  assert(!!(inertScript.src || inertScript.textContent), `Can't execute script without src or textContent!`);
@@ -232,6 +247,34 @@ export function attachScriptToRealm({ inertScript, execScript, realmDocument, })
232
247
  getInternalReference(realmDocument, 'body').appendChild(execScript);
233
248
  alreadyExecutedScriptsAndLinks.add(inertScript);
234
249
  }
250
+ /**
251
+ * The preload links Braid itself made inert (`rel="inert-*"`), and so may bring back to life. A link
252
+ * the fragment's markup wrote with that rel is a forgery of the marker: natively it does nothing,
253
+ * and here it stays that way. Scripts are decided by provenance instead — see `isRunnable`.
254
+ */
255
+ const braidInertLinks = new WeakSet();
256
+ export function isBraidInertLink(link) {
257
+ return braidInertLinks.has(link);
258
+ }
259
+ export function markBraidInertLink(link) {
260
+ braidInertLinks.add(link);
261
+ }
262
+ export { isRunnable, markRunnable };
263
+ /** The marker selector: what Braid neutralizes, and the gateway too. */
264
+ export const INERT_SELECTOR = 'script[type="inert"],link[rel="inert-preload"],link[rel="inert-prefetch"],link[rel="inert-modulepreload"]';
265
+ /**
266
+ * Marks the gateway's prepared content under `root` as Braid's: its scripts may run, its inert links
267
+ * may be revived. Template contents included, which a selector does not enter.
268
+ */
269
+ export function markGatewayContent(root) {
270
+ const roots = [root];
271
+ while (roots.length) {
272
+ const current = roots.pop();
273
+ current.querySelectorAll('script').forEach((script) => markRunnable(script));
274
+ current.querySelectorAll('link[rel^="inert-"]').forEach((link) => markBraidInertLink(link));
275
+ current.querySelectorAll('template').forEach((template) => roots.push(template.content));
276
+ }
277
+ }
235
278
  /**
236
279
  * Set the type attribute of a script element to "inert".
237
280
  *
@@ -239,23 +282,146 @@ export function attachScriptToRealm({ inertScript, execScript, realmDocument, })
239
282
  * the main document.
240
283
  */
241
284
  export function setInertScriptType(script) {
285
+ // `.type`, so a shadowed script (born inert, or kept inert) reports its real type
242
286
  const scriptType = script.type;
287
+ // always written, never kept: markup must not supply the "real" type Braid restores. Native
288
+ // methods, because a shadowed script's own redirect `type` writes to `data-script-type`.
243
289
  if (scriptType) {
244
- script.setAttribute('data-script-type', scriptType);
290
+ nativeSetAttribute.call(script, 'data-script-type', scriptType);
291
+ }
292
+ else {
293
+ nativeRemoveAttribute.call(script, 'data-script-type');
294
+ }
295
+ nativeSetAttribute.call(script, 'type', 'inert');
296
+ }
297
+ /** The JavaScript MIME type essences a browser runs as a classic script (HTML, "JavaScript MIME type"). */
298
+ const JAVASCRIPT_MIME_TYPES = new Set([
299
+ 'application/ecmascript', 'application/javascript', 'application/x-ecmascript', 'application/x-javascript',
300
+ 'text/ecmascript', 'text/javascript', 'text/javascript1.0', 'text/javascript1.1', 'text/javascript1.2',
301
+ 'text/javascript1.3', 'text/javascript1.4', 'text/javascript1.5', 'text/jscript', 'text/livescript',
302
+ 'text/x-ecmascript', 'text/x-javascript',
303
+ ]);
304
+ /**
305
+ * Whether a browser would run a script of this type, as the HTML spec decides it: absent or empty is
306
+ * classic, and otherwise the type is trimmed and compared case-insensitively. Anything else is a
307
+ * data block.
308
+ */
309
+ export function isExecutableType(type) {
310
+ if (type === null)
311
+ return true;
312
+ const essence = type.trim().toLowerCase();
313
+ return essence === '' || essence === 'module' || essence === 'importmap' || essence === 'speculationrules' || JAVASCRIPT_MIME_TYPES.has(essence);
314
+ }
315
+ /**
316
+ * The host document never runs a fragment's script: Braid runs a fresh copy in the realm instead.
317
+ * But a host element the browser has not marked "already started" is one it will run — when it is
318
+ * next connected (the host moving the slot, a keyed list reordering, a portal), or when its type,
319
+ * text or `src` changes. So before a script is inserted into the fragment's DOM, it is marked
320
+ * started the browser's own way: connected once to a document with no browsing context, under an
321
+ * executable type and with some text. Preparing it there sets the flag, then stops because scripting
322
+ * is disabled, and the flag survives the move into the host. Its real attributes are put back, and
323
+ * it can never run in the host, whatever happens to it after.
324
+ */
325
+ let parkingDocument;
326
+ const startedInHost = new WeakSet();
327
+ function scriptsIn(root) {
328
+ if (root instanceof HTMLScriptElement)
329
+ return [root];
330
+ if (root instanceof Element || root instanceof DocumentFragment)
331
+ return [...root.querySelectorAll('script')];
332
+ return [];
333
+ }
334
+ /** Arms each script for marking: an executable type and some text, returning how to undo it. */
335
+ function primeForMarking(scripts) {
336
+ const saved = scripts.map((script) => {
337
+ const type = nativeGetAttribute.call(script, 'type');
338
+ const emptied = !script.hasAttribute('src') && script.textContent === '';
339
+ nativeSetAttribute.call(script, 'type', 'text/javascript');
340
+ if (emptied)
341
+ script.textContent = '//';
342
+ return { script, type, emptied };
343
+ });
344
+ return () => {
345
+ for (const { script, type, emptied } of saved) {
346
+ if (type === null)
347
+ nativeRemoveAttribute.call(script, 'type');
348
+ else
349
+ nativeSetAttribute.call(script, 'type', type);
350
+ if (emptied)
351
+ script.textContent = '';
352
+ startedInHost.add(script);
353
+ }
354
+ };
355
+ }
356
+ function parkingBody() {
357
+ parkingDocument ??= document.implementation.createHTMLDocument('');
358
+ return parkingDocument.body;
359
+ }
360
+ /** Marks the scripts in a node about to be inserted, before it reaches the fragment's DOM. */
361
+ export function markStartedBeforeInsertion(root) {
362
+ const scripts = scriptsIn(root).filter((script) => !startedInHost.has(script));
363
+ if (!scripts.length)
364
+ return;
365
+ const restore = primeForMarking(scripts);
366
+ const body = parkingBody();
367
+ if (root instanceof DocumentFragment) {
368
+ const children = [...root.childNodes];
369
+ nativeAppend.call(body, ...children);
370
+ nativeFragmentAppend.call(root, ...children);
371
+ }
372
+ else {
373
+ const parent = root.parentNode;
374
+ const next = root.nextSibling;
375
+ nativeAppendChild.call(body, root);
376
+ if (parent)
377
+ nativeInsertBefore.call(parent, root, next);
378
+ else
379
+ nativeRemove.call(root);
380
+ }
381
+ restore();
382
+ }
383
+ /**
384
+ * Marks scripts already in the fragment's DOM — the gateway's markup, or a script that arrived by a
385
+ * path the boundary does not intercept — by moving each out and back.
386
+ */
387
+ export function markStartedInPlace(root) {
388
+ const scripts = [...root.querySelectorAll('script')].filter((script) => !startedInHost.has(script));
389
+ if (root instanceof HTMLScriptElement && !startedInHost.has(root))
390
+ scripts.unshift(root);
391
+ if (!scripts.length)
392
+ return;
393
+ const restore = primeForMarking(scripts);
394
+ const body = parkingBody();
395
+ for (const script of scripts) {
396
+ const parent = script.parentNode;
397
+ const next = script.nextSibling;
398
+ nativeAppendChild.call(body, script);
399
+ if (parent)
400
+ nativeInsertBefore.call(parent, script, next);
401
+ else
402
+ nativeRemove.call(script);
245
403
  }
246
- script.setAttribute('type', 'inert');
404
+ restore();
247
405
  }
406
+ const nativeAppendChild = Node.prototype.appendChild;
407
+ const nativeInsertBefore = Node.prototype.insertBefore;
408
+ const nativeRemove = Element.prototype.remove;
409
+ const nativeAppend = Element.prototype.append;
410
+ const nativeFragmentAppend = DocumentFragment.prototype.append;
248
411
  /**
249
412
  * Restore the original script type and erase any signs of us making the script inert.
250
413
  */
251
414
  export function restoreScriptType(script) {
252
- const scriptType = script.getAttribute('data-script-type');
253
- script.removeAttribute('data-script-type');
254
- script.removeAttribute('type');
415
+ const scriptType = nativeGetAttribute.call(script, 'data-script-type');
416
+ nativeRemoveAttribute.call(script, 'data-script-type');
417
+ nativeRemoveAttribute.call(script, 'type');
255
418
  if (scriptType) {
256
- script.setAttribute('type', scriptType);
419
+ nativeSetAttribute.call(script, 'type', scriptType);
257
420
  }
258
421
  }
422
+ const nativeSetAttribute = Element.prototype.setAttribute;
423
+ const nativeGetAttribute = Element.prototype.getAttribute;
424
+ const nativeRemoveAttribute = Element.prototype.removeAttribute;
259
425
  /**
260
426
  * Neutralizes the original link, so that it doesn't result in a duplicate network call.
261
427
  */
@@ -263,6 +429,7 @@ export function setInertLinkRel(link) {
263
429
  const linkRel = link.rel;
264
430
  if (linkRel) {
265
431
  link.rel = 'inert-' + linkRel;
432
+ markBraidInertLink(link);
266
433
  }
267
434
  }
268
435
  /**