@brett_lamy/docstream 1.20.1 → 1.22.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/README.md +5 -0
- package/dist/doc-env.d.ts +5 -3
- package/dist/doc-env.d.ts.map +1 -1
- package/dist/doc-env.js +2 -2
- package/dist/doc-env.js.map +1 -1
- package/dist/env-keychain.d.ts +49 -0
- package/dist/env-keychain.d.ts.map +1 -0
- package/dist/env-keychain.js +201 -0
- package/dist/env-keychain.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/replay/ReplayDevtools.d.ts +18 -0
- package/dist/replay/ReplayDevtools.d.ts.map +1 -0
- package/dist/replay/ReplayDevtools.js +137 -0
- package/dist/replay/ReplayDevtools.js.map +1 -0
- package/dist/replay/ReplayPlayer.d.ts +10 -2
- package/dist/replay/ReplayPlayer.d.ts.map +1 -1
- package/dist/replay/ReplayPlayer.js +16 -6
- package/dist/replay/ReplayPlayer.js.map +1 -1
- package/dist/replay/demo/index.d.ts.map +1 -1
- package/dist/replay/demo/index.js +15 -4
- package/dist/replay/demo/index.js.map +1 -1
- package/dist/replay/devtools.d.ts +70 -0
- package/dist/replay/devtools.d.ts.map +1 -0
- package/dist/replay/devtools.js +201 -0
- package/dist/replay/devtools.js.map +1 -0
- package/dist/replay/index.d.ts +3 -0
- package/dist/replay/index.d.ts.map +1 -1
- package/dist/replay/index.js +1 -0
- package/dist/replay/index.js.map +1 -1
- package/dist/styles.css +547 -0
- package/package.json +1 -1
- package/src/doc-env.tsx +7 -5
- package/src/env-keychain.ts +264 -0
- package/src/index.ts +2 -0
- package/src/replay/ReplayDevtools.tsx +348 -0
- package/src/replay/ReplayPlayer.tsx +36 -6
- package/src/replay/demo/index.ts +15 -4
- package/src/replay/devtools.ts +251 -0
- package/src/replay/index.ts +3 -0
- package/src/styles.css +547 -0
package/README.md
CHANGED
|
@@ -202,6 +202,11 @@ when the page loads. It shows a gate, and its module isn't imported, until the v
|
|
|
202
202
|
hint beside each variable.
|
|
203
203
|
- **Without a host:** the gate asks the reader for the values and keeps them in memory for the page.
|
|
204
204
|
|
|
205
|
+
For a passkey keychain, use `createEnvKeychain` and `keychainEnvHost`. Values are kept encrypted
|
|
206
|
+
with a key derived from the passkey's PRF output, and the names are readable while locked. A press
|
|
207
|
+
unlocks it with one biometric prompt, signs in (`obtain`) only for what it doesn't hold, saves that,
|
|
208
|
+
and answers with everything it holds, so every example those values cover opens together.
|
|
209
|
+
|
|
205
210
|
In-page demos read the values with `useDocstreamEnv().values`. Inline demos that run in almost-node,
|
|
206
211
|
and live code fences, get them as `process.env.NAME` (`injectEnv` writes a module the entry imports
|
|
207
212
|
first). Values loaded once are shared by every example on the page. `env` can also be passed as a
|
package/dist/doc-env.d.ts
CHANGED
|
@@ -4,11 +4,13 @@ export type DocstreamEnvValues = Readonly<Record<string, string>>;
|
|
|
4
4
|
export interface DocstreamEnvHost {
|
|
5
5
|
/**
|
|
6
6
|
* Resolves with the values it could get (unlocking a keychain or signing in as needed). Names it
|
|
7
|
-
* leaves out stay missing and the example stays gated; a rejection is shown on the gate.
|
|
7
|
+
* leaves out stay missing and the example stays gated; a rejection is shown on the gate. It may
|
|
8
|
+
* resolve with more than it was asked for — everything an unlocked keychain holds, say — and every
|
|
9
|
+
* example those values cover opens too.
|
|
8
10
|
*/
|
|
9
11
|
request: (names: readonly string[]) => Promise<Record<string, string>>;
|
|
10
|
-
/** The gate's button, e.g. "Load from Keychain". Default "Load Variables". */
|
|
11
|
-
label?: string;
|
|
12
|
+
/** The gate's button, e.g. "Load from Keychain", or one for the names this gate needs. Default "Load Variables". */
|
|
13
|
+
label?: string | ((names: readonly string[]) => string);
|
|
12
14
|
/** A short line about one variable, e.g. "Sign in with GitHub" — shown beside its name. */
|
|
13
15
|
describe?: (name: string) => string | undefined;
|
|
14
16
|
}
|
package/dist/doc-env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-env.d.ts","sourceRoot":"","sources":["../src/doc-env.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAqF,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEzH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAEjE,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B
|
|
1
|
+
{"version":3,"file":"doc-env.d.ts","sourceRoot":"","sources":["../src/doc-env.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAqF,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEzH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAEjE,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACtE,oHAAoH;IACpH,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC,CAAA;IACvD,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;CAChD;AAED,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B,kEAAkE;IAClE,MAAM,EAAE,kBAAkB,CAAA;IAC1B,sFAAsF;IACtF,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAClE,IAAI,CAAC,EAAE,gBAAgB,CAAA;IACvB,2DAA2D;IAC3D,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAA;CAClD;AAOD,8FAA8F;AAC9F,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,+FAA+F;AAC/F,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,EAAE,CAI5F;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAI9F;AAED,MAAM,WAAW,yBAAyB;IACxC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,IAAI,CAAC,EAAE,gBAAgB,CAAA;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,QAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,yBAAyB,+BA2BhG;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAYxD,uEAAuE;;IAEvE,0CAA0C;;IAE1C,6EAA6E;;IAE7E,qDAAqD;;EAGxD;AAED,gEAAgE;AAChE,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,+BAgErF"}
|
package/dist/doc-env.js
CHANGED
|
@@ -56,7 +56,7 @@ export function DocstreamEnvProvider({ declared = [], host, children }) {
|
|
|
56
56
|
if (!missing.length || !effectiveHost)
|
|
57
57
|
return valuesRef.current;
|
|
58
58
|
const got = await effectiveHost.request(missing);
|
|
59
|
-
const kept = Object.fromEntries(Object.entries(got).filter(([
|
|
59
|
+
const kept = Object.fromEntries(Object.entries(got).filter(([, v]) => typeof v === "string"));
|
|
60
60
|
setOwn((v) => ({ ...v, ...kept }));
|
|
61
61
|
return { ...valuesRef.current, ...kept };
|
|
62
62
|
}, [effectiveHost]);
|
|
@@ -118,6 +118,6 @@ export function EnvGate({ names, title }) {
|
|
|
118
118
|
else
|
|
119
119
|
setError("Fill in every variable to run the example.");
|
|
120
120
|
};
|
|
121
|
-
return (_jsxs("div", { className: "docs-env-gate", role: "group", "aria-label": `${title ?? "Example"} needs environment variables`, "data-docstream-env-gate": "", children: [_jsxs("div", { className: "docs-env-gate-head", children: [_jsx("span", { className: "docs-env-gate-icon", "aria-hidden": "true", children: _jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("circle", { cx: "7.5", cy: "15.5", r: "5.5" }), _jsx("path", { d: "m21 2-9.6 9.6" }), _jsx("path", { d: "m15.5 7.5 3 3L22 7l-3-3" })] }) }), _jsxs("span", { children: ["This example needs ", names.length === 1 ? "a variable" : `${names.length} variables`, " before it runs."] })] }), host ? (_jsxs(_Fragment, { children: [_jsx("ul", { className: "docs-env-gate-list", children: names.map((n) => (_jsxs("li", { children: [_jsx("code", { children: n }), host.describe?.(n) ? _jsx("span", { children: host.describe(n) }) : null] }, n))) }), _jsx("button", { type: "button", className: "docs-env-gate-button", onClick: () => void load(), disabled: busy, children: busy ? "Waiting…" : host.label ?? "Load Variables" })] })) : (_jsxs("form", { className: "docs-env-gate-form", onSubmit: submit, children: [names.map((n) => (_jsxs("label", { children: [_jsx("code", { children: n }), _jsx("input", { type: "password", autoComplete: "off", spellCheck: false, value: typed[n] ?? "", onChange: (e) => setTyped((t) => ({ ...t, [n]: e.target.value })) })] }, n))), _jsx("button", { type: "submit", className: "docs-env-gate-button", children: "Run Example" }), _jsx("span", { className: "docs-env-gate-note", children: "Kept in memory for this page only." })] })), error ? _jsx("p", { className: "docs-env-gate-error", role: "alert", children: error }) : null] }));
|
|
121
|
+
return (_jsxs("div", { className: "docs-env-gate", role: "group", "aria-label": `${title ?? "Example"} needs environment variables`, "data-docstream-env-gate": "", children: [_jsxs("div", { className: "docs-env-gate-head", children: [_jsx("span", { className: "docs-env-gate-icon", "aria-hidden": "true", children: _jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("circle", { cx: "7.5", cy: "15.5", r: "5.5" }), _jsx("path", { d: "m21 2-9.6 9.6" }), _jsx("path", { d: "m15.5 7.5 3 3L22 7l-3-3" })] }) }), _jsxs("span", { children: ["This example needs ", names.length === 1 ? "a variable" : `${names.length} variables`, " before it runs."] })] }), host ? (_jsxs(_Fragment, { children: [_jsx("ul", { className: "docs-env-gate-list", children: names.map((n) => (_jsxs("li", { children: [_jsx("code", { children: n }), host.describe?.(n) ? _jsx("span", { children: host.describe(n) }) : null] }, n))) }), _jsx("button", { type: "button", className: "docs-env-gate-button", onClick: () => void load(), disabled: busy, children: busy ? "Waiting…" : (typeof host.label === "function" ? host.label(names) : host.label) ?? "Load Variables" })] })) : (_jsxs("form", { className: "docs-env-gate-form", onSubmit: submit, children: [names.map((n) => (_jsxs("label", { children: [_jsx("code", { children: n }), _jsx("input", { type: "password", autoComplete: "off", spellCheck: false, value: typed[n] ?? "", onChange: (e) => setTyped((t) => ({ ...t, [n]: e.target.value })) })] }, n))), _jsx("button", { type: "submit", className: "docs-env-gate-button", children: "Run Example" }), _jsx("span", { className: "docs-env-gate-note", children: "Kept in memory for this page only." })] })), error ? _jsx("p", { className: "docs-env-gate-error", role: "alert", children: error }) : null] }));
|
|
122
122
|
}
|
|
123
123
|
//# sourceMappingURL=doc-env.js.map
|
package/dist/doc-env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-env.js","sourceRoot":"","sources":["../src/doc-env.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;qDAaqD;AACrD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAkC,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"doc-env.js","sourceRoot":"","sources":["../src/doc-env.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { DocstreamEnvHost } from "./doc-env.js";
|
|
2
|
+
export type EnvKeychainStatus = "unsupported" | "empty" | "locked" | "unlocked";
|
|
3
|
+
export interface EnvKeychain {
|
|
4
|
+
readonly status: EnvKeychainStatus;
|
|
5
|
+
/** The variables it holds (readable while locked). */
|
|
6
|
+
readonly names: readonly string[];
|
|
7
|
+
/** Creates the passkey (a biometric prompt; may ask twice on authenticators that only return PRF on sign-in). */
|
|
8
|
+
enroll(): Promise<void>;
|
|
9
|
+
/** A biometric prompt; then `values` can be read. */
|
|
10
|
+
unlock(): Promise<void>;
|
|
11
|
+
lock(): void;
|
|
12
|
+
/** Everything it holds. Unlocked only. */
|
|
13
|
+
values(): Promise<Record<string, string>>;
|
|
14
|
+
/** Adds or replaces values. Unlocked only. */
|
|
15
|
+
set(values: Record<string, string>): Promise<void>;
|
|
16
|
+
/** Forgets one variable, or (no argument) everything including the passkey's record. */
|
|
17
|
+
reset(name?: string): Promise<void>;
|
|
18
|
+
subscribe(listener: () => void): () => void;
|
|
19
|
+
}
|
|
20
|
+
export interface EnvKeychainOptions {
|
|
21
|
+
/** Names the keychain in storage; different ids are different keychains. */
|
|
22
|
+
id: string;
|
|
23
|
+
/** Shown by the passkey prompt. */
|
|
24
|
+
rpName: string;
|
|
25
|
+
/** Account name the passkey is listed under. Default "Environment variables". */
|
|
26
|
+
userName?: string;
|
|
27
|
+
/** Default `localStorage`. */
|
|
28
|
+
storage?: Pick<Storage, "getItem" | "setItem" | "removeItem">;
|
|
29
|
+
}
|
|
30
|
+
export declare function createEnvKeychain(options: EnvKeychainOptions): EnvKeychain;
|
|
31
|
+
export interface KeychainEnvHostOptions {
|
|
32
|
+
/** Gets values the keychain doesn't hold — a sign-in, a prompt. Resolve with what you got; it is saved. */
|
|
33
|
+
obtain?: (names: readonly string[]) => Promise<Record<string, string>>;
|
|
34
|
+
/** The gate's button when a sign-in is needed. Default "Sign In". */
|
|
35
|
+
signInLabel?: string | ((names: readonly string[]) => string);
|
|
36
|
+
/** The gate's button when the keychain already holds everything the example needs. Default "Unlock with Passkey". */
|
|
37
|
+
unlockLabel?: string;
|
|
38
|
+
/** A hint beside a variable the keychain doesn't hold. */
|
|
39
|
+
describe?: (name: string) => string | undefined;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A `DocstreamEnvHost` over a keychain. Pressing a gate's button:
|
|
43
|
+
* 1. creates the keychain (first time; a passkey prompt) or unlocks it (a biometric prompt);
|
|
44
|
+
* 2. asks `obtain` for the variables it doesn't hold, and saves them;
|
|
45
|
+
* 3. answers with everything the keychain holds, so every example those values cover opens.
|
|
46
|
+
* Without passkey support (or if the reader declines) values are kept for the page only.
|
|
47
|
+
*/
|
|
48
|
+
export declare function keychainEnvHost(keychain: EnvKeychain, options?: KeychainEnvHostOptions): DocstreamEnvHost;
|
|
49
|
+
//# sourceMappingURL=env-keychain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-keychain.d.ts","sourceRoot":"","sources":["../src/env-keychain.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAA;AAE/E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,iHAAiH;IACjH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACvB,qDAAqD;IACrD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACvB,IAAI,IAAI,IAAI,CAAA;IACZ,0CAA0C;IAC1C,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACzC,8CAA8C;IAC9C,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,wFAAwF;IACxF,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5C;AAED,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAA;IACV,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,CAAA;CAC9D;AA4CD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAgI1E;AAED,MAAM,WAAW,sBAAsB;IACrC,2GAA2G;IAC3G,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACtE,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC,CAAA;IAC7D,qHAAqH;IACrH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;CAChD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,GAAE,sBAA2B,GAAG,gBAAgB,CAuB7G"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
const b64 = (bytes) => {
|
|
2
|
+
const u = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
|
|
3
|
+
let s = "";
|
|
4
|
+
for (const b of u)
|
|
5
|
+
s += String.fromCharCode(b);
|
|
6
|
+
return btoa(s).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
7
|
+
};
|
|
8
|
+
const unb64 = (text) => {
|
|
9
|
+
const s = atob(text.replace(/-/g, "+").replace(/_/g, "/") + "===".slice((text.length + 3) % 4));
|
|
10
|
+
return Uint8Array.from(s, (c) => c.charCodeAt(0));
|
|
11
|
+
};
|
|
12
|
+
const random = (n) => crypto.getRandomValues(new Uint8Array(n));
|
|
13
|
+
const prfFirst = (credential) => {
|
|
14
|
+
const first = credential.getClientExtensionResults().prf?.results?.first;
|
|
15
|
+
if (!first)
|
|
16
|
+
return null;
|
|
17
|
+
const view = ArrayBuffer.isView(first) ? new Uint8Array(first.buffer, first.byteOffset, first.byteLength) : new Uint8Array(first);
|
|
18
|
+
const copy = new Uint8Array(view.byteLength);
|
|
19
|
+
copy.set(view);
|
|
20
|
+
return copy;
|
|
21
|
+
};
|
|
22
|
+
async function aesKey(prf) {
|
|
23
|
+
const base = await crypto.subtle.importKey("raw", prf, "HKDF", false, ["deriveKey"]);
|
|
24
|
+
return crypto.subtle.deriveKey({ name: "HKDF", hash: "SHA-256", salt: new Uint8Array(0), info: new TextEncoder().encode("docstream env keychain v1") }, base, { name: "AES-GCM", length: 256 }, false, ["encrypt", "decrypt"]);
|
|
25
|
+
}
|
|
26
|
+
export function createEnvKeychain(options) {
|
|
27
|
+
const key = `docstream-env-keychain:${options.id}`;
|
|
28
|
+
const storage = options.storage ?? (typeof localStorage !== "undefined" ? localStorage : null);
|
|
29
|
+
const listeners = new Set();
|
|
30
|
+
let aes = null;
|
|
31
|
+
let cache = null;
|
|
32
|
+
const read = () => {
|
|
33
|
+
try {
|
|
34
|
+
const raw = storage?.getItem(key);
|
|
35
|
+
const s = raw ? JSON.parse(raw) : null;
|
|
36
|
+
return s?.v === 1 && typeof s.credentialId === "string" && typeof s.salt === "string" ? { ...s, names: Array.isArray(s.names) ? s.names : [] } : null;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const write = (s) => {
|
|
43
|
+
if (s)
|
|
44
|
+
storage?.setItem(key, JSON.stringify(s));
|
|
45
|
+
else
|
|
46
|
+
storage?.removeItem(key);
|
|
47
|
+
listeners.forEach((l) => l());
|
|
48
|
+
};
|
|
49
|
+
const supported = () => typeof window !== "undefined" && window.isSecureContext && typeof PublicKeyCredential !== "undefined" && !!navigator.credentials && !!storage && !!crypto?.subtle;
|
|
50
|
+
/** A sign-in with the stored passkey, returning its PRF output. */
|
|
51
|
+
async function assert(stored) {
|
|
52
|
+
const credential = (await navigator.credentials.get({
|
|
53
|
+
publicKey: {
|
|
54
|
+
challenge: random(32),
|
|
55
|
+
allowCredentials: [{ type: "public-key", id: unb64(stored.credentialId) }],
|
|
56
|
+
userVerification: "required",
|
|
57
|
+
extensions: { prf: { eval: { first: unb64(stored.salt) } } },
|
|
58
|
+
},
|
|
59
|
+
}));
|
|
60
|
+
const first = credential && prfFirst(credential);
|
|
61
|
+
if (!first)
|
|
62
|
+
throw new Error("This passkey can't unlock the keychain (no PRF support).");
|
|
63
|
+
return first;
|
|
64
|
+
}
|
|
65
|
+
async function seal(values, stored) {
|
|
66
|
+
const iv = random(12);
|
|
67
|
+
const data = await crypto.subtle.encrypt({ name: "AES-GCM", iv }, aes, new TextEncoder().encode(JSON.stringify(values)));
|
|
68
|
+
cache = { ...values };
|
|
69
|
+
write({ ...stored, names: Object.keys(values).sort(), iv: b64(iv), data: b64(data) });
|
|
70
|
+
}
|
|
71
|
+
const keychain = {
|
|
72
|
+
get status() {
|
|
73
|
+
if (!supported())
|
|
74
|
+
return "unsupported";
|
|
75
|
+
if (!read())
|
|
76
|
+
return "empty";
|
|
77
|
+
return aes ? "unlocked" : "locked";
|
|
78
|
+
},
|
|
79
|
+
get names() {
|
|
80
|
+
return read()?.names ?? [];
|
|
81
|
+
},
|
|
82
|
+
async enroll() {
|
|
83
|
+
if (!supported())
|
|
84
|
+
throw new Error("This browser can't keep a passkey keychain.");
|
|
85
|
+
const salt = random(32);
|
|
86
|
+
const created = (await navigator.credentials.create({
|
|
87
|
+
publicKey: {
|
|
88
|
+
rp: { name: options.rpName },
|
|
89
|
+
user: { id: random(16), name: options.userName ?? "Environment variables", displayName: options.userName ?? "Environment variables" },
|
|
90
|
+
challenge: random(32),
|
|
91
|
+
pubKeyCredParams: [{ type: "public-key", alg: -7 }, { type: "public-key", alg: -257 }],
|
|
92
|
+
authenticatorSelection: { residentKey: "preferred", userVerification: "required" },
|
|
93
|
+
extensions: { prf: { eval: { first: salt } } },
|
|
94
|
+
},
|
|
95
|
+
}));
|
|
96
|
+
if (!created)
|
|
97
|
+
throw new Error("No passkey was created.");
|
|
98
|
+
const ext = created.getClientExtensionResults().prf;
|
|
99
|
+
if (!ext?.enabled && !ext?.results?.first)
|
|
100
|
+
throw new Error("This passkey can't encrypt (no PRF support). Try another passkey provider.");
|
|
101
|
+
const stored = { v: 1, credentialId: b64(created.rawId), salt: b64(salt), names: [] };
|
|
102
|
+
// Some authenticators only evaluate PRF on sign-in: then this asks once more.
|
|
103
|
+
aes = await aesKey(prfFirst(created) ?? (await assert(stored)));
|
|
104
|
+
await seal({}, stored);
|
|
105
|
+
},
|
|
106
|
+
async unlock() {
|
|
107
|
+
const stored = read();
|
|
108
|
+
if (!stored)
|
|
109
|
+
throw new Error("There is no keychain yet.");
|
|
110
|
+
if (aes)
|
|
111
|
+
return;
|
|
112
|
+
aes = await aesKey(await assert(stored));
|
|
113
|
+
cache = null;
|
|
114
|
+
listeners.forEach((l) => l());
|
|
115
|
+
},
|
|
116
|
+
lock() {
|
|
117
|
+
aes = null;
|
|
118
|
+
cache = null;
|
|
119
|
+
listeners.forEach((l) => l());
|
|
120
|
+
},
|
|
121
|
+
async values() {
|
|
122
|
+
if (!aes)
|
|
123
|
+
throw new Error("The keychain is locked.");
|
|
124
|
+
if (cache)
|
|
125
|
+
return { ...cache };
|
|
126
|
+
const stored = read();
|
|
127
|
+
if (!stored?.data || !stored.iv)
|
|
128
|
+
return (cache = {});
|
|
129
|
+
try {
|
|
130
|
+
const plain = await crypto.subtle.decrypt({ name: "AES-GCM", iv: unb64(stored.iv) }, aes, unb64(stored.data));
|
|
131
|
+
cache = JSON.parse(new TextDecoder().decode(plain));
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
aes = null;
|
|
135
|
+
throw new Error("That passkey doesn't open this keychain.");
|
|
136
|
+
}
|
|
137
|
+
return { ...cache };
|
|
138
|
+
},
|
|
139
|
+
async set(values) {
|
|
140
|
+
const stored = read();
|
|
141
|
+
if (!stored || !aes)
|
|
142
|
+
throw new Error("The keychain is locked.");
|
|
143
|
+
await seal({ ...(await keychain.values()), ...values }, stored);
|
|
144
|
+
},
|
|
145
|
+
async reset(name) {
|
|
146
|
+
if (name === undefined) {
|
|
147
|
+
aes = null;
|
|
148
|
+
cache = null;
|
|
149
|
+
write(null);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const stored = read();
|
|
153
|
+
if (!stored)
|
|
154
|
+
return;
|
|
155
|
+
if (aes) {
|
|
156
|
+
const { [name]: _, ...rest } = await keychain.values();
|
|
157
|
+
await seal(rest, stored);
|
|
158
|
+
}
|
|
159
|
+
else
|
|
160
|
+
write({ ...stored, names: stored.names.filter((n) => n !== name) });
|
|
161
|
+
},
|
|
162
|
+
subscribe(listener) {
|
|
163
|
+
listeners.add(listener);
|
|
164
|
+
return () => listeners.delete(listener);
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
return keychain;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* A `DocstreamEnvHost` over a keychain. Pressing a gate's button:
|
|
171
|
+
* 1. creates the keychain (first time; a passkey prompt) or unlocks it (a biometric prompt);
|
|
172
|
+
* 2. asks `obtain` for the variables it doesn't hold, and saves them;
|
|
173
|
+
* 3. answers with everything the keychain holds, so every example those values cover opens.
|
|
174
|
+
* Without passkey support (or if the reader declines) values are kept for the page only.
|
|
175
|
+
*/
|
|
176
|
+
export function keychainEnvHost(keychain, options = {}) {
|
|
177
|
+
const held = (names) => names.every((n) => keychain.names.includes(n));
|
|
178
|
+
return {
|
|
179
|
+
label: (names) => held(names) ? options.unlockLabel ?? "Unlock with Passkey"
|
|
180
|
+
: typeof options.signInLabel === "function" ? options.signInLabel(names) : options.signInLabel ?? "Sign In",
|
|
181
|
+
describe: (name) => (keychain.names.includes(name) ? "In your keychain" : options.describe?.(name)),
|
|
182
|
+
async request(names) {
|
|
183
|
+
// The press's user activation is still live here: spend it on the passkey prompt first.
|
|
184
|
+
let usable = keychain.status === "unlocked";
|
|
185
|
+
if (keychain.status === "locked") {
|
|
186
|
+
await keychain.unlock();
|
|
187
|
+
usable = true;
|
|
188
|
+
}
|
|
189
|
+
else if (keychain.status === "empty") {
|
|
190
|
+
usable = await keychain.enroll().then(() => true, () => false);
|
|
191
|
+
}
|
|
192
|
+
const saved = usable ? await keychain.values() : {};
|
|
193
|
+
const missing = names.filter((n) => saved[n] === undefined);
|
|
194
|
+
const got = missing.length && options.obtain ? await options.obtain(missing) : {};
|
|
195
|
+
if (usable && Object.keys(got).length)
|
|
196
|
+
await keychain.set(got);
|
|
197
|
+
return { ...saved, ...got };
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=env-keychain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-keychain.js","sourceRoot":"","sources":["../src/env-keychain.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export type { TaskCheckboxProps, TaskStateChangeHandler } from "./docs/TaskCheck
|
|
|
6
6
|
export { TASK_STATES, getTaskState, taskMarker, taskStateFromMarker } from "./gitbook/tasks.js";
|
|
7
7
|
export { DocstreamEnvProvider, EnvGate, envNamesFromProperties, useDocstreamEnv, useEnvGate, usedEnvNames } from "./doc-env.js";
|
|
8
8
|
export type { DocstreamEnv, DocstreamEnvHost, DocstreamEnvProviderProps, DocstreamEnvValues } from "./doc-env.js";
|
|
9
|
+
export { createEnvKeychain, keychainEnvHost } from "./env-keychain.js";
|
|
10
|
+
export type { EnvKeychain, EnvKeychainOptions, EnvKeychainStatus, KeychainEnvHostOptions } from "./env-keychain.js";
|
|
9
11
|
export { DocumentProperties } from "./docs/DocumentProperties.js";
|
|
10
12
|
export type { DocumentPropertiesProps } from "./docs/DocumentProperties.js";
|
|
11
13
|
export { readDocumentProperties, removeDocumentProperty, setDocumentProperty } from "./gitbook/properties.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC7F,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACpE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACpF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC5F,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC5H,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9G,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1G,YAAY,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC3F,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC3H,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC3E,OAAO,EACL,SAAS,EACT,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,oCAAoC,EACpC,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,QAAQ,CAAA;AACf,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,OAAO,EACP,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,GACb,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACxF,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC1G,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACrF,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GACb,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACxF,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACjF,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAChE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AACpF,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AAChI,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC3F,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACvG,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACrG,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AACzB,mBAAmB,eAAe,CAAA;AAClC,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC7F,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACpE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACpF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC5F,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC5H,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9G,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACnE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAChH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1G,YAAY,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC3F,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC3H,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC3E,OAAO,EACL,SAAS,EACT,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,oCAAoC,EACpC,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,QAAQ,CAAA;AACf,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,OAAO,EACP,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,GACb,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACxF,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC1G,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACrF,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GACb,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACxF,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACjF,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAChE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AACpF,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AAChI,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC3F,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACvG,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACrG,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AACzB,mBAAmB,eAAe,CAAA;AAClC,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export { DocsRenderer, MarkdownContent, MathFormula, documentEnv } from "./docs/
|
|
|
5
5
|
export { TaskCheckbox, TASK_STATE_ICONS } from "./docs/TaskCheckbox.js";
|
|
6
6
|
export { TASK_STATES, getTaskState, taskMarker, taskStateFromMarker } from "./gitbook/tasks.js";
|
|
7
7
|
export { DocstreamEnvProvider, EnvGate, envNamesFromProperties, useDocstreamEnv, useEnvGate, usedEnvNames } from "./doc-env.js";
|
|
8
|
+
export { createEnvKeychain, keychainEnvHost } from "./env-keychain.js";
|
|
8
9
|
export { DocumentProperties } from "./docs/DocumentProperties.js";
|
|
9
10
|
export { readDocumentProperties, removeDocumentProperty, setDocumentProperty } from "./gitbook/properties.js";
|
|
10
11
|
export { DocPageActions } from "./docs/PageActions.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReplayDevtoolsState } from './devtools.js';
|
|
2
|
+
export type ReplayDevtoolsTab = 'console' | 'network';
|
|
3
|
+
/** The two buttons for the top bar (or the controls row): icon, request count and, in red, what failed. */
|
|
4
|
+
export declare function DevtoolsButtons({ state, open, onOpen }: {
|
|
5
|
+
state: ReplayDevtoolsState;
|
|
6
|
+
open: ReplayDevtoolsTab | null;
|
|
7
|
+
onOpen: (tab: ReplayDevtoolsTab) => void;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
/** The panel over the page: Console and Network, cut at the playhead. */
|
|
10
|
+
export declare function DevtoolsPanel({ state, at, tab, onTab, onClose, onSeek }: {
|
|
11
|
+
state: ReplayDevtoolsState;
|
|
12
|
+
at: number;
|
|
13
|
+
tab: ReplayDevtoolsTab;
|
|
14
|
+
onTab: (tab: ReplayDevtoolsTab) => void;
|
|
15
|
+
onClose: () => void;
|
|
16
|
+
onSeek: (ms: number) => void;
|
|
17
|
+
}): import("react").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=ReplayDevtools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReplayDevtools.d.ts","sourceRoot":"","sources":["../../src/replay/ReplayDevtools.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAsB,mBAAmB,EAAiB,MAAM,YAAY,CAAA;AAExF,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAA;AAQrD,2GAA2G;AAC3G,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IACvD,KAAK,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAA;CACrG,+BAgCA;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IACxE,KAAK,EAAE,mBAAmB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACvG,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD,+BA6DA"}
|