@braidlabs/core 0.7.1 → 0.8.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 (43) hide show
  1. package/package.json +1 -1
  2. package/src/adapters/compat-adapter.js +51 -4
  3. package/src/adapters/compat-adapter.js.map +1 -1
  4. package/src/compat/database-partition.d.ts +43 -0
  5. package/src/compat/database-partition.js +165 -0
  6. package/src/compat/database-partition.js.map +1 -0
  7. package/src/compat/html-policy.js +10 -5
  8. package/src/compat/html-policy.js.map +1 -1
  9. package/src/compat/script-execution.js +5 -4
  10. package/src/compat/script-execution.js.map +1 -1
  11. package/src/compat/shared-globals.d.ts +1 -1
  12. package/src/compat/shared-globals.js +2 -2
  13. package/src/compat/shared-globals.js.map +1 -1
  14. package/src/config.d.ts +13 -2
  15. package/src/config.js.map +1 -1
  16. package/src/elements/fragment-slot.d.ts +13 -0
  17. package/src/elements/fragment-slot.js +89 -7
  18. package/src/elements/fragment-slot.js.map +1 -1
  19. package/src/elements/leave-guard.d.ts +49 -0
  20. package/src/elements/leave-guard.js +122 -0
  21. package/src/elements/leave-guard.js.map +1 -0
  22. package/src/elements/overlay-layer.d.ts +45 -0
  23. package/src/elements/overlay-layer.js +112 -0
  24. package/src/elements/overlay-layer.js.map +1 -0
  25. package/src/index.d.ts +2 -0
  26. package/src/index.js +13 -0
  27. package/src/index.js.map +1 -1
  28. package/src/realm/realm-manager.js +2 -1
  29. package/src/realm/realm-manager.js.map +1 -1
  30. package/src/realm/sandbox-realm.d.ts +5 -7
  31. package/src/realm/sandbox-realm.js +104 -39
  32. package/src/realm/sandbox-realm.js.map +1 -1
  33. package/src/trusted-types.d.ts +28 -0
  34. package/src/trusted-types.js +58 -0
  35. package/src/trusted-types.js.map +1 -0
  36. package/src/weave/capabilities.d.ts +10 -3
  37. package/src/weave/capabilities.js +19 -3
  38. package/src/weave/capabilities.js.map +1 -1
  39. package/src/weave/context-bridge.d.ts +2 -0
  40. package/src/weave/context-bridge.js +1 -1
  41. package/src/weave/context-bridge.js.map +1 -1
  42. package/src/weave/guest.js +8 -4
  43. package/src/weave/guest.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@braidlabs/core",
3
- "version": "0.7.1",
3
+ "version": "0.8.1",
4
4
  "description": "Braid client runtime — compose independently deployed frontend apps into one page. This build ships the compat adapter (the contained web-fragments-style emulation layer) as the default adapter.",
