@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.
- package/package.json +1 -1
- package/src/adapters/adapter.d.ts +11 -0
- package/src/adapters/adapter.js.map +1 -1
- package/src/adapters/compat-adapter.js +2 -2
- package/src/adapters/compat-adapter.js.map +1 -1
- package/src/compat/born-inert-scripts.d.ts +2 -0
- package/src/compat/born-inert-scripts.js +39 -0
- package/src/compat/born-inert-scripts.js.map +1 -1
- package/src/compat/cookie-partition.d.ts +25 -0
- package/src/compat/cookie-partition.js +79 -0
- package/src/compat/cookie-partition.js.map +1 -0
- package/src/compat/document-member-classification.js +3 -2
- package/src/compat/document-member-classification.js.map +1 -1
- package/src/compat/document-overrides.d.ts +6 -6
- package/src/compat/document-overrides.js +23 -0
- package/src/compat/document-overrides.js.map +1 -1
- package/src/compat/fragment-boundary.d.ts +5 -0
- package/src/compat/fragment-boundary.js +159 -12
- package/src/compat/fragment-boundary.js.map +1 -1
- package/src/compat/html-policy.d.ts +50 -0
- package/src/compat/html-policy.js +155 -0
- package/src/compat/html-policy.js.map +1 -0
- package/src/compat/realm-patches.d.ts +2 -1
- package/src/compat/realm-patches.js +117 -3
- package/src/compat/realm-patches.js.map +1 -1
- package/src/compat/script-execution.d.ts +24 -0
- package/src/compat/script-execution.js +177 -10
- package/src/compat/script-execution.js.map +1 -1
- package/src/compat/storage-partition.d.ts +47 -0
- package/src/compat/storage-partition.js +291 -0
- package/src/compat/storage-partition.js.map +1 -0
- package/src/compat/subresource-urls.d.ts +41 -0
- package/src/compat/subresource-urls.js +133 -0
- package/src/compat/subresource-urls.js.map +1 -0
- package/src/config.d.ts +28 -0
- package/src/config.js +24 -0
- package/src/config.js.map +1 -1
- package/src/elements/boot-gate.d.ts +47 -0
- package/src/elements/boot-gate.js +207 -0
- package/src/elements/boot-gate.js.map +1 -0
- package/src/elements/fragment-slot.d.ts +34 -0
- package/src/elements/fragment-slot.js +282 -24
- package/src/elements/fragment-slot.js.map +1 -1
- package/src/elements/late-content.d.ts +44 -0
- package/src/elements/late-content.js +107 -0
- package/src/elements/late-content.js.map +1 -0
- package/src/elements/prefetch.d.ts +27 -0
- package/src/elements/prefetch.js +100 -0
- package/src/elements/prefetch.js.map +1 -0
- package/src/elements/prerequisites.d.ts +42 -0
- package/src/elements/prerequisites.js +133 -0
- package/src/elements/prerequisites.js.map +1 -0
- package/src/elements/recovery.d.ts +46 -0
- package/src/elements/recovery.js +59 -0
- package/src/elements/recovery.js.map +1 -0
- package/src/errors.d.ts +4 -1
- package/src/errors.js +2 -0
- package/src/errors.js.map +1 -1
- package/src/index.d.ts +4 -1
- package/src/index.js +10 -1
- package/src/index.js.map +1 -1
- package/src/realm/realm-manager.js +23 -0
- package/src/realm/realm-manager.js.map +1 -1
- package/src/weave/capabilities.d.ts +35 -7
- package/src/weave/capabilities.js +17 -0
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
253
|
-
|
|
254
|
-
|
|
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
|
-
|
|
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
|
/**
|