@braidlabs/core 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/adapters/adapter.d.ts +11 -0
- package/src/adapters/adapter.js.map +1 -1
- package/src/adapters/compat-adapter.js +2 -2
- package/src/adapters/compat-adapter.js.map +1 -1
- package/src/compat/born-inert-scripts.d.ts +2 -0
- package/src/compat/born-inert-scripts.js +39 -0
- package/src/compat/born-inert-scripts.js.map +1 -1
- package/src/compat/cookie-partition.d.ts +25 -0
- package/src/compat/cookie-partition.js +79 -0
- package/src/compat/cookie-partition.js.map +1 -0
- package/src/compat/document-member-classification.js +3 -2
- package/src/compat/document-member-classification.js.map +1 -1
- package/src/compat/document-overrides.d.ts +6 -6
- package/src/compat/document-overrides.js +23 -0
- package/src/compat/document-overrides.js.map +1 -1
- package/src/compat/fragment-boundary.d.ts +5 -0
- package/src/compat/fragment-boundary.js +159 -12
- package/src/compat/fragment-boundary.js.map +1 -1
- package/src/compat/html-policy.d.ts +50 -0
- package/src/compat/html-policy.js +155 -0
- package/src/compat/html-policy.js.map +1 -0
- package/src/compat/realm-patches.d.ts +2 -1
- package/src/compat/realm-patches.js +117 -3
- package/src/compat/realm-patches.js.map +1 -1
- package/src/compat/script-execution.d.ts +24 -0
- package/src/compat/script-execution.js +177 -10
- package/src/compat/script-execution.js.map +1 -1
- package/src/compat/storage-partition.d.ts +47 -0
- package/src/compat/storage-partition.js +291 -0
- package/src/compat/storage-partition.js.map +1 -0
- package/src/compat/subresource-urls.d.ts +41 -0
- package/src/compat/subresource-urls.js +133 -0
- package/src/compat/subresource-urls.js.map +1 -0
- package/src/config.d.ts +28 -0
- package/src/config.js +24 -0
- package/src/config.js.map +1 -1
- package/src/elements/boot-gate.d.ts +47 -0
- package/src/elements/boot-gate.js +207 -0
- package/src/elements/boot-gate.js.map +1 -0
- package/src/elements/fragment-slot.d.ts +34 -0
- package/src/elements/fragment-slot.js +282 -24
- package/src/elements/fragment-slot.js.map +1 -1
- package/src/elements/late-content.d.ts +44 -0
- package/src/elements/late-content.js +107 -0
- package/src/elements/late-content.js.map +1 -0
- package/src/elements/prefetch.d.ts +27 -0
- package/src/elements/prefetch.js +100 -0
- package/src/elements/prefetch.js.map +1 -0
- package/src/elements/prerequisites.d.ts +42 -0
- package/src/elements/prerequisites.js +133 -0
- package/src/elements/prerequisites.js.map +1 -0
- package/src/elements/recovery.d.ts +46 -0
- package/src/elements/recovery.js +59 -0
- package/src/elements/recovery.js.map +1 -0
- package/src/errors.d.ts +4 -1
- package/src/errors.js +2 -0
- package/src/errors.js.map +1 -1
- package/src/index.d.ts +4 -1
- package/src/index.js +10 -1
- package/src/index.js.map +1 -1
- package/src/realm/realm-manager.js +23 -0
- package/src/realm/realm-manager.js.map +1 -1
- package/src/weave/capabilities.d.ts +35 -7
- package/src/weave/capabilities.js +17 -0
- package/src/weave/capabilities.js.map +1 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { BraidError, BraidErrorStage } from '../errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* Self-healing slots: a fragment that fails for a reason a retry can fix is rebooted, a few times,
|
|
4
|
+
* with growing gaps. Opt-in, through `initBraid({ recover })`.
|
|
5
|
+
*
|
|
6
|
+
* What counts as fixable is the point. A network blip, a deploy that briefly 404'd a chunk, a realm
|
|
7
|
+
* whose frame went away (`gone`) — those are worth another try. A misconfigured slot, an adapter
|
|
8
|
+
* this client does not have, terms the host and fragment cannot agree on, a user without access —
|
|
9
|
+
* those fail identically every time, and retrying them only repeats the error and the request.
|
|
10
|
+
*/
|
|
11
|
+
export declare const RECOVERABLE_STAGES: ReadonlySet<BraidErrorStage>;
|
|
12
|
+
export interface RecoveryPolicy {
|
|
13
|
+
/** Reboots at most this many times per mount. */
|
|
14
|
+
attempts: number;
|
|
15
|
+
/** The first reboot's delay; each later one waits four times longer than the last. */
|
|
16
|
+
delayMs: number;
|
|
17
|
+
}
|
|
18
|
+
export declare const DEFAULT_RECOVERY: RecoveryPolicy;
|
|
19
|
+
/** No reboot waits longer than this, however many attempts are allowed. */
|
|
20
|
+
export declare const MAX_RECOVERY_DELAY_MS: number;
|
|
21
|
+
/** The most attempts a host may ask for: past this, a fragment is not recovering, it is down. */
|
|
22
|
+
export declare const MAX_RECOVERY_ATTEMPTS = 10;
|
|
23
|
+
export interface Recovery {
|
|
24
|
+
/** A boot failed. Schedules a reboot if the failure is fixable and attempts remain. */
|
|
25
|
+
onError(error: Pick<BraidError, 'stage' | 'httpStatus'>, notEntitled: boolean): void;
|
|
26
|
+
/** The fragment stopped answering. Schedules a reboot if attempts remain. */
|
|
27
|
+
onGone(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Cancels a scheduled reboot and restores the full budget: the slot left the DOM, or the host
|
|
30
|
+
* reloaded it itself.
|
|
31
|
+
*/
|
|
32
|
+
reset(): void;
|
|
33
|
+
}
|
|
34
|
+
export interface RecoveryEvent {
|
|
35
|
+
attempt: number;
|
|
36
|
+
delayMs: number;
|
|
37
|
+
/** The stage that failed, or `gone`. */
|
|
38
|
+
reason: BraidErrorStage | 'gone';
|
|
39
|
+
}
|
|
40
|
+
export declare function createRecovery(options: {
|
|
41
|
+
policy: () => RecoveryPolicy | undefined;
|
|
42
|
+
/** Announces a scheduled reboot, before it waits. */
|
|
43
|
+
announce: (event: RecoveryEvent) => void;
|
|
44
|
+
/** Reboots, if the slot still needs it when the delay is up. */
|
|
45
|
+
reboot: () => void;
|
|
46
|
+
}): Recovery;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-healing slots: a fragment that fails for a reason a retry can fix is rebooted, a few times,
|
|
3
|
+
* with growing gaps. Opt-in, through `initBraid({ recover })`.
|
|
4
|
+
*
|
|
5
|
+
* What counts as fixable is the point. A network blip, a deploy that briefly 404'd a chunk, a realm
|
|
6
|
+
* whose frame went away (`gone`) — those are worth another try. A misconfigured slot, an adapter
|
|
7
|
+
* this client does not have, terms the host and fragment cannot agree on, a user without access —
|
|
8
|
+
* those fail identically every time, and retrying them only repeats the error and the request.
|
|
9
|
+
*/
|
|
10
|
+
export const RECOVERABLE_STAGES = new Set([
|
|
11
|
+
'fragment-fetch',
|
|
12
|
+
'realm-boot',
|
|
13
|
+
'handshake',
|
|
14
|
+
'boundary',
|
|
15
|
+
'adapter-mount',
|
|
16
|
+
]);
|
|
17
|
+
export const DEFAULT_RECOVERY = { attempts: 3, delayMs: 1_000 };
|
|
18
|
+
/** No reboot waits longer than this, however many attempts are allowed. */
|
|
19
|
+
export const MAX_RECOVERY_DELAY_MS = 5 * 60_000;
|
|
20
|
+
/** The most attempts a host may ask for: past this, a fragment is not recovering, it is down. */
|
|
21
|
+
export const MAX_RECOVERY_ATTEMPTS = 10;
|
|
22
|
+
/**
|
|
23
|
+
* A response that says the request itself is wrong — a 4xx, or a redirect (to a login, usually) —
|
|
24
|
+
* comes back the same on every retry. 408 and 429 are the exceptions: they ask to be retried.
|
|
25
|
+
*/
|
|
26
|
+
function isDeterministicResponse(status) {
|
|
27
|
+
return status !== undefined && status >= 300 && status < 500 && status !== 408 && status !== 429;
|
|
28
|
+
}
|
|
29
|
+
export function createRecovery(options) {
|
|
30
|
+
let attempts = 0;
|
|
31
|
+
let timer;
|
|
32
|
+
function schedule(reason) {
|
|
33
|
+
const policy = options.policy();
|
|
34
|
+
if (!policy || timer !== undefined || attempts >= policy.attempts)
|
|
35
|
+
return;
|
|
36
|
+
attempts++;
|
|
37
|
+
const delayMs = Math.min(policy.delayMs * 4 ** (attempts - 1), MAX_RECOVERY_DELAY_MS);
|
|
38
|
+
options.announce({ attempt: attempts, delayMs, reason });
|
|
39
|
+
timer = setTimeout(() => {
|
|
40
|
+
timer = undefined;
|
|
41
|
+
options.reboot();
|
|
42
|
+
}, delayMs);
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
onError({ stage, httpStatus }, notEntitled) {
|
|
46
|
+
if (!notEntitled && RECOVERABLE_STAGES.has(stage) && !isDeterministicResponse(httpStatus))
|
|
47
|
+
schedule(stage);
|
|
48
|
+
},
|
|
49
|
+
onGone() {
|
|
50
|
+
schedule('gone');
|
|
51
|
+
},
|
|
52
|
+
reset() {
|
|
53
|
+
clearTimeout(timer);
|
|
54
|
+
timer = undefined;
|
|
55
|
+
attempts = 0;
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../../../libs/core/src/elements/recovery.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAiC,IAAI,GAAG,CAAC;IACtE,gBAAgB;IAChB,YAAY;IACZ,WAAW;IACX,UAAU;IACV,eAAe;CAChB,CAAC,CAAC;AASH,MAAM,CAAC,MAAM,gBAAgB,GAAmB,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAEhF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,MAAM,CAAC;AAEhD,iGAAiG;AACjG,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAExC;;;GAGG;AACH,SAAS,uBAAuB,CAAC,MAA0B;IACzD,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC;AACnG,CAAC;AAqBD,MAAM,UAAU,cAAc,CAAC,OAM9B;IACC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAAgD,CAAC;IAErD,SAAS,QAAQ,CAAC,MAA+B;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ;YAAE,OAAO;QAC1E,QAAQ,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;QACtF,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACzD,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,KAAK,GAAG,SAAS,CAAC;YAClB,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,WAAW;YACxC,IAAI,CAAC,WAAW,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;gBAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7G,CAAC;QACD,MAAM;YACJ,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QACD,KAAK;YACH,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,SAAS,CAAC;YAClB,QAAQ,GAAG,CAAC,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/src/errors.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* the failing stage, and — where we know it — the likely fix.
|
|
4
4
|
*/
|
|
5
5
|
/** The lifecycle stage in which an error occurred. */
|
|
6
|
-
export type BraidErrorStage = 'slot-config' | 'fragment-fetch' | 'realm-boot' | 'adapter-resolution' | 'adapter-mount' | 'context-version' | 'boundary' | 'handshake' | 'teardown' | 'contract';
|
|
6
|
+
export type BraidErrorStage = 'slot-config' | 'fragment-fetch' | 'realm-boot' | 'adapter-resolution' | 'adapter-mount' | 'context-version' | 'boundary' | 'handshake' | 'teardown' | 'contract' | 'prerequisite';
|
|
7
7
|
export interface BraidErrorInit {
|
|
8
8
|
fragmentId: string;
|
|
9
9
|
stage: BraidErrorStage;
|
|
@@ -11,11 +11,14 @@ export interface BraidErrorInit {
|
|
|
11
11
|
/** The likely fix, phrased as an instruction to the developer. */
|
|
12
12
|
fixHint?: string;
|
|
13
13
|
docsUrl?: string;
|
|
14
|
+
/** The HTTP status that caused it, when a response did. Redirects (status 0 in a browser) count as 302. */
|
|
15
|
+
httpStatus?: number;
|
|
14
16
|
}
|
|
15
17
|
export declare class BraidError extends Error {
|
|
16
18
|
readonly fragmentId: string;
|
|
17
19
|
readonly stage: BraidErrorStage;
|
|
18
20
|
readonly fixHint?: string;
|
|
19
21
|
readonly docsUrl?: string;
|
|
22
|
+
readonly httpStatus?: number;
|
|
20
23
|
constructor(message: string, init: BraidErrorInit);
|
|
21
24
|
}
|
package/src/errors.js
CHANGED
|
@@ -7,6 +7,7 @@ export class BraidError extends Error {
|
|
|
7
7
|
stage;
|
|
8
8
|
fixHint;
|
|
9
9
|
docsUrl;
|
|
10
|
+
httpStatus;
|
|
10
11
|
constructor(message, init) {
|
|
11
12
|
const hint = init.fixHint ? `\nLikely fix: ${init.fixHint}` : '';
|
|
12
13
|
const docs = init.docsUrl ? `\nDocs: ${init.docsUrl}` : '';
|
|
@@ -16,6 +17,7 @@ export class BraidError extends Error {
|
|
|
16
17
|
this.stage = init.stage;
|
|
17
18
|
this.fixHint = init.fixHint;
|
|
18
19
|
this.docsUrl = init.docsUrl;
|
|
20
|
+
this.httpStatus = init.httpStatus;
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
23
|
//# sourceMappingURL=errors.js.map
|
package/src/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../libs/core/src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../libs/core/src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,UAAU,CAAS;IACnB,KAAK,CAAkB;IACvB,OAAO,CAAU;IACjB,OAAO,CAAU;IACjB,UAAU,CAAU;IAE7B,YAAY,OAAe,EAAE,IAAoB;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,KAAK,CAAC,UAAU,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnG,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,CAAC;CACF"}
|
package/src/index.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ import { BraidOptions } from './config.js';
|
|
|
16
16
|
export { BraidError } from './errors.js';
|
|
17
17
|
export type { BraidErrorStage } from './errors.js';
|
|
18
18
|
export type { BraidOptions, RealmGlobalsHook } from './config.js';
|
|
19
|
+
export type { PrerequisiteOutcome, PrerequisiteResolver } from './elements/prerequisites.js';
|
|
20
|
+
export { NotEntitledError } from './elements/prerequisites.js';
|
|
19
21
|
export type { FragmentEnv, EnvDocument, EnvLocation, EnvHistory, EnvContext, EnvSubscribeOptions } from './env/fragment-env.js';
|
|
20
22
|
export type { BraidAdapter } from './adapters/adapter.js';
|
|
21
23
|
export { DEFAULT_ADAPTER } from './adapters/adapter.js';
|
|
@@ -23,7 +25,8 @@ export { customElementAdapter } from './adapters/custom-element-adapter.js';
|
|
|
23
25
|
export { contractAdapter } from './adapters/contract-adapter.js';
|
|
24
26
|
export { defineFragment } from './env/define-fragment.js';
|
|
25
27
|
export type { FragmentDefinition } from './env/define-fragment.js';
|
|
26
|
-
export { FragmentSlot } from './elements/fragment-slot.js';
|
|
28
|
+
export { FragmentSlot, prefetchFragment } from './elements/fragment-slot.js';
|
|
29
|
+
export { clearPrefetchedFragments } from './elements/prefetch.js';
|
|
27
30
|
export type { FragmentSlotState } from './elements/fragment-slot.js';
|
|
28
31
|
export { braidContext, createContextBus } from './context/context-bus.js';
|
|
29
32
|
export type { ContextBus } from './context/context-bus.js';
|
package/src/index.js
CHANGED
|
@@ -18,12 +18,15 @@ import { compatAdapter } from './adapters/compat-adapter.js';
|
|
|
18
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
|
+
import { BraidLate, BraidLateEnd } from './elements/late-content.js';
|
|
21
22
|
export { BraidError } from './errors.js';
|
|
23
|
+
export { NotEntitledError } from './elements/prerequisites.js';
|
|
22
24
|
export { DEFAULT_ADAPTER } from './adapters/adapter.js';
|
|
23
25
|
export { customElementAdapter } from './adapters/custom-element-adapter.js';
|
|
24
26
|
export { contractAdapter } from './adapters/contract-adapter.js';
|
|
25
27
|
export { defineFragment } from './env/define-fragment.js';
|
|
26
|
-
export { FragmentSlot } from './elements/fragment-slot.js';
|
|
28
|
+
export { FragmentSlot, prefetchFragment } from './elements/fragment-slot.js';
|
|
29
|
+
export { clearPrefetchedFragments } from './elements/prefetch.js';
|
|
27
30
|
export { braidContext, createContextBus } from './context/context-bus.js';
|
|
28
31
|
export { registerBraidServiceWorker } from './compat/register-worker.js';
|
|
29
32
|
export { createRealm } from './realm/realm-manager.js';
|
|
@@ -39,6 +42,12 @@ export function initBraid(options = {}) {
|
|
|
39
42
|
installAdapter(compatAdapter);
|
|
40
43
|
installAdapter(customElementAdapter);
|
|
41
44
|
installAdapter(contractAdapter);
|
|
45
|
+
// Before the slot: defining it upgrades late markup already parsed, which moves it into its slot
|
|
46
|
+
// before that slot boots and decides whether it was pierced.
|
|
47
|
+
if (!customElements.get('braid-late')) {
|
|
48
|
+
customElements.define('braid-late', BraidLate);
|
|
49
|
+
customElements.define('braid-late-end', BraidLateEnd);
|
|
50
|
+
}
|
|
42
51
|
if (!customElements.get('fragment-slot')) {
|
|
43
52
|
customElements.define('fragment-slot', FragmentSlot);
|
|
44
53
|
}
|
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;
|
|
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;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAc1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAGzE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAE/H,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,UAAwB,EAAE;IAClD,cAAc,CAAC,OAAO,CAAC,CAAC;IACxB,cAAc,CAAC,aAAa,CAAC,CAAC;IAC9B,cAAc,CAAC,oBAAoB,CAAC,CAAC;IACrC,cAAc,CAAC,eAAe,CAAC,CAAC;IAEhC,iGAAiG;IACjG,6DAA6D;IAC7D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC/C,cAAc,CAAC,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QACzC,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
|
|
@@ -261,6 +261,7 @@ async function createCompatHttpRealm(init) {
|
|
|
261
261
|
// The stub's <base> element is unaffected by replaceState and keeps relative url
|
|
262
262
|
// resolution inside the namespace.
|
|
263
263
|
iframe.contentWindow.history.replaceState(null, '', routeSrcUrl.pathname + routeSrcUrl.search);
|
|
264
|
+
reportPolicyViolations(iframe.contentDocument, fragmentId);
|
|
264
265
|
resolveLoaded();
|
|
265
266
|
}
|
|
266
267
|
catch (error) {
|
|
@@ -276,6 +277,28 @@ async function createCompatHttpRealm(init) {
|
|
|
276
277
|
init.signal.addEventListener('abort', () => handle.dispose(), { once: true });
|
|
277
278
|
return handle;
|
|
278
279
|
}
|
|
280
|
+
/**
|
|
281
|
+
* Names the fragment behind each request its realm's policy blocked, or would have.
|
|
282
|
+
*
|
|
283
|
+
* A gateway with `realmPolicy` turns a fragment's `capabilities.network` into a `connect-src` policy
|
|
284
|
+
* on its realm stub. The browser's own console message names the URL but not which of the page's
|
|
285
|
+
* fragments asked for it; this does. The listener is on the realm's document, not the host's.
|
|
286
|
+
*/
|
|
287
|
+
function reportPolicyViolations(realmDocument, fragmentId) {
|
|
288
|
+
realmDocument.addEventListener('securitypolicyviolation', (event) => {
|
|
289
|
+
const what = event.disposition === 'report' ? 'would have blocked' : 'blocked';
|
|
290
|
+
// the origin only: a full URL's query can carry tokens, and the origin is what the grant names
|
|
291
|
+
let origin = event.blockedURI;
|
|
292
|
+
try {
|
|
293
|
+
origin = new URL(event.blockedURI).origin;
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
// not a URL (a keyword such as "inline"); shown as it is
|
|
297
|
+
}
|
|
298
|
+
console.warn(`[braid:${fragmentId}] the realm's policy ${what} a request to ${origin} (${event.effectiveDirective}) — ` +
|
|
299
|
+
`add that origin to the manifest's capabilities.network if the fragment needs it`);
|
|
300
|
+
});
|
|
301
|
+
}
|
|
279
302
|
/**
|
|
280
303
|
* Points a realm stub's relative urls at the route's directory in the fragment namespace, exactly
|
|
281
304
|
* as a stub fetched at the route would have. Nothing in the stub has resolved a url yet, so this is
|
|
@@ -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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"}
|
|
@@ -9,17 +9,23 @@
|
|
|
9
9
|
* | `context` | **Braid** — the bus is ours | yes | yes |
|
|
10
10
|
* | `sandbox` | the browser | n/a — no frame to sandbox | yes |
|
|
11
11
|
* | `permissions` | the browser (Permissions-Policy) | n/a | yes |
|
|
12
|
-
* | `network` | the browser (CSP), or nobody |
|
|
12
|
+
* | `network` | the browser (CSP on the realm), or nobody | advisory, or the realm's own requests with the gateway's `realmPolicy` | CSP on the fragment's own origin |
|
|
13
13
|
* | `sharedGlobals` | **Braid** — realm-window accessors | compat and custom-element fragments | n/a — ignored, nothing to share across origins |
|
|
14
|
+
* | `storage` | **Braid** — realm-window storage views | compat fragments | n/a — the browser already partitions a cross-origin frame |
|
|
15
|
+
* | `html` | **Braid** — the fragment boundary's stamped HTML sinks | compat fragments | n/a — its DOM is its own document |
|
|
14
16
|
*
|
|
15
17
|
* `context` is the one that matters most on the trusted tier, and the one Braid can actually
|
|
16
18
|
* enforce there — because Phase 1 turned the context bus into a message, so "what may this fragment
|
|
17
19
|
* read" became a question asked in exactly one place instead of a check to remember at every read.
|
|
18
20
|
*
|
|
19
|
-
* `network` is
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* is
|
|
21
|
+
* `network` is advisory on the trusted tier by default: it documents intent and feeds the registry's
|
|
22
|
+
* analysis. A gateway with `realmPolicy` turns the registry's grant into a `connect-src` policy on
|
|
23
|
+
* the realm's own document, which the browser enforces (or reports) for the realm's requests. That
|
|
24
|
+
* is all it covers: what the realm calls on the host's behalf — `navigator.sendBeacon` (a compat
|
|
25
|
+
* realm's `navigator` is the host's), a `sharedGlobals` client — and code that deliberately reaches
|
|
26
|
+
* the host realm's `fetch` are outside it, and Braid does not patch host globals to close that gap. A tripwire
|
|
27
|
+
* for accidents and naive exfiltration, stated as one. A grant passed only to `initBraid` cannot
|
|
28
|
+
* reach the realm's headers, and stays advisory.
|
|
23
29
|
*/
|
|
24
30
|
export interface ContextGrants {
|
|
25
31
|
/**
|
|
@@ -38,8 +44,19 @@ export interface FragmentCapabilities {
|
|
|
38
44
|
permissions?: string[];
|
|
39
45
|
/** Origins the fragment is expected to talk to. Advisory on the trusted tier — see above. */
|
|
40
46
|
network?: string[];
|
|
41
|
-
/**
|
|
42
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Whose Web Storage the fragment sees. `'shared'` (the default) is the host origin's, as for any
|
|
49
|
+
* same-origin frame. `'partitioned'` gives it a store of its own, keyed by fragment id;
|
|
50
|
+
* `{ partition }` names a store several fragments share. See `compat/storage-partition.ts`.
|
|
51
|
+
* Compat fragments only; ignored elsewhere.
|
|
52
|
+
*/
|
|
53
|
+
storage?: StorageGrant;
|
|
54
|
+
/**
|
|
55
|
+
* What the fragment's own `innerHTML` and `insertAdjacentHTML` writes may put in the page:
|
|
56
|
+
* `'sanitize'` strips what could run, `'report'` only warns. Compat fragments only; see
|
|
57
|
+
* `compat/html-policy.ts`.
|
|
58
|
+
*/
|
|
59
|
+
html?: 'report' | 'sanitize';
|
|
43
60
|
/**
|
|
44
61
|
* Host globals this fragment reads and writes as its own — see `BraidOptions.sharedGlobals`.
|
|
45
62
|
* Replaces the host-wide default when present; `[]` opts the fragment out. Trusted tier only.
|
|
@@ -81,5 +98,16 @@ export declare function resolveCapabilities(sources: Array<FragmentCapabilities
|
|
|
81
98
|
* what that fragment gets, and `[]` is how a fragment with its own analytics stack opts out.
|
|
82
99
|
*/
|
|
83
100
|
export declare function resolveSharedGlobals(capabilities: FragmentCapabilities | undefined): readonly string[];
|
|
101
|
+
/** A fragment's Web Storage grant. */
|
|
102
|
+
export type StorageGrant = 'shared' | 'partitioned' | {
|
|
103
|
+
partition: string;
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* The storage partition a fragment writes into, or `null` for the shared, host-origin store.
|
|
107
|
+
*
|
|
108
|
+
* The grant is manifest JSON, cast rather than parsed, so anything that is not exactly one of the
|
|
109
|
+
* two partitioned forms is the shared default — a typo must not quietly move a fragment's data.
|
|
110
|
+
*/
|
|
111
|
+
export declare function resolveStoragePartition(capabilities: FragmentCapabilities | undefined, fragmentId: string): string | null;
|
|
84
112
|
/** Reads a capabilities block off a realm stub's adapter options, or off `initBraid` config. */
|
|
85
113
|
export declare function readCapabilities(source: unknown): FragmentCapabilities | undefined;
|
|
@@ -64,6 +64,23 @@ export function resolveSharedGlobals(capabilities) {
|
|
|
64
64
|
return [];
|
|
65
65
|
return names.filter((name) => typeof name === 'string' && name !== '');
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* The storage partition a fragment writes into, or `null` for the shared, host-origin store.
|
|
69
|
+
*
|
|
70
|
+
* The grant is manifest JSON, cast rather than parsed, so anything that is not exactly one of the
|
|
71
|
+
* two partitioned forms is the shared default — a typo must not quietly move a fragment's data.
|
|
72
|
+
*/
|
|
73
|
+
export function resolveStoragePartition(capabilities, fragmentId) {
|
|
74
|
+
const grant = capabilities?.storage;
|
|
75
|
+
if (grant === 'partitioned')
|
|
76
|
+
return fragmentId;
|
|
77
|
+
if (grant && typeof grant === 'object') {
|
|
78
|
+
const partition = grant.partition;
|
|
79
|
+
if (typeof partition === 'string' && partition !== '')
|
|
80
|
+
return partition;
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
67
84
|
/** Reads a capabilities block off a realm stub's adapter options, or off `initBraid` config. */
|
|
68
85
|
export function readCapabilities(source) {
|
|
69
86
|
if (!source || typeof source !== 'object')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../../../libs/core/src/weave/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../../../libs/core/src/weave/capabilities.ts"],"names":[],"mappings":"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"}
|