5
5
  "keywords": [
6
6
  "micro-frontends",
@@ -1,8 +1,9 @@
1
1
  import { compatMetadataSymbol } from '../compat/metadata.js';
2
2
  import { initializeRealmContext } from '../compat/realm-patches.js';
3
- import { executeScriptsInFragmentContent } from '../compat/script-execution.js';
3
+ import { executeScriptsInFragmentContent, markStartedInPlace } from '../compat/script-execution.js';
4
4
  import { installRealmGlobals } from '../compat/shared-globals.js';
5
5
  import { isDevMode } from '../config.js';
6
+ import { trustedHTML, trustedScript } from '../trusted-types.js';
6
7
  /**
7
8
  * The compat adapter — the emulation layer, contained.
8
9
  *
@@ -88,17 +89,63 @@ export const compatAdapter = {
88
89
  * saw a bare markup snippet.
89
90
  */
90
91
  export function parseFragmentContent(html, mainDocument) {
91
- const parsed = new DOMParser().parseFromString(html, 'text/html');
92
+ // markup the gateway prepared, parsed where nothing runs: Braid's own write (see trusted-types.ts)
93
+ const parsed = new DOMParser().parseFromString(trustedHTML(html), 'text/html');
92
94
  const braidHtml = parsed.body.querySelector('braid-html');
93
95
  if (braidHtml) {
94
- return mainDocument.importNode(braidHtml, true);
96
+ return readyScripts(mainDocument.importNode(braidHtml, true));
95
97
  }
96
98
  const wrapper = mainDocument.createElement('braid-html');
97
99
  const braidBody = mainDocument.createElement('braid-body');
98
100
  braidBody.append(...[...parsed.body.childNodes].map((node) => mainDocument.importNode(node, true)));
99
101
  wrapper.append(braidBody);
100
- return wrapper;
102
+ return readyScripts(wrapper);
101
103
  }
104
+ /**
105
+ * Readies the fragment's scripts in markup imported from the parser's document, before any of it
106
+ * reaches the page.
107
+ *
108
+ * - **Only what the gateway neutralized is kept.** The gateway gives every script `type="inert"`,
109
+ * an SVG one included; one without it slipped past the rewriter, and nothing here can tell what
110
+ * it would do in the host, so it is dropped (in dev, with a warning).
111
+ * - **Each inline script gets its own text back through Braid's Trusted Types policy.** Imported
112
+ * from another document, a script no longer counts as parser-written, and a host enforcing
113
+ * Trusted Types would refuse to mark it started below. Without a policy nothing changes.
114
+ * - **Each is marked started now, while the tree is detached**, so there is no moment at which a
115
+ * blessed script is in the page unmarked. The fragment's realm runs fresh copies; these never run.
116
+ */
117
+ function readyScripts(root) {
118
+ for (const script of root.querySelectorAll('script')) {
119
+ if (script.getAttribute('type') !== 'inert') {
120
+ if (isDevMode())
121
+ console.warn('[braid] a fragment script was not neutralized by the gateway and is dropped', script);
122
+ script.remove();
123
+ continue;
124
+ }
125
+ if (script.hasAttribute('src'))
126
+ continue;
127
+ const text = script.textContent ?? '';
128
+ const trusted = trustedScript(text);
129
+ if (trusted === text)
130
+ continue;
131
+ if (script.namespaceURI === XHTML) {
132
+ script.textContent = trusted;
133
+ }
134
+ else if (!script.hasAttribute('href') && !script.hasAttribute('xlink:href')) {
135
+ // An SVG script's text cannot be given back through a policy (only an HTML script's setters
136
+ // take one), so a host enforcing Trusted Types would report it. Its realm runs an HTML copy
137
+ // whatever it is here, so the inert one in the page becomes an HTML script too.
138
+ const html = root.ownerDocument.createElement('script');
139
+ for (const attribute of script.attributes)
140
+ html.setAttribute(attribute.name, attribute.value);
141
+ html.textContent = trusted;
142
+ script.replaceWith(html);
143
+ }
144
+ }
145
+ markStartedInPlace(root);
146
+ return root;
147
+ }
148
+ const XHTML = 'http://www.w3.org/1999/xhtml';
102
149
  /**
103
150
  * Resolves once every image that holds a document's load event has loaded or failed.
104
151
  *
@@ -1 +1 @@
1
- {"version":3,"file":"compat-adapter.js","sourceRoot":"","sources":["../../../../../libs/core/src/adapters/compat-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compat-adapter.js","sourceRoot":"","sources":["../../../../../libs/core/src/adapters/compat-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,+BAA+B,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEjE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,aAAa;IACxB,oBAAoB,EAAE,IAAI;IAE1B,KAAK,CAAC,IAAI,CAAC,GAAuB;QAChC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,GAC3I,GAAG,CAAC;QAEN,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;YACnD,CAAC,oBAAoB,CAAC,EAAE,EAAE,kBAAkB,EAAE,SAA+B,EAAE;SAChF,CAAqB,CAAC;QAEvB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,uFAAuF;YACvF,uFAAuF;YACvF,yFAAyF;YACzF,uFAAuF;YACvF,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;YAE5E,uFAAuF;YACvF,wEAAwE;YACxE,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,yFAAyF;QACzF,+EAA+E;QAC/E,MAAM,uBAAuB,GAAG,IAAI,eAAe,EAAE,CAAC;QACtD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAExF,oFAAoF;QACpF,0CAA0C;QAC1C,MAAM,YAAY,GAAG,sBAAsB,CACzC,KAAK,EACL,kBAAkB,EAClB,WAAW,EACX,KAAK,EACL,uBAAuB,EACvB,aAAa,IAAI,EAAE,EACnB,gBAAgB,EAChB,UAAU,CACX,CAAC;QAEF,6FAA6F;QAC7F,IAAI,YAAY;YAAE,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QAE9E,qFAAqF;QACrF,+BAA+B,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE7D,4FAA4F;QAC5F,6FAA6F;QAC7F,oBAAoB;QACpB,YAAY,CAAC,YAAY,EAAE,CAAC;QAE5B,0EAA0E;QAC1E,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,kBAAkB,GAAG,aAAa,CAAC;QAC5E,WAAW,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAChG,WAAW,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAE/F,8FAA8F;QAC9F,+FAA+F;QAC/F,EAAE;QACF,4FAA4F;QAC5F,0FAA0F;QAC1F,mFAAmF;QACnF,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACxC,wFAAwF;YACxF,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,MAAM,CAAC,OAAO;oBAAE,OAAO;gBAC3B,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,kBAAkB,GAAG,UAAU,CAAC;gBACzE,WAAW,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAChG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAErF,IAAI,SAAS,EAAE,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,UAAU,UAAU,0BAA0B,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBACpG,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,YAAsB;IACvE,mGAAmG;IACnG,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IAE/E,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAC1D,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAgB,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACpG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1B,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,YAAY,CAAoB,IAAO;IAC9C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;YAC5C,IAAI,SAAS,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,6EAA6E,EAAE,MAAM,CAAC,CAAC;YACrH,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;YAAE,SAAS;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,OAAO,KAAK,IAAI;YAAE,SAAS;QAC/B,IAAI,MAAM,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YAClC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;QAC/B,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9E,4FAA4F;YAC5F,4FAA4F;YAC5F,gFAAgF;YAChF,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU;gBAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YAC9F,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;YAC3B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,KAAK,GAAG,8BAA8B,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,WAAwB;IACpD,MAAM,MAAM,GAAG,WAAW,CAAC,gBAAgB,CAAmB,6BAA6B,CAAC,CAAC;IAC7F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9C,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Per-fragment IndexedDB and Cache Storage, for a compat fragment granted
3
+ * `capabilities.storage: { databases: true }`.
4
+ *
5
+ * A compat realm is a same-origin iframe, so its `indexedDB` and `caches` are the origin's: two
6
+ * fragments that both open a database called `app` open the same one, and the host sees it too.
7
+ * `compat/storage-partition.ts` already gives each partition its own Web Storage and cookies; this
8
+ * does the same for the databases.
9
+ *
10
+ * - **Where the browser has Storage Buckets** (Chromium), the realm gets a bucket of its own —
11
+ * `navigator.storageBuckets.open()` — and that bucket's `indexedDB` and `caches`. The browser
12
+ * keeps the data apart, and evicts, quotas and deletes it per bucket, so one fragment filling its
13
+ * store does not cost another its data.
14
+ * - **Elsewhere**, the realm's own factory and cache storage are wrapped to prefix every name with
15
+ * the partition, and to list only the partition's own. `IDBDatabase.name` and a cache's key
16
+ * still show the prefix: an accident barrier, like the rest of the trusted tier, not a boundary.
17
+ *
18
+ * Installed before any fragment code runs. Opt-in, so a fragment's existing databases stay where
19
+ * they are until it asks.
20
+ */
21
+ export type DatabasePartitionKind = 'bucket' | 'prefixed';
22
+ /** Gives the realm window its partition's `indexedDB` and `caches`; resolves with which kind. */
23
+ export declare function installDatabasePartition(realm: Window, partition: string): Promise<DatabasePartitionKind>;
24
+ /**
25
+ * A bucket name for a partition: lowercase letters, digits, `-` and `_`, at most 64 characters, as
26
+ * the API requires. The readable part may collide after that folding; the hash of the exact
27
+ * partition keeps two partitions apart.
28
+ */
29
+ export declare function bucketName(partition: string): string;
30
+ /** An `IDBFactory` whose databases are the partition's: same prototype, so `instanceof` holds. */
31
+ export declare function prefixedFactory(native: IDBFactory, prefix: string): IDBFactory;
32
+ /** A `CacheStorage` whose caches are the partition's. `match` looks only in those. */
33
+ export declare function prefixedCacheStorage(native: CacheStorage, prefix: string): CacheStorage;
34
+ /**
35
+ * Deletes every fragment's partitioned IndexedDB and Cache Storage on this origin — the buckets,
36
+ * and the prefixed databases and caches of a browser without them. For sign-out on a shared device:
37
+ * a partitioned fragment's data lives where the origin's own `indexedDB.databases()` and
38
+ * `caches.keys()` do not list it, so a sign-out routine that clears those leaves it behind.
39
+ *
40
+ * Only Braid's own: realm buckets matched by their full name format, databases and caches by their
41
+ * `braid:<partition>:` prefix.
42
+ */
43
+ export declare function clearBraidDatabases(scope?: Window): Promise<void>;
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Per-fragment IndexedDB and Cache Storage, for a compat fragment granted
3
+ * `capabilities.storage: { databases: true }`.
4
+ *
5
+ * A compat realm is a same-origin iframe, so its `indexedDB` and `caches` are the origin's: two
6
+ * fragments that both open a database called `app` open the same one, and the host sees it too.
7
+ * `compat/storage-partition.ts` already gives each partition its own Web Storage and cookies; this
8
+ * does the same for the databases.
9
+ *
10
+ * - **Where the browser has Storage Buckets** (Chromium), the realm gets a bucket of its own —
11
+ * `navigator.storageBuckets.open()` — and that bucket's `indexedDB` and `caches`. The browser
12
+ * keeps the data apart, and evicts, quotas and deletes it per bucket, so one fragment filling its
13
+ * store does not cost another its data.
14
+ * - **Elsewhere**, the realm's own factory and cache storage are wrapped to prefix every name with
15
+ * the partition, and to list only the partition's own. `IDBDatabase.name` and a cache's key
16
+ * still show the prefix: an accident barrier, like the rest of the trusted tier, not a boundary.
17
+ *
18
+ * Installed before any fragment code runs. Opt-in, so a fragment's existing databases stay where
19
+ * they are until it asks.
20
+ */
21
+ /** Gives the realm window its partition's `indexedDB` and `caches`; resolves with which kind. */
22
+ export async function installDatabasePartition(realm, partition) {
23
+ const realmWindow = realm;
24
+ const buckets = realmWindow.navigator.storageBuckets;
25
+ const prefix = `braid:${encodeURIComponent(partition)}:`;
26
+ // Where a partition's data already is, it stays: a browser that gains buckets, or a bucket that
27
+ // was refused once, would otherwise hand the fragment an empty store and strand the old one.
28
+ if (typeof buckets?.open === 'function' && !(await hasPrefixedData(realmWindow, prefix))) {
29
+ try {
30
+ const bucket = await buckets.open(bucketName(partition));
31
+ define(realm, 'indexedDB', bucket.indexedDB);
32
+ define(realm, 'caches', bucket.caches);
33
+ return 'bucket';
34
+ }
35
+ catch {
36
+ // refused (an opaque origin, a quota policy): fall back to prefixing
37
+ }
38
+ }
39
+ if (realmWindow.indexedDB)
40
+ define(realm, 'indexedDB', prefixedFactory(realmWindow.indexedDB, prefix));
41
+ if (realmWindow.caches)
42
+ define(realm, 'caches', prefixedCacheStorage(realmWindow.caches, prefix));
43
+ return 'prefixed';
44
+ }
45
+ /**
46
+ * A bucket name for a partition: lowercase letters, digits, `-` and `_`, at most 64 characters, as
47
+ * the API requires. The readable part may collide after that folding; the hash of the exact
48
+ * partition keeps two partitions apart.
49
+ */
50
+ export function bucketName(partition) {
51
+ const readable = partition.toLowerCase().replace(/[^a-z0-9-]+/g, '-').replace(/^-+|-+$/g, '').slice(0, 40);
52
+ return `${BUCKET_NAMESPACE}${readable || 'p'}_${fnv1a(partition)}`;
53
+ }
54
+ /**
55
+ * Realm database buckets, and only them: a fixed namespace no other bucket of Braid's uses (the
56
+ * service worker's are `braid-sw-…`), matched in full, so clearing never takes an app's own bucket.
57
+ */
58
+ const BUCKET_NAMESPACE = 'braid-db_';
59
+ const BUCKET_FORMAT = /^braid-db_[a-z0-9-]{1,40}_[0-9a-f]{8}$/;
60
+ const PREFIX_FORMAT = /^braid:[^:]+:/;
61
+ function fnv1a(text) {
62
+ let hash = 0x811c9dc5;
63
+ for (let i = 0; i < text.length; i++) {
64
+ hash ^= text.charCodeAt(i);
65
+ hash = Math.imul(hash, 0x01000193) >>> 0;
66
+ }
67
+ return hash.toString(16).padStart(8, '0');
68
+ }
69
+ function define(realm, name, value) {
70
+ Object.defineProperty(realm, name, { configurable: true, enumerable: true, get: () => value });
71
+ }
72
+ /** An `IDBFactory` whose databases are the partition's: same prototype, so `instanceof` holds. */
73
+ export function prefixedFactory(native, prefix) {
74
+ return Object.create(Object.getPrototypeOf(native), {
75
+ open: {
76
+ value: (name, version) => (version === undefined ? native.open(prefix + name) : native.open(prefix + name, version)),
77
+ },
78
+ deleteDatabase: { value: (name) => native.deleteDatabase(prefix + name) },
79
+ // only where the native factory has it, so feature detection tells the truth
80
+ ...(typeof native.databases === 'function'
81
+ ? {
82
+ databases: {
83
+ value: async () => (await native.databases())
84
+ .filter((info) => info.name?.startsWith(prefix))
85
+ .map((info) => ({ ...info, name: info.name.slice(prefix.length) })),
86
+ },
87
+ }
88
+ : // shadowing the prototype's, which would throw on this object anyway
89
+ { databases: { value: undefined } }),
90
+ cmp: { value: (first, second) => native.cmp(first, second) },
91
+ });
92
+ }
93
+ /** A `CacheStorage` whose caches are the partition's. `match` looks only in those. */
94
+ export function prefixedCacheStorage(native, prefix) {
95
+ const own = async () => (await native.keys()).filter((name) => name.startsWith(prefix));
96
+ return Object.create(Object.getPrototypeOf(native), {
97
+ open: { value: (name) => native.open(prefix + name) },
98
+ has: { value: (name) => native.has(prefix + name) },
99
+ delete: { value: (name) => native.delete(prefix + name) },
100
+ keys: { value: async () => (await own()).map((name) => name.slice(prefix.length)) },
101
+ match: {
102
+ value: async (request, options) => {
103
+ if (options?.cacheName !== undefined)
104
+ return native.match(request, { ...options, cacheName: prefix + options.cacheName });
105
+ for (const name of await own()) {
106
+ const found = await (await native.open(name)).match(request, options);
107
+ if (found)
108
+ return found;
109
+ }
110
+ return undefined;
111
+ },
112
+ },
113
+ });
114
+ }
115
+ /** Whether the partition already keeps databases or caches under prefixed names. */
116
+ async function hasPrefixedData(realm, prefix) {
117
+ const has = async (names) => {
118
+ try {
119
+ return (await names()).some((name) => name?.startsWith(prefix));
120
+ }
121
+ catch {
122
+ return false;
123
+ }
124
+ };
125
+ const factory = realm.indexedDB;
126
+ const caches = realm.caches;
127
+ return ((typeof factory?.databases === 'function' && (await has(async () => (await factory.databases()).map((info) => info.name)))) ||
128
+ (caches !== undefined && (await has(() => caches.keys()))));
129
+ }
130
+ /**
131
+ * Deletes every fragment's partitioned IndexedDB and Cache Storage on this origin — the buckets,
132
+ * and the prefixed databases and caches of a browser without them. For sign-out on a shared device:
133
+ * a partitioned fragment's data lives where the origin's own `indexedDB.databases()` and
134
+ * `caches.keys()` do not list it, so a sign-out routine that clears those leaves it behind.
135
+ *
136
+ * Only Braid's own: realm buckets matched by their full name format, databases and caches by their
137
+ * `braid:<partition>:` prefix.
138
+ */
139
+ export async function clearBraidDatabases(scope = window) {
140
+ const realmWindow = scope;
141
+ const buckets = realmWindow.navigator.storageBuckets;
142
+ if (buckets && typeof buckets.keys === 'function') {
143
+ for (const name of await buckets.keys())
144
+ if (BUCKET_FORMAT.test(name))
145
+ await buckets.delete(name);
146
+ }
147
+ const factory = realmWindow.indexedDB;
148
+ if (factory && typeof factory.databases === 'function') {
149
+ for (const { name } of await factory.databases()) {
150
+ if (name && PREFIX_FORMAT.test(name)) {
151
+ await new Promise((resolve) => {
152
+ const request = factory.deleteDatabase(name);
153
+ request.onsuccess = request.onerror = request.onblocked = () => resolve();
154
+ });
155
+ }
156
+ }
157
+ }
158
+ const cacheStorage = realmWindow.caches;
159
+ if (cacheStorage) {
160
+ for (const name of await cacheStorage.keys())
161
+ if (PREFIX_FORMAT.test(name))
162
+ await cacheStorage.delete(name);
163
+ }
164
+ }
165
+ //# sourceMappingURL=database-partition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-partition.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/database-partition.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { trustedHTML } from '../trusted-types.js';
1
2
  const XHTML = 'http://www.w3.org/1999/xhtml';
2
3
  /** Context elements whose fragment parse yields text only: no tag or attribute can result. */
3
4
  const TEXT_ONLY_CONTEXTS = new Set(['textarea', 'title', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes', 'noscript', 'plaintext']);
@@ -44,16 +45,20 @@ export function createHtmlPolicy(mode, fragmentId, mainDocument) {
44
45
  const inert = mainDocument.implementation.createHTMLDocument('');
45
46
  return {
46
47
  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))
48
+ // A TrustedHTML the host's own realm minted was vetted by a policy the host allowed, and
49
+ // re-parsing it as a string here would be refused by that policy anyway. One minted in the
50
+ // fragment's realm was vetted by nobody the host chose — the realm document carries no
51
+ // Trusted Types policy of its own — so it is cleaned like any string.
52
+ const hostTrustedHTML = globalThis.TrustedHTML;
53
+ if (hostTrustedHTML && markup !== null && typeof markup === 'object' && Object.getPrototypeOf(markup) === hostTrustedHTML.prototype) {
51
54
  return null;
55
+ }
52
56
  markup = String(markup);
53
57
  if (context.namespaceURI === XHTML && TEXT_ONLY_CONTEXTS.has(context.localName))
54
58
  return null;
55
59
  const parsingContext = inert.createElementNS(context.namespaceURI, context.localName);
56
- parsingContext.innerHTML = markup;
60
+ // parsed into a document with no browsing context, then cleaned: the policy's own write
61
+ parsingContext.innerHTML = trustedHTML(markup);
57
62
  const parsed = parsingContext instanceof HTMLTemplateElement ? parsingContext.content : parsingContext;
58
63
  const findings = clean(parsed);
59
64
  if (mode === 'report') {
@@ -1 +1 @@
1
- {"version":3,"file":"html-policy.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/html-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html-policy.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/html-policy.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  import { assert } from '../utils/assert.js';
5
5
  import { getInternalReference } from './metadata.js';
6
6
  import { isRunnable, markRunnable } from './born-inert-scripts.js';
7
+ import { trustedScript } from '../trusted-types.js';
7
8
  /**
8
9
  * Script execution machinery for compat fragments: any script that enters a fragment's DOM is
9
10
  * neutralized in the main document (an inert placeholder keeps the DOM shape the app expects)
@@ -230,7 +231,7 @@ export function attachScriptToRealm({ inertScript, execScript, realmDocument, })
230
231
  for (const attribute of inertScript.attributes) {
231
232
  execScript.setAttribute(attribute.name, attribute.value);
232
233
  }
233
- execScript.textContent = inertScript.textContent;
234
+ execScript.textContent = trustedScript(inertScript.textContent ?? '', realmDocument.defaultView ?? globalThis);
234
235
  }
235
236
  // the following line will append the executable script to the realm
236
237
  // - inline scripts (script with textContent) will be executed synchronously when attached
@@ -338,7 +339,7 @@ function primeForMarking(scripts) {
338
339
  const emptied = !script.hasAttribute('src') && script.textContent === '';
339
340
  nativeSetAttribute.call(script, 'type', 'text/javascript');
340
341
  if (emptied)
341
- script.textContent = '//';
342
+ script.textContent = trustedScript('//');
342
343
  return { script, type, emptied };
343
344
  });
344
345
  return () => {
@@ -348,7 +349,7 @@ function primeForMarking(scripts) {
348
349
  else
349
350
  nativeSetAttribute.call(script, 'type', type);
350
351
  if (emptied)
351
- script.textContent = '';
352
+ script.textContent = trustedScript('');
352
353
  startedInHost.add(script);
353
354
  }
354
355
  };
@@ -459,7 +460,7 @@ function prepareUnattachedInlineScript(script, realmDocument) {
459
460
  const execScript = realmDocument.importNode(script, true);
460
461
  const inertScript = script;
461
462
  // neutralize the script so that it doesn't execute in the main JS context
462
- inertScript.textContent = '//inert';
463
+ inertScript.textContent = trustedScript('//inert');
463
464
  document.body.appendChild(inertScript);
464
465
  // now restore the inert script so the code using it doesn't see what we did
465
466
  inertScript.remove();
@@ -1 +1 @@
1
- {"version":3,"file":"script-execution.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/script-execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"script-execution.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/script-execution.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ export declare function installSharedGlobals(realmWindow: Window, mainWindow: Wi
22
22
  * The host's `realmGlobals` for one fragment, or nothing. A hook that throws or rejects must not
23
23
  * take the fragment down with it: the fragment boots without them, and dev mode says why.
24
24
  */
25
- export declare function resolveRealmGlobals(fragmentId: string, signal: AbortSignal): Promise<Record<string, unknown> | undefined>;
25
+ export declare function resolveRealmGlobals(fragmentId: string, signal: AbortSignal, slot: HTMLElement): Promise<Record<string, unknown> | undefined>;
26
26
  /**
27
27
  * Defines each of `globals` on the fragment's realm window — plain values, writable and
28
28
  * configurable, so a fragment that declares the name shadows it rather than failing to run.
@@ -42,12 +42,12 @@ export function installSharedGlobals(realmWindow, mainWindow, names, fragmentId)
42
42
  * The host's `realmGlobals` for one fragment, or nothing. A hook that throws or rejects must not
43
43
  * take the fragment down with it: the fragment boots without them, and dev mode says why.
44
44
  */
45
- export async function resolveRealmGlobals(fragmentId, signal) {
45
+ export async function resolveRealmGlobals(fragmentId, signal, slot) {
46
46
  const hook = getBraidConfig().realmGlobals;
47
47
  if (!hook)
48
48
  return undefined;
49
49
  try {
50
- const globals = await hook({ fragmentId, signal });
50
+ const globals = await hook({ fragmentId, signal, slot });
51
51
  return globals && typeof globals === 'object' ? globals : undefined;
52
52
  }
53
53
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"shared-globals.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/shared-globals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,UAAkB,EAClB,KAAwB,EACxB,UAAkB;IAElB,MAAM,IAAI,GAAG,UAAgD,CAAC;IAE9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;YACxB,IAAI,SAAS,EAAE,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CACV,UAAU,UAAU,oBAAoB,IAAI,iDAAiD;oBAC3F,oEAAoE,CACvE,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE;YACvC,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACrB,GAAG,EAAE,CAAC,KAAc,EAAE,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YACrB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAkB,EAAE,MAAmB;IAC/E,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC,YAAY,CAAC;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,OAAO,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,UAAU,8DAA8D,EAAE,KAAK,CAAC,CAAC;QACzH,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,OAA0C,EAAE,UAAkB;IACrH,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;YACxB,IAAI,SAAS,EAAE,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,UAAU,UAAU,mBAAmB,IAAI,+DAA+D,CAAC,CAAC;YAC3H,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"shared-globals.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/shared-globals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,UAAkB,EAClB,KAAwB,EACxB,UAAkB;IAElB,MAAM,IAAI,GAAG,UAAgD,CAAC;IAE9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;YACxB,IAAI,SAAS,EAAE,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CACV,UAAU,UAAU,oBAAoB,IAAI,iDAAiD;oBAC3F,oEAAoE,CACvE,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE;YACvC,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACrB,GAAG,EAAE,CAAC,KAAc,EAAE,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YACrB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB,EAClB,MAAmB,EACnB,IAAiB;IAEjB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC,YAAY,CAAC;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,UAAU,8DAA8D,EAAE,KAAK,CAAC,CAAC;QACzH,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,OAA0C,EAAE,UAAkB;IACrH,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;YACxB,IAAI,SAAS,EAAE,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,UAAU,UAAU,mBAAmB,IAAI,+DAA+D,CAAC,CAAC;YAC3H,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC"}
package/src/config.d.ts CHANGED
@@ -60,8 +60,8 @@ export interface BraidOptions {
60
60
  * initBraid({ realmGlobals: braidDesktopAgent.realmGlobals }); // window.fdc3, bound to each fragment
61
61
  * ```
62
62
  *
63
- * Called once per boot with the fragment's id and a signal that aborts when it is torn down, so
64
- * whatever was handed out can be released. Return `undefined` to give a fragment nothing. A hook
63
+ * Called once per boot with the fragment's id, the `<fragment-slot>` it boots in, and a signal
64
+ * that aborts when it is torn down, so whatever was handed out can be released. Return `undefined` to give a fragment nothing. A hook
65
65
  * that throws or rejects gives that fragment nothing and does not fail its boot. Names the realm
66
66
  * already defines are skipped, as with `sharedGlobals`.
67
67
  *
@@ -116,11 +116,22 @@ export interface BraidOptions {
116
116
  attempts?: number;
117
117
  delayMs?: number;
118
118
  };
119
+ /**
120
+ * Asked before the page navigates to another document on this origin while a slot holds unsaved
121
+ * work (`env.setDirty`): resolve true to leave, false to stay. Uses the Navigation API, so it
122
+ * applies where that exists. Navigations inside a single-page app belong to its router's guard;
123
+ * use `dirtySlots()` there (or `braidLeaveGuard` from `@braidlabs/angular`).
124
+ */
125
+ confirmLeave?: ((slots: readonly (HTMLElement & {
126
+ readonly dirty: string | null;
127
+ })[]) => boolean | Promise<boolean>) | null;
119
128
  }
120
129
  /** See {@link BraidOptions.realmGlobals}. */
121
130
  export type RealmGlobalsHook = (fragment: {
122
131
  fragmentId: string;
123
132
  signal: AbortSignal;
133
+ /** The `<fragment-slot>` the fragment boots in. */
134
+ slot: HTMLElement;
124
135
  }) => Record<string, unknown> | undefined | Promise<Record<string, unknown> | undefined>;
125
136
  interface ResolvedBraidConfig {
126
137
  dev: boolean;
package/src/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../libs/core/src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../libs/core/src/config.ts"],"names":[],"mappings":"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"}
@@ -113,7 +113,20 @@ export declare class FragmentSlot extends HTMLElement {
113
113
  set props(value: Record<string, unknown>);
114
114
  attributeChangedCallback(attribute: string, oldValue: string | null, newValue: string | null): void;
115
115
  connectedCallback(): void;
116
+ /**
117
+ * A move is not an unmount. `insertBefore` or `append` of a connected slot — a keyed list
118
+ * reordering, a framework reparenting, a layout change — disconnects and reconnects it in one go,
119
+ * and tearing down there would reboot a fragment that never left the page: its state gone, its
120
+ * document fetched again. So the decision waits a microtask: a slot back in the page by then, put
121
+ * there by the same synchronous script that took it out, moved; one that is not, left.
122
+ */
116
123
  disconnectedCallback(): void;
124
+ /** `moveBefore()` moves a slot without disconnecting it at all: nothing inside it is reloaded. */
125
+ connectedMoveCallback(): void;
126
+ /**
127
+ * Tears down and boots afresh. A host's reload also restores the recovery budget and cancels a
128
+ * scheduled recovery reboot: the host has taken over.
129
+ */
117
130
  reload(): Promise<void>;
118
131
  }
119
132
  /**