@braidlabs/core 0.6.0 → 0.7.1

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 (75) 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 +291 -36
  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 +62 -15
  42. package/src/elements/fragment-slot.js +388 -26
  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/env/create-env.js +2 -1
  57. package/src/env/create-env.js.map +1 -1
  58. package/src/env/fragment-env.d.ts +6 -0
  59. package/src/errors.d.ts +4 -1
  60. package/src/errors.js +2 -0
  61. package/src/errors.js.map +1 -1
  62. package/src/index.d.ts +5 -1
  63. package/src/index.js +11 -1
  64. package/src/index.js.map +1 -1
  65. package/src/realm/realm-manager.js +23 -0
  66. package/src/realm/realm-manager.js.map +1 -1
  67. package/src/weave/capabilities.d.ts +35 -7
  68. package/src/weave/capabilities.js +17 -0
  69. package/src/weave/capabilities.js.map +1 -1
  70. package/src/weave/guest.d.ts +2 -0
  71. package/src/weave/guest.js +2 -1
  72. package/src/weave/guest.js.map +1 -1
  73. package/src/weave/messages.d.ts +24 -0
  74. package/src/weave/messages.js +22 -0
  75. package/src/weave/messages.js.map +1 -1
@@ -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":"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"}
@@ -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;
@@ -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":"AAAA;;mDAEmD;AACnD,OAAO,EAAoB,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACnH,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAoB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAsB3D,MAAM,UAAU,sBAAsB,CACpC,KAAkB,EAClB,kBAAoC,EACpC,oBAAiC,EACjC,eAAwB,EACxB,uBAAwC,EACxC,gBAAmC,EAAE;IAErC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,kDAAkD,CAAC,CAAC;IAE7G,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;IACjC,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC;IAErC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC;IAC3D,MAAM,UAAU,GAAG,YAAY,CAAC,WAAY,CAAC;IAE7C,uFAAuF;IACvF,4FAA4F;IAC5F,+FAA+F;IAC/F,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC;IAE9E;;;;OAIG;IACH,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;QAC9C,aAAa;QACb,UAAU,EAAE,kBAAkB;QAC9B,oBAAoB;QACpB,WAAW,EAAE,uBAAuB,CAAC,MAAM;KAC5C,CAAC,CAAC;IAEH,qHAAqH;IAErH;;OAEG;IACH,MAAM,kBAAkB,GAAe,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAC1G,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,CACzB,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAC5F,CAAC;IAEF,SAAS,WAAW,CAAiB,QAAa;QAChD,MAAM,wBAAwB,GAAa,UAAU,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC;QAE5F,OAAO,CACL,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC3D,CAAC,OAAO,wBAAwB,KAAK,UAAU,IAAI,QAAQ,YAAY,wBAAwB,CAAC,CACjG,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,iEAAiE;IACjE,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;gBACrD,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CACV,mCAAmC,WAAW,CAAC,IAAI,qJAAqJ,EACxM,UAAU,EACV,CAAC,EACD,eAAe,EACf,MAAM,CAAC,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CACjE,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,2CAA2C;IAE3C;;OAEG;IACH,WAAW,CAAC,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC;IACnE,WAAW,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC;IAC3D,WAAW,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;IAEvD,sGAAsG;IACtG,WAAW,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;IAErD,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,yEAAyE;IAE1I,+FAA+F;IAC/F,6FAA6F;IAC7F,+FAA+F;IAC/F,MAAM,cAAc,GAAG,oBAAoB,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACpF,gHAAgH;IAChH,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE;QAC9C,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,GAAG,EAAE,CAAC,cAAc;QACzB,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEH,0FAA0F;IAC1F,MAAM,qBAAqB,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1E,WAAW,CAAC,aAAa,GAAG,SAAS,mBAAmB,CAAC,KAAY;QACnE,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAGnB,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACpF,KAAK,MAAM,kBAAkB,IAAI,oBAAoB,EAAE,CAAC;QACtD,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,kBAAkB,EAAE;YACrD,GAAG,EAAE,SAAS,sBAAsB;gBAClC,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAAC;YACxC,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,iGAAiG;IACjG,iGAAiG;IACjG,oBAAoB,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/E,4BAA4B;IAE5B;;OAEG;IAEH,sEAAsE;IACtE,6EAA6E;IAC7E,8EAA8E;IAC9E,2CAA2C;IAC3C,MAAM,sBAAuB,SAAQ,aAAa;KAAG;IAErD;;;;;;;OAOG;IACH,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,+FAA+F;IAC/F,oCAAoC;IACpC,KAAK,MAAM,SAAS,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,CAAU,EAAE,CAAC;QAC1E,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE;YACjF,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,uBAAuB,CAAC,MAAM;SACvC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAE7C,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE;YACjD,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;gBAC5B,IAAI,OAAO,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC;oBAC9F,OAAO,UAAyB,GAAG,IAAe;wBAChD,oFAAoF;wBACpF,wFAAwF;wBACxF,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,wBAAwB,CAAC,GAAG,CAAC,QAAkB,CAAC,EAAE,CAAC;4BACnF,OAAO,OAAO,CAAC,KAAK,CAClB,OAAO,CAAC,SAAS,CAAC,YAAwB,EAC1C,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,EAC5C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC/D,CAAC;wBACJ,CAAC;wBAED,MAAM,eAAe,GAAG,GAAG,EAAE,CAC3B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAyB,CAAa,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAEnH,iFAAiF;wBACjF,4EAA4E;wBAC5E,MAAM,MAAM,GAAG,aAAa,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;wBAErE,wFAAwF;wBACxF,mFAAmF;wBACnF,UAAU,CAAC,aAAa,CAAC,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;wBACjE,OAAO,MAAM,CAAC;oBAChB,CAAC,CAAC;gBACJ,CAAC;gBAED,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;gBAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE;gBACP,GAAG;oBACD,OAAO,YAAY,CAAC;gBACtB,CAAC;aACF;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,sBAAsB,GAA6D;YACvF,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE;SACjG,CAAC;QACF,IAAI,uBAAuB,GAAG,CAAC,CAAC;QAEhC,6FAA6F;QAC7F,4FAA4F;QAC5F,4FAA4F;QAC5F,oBAAoB;QACpB,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,EAAE;YAC3C,SAAS,EAAE;gBACT,KAAK,EAAE,SAAS,yBAAyB,CAAC,KAAU,EAAE,KAAa,EAAE,GAAmB;oBACtF,IAAI,uBAAuB,KAAK,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAClE,sBAAsB,CAAC,MAAM,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC;oBAC7D,CAAC;oBACD,sBAAsB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;oBAChE,uBAAuB,EAAE,CAAC;oBAC1B,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBACtD,CAAC;aACF;YAED;;;;;eAKG;YACH,EAAE,EAAE;gBACF,KAAK,EAAE,SAAS,kBAAkB,CAAC,KAAc;oBAC/C,kFAAkF;oBAClF,mFAAmF;oBACnF,wEAAwE;oBACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;oBACrC,IAAI,KAAK,KAAK,CAAC;wBAAE,OAAO;oBAExB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACvG,IAAI,IAAI,KAAK,uBAAuB;wBAAE,OAAO;oBAE7C,uBAAuB,GAAG,IAAI,CAAC;oBAC/B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,sBAAsB,CAAC,uBAAuB,CAAC,CAAC;oBAC9E,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;oBACpD,WAAW,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBACtE,CAAC;aACF;YAED,IAAI,EAAE;gBACJ,KAAK,EAAE,SAAS,oBAAoB;oBAClC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC;aACF;YAED,OAAO,EAAE;gBACP,KAAK,EAAE,SAAS,uBAAuB;oBACrC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5B,CAAC;aACF;YAED,MAAM,EAAE;gBACN,GAAG;oBACD,OAAO,sBAAsB,CAAC,MAAM,CAAC;gBACvC,CAAC;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,yFAAyF;QACzF,uFAAuF;QACvF,qFAAqF;QACrF,sFAAsF;QACtF,wBAAwB;QACxB,MAAM,cAAc,GAAG,CAAC,CAAQ,EAAE,EAAE;YAClC,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE1G,IAAI,CAAC,YAAY,sBAAsB,EAAE,CAAC;gBACxC,OAAO;YACT,CAAC;YAED,WAAW,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC,YAAY,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACvG,CAAC,CAAC;QAEF,uFAAuF;QACvF,0EAA0E;QAC1E,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QACtG,uBAAuB,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACtE,2BAA2B,EAAE,CAAC;QAE9B,4FAA4F;QAC5F,uFAAuF;QACvF,8CAA8C;QAC9C,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE;YAClD,MAAM,EAAE,uBAAuB,CAAC,MAAM;SACvC,CAAC,CAAC;IACL,CAAC;IACD,+BAA+B;IAE/B,uHAAuH;IAEvH;;;;;;;;OAQG;IACH,oBAAoB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAE5C,MAAM,sCAAsC,GAAG,MAAM,CAAC,wBAAwB,CAC5E,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAC3D,eAAe,CACf,CAAC,GAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAE5B,qBAAqB,CACnB,aAAa,EACb,uBAAuB,CAAC;QACtB,aAAa;QACb,YAAY;QACZ,oBAAoB;QACpB,kBAAkB;QAClB,eAAe;QACf,0BAA0B,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,kBAAkB;QAC7F,iGAAiG;QACjG,gBAAgB,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,sCAAsC,EAAE,CAAC;QAC1F,QAAQ,EAAE;YACR,SAAS,EAAE,gBAAgB,CAAC,SAAS;YACrC,mBAAmB;SACpB;KACF,CAAC,CACH,CAAC;IACF,wBAAwB;IAExB,2HAA2H;IAE3H;;OAEG;IAEH,8GAA8G;IAC9G,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IAEnE,gFAAgF;IAChF,MAAM,2BAA2B,GAAG,CAAC,MAAmB,EAAe,EAAE;QACvE,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,WAAW;gBACd,OAAO,kBAAkB,CAAC;YAC5B,KAAK,aAAa;gBAChB,OAAO,oBAAoB,CAAC;YAC9B;gBACE,OAAO,MAAM,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,CAAC,MAAmB,EAAe,EAAE;QACnE,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,UAAU;gBACb,OAAO,WAAW,CAAC;YACrB,KAAK,YAAY;gBACf,OAAO,aAAa,CAAC;YACvB,KAAK,YAAY,CAAC,eAAe;gBAC/B,OAAO,aAAa,CAAC,eAAe,CAAC;YACvC,KAAK,YAAY,CAAC,IAAI;gBACpB,OAAO,aAAa,CAAC,IAAI,CAAC;YAC5B;gBACE,OAAO,CAAC,IAAI,CAAC,oDAAoD,EAAE,MAAM,CAAC,CAAC;gBAC3E,OAAO,MAAM,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,0BAA0B,GAAG,CAAC,MAAmB,EAAe,EAAE;QACtE,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,kBAAkB;gBACrB,OAAO,UAAU,CAAC;YACpB,KAAK,oBAAoB;gBACvB,OAAO,YAAY,CAAC;YACtB,KAAK,aAAa,CAAC,eAAe;gBAChC,OAAO,YAAY,CAAC,eAAe,CAAC;YACtC,KAAK,aAAa,CAAC,IAAI;gBACrB,OAAO,YAAY,CAAC,IAAI,CAAC;YAC3B;gBACE,OAAO,CAAC,IAAI,CAAC,wDAAwD,EAAE,MAAM,CAAC,CAAC;gBAC/E,OAAO,MAAM,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,2FAA2F;IAC3F,kFAAkF;IAClF,MAAM,sBAAsB,GAAG,IAAI,OAAO,EAGvC,CAAC;IAEJ,oEAAoE;IACpE,wDAAwD;IACxD,MAAM,sBAAsB,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAgB,EAAE;QAC3F,KAAK,CACH,wBAAwB,EACxB,sBAAsB,EACtB,aAAoF;YAEpF,MAAM,CAAC,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,GAAG,aAAa,CAAC;YAEzE,qDAAqD;YACrD,IAAI,CAAC,mBAAmB;gBAAE,OAAO;YAEjC,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC5B,uFAAuF;gBACvF,sBAAsB,GAAG,WAAW,CAAC;YACvC,CAAC;YAED,6GAA6G;YAC7G,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,sBAAsB,KAAK,WAAW,EAAE,CAAC;gBAC9E,wBAAwB,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;gBAC7F,OAAO;YACT,CAAC;YAED,+BAA+B;YAC/B,MAAM,OAAO,GACX,OAAO,gBAAgB,KAAK,SAAS;gBACnC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE;gBAC/B,CAAC,CAAC,OAAO,gBAAgB,KAAK,QAAQ;oBACpC,CAAC,CAAC,gBAAgB,IAAI,EAAE;oBACxB,CAAC,CAAC,EAAE,CAAC;YAEX,8DAA8D;YAC9D,qDAAqD;YACrD,IACE,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC;gBACvB,CAAC,SAAS,KAAK,YAAY;oBACzB,SAAS,KAAK,YAAY;oBAC1B,SAAS,KAAK,WAAW;oBACzB,SAAS,KAAK,OAAO,CAAC;gBACxB,CAAC,sBAAsB,KAAK,WAAW;oBACrC,sBAAsB,KAAK,aAAa;oBACxC,sBAAsB,KAAK,aAAa,CAAC,eAAe;oBACxD,sBAAsB,KAAK,aAAa,CAAC,IAAI,CAAC,EAChD,CAAC;gBACD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YACzB,CAAC;YAED,wBAAwB;YACxB,MAAM,WAAW,GACf,OAAO,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC;YAEnG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,sFAAsF;gBACtF,0CAA0C;gBAC1C,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAC;gBAC/E,OAAO;YACT,CAAC;YAED,0FAA0F;YAC1F,kEAAkE;YAClE,IAAI,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,sBAAsB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAE1F,IAAI,CAAC,cAAc,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC1C,6BAA6B;gBAC7B,cAAc,GAAG,SAAS,cAAc,CAAC,KAAY;oBACnD,2CAA2C;oBAC3C,MAAM,kBAAkB,GAAG;wBACzB,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,aAAa,EAAE,KAAK,CAAC,aAAa;wBAClC,+EAA+E;wBAC/E,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE;qBACnC,CAAC;oBAEF,sFAAsF;oBACtF,IAAI,kBAAkB,GAAG,CAAC,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;oBAE9D,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,KAAK,kBAAkB,EAAE,CAAC;wBACpF,kBAAkB,GAAG,CAAC,WAAW,CAAC,CAAC;oBACrC,CAAC;yBAAM,CAAC;wBACN,kBAAkB,CAAC,MAAM;wBACvB,sDAAsD;wBACtD,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAC7D,QAAQ;wBACR,wDAAwD;wBACxD,aAAa,EACb,WAAW,CACZ,CAAC;oBACJ,CAAC;oBAED,kBAAkB;oBAClB,MAAM,sBAAsB,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE;wBACvD,aAAa,EAAE;4BACb,GAAG;gCACD,OAAO,sBAAsB,CAAC;4BAChC,CAAC;yBACF;wBAED,YAAY,EAAE;4BACZ,KAAK,EAAE,GAAG,EAAE;gCACV,OAAO,kBAAkB,CAAC;4BAC5B,CAAC;yBACF;wBAED,MAAM,EAAE;4BACN,GAAG;gCACD,OAAO,kBAAkB,CAAC,MAAM,KAAK,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC;4BACpG,CAAC;yBACF;qBACF,CAAC,CAAC;oBAEH,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;wBAC7B,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE;4BACxC,GAAG;gCACD,OAAO,WAAW,CAAC;4BACrB,CAAC;yBACF,CAAC,CAAC;oBACL,CAAC;oBAED,+EAA+E;oBAC/E,0CAA0C;oBAC1C,wCAAwC;oBACxC,gFAAgF;oBAChF,+EAA+E;oBAC/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;oBAEzC,IAAI,CAAC;wBACH,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;oBAClD,CAAC;4BAAS,CAAC;wBACT,oBAAoB;wBACpB,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC,CAAC;gBAEF,yEAAyE;gBACzE,iBAAiB,GAAG,SAAS,mBAAmB,CAAC,KAAK;oBACpD,IACE,KAAK,CAAC,MAAM,KAAK,UAAU;wBAC3B,KAAK,CAAC,MAAM,KAAK,YAAY;wBAC7B,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,eAAe;wBAC7C,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,EAClC,CAAC;wBACD,6FAA6F;wBAC7F,oFAAoF;wBACpF,8CAA8C;wBAC9C,OAAO;oBACT,CAAC;oBAED,2CAA2C;oBAC3C,MAAM,kBAAkB,GAAG;wBACzB,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,aAAa,EAAE,KAAK,CAAC,aAAa;qBACnC,CAAC;oBAEF,sFAAsF;oBACtF,MAAM,kBAAkB,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;oBAE7E,kBAAkB;oBAClB,MAAM,sBAAsB,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE;wBACvD,aAAa,EAAE;4BACb,GAAG;gCACD,OAAO,sBAAsB,CAAC;4BAChC,CAAC;yBACF;wBAED,MAAM,EAAE;4BACN,GAAG;gCACD,OAAO,uBAAuB,CAAC,kBAAkB,CAAC,MAAO,CAAC,CAAC;4BAC7D,CAAC;yBACF;wBAED,YAAY,EAAE;4BACZ,KAAK,EAAE,GAAG,EAAE;gCACV,OAAO,kBAAkB,CAAC;4BAC5B,CAAC;yBACF;qBACF,CAAC,CAAC;oBAEH,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;wBAC7B,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE;4BACxC,GAAG;gCACD,OAAO,WAAW,CAAC;4BACrB,CAAC;yBACF,CAAC,CAAC;oBACL,CAAC;oBAED,sFAAsF;oBACtF,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;oBAEzC,IAAI,CAAC;wBACH,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;oBAClD,CAAC;4BAAS,CAAC;wBACT,oBAAoB;wBACpB,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC,CAAC;gBAEF,sBAAsB,CAAC,GAAG,CAAC,WAAW,EAAE;oBACtC,cAAc;oBACd,iBAAiB;iBAClB,CAAC,CAAC;YACL,CAAC;YAED,wEAAwE;YACxE,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,sBAAsB,CAAC,CAAC;YACjF,MAAM,qBAAqB,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YACnE,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;YAErF,IAAI,SAAS,KAAK,kBAAkB,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;gBACzE,sFAAsF;gBACtF,yEAAyE;gBACzE,OAAO;YACT,CAAC;YAED,kEAAkE;YAClE,MAAM,uBAAuB,GAAG,0BAA0B,CAAC,oBAAoB,CAAC,CAAC;YAEjF,qFAAqF;YACrF,sDAAsD;YACtD,MAAM,4BAA4B,GAAG,WAAW,CAAC,GAAG,CAClD,CAAC,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,CACrF,CAAC;YACF,MAAM,wBAAwB,GAAG;gBAC/B,GAAG,OAAO;gBACV,MAAM,EAAE,4BAA4B;aACV,CAAC;YAE7B,+EAA+E;YAC/E,uBAAuB,CAAC,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,EAAE,wBAAwB,CAAC,CAAC;QACnG,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,yBAAyB,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,mBAAmB,EAAE;QACjG,KAAK,CAAC,2BAA2B,EAAE,sBAAsB,EAAE,aAAa;YACtE,MAAM,CAAC,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,GAAG,aAE1D,CAAC;YAEF,IAAI,CAAC,mBAAmB;gBAAE,OAAO;YAEjC,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC5B,0FAA0F;gBAC1F,sBAAsB,GAAG,WAAW,CAAC;YACvC,CAAC;YAED,2GAA2G;YAC3G,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,sBAAsB,KAAK,WAAW,EAAE,CAAC;gBAC9E,2BAA2B,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;gBAChG,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GACf,OAAO,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC;YAEnG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,8FAA8F;gBAC9F,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAC;gBAClF,OAAO;YACT,CAAC;YAED,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,sBAAsB,CAAC,CAAC;YACjF,MAAM,eAAe,GAAG,sBAAsB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAEhE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,4FAA4F;gBAC5F,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAC;gBAClF,OAAO;YACT,CAAC;YACD,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,eAAe,CAAC;YAC9D,MAAM,qBAAqB,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;YAE5E,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;YACxF,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,EAAE,gBAAwC,CAAC,CAAC;QACzG,CAAC;KACF,CAAC,CAAC;IAEH,WAAW,CAAC,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,GAAG,sBAAsB,CAAC;IACvF,WAAW,CAAC,mBAAmB,GAAG,aAAa,CAAC,mBAAmB,GAAG,yBAAyB,CAAC;IAEhG,4BAA4B;IAE5B,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;QACrC,YAAY;YACV,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,uEAAuE;AACvE,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC"}
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
  */