@braidlabs/core 0.7.1 → 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/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 +13 -0
- package/src/elements/fragment-slot.js +89 -7
- 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/index.d.ts +2 -0
- package/src/index.js +13 -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.js +8 -4
- 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.
|
|
3
|
+
"version": "0.8.0",
|
|
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
|
-
|
|
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":"AACA,OAAO,EAAoB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"compat-adapter.js","sourceRoot":"","sources":["../../../../../libs/core/src/adapters/compat-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
//
|
|
48
|
-
// be refused by that policy anyway
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
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":"
|
|
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,
|
|
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
|
|
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":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAuB,MAAM,wBAAwB,CAAC;
|
|
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
|
/**
|