@braidlabs/core 0.7.0 → 0.8.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/compat-adapter.js +51 -4
- package/src/adapters/compat-adapter.js.map +1 -1
- package/src/compat/database-partition.d.ts +43 -0
- package/src/compat/database-partition.js +165 -0
- package/src/compat/database-partition.js.map +1 -0
- package/src/compat/fragment-boundary.js +133 -25
- package/src/compat/fragment-boundary.js.map +1 -1
- package/src/compat/html-policy.js +10 -5
- package/src/compat/html-policy.js.map +1 -1
- package/src/compat/script-execution.js +5 -4
- package/src/compat/script-execution.js.map +1 -1
- package/src/compat/shared-globals.d.ts +1 -1
- package/src/compat/shared-globals.js +2 -2
- package/src/compat/shared-globals.js.map +1 -1
- package/src/config.d.ts +13 -2
- package/src/config.js.map +1 -1
- package/src/elements/fragment-slot.d.ts +41 -15
- package/src/elements/fragment-slot.js +195 -9
- package/src/elements/fragment-slot.js.map +1 -1
- package/src/elements/leave-guard.d.ts +49 -0
- package/src/elements/leave-guard.js +122 -0
- package/src/elements/leave-guard.js.map +1 -0
- package/src/elements/overlay-layer.d.ts +45 -0
- package/src/elements/overlay-layer.js +112 -0
- package/src/elements/overlay-layer.js.map +1 -0
- package/src/env/create-env.js +2 -1
- package/src/env/create-env.js.map +1 -1
- package/src/env/fragment-env.d.ts +6 -0
- package/src/index.d.ts +3 -0
- package/src/index.js +14 -0
- package/src/index.js.map +1 -1
- package/src/realm/realm-manager.js +2 -1
- package/src/realm/realm-manager.js.map +1 -1
- package/src/realm/sandbox-realm.d.ts +5 -7
- package/src/realm/sandbox-realm.js +104 -39
- package/src/realm/sandbox-realm.js.map +1 -1
- package/src/trusted-types.d.ts +28 -0
- package/src/trusted-types.js +58 -0
- package/src/trusted-types.js.map +1 -0
- package/src/weave/capabilities.d.ts +10 -3
- package/src/weave/capabilities.js +19 -3
- package/src/weave/capabilities.js.map +1 -1
- package/src/weave/context-bridge.d.ts +2 -0
- package/src/weave/context-bridge.js +1 -1
- package/src/weave/context-bridge.js.map +1 -1
- package/src/weave/guest.d.ts +2 -0
- package/src/weave/guest.js +10 -5
- package/src/weave/guest.js.map +1 -1
- package/src/weave/messages.d.ts +24 -0
- package/src/weave/messages.js +22 -0
- package/src/weave/messages.js.map +1 -1
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asking before a navigation loses a fragment's unsaved work.
|
|
3
|
+
*
|
|
4
|
+
* A fragment declares unsaved work with `env.setDirty(reason)`, and the slot holds it as `dirty`,
|
|
5
|
+
* so the question "would leaving lose anything?" has a synchronous answer. These helpers put that
|
|
6
|
+
* answer where a navigation can be held: a host router's own guard ({@link dirtySlots}), and, for
|
|
7
|
+
* navigations that leave the document, the Navigation API's `navigate` event.
|
|
8
|
+
*
|
|
9
|
+
* Holding a navigation inside a single-page app is the router's job, not this one: cancelling a
|
|
10
|
+
* router's own `pushState` leaves the router believing it navigated. So the event listener here
|
|
11
|
+
* holds only navigations that load another document, which no router is part of.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* The slots that hold unsaved work under `root`, in document order: inside open shadow roots too,
|
|
15
|
+
* whether a fragment's or a component's (a Lit element, an Angular `ShadowDom` view), and inside
|
|
16
|
+
* other fragments. A router guard asks before leaving a view when this is not empty.
|
|
17
|
+
*
|
|
18
|
+
* `root` itself counts too: a slot, or a component whose view is in its own shadow root — a routed
|
|
19
|
+
* Angular `ShadowDom` component's host element, say.
|
|
20
|
+
*/
|
|
21
|
+
export function dirtySlots(root = document) {
|
|
22
|
+
const found = [];
|
|
23
|
+
const check = (element) => {
|
|
24
|
+
if (element.localName === 'fragment-slot') {
|
|
25
|
+
const dirty = element.dirty;
|
|
26
|
+
if (dirty !== null && dirty !== undefined)
|
|
27
|
+
found.push(element);
|
|
28
|
+
}
|
|
29
|
+
if (element.shadowRoot)
|
|
30
|
+
visit(element.shadowRoot);
|
|
31
|
+
};
|
|
32
|
+
const visit = (scope) => {
|
|
33
|
+
for (const element of scope.querySelectorAll('*'))
|
|
34
|
+
check(element);
|
|
35
|
+
};
|
|
36
|
+
if (root instanceof Element)
|
|
37
|
+
check(root);
|
|
38
|
+
visit(root);
|
|
39
|
+
return found;
|
|
40
|
+
}
|
|
41
|
+
/** How long after a yes `leaveConfirmed()` answers true: long enough for the page to unload. */
|
|
42
|
+
const CONFIRMED_FOR_MS = 5_000;
|
|
43
|
+
let confirmedAt = -Infinity;
|
|
44
|
+
/**
|
|
45
|
+
* Whether the user has just agreed to leave through `confirmLeave`. A host's own `beforeunload`
|
|
46
|
+
* handler checks it, so a navigation the user already said yes to is not asked about a second time
|
|
47
|
+
* by the browser's own prompt:
|
|
48
|
+
*
|
|
49
|
+
* ```ts
|
|
50
|
+
* addEventListener('beforeunload', (event) => { if (dirtySlots().length && !leaveConfirmed()) event.preventDefault(); });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export function leaveConfirmed() {
|
|
54
|
+
return performance.now() - confirmedAt < CONFIRMED_FOR_MS;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Holds a navigation to another same-origin document while a slot has unsaved work, asks
|
|
58
|
+
* `confirm`, and starts the navigation again if the answer is yes.
|
|
59
|
+
*
|
|
60
|
+
* Only what can be held and started again: a link or `location` change to another document on this
|
|
61
|
+
* origin, by push or replace. Not form posts (their body would be lost), downloads, reloads, or
|
|
62
|
+
* back/forward (which cannot be cancelled across documents). One question at a time: a navigation
|
|
63
|
+
* held while the user is still answering replaces the one being asked about, so a yes goes where they
|
|
64
|
+
* last clicked. Returns a function that removes the guard; a browser without the Navigation API gets
|
|
65
|
+
* none.
|
|
66
|
+
*/
|
|
67
|
+
export function installLeaveGuard(confirm) {
|
|
68
|
+
const navigation = globalThis.navigation;
|
|
69
|
+
if (!navigation)
|
|
70
|
+
return () => undefined;
|
|
71
|
+
// the navigation the user agreed to, started again synchronously below: its event passes
|
|
72
|
+
let reissuing = false;
|
|
73
|
+
let pending = null;
|
|
74
|
+
let removed = false;
|
|
75
|
+
const onNavigate = (event) => {
|
|
76
|
+
const navigate = event;
|
|
77
|
+
if (reissuing || !navigate.cancelable || navigate.destination.sameDocument)
|
|
78
|
+
return;
|
|
79
|
+
if (navigate.navigationType !== 'push' && navigate.navigationType !== 'replace')
|
|
80
|
+
return;
|
|
81
|
+
if (navigate.formData || navigate.downloadRequest !== null)
|
|
82
|
+
return;
|
|
83
|
+
if (new URL(navigate.destination.url).origin !== location.origin)
|
|
84
|
+
return;
|
|
85
|
+
const slots = dirtySlots();
|
|
86
|
+
if (slots.length === 0)
|
|
87
|
+
return;
|
|
88
|
+
navigate.preventDefault();
|
|
89
|
+
const target = { url: navigate.destination.url, history: navigate.navigationType, state: navigate.destination.getState?.() };
|
|
90
|
+
if (pending) {
|
|
91
|
+
// already asking: this is where a yes now goes
|
|
92
|
+
pending = target;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
pending = target;
|
|
96
|
+
void Promise.resolve()
|
|
97
|
+
.then(() => confirm(slots))
|
|
98
|
+
.then((leave) => {
|
|
99
|
+
const chosen = pending;
|
|
100
|
+
pending = null;
|
|
101
|
+
if (!leave || !chosen || removed)
|
|
102
|
+
return;
|
|
103
|
+
confirmedAt = performance.now();
|
|
104
|
+
reissuing = true;
|
|
105
|
+
try {
|
|
106
|
+
navigation.navigate(chosen.url, { history: chosen.history, ...(chosen.state === undefined ? {} : { state: chosen.state }) });
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
reissuing = false;
|
|
110
|
+
}
|
|
111
|
+
}, (error) => {
|
|
112
|
+
pending = null;
|
|
113
|
+
console.error('[braid] confirmLeave failed; staying on the page', error);
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
navigation.addEventListener('navigate', onNavigate);
|
|
117
|
+
return () => {
|
|
118
|
+
removed = true;
|
|
119
|
+
navigation.removeEventListener('navigate', onNavigate);
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=leave-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leave-guard.js","sourceRoot":"","sources":["../../../../../libs/core/src/elements/leave-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Top-layer overlays: what a fragment portals to its body, lifted out of the host's box.
|
|
3
|
+
*
|
|
4
|
+
* UI libraries render modals, menus and tooltips by appending to `document.body`, which escapes
|
|
5
|
+
* whatever clips the component that opened them. In a compat realm `document.body` is the
|
|
6
|
+
* fragment's own body — inside the slot — so the escape stops at the host's container: an
|
|
7
|
+
* `overflow: hidden` ancestor clips the modal, and a transformed one becomes its fixed-position
|
|
8
|
+
* frame. Other micro-frontend frameworks answer this by letting fragments write into the host's
|
|
9
|
+
* real body, which gives up the isolation the fragment boundary exists for.
|
|
10
|
+
*
|
|
11
|
+
* With `overlays="top-layer"` the slot instead shows each element the fragment appends to its
|
|
12
|
+
* body after mount as a manual popover. The browser renders popovers in the top layer, above and
|
|
13
|
+
* outside every ancestor's clipping, while the element stays exactly where it was in the DOM:
|
|
14
|
+
* inside the fragment's shadow tree, styled by the fragment's stylesheets, its events handled by
|
|
15
|
+
* the fragment's own listeners. Removing the element closes it; appending it again shows it again.
|
|
16
|
+
*
|
|
17
|
+
* Opt-in, because it changes positioning: a lifted element is laid out against the page rather
|
|
18
|
+
* than the slot (see `OVERLAY_STYLES`), and stacks by the order it was shown, not its `z-index`.
|
|
19
|
+
*/
|
|
20
|
+
/** Marks an element the slot lifted, so a popover of the fragment's own is never mistaken for one. */
|
|
21
|
+
export declare const OVERLAY_ATTRIBUTE = "data-braid-overlay";
|
|
22
|
+
/**
|
|
23
|
+
* Undoes the browser's popover look (centred, bordered, padded, opaque) so a lifted portal looks as
|
|
24
|
+
* it did in the body, laid out from the page's origin as a body child would be. `inset: auto`
|
|
25
|
+
* rather than zeros, so a portal anchored by `right` or `bottom` alone does not stretch.
|
|
26
|
+
*
|
|
27
|
+
* It must lose to everything of the fragment's: any author rule beats the browser's popover rules,
|
|
28
|
+
* so it only needs to beat those. So it sits in a cascade layer declared first in the slot's
|
|
29
|
+
* stylesheet (the first in its shadow root), below every layer of the fragment's own — Tailwind's
|
|
30
|
+
* utilities, say — and every unlayered rule, and its selector has no specificity. The gateway's
|
|
31
|
+
* slot stylesheet for a pierced slot opens with the same rule.
|
|
32
|
+
*/
|
|
33
|
+
export declare const OVERLAY_STYLES: string;
|
|
34
|
+
/**
|
|
35
|
+
* Lifts each element appended to the fragment's body from now on. Stops when `signal` aborts (the
|
|
36
|
+
* fragment closes). Does nothing for a fragment with no body (a custom-element fragment) or in a
|
|
37
|
+
* browser without popovers.
|
|
38
|
+
*/
|
|
39
|
+
export declare function liftPortals(contentRoot: HTMLElement, signal: AbortSignal): void;
|
|
40
|
+
/**
|
|
41
|
+
* Shows again what the slot lifted. A move that disconnected the slot closed every open popover in
|
|
42
|
+
* it, and nothing was appended to the body for the observer to notice. (`moveBefore` keeps them
|
|
43
|
+
* open.)
|
|
44
|
+
*/
|
|
45
|
+
export declare function reshowLifted(root: ParentNode): void;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Top-layer overlays: what a fragment portals to its body, lifted out of the host's box.
|
|
3
|
+
*
|
|
4
|
+
* UI libraries render modals, menus and tooltips by appending to `document.body`, which escapes
|
|
5
|
+
* whatever clips the component that opened them. In a compat realm `document.body` is the
|
|
6
|
+
* fragment's own body — inside the slot — so the escape stops at the host's container: an
|
|
7
|
+
* `overflow: hidden` ancestor clips the modal, and a transformed one becomes its fixed-position
|
|
8
|
+
* frame. Other micro-frontend frameworks answer this by letting fragments write into the host's
|
|
9
|
+
* real body, which gives up the isolation the fragment boundary exists for.
|
|
10
|
+
*
|
|
11
|
+
* With `overlays="top-layer"` the slot instead shows each element the fragment appends to its
|
|
12
|
+
* body after mount as a manual popover. The browser renders popovers in the top layer, above and
|
|
13
|
+
* outside every ancestor's clipping, while the element stays exactly where it was in the DOM:
|
|
14
|
+
* inside the fragment's shadow tree, styled by the fragment's stylesheets, its events handled by
|
|
15
|
+
* the fragment's own listeners. Removing the element closes it; appending it again shows it again.
|
|
16
|
+
*
|
|
17
|
+
* Opt-in, because it changes positioning: a lifted element is laid out against the page rather
|
|
18
|
+
* than the slot (see `OVERLAY_STYLES`), and stacks by the order it was shown, not its `z-index`.
|
|
19
|
+
*/
|
|
20
|
+
/** Marks an element the slot lifted, so a popover of the fragment's own is never mistaken for one. */
|
|
21
|
+
export const OVERLAY_ATTRIBUTE = 'data-braid-overlay';
|
|
22
|
+
/**
|
|
23
|
+
* Undoes the browser's popover look (centred, bordered, padded, opaque) so a lifted portal looks as
|
|
24
|
+
* it did in the body, laid out from the page's origin as a body child would be. `inset: auto`
|
|
25
|
+
* rather than zeros, so a portal anchored by `right` or `bottom` alone does not stretch.
|
|
26
|
+
*
|
|
27
|
+
* It must lose to everything of the fragment's: any author rule beats the browser's popover rules,
|
|
28
|
+
* so it only needs to beat those. So it sits in a cascade layer declared first in the slot's
|
|
29
|
+
* stylesheet (the first in its shadow root), below every layer of the fragment's own — Tailwind's
|
|
30
|
+
* utilities, say — and every unlayered rule, and its selector has no specificity. The gateway's
|
|
31
|
+
* slot stylesheet for a pierced slot opens with the same rule.
|
|
32
|
+
*/
|
|
33
|
+
export const OVERLAY_STYLES = `@layer braid-overlay-reset { :where([${OVERLAY_ATTRIBUTE}]) { position: absolute; inset: auto; margin: 0; padding: 0; border: 0; ` +
|
|
34
|
+
'background: none; color: inherit; overflow: visible; width: auto; height: auto; max-width: none; max-height: none; } }';
|
|
35
|
+
/**
|
|
36
|
+
* Body children that are not overlays: they render nothing, a `<dialog>` has the top layer of its
|
|
37
|
+
* own through `showModal()`, and Braid's elements are Braid's.
|
|
38
|
+
*/
|
|
39
|
+
const NOT_OVERLAYS = new Set(['script', 'style', 'link', 'template', 'meta', 'noscript', 'dialog']);
|
|
40
|
+
/**
|
|
41
|
+
* Lifts each element appended to the fragment's body from now on. Stops when `signal` aborts (the
|
|
42
|
+
* fragment closes). Does nothing for a fragment with no body (a custom-element fragment) or in a
|
|
43
|
+
* browser without popovers.
|
|
44
|
+
*/
|
|
45
|
+
export function liftPortals(contentRoot, signal) {
|
|
46
|
+
// the element the fragment's realm answers `document.body` with (see document-overrides.ts)
|
|
47
|
+
const body = contentRoot.querySelector('braid-body') ?? contentRoot.firstElementChild;
|
|
48
|
+
if (!body || typeof HTMLElement.prototype.showPopover !== 'function')
|
|
49
|
+
return;
|
|
50
|
+
const lift = (node) => {
|
|
51
|
+
if (!(node instanceof HTMLElement) || node.parentNode !== body)
|
|
52
|
+
return;
|
|
53
|
+
if (NOT_OVERLAYS.has(node.localName) || node.localName.startsWith('braid-'))
|
|
54
|
+
return;
|
|
55
|
+
const ours = node.hasAttribute(OVERLAY_ATTRIBUTE);
|
|
56
|
+
// a popover the fragment declared itself is the fragment's to show
|
|
57
|
+
if (node.hasAttribute('popover') && !ours)
|
|
58
|
+
return;
|
|
59
|
+
node.setAttribute('popover', 'manual');
|
|
60
|
+
try {
|
|
61
|
+
node.showPopover();
|
|
62
|
+
node.setAttribute(OVERLAY_ATTRIBUTE, '');
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// removed again before this ran, or not showable: leave it as the fragment made it
|
|
66
|
+
node.removeAttribute('popover');
|
|
67
|
+
node.removeAttribute(OVERLAY_ATTRIBUTE);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* One the fragment moved out of its body, into its app, is an overlay no longer: left a closed
|
|
72
|
+
* popover, it would never render again.
|
|
73
|
+
*/
|
|
74
|
+
const settle = (node) => {
|
|
75
|
+
if (!(node instanceof HTMLElement) || !node.hasAttribute(OVERLAY_ATTRIBUTE))
|
|
76
|
+
return;
|
|
77
|
+
queueMicrotask(() => {
|
|
78
|
+
if (node.isConnected && node.parentNode !== body) {
|
|
79
|
+
node.removeAttribute('popover');
|
|
80
|
+
node.removeAttribute(OVERLAY_ATTRIBUTE);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
// Observed rather than intercepted: it sees every way in, captured native methods included, and
|
|
85
|
+
// its callback runs before the next paint, so nothing renders clipped first. (A synchronous
|
|
86
|
+
// measurement straight after `appendChild` still sees the element where it was appended.)
|
|
87
|
+
const observer = new MutationObserver((records) => {
|
|
88
|
+
for (const record of records) {
|
|
89
|
+
record.removedNodes.forEach(settle);
|
|
90
|
+
record.addedNodes.forEach(lift);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
observer.observe(body, { childList: true });
|
|
94
|
+
signal.addEventListener('abort', () => observer.disconnect(), { once: true });
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Shows again what the slot lifted. A move that disconnected the slot closed every open popover in
|
|
98
|
+
* it, and nothing was appended to the body for the observer to notice. (`moveBefore` keeps them
|
|
99
|
+
* open.)
|
|
100
|
+
*/
|
|
101
|
+
export function reshowLifted(root) {
|
|
102
|
+
for (const element of root.querySelectorAll(`[${OVERLAY_ATTRIBUTE}]`)) {
|
|
103
|
+
try {
|
|
104
|
+
if (!element.matches(':popover-open'))
|
|
105
|
+
element.showPopover();
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// not showable now: it stays as the fragment left it
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=overlay-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay-layer.js","sourceRoot":"","sources":["../../../../../libs/core/src/elements/overlay-layer.ts"],"names":[],"mappings":"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"}
|
package/src/env/create-env.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createContextMirror } from '../weave/context-bridge.js';
|
|
2
2
|
import { answerHandshake } from '../weave/handshake.js';
|
|
3
|
-
import { FRAGMENT_EVENT, PROPS_CHANGED } from '../weave/messages.js';
|
|
3
|
+
import { FRAGMENT_EVENT, PROPS_CHANGED, SETTLED } from '../weave/messages.js';
|
|
4
4
|
import { createClosingCoordinator } from '../weave/closing.js';
|
|
5
5
|
function parseEnvLocation(routeUrl) {
|
|
6
6
|
const url = new URL(routeUrl, document.baseURI);
|
|
@@ -116,6 +116,7 @@ export function createFragmentEnv(options) {
|
|
|
116
116
|
emit: (type, detail) => channel.send(FRAGMENT_EVENT, { type, detail }),
|
|
117
117
|
onClosing: closing.onClosing,
|
|
118
118
|
setDirty: closing.setDirty,
|
|
119
|
+
settled: () => channel.send(SETTLED),
|
|
119
120
|
signal,
|
|
120
121
|
};
|
|
121
122
|
return { env, opened };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-env.js","sourceRoot":"","sources":["../../../../../libs/core/src/env/create-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAe,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAuB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-env.js","sourceRoot":"","sources":["../../../../../libs/core/src/env/create-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAe,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAuB,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AA4B/D,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAyB;IAIzD,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEvE,IAAI,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAmC,CAAC;IAEpE,IAAI,KAAK,GAAsC,EAAE,CAAC;IAClD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAsD,CAAC;IAErF,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAElD,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE;QACpC,KAAK,GAAI,CAAC,OAAO,IAAI,EAAE,CAAyB,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7D,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;QAC9F,MAAM,CAAC,IAAI;YACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACzB,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,cAAc,CAAC;gBAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,KAAc,EAAE,OAAgB,EAAE,EAAE;QACxE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QACD,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC;IAEF,MAAM,GAAG,GAAgB;QACvB,eAAe,EAAE,KAAK;QACtB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE;YACR,IAAI,KAAK;gBACP,OAAO,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;YAC/D,CAAC;YACD,IAAI,KAAK,CAAC,KAAa;gBACrB,MAAM,YAAY,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACxD,IAAI,YAAY,EAAE,CAAC;oBACjB,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC;gBACnC,CAAC;YACH,CAAC;YACD,YAAY,CAAC,OAAoB;gBAC/B,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAChF,CAAC;YACD,IAAI,aAAa;gBACf,OAAO,UAAU,CAAC,aAAa,CAAC;YAClC,CAAC;YACD,IAAI,kBAAkB;gBACpB,OAAO,UAAU,CAAC,kBAAkB,CAAC;YACvC,CAAC;SACF;QACD,IAAI,QAAQ;YACV,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;YACxD,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;YAC1D,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;YACjC,QAAQ,CAAC,QAAQ;gBACf,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC/B,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5D,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9D,OAAO,WAAW,CAAC;YACrB,CAAC;SACF;QACD,OAAO,EAAE;YACP,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAC9B,SAAS,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAC7C,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,GAAG,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,IAAI,MAAM,EAAE,CAAC;SACxG;QACD,IAAI,KAAK;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,cAAc,CAAC,QAAQ;YACrB,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACtE,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACpC,MAAM;KACP,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -79,6 +79,12 @@ export interface FragmentEnv {
|
|
|
79
79
|
* Braid never installs that handler itself; the host opts in via `slot.dirty`.
|
|
80
80
|
*/
|
|
81
81
|
setDirty(reason: string | null): void;
|
|
82
|
+
/**
|
|
83
|
+
* Reports that the fragment's first content has settled — its own loading is done, not just its
|
|
84
|
+
* mount. The host sees it as the slot's `settled` attribute and a `braid:settled` event; until
|
|
85
|
+
* then a host skeleton can stay up even though the slot is `healthy`. Later calls do nothing.
|
|
86
|
+
*/
|
|
87
|
+
settled(): void;
|
|
82
88
|
/** Fires on unmount, after every `onClosing` handler has settled or the deadline has passed. */
|
|
83
89
|
readonly signal: AbortSignal;
|
|
84
90
|
}
|
package/src/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export type { BraidOptions, RealmGlobalsHook } from './config.js';
|
|
|
19
19
|
export type { PrerequisiteOutcome, PrerequisiteResolver } from './elements/prerequisites.js';
|
|
20
20
|
export { NotEntitledError } from './elements/prerequisites.js';
|
|
21
21
|
export type { FragmentEnv, EnvDocument, EnvLocation, EnvHistory, EnvContext, EnvSubscribeOptions } from './env/fragment-env.js';
|
|
22
|
+
export { BRAID_FRAGMENT_REPORTER, braidFragmentReporter, type BraidFragmentReporter } from './weave/messages.js';
|
|
22
23
|
export type { BraidAdapter } from './adapters/adapter.js';
|
|
23
24
|
export { DEFAULT_ADAPTER } from './adapters/adapter.js';
|
|
24
25
|
export { customElementAdapter } from './adapters/custom-element-adapter.js';
|
|
@@ -26,6 +27,8 @@ export { contractAdapter } from './adapters/contract-adapter.js';
|
|
|
26
27
|
export { defineFragment } from './env/define-fragment.js';
|
|
27
28
|
export type { FragmentDefinition } from './env/define-fragment.js';
|
|
28
29
|
export { FragmentSlot, prefetchFragment } from './elements/fragment-slot.js';
|
|
30
|
+
export { clearBraidDatabases } from './compat/database-partition.js';
|
|
31
|
+
export { dirtySlots, leaveConfirmed, type ConfirmLeave, type DirtySlot } from './elements/leave-guard.js';
|
|
29
32
|
export { clearPrefetchedFragments } from './elements/prefetch.js';
|
|
30
33
|
export type { FragmentSlotState } from './elements/fragment-slot.js';
|
|
31
34
|
export { braidContext, createContextBus } from './context/context-bus.js';
|
package/src/index.js
CHANGED
|
@@ -19,13 +19,18 @@ import { customElementAdapter } from './adapters/custom-element-adapter.js';
|
|
|
19
19
|
import { contractAdapter } from './adapters/contract-adapter.js';
|
|
20
20
|
import { FragmentSlot } from './elements/fragment-slot.js';
|
|
21
21
|
import { BraidLate, BraidLateEnd } from './elements/late-content.js';
|
|
22
|
+
import { claimBraidPolicy } from './trusted-types.js';
|
|
23
|
+
import { installLeaveGuard } from './elements/leave-guard.js';
|
|
22
24
|
export { BraidError } from './errors.js';
|
|
23
25
|
export { NotEntitledError } from './elements/prerequisites.js';
|
|
26
|
+
export { BRAID_FRAGMENT_REPORTER, braidFragmentReporter } from './weave/messages.js';
|
|
24
27
|
export { DEFAULT_ADAPTER } from './adapters/adapter.js';
|
|
25
28
|
export { customElementAdapter } from './adapters/custom-element-adapter.js';
|
|
26
29
|
export { contractAdapter } from './adapters/contract-adapter.js';
|
|
27
30
|
export { defineFragment } from './env/define-fragment.js';
|
|
28
31
|
export { FragmentSlot, prefetchFragment } from './elements/fragment-slot.js';
|
|
32
|
+
export { clearBraidDatabases } from './compat/database-partition.js';
|
|
33
|
+
export { dirtySlots, leaveConfirmed } from './elements/leave-guard.js';
|
|
29
34
|
export { clearPrefetchedFragments } from './elements/prefetch.js';
|
|
30
35
|
export { braidContext, createContextBus } from './context/context-bus.js';
|
|
31
36
|
export { registerBraidServiceWorker } from './compat/register-worker.js';
|
|
@@ -48,8 +53,17 @@ export function initBraid(options = {}) {
|
|
|
48
53
|
customElements.define('braid-late', BraidLate);
|
|
49
54
|
customElements.define('braid-late-end', BraidLateEnd);
|
|
50
55
|
}
|
|
56
|
+
// before any slot boots: the policy name the host's directive grants must be Braid's first
|
|
57
|
+
claimBraidPolicy();
|
|
51
58
|
if (!customElements.get('fragment-slot')) {
|
|
52
59
|
customElements.define('fragment-slot', FragmentSlot);
|
|
53
60
|
}
|
|
61
|
+
// Once per page, like the elements. A later initBraid that names `confirmLeave` replaces the
|
|
62
|
+
// question (null or undefined removes it); one that does not leaves it, as config merges.
|
|
63
|
+
if ('confirmLeave' in options) {
|
|
64
|
+
removeLeaveGuard?.();
|
|
65
|
+
removeLeaveGuard = options.confirmLeave ? installLeaveGuard(options.confirmLeave) : undefined;
|
|
66
|
+
}
|
|
54
67
|
}
|
|
68
|
+
let removeLeaveGuard;
|
|
55
69
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/core/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAgB,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/core/src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BraidError } from '../errors.js';
|
|
2
2
|
import { getBraidConfig, isDevMode } from '../config.js';
|
|
3
3
|
import { BRAID_ADAPTER_META, BRAID_ADAPTER_OPTIONS_META, BRAID_PROTOCOL_META, BRAID_PROTOCOL_VERSION, braidFragmentUrl, braidRealmUrl, } from '../protocol.js';
|
|
4
|
+
import { trustedScript } from '../trusted-types.js';
|
|
4
5
|
export async function createRealm(kind, init) {
|
|
5
6
|
switch (kind) {
|
|
6
7
|
case 'compat-http':
|
|
@@ -134,7 +135,7 @@ function createRealmHandle(kind, iframe, realmWindow, realmDocument, manifestAda
|
|
|
134
135
|
script.type = 'module';
|
|
135
136
|
// import declarations are hoisted, so appending the completion call after the fragment's
|
|
136
137
|
// own source is valid regardless of what the source imports
|
|
137
|
-
script.textContent = `${source}\n;window.${callbackName}?.()
|
|
138
|
+
script.textContent = trustedScript(`${source}\n;window.${callbackName}?.();`, realmWindow);
|
|
138
139
|
const onError = (event) => reject(new BraidError(`module evaluation failed in the fragment's realm: ${event.message}`, {
|
|
139
140
|
fragmentId: init.fragmentId,
|
|
140
141
|
stage: 'adapter-mount',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realm-manager.js","sourceRoot":"","sources":["../../../../../libs/core/src/realm/realm-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"realm-manager.js","sourceRoot":"","sources":["../../../../../libs/core/src/realm/realm-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* | --- | --- | --- |
|
|
16
16
|
* | isolation | namespace, not security | browser-enforced |
|
|
17
17
|
* | DOM | projected into the host document | stays in its own document |
|
|
18
|
-
* | cookies/storage | the host's |
|
|
18
|
+
* | cookies/storage | the host's | none: an opaque origin has no cookies, Web Storage or IndexedDB |
|
|
19
19
|
* | composition | gateway namespaces, piercing, compat facade | none of it applies |
|
|
20
20
|
*
|
|
21
21
|
* **Why this is not a `RealmHandle`.** That interface exposes `window`, `document`, `evaluate()`
|
|
@@ -65,7 +65,7 @@ export interface SandboxRealm {
|
|
|
65
65
|
readonly fragmentId: string;
|
|
66
66
|
/** The frame element, so a host can size it. Its contents are not reachable from here. */
|
|
67
67
|
readonly frame: HTMLIFrameElement;
|
|
68
|
-
/** The fragment's
|
|
68
|
+
/** The origin the fragment's src names. The frame itself runs in an opaque origin, never this one. */
|
|
69
69
|
readonly origin: string;
|
|
70
70
|
/** The host end of the message channel. */
|
|
71
71
|
readonly port: MessagePort;
|
|
@@ -86,10 +86,8 @@ export declare function resolveSandboxTokens(requested: readonly string[] | unde
|
|
|
86
86
|
/**
|
|
87
87
|
* Creates the frame, waits for it to load, and establishes the message channel.
|
|
88
88
|
*
|
|
89
|
-
* The
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* whether or not it has already been posted to. Either order converges; neither has to be the fast
|
|
93
|
-
* one.
|
|
89
|
+
* The guest announces itself and the host answers that window with the port. The host listens
|
|
90
|
+
* before the frame is attached, so there is no ordering to race: however fast the guest's script
|
|
91
|
+
* runs, its announcement finds a listener.
|
|
94
92
|
*/
|
|
95
93
|
export declare function createSandboxRealm(init: SandboxRealmInit): Promise<SandboxRealm>;
|