@poe-platform/safe-js 0.1.721 → 0.1.723
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 +36 -6
- package/dist/config-mutations/types.d.ts +3 -1
- package/dist/safe-js/chunks/{chunk-B4M6QVUV.js → chunk-3QQYJ4RQ.js} +3 -2
- package/dist/safe-js/chunks/chunk-3QQYJ4RQ.js.map +7 -0
- package/dist/safe-js/chunks/{chunk-BEXRQET4.js → chunk-5MT2LF3W.js} +3 -3
- package/dist/safe-js/chunks/{chunk-JNLY7IMV.js → chunk-7FCMZUZJ.js} +4 -4
- package/dist/safe-js/chunks/{chunk-BHYBD6SY.js → chunk-7TL6Z6LT.js} +58 -8
- package/dist/safe-js/chunks/chunk-7TL6Z6LT.js.map +7 -0
- package/dist/safe-js/chunks/{chunk-HYD4K4HN.js → chunk-BRBOVGNC.js} +63 -1
- package/dist/safe-js/chunks/chunk-BRBOVGNC.js.map +7 -0
- package/dist/safe-js/chunks/{chunk-4CX3HYRY.js → chunk-HY3Q377V.js} +2 -2
- package/dist/safe-js/chunks/{chunk-DNA7BMBY.js → chunk-IZ52PAOD.js} +8540 -7309
- package/dist/safe-js/chunks/{chunk-DNA7BMBY.js.map → chunk-IZ52PAOD.js.map} +4 -4
- package/dist/safe-js/chunks/{chunk-A4L72WXV.js → chunk-KHJDAEET.js} +10 -11
- package/dist/safe-js/chunks/chunk-KHJDAEET.js.map +7 -0
- package/dist/safe-js/chunks/{chunk-Q7B6JIMI.js → chunk-M6HUSN7X.js} +404 -117
- package/dist/safe-js/chunks/chunk-M6HUSN7X.js.map +7 -0
- package/dist/safe-js/chunks/{chunk-LPBTSTDG.js → chunk-QMZG576E.js} +4 -4
- package/dist/safe-js/chunks/{chunk-ILYJBA2D.js → chunk-RYVHEOHM.js} +1109 -100
- package/dist/safe-js/chunks/chunk-RYVHEOHM.js.map +7 -0
- package/dist/safe-js/chunks/{chunk-IS7YUCOF.js → chunk-SWQHZKYM.js} +2 -2
- package/dist/safe-js/chunks/{chunk-Y4LNCDCP.js → chunk-WF7HYDJ4.js} +4 -5
- package/dist/safe-js/chunks/{chunk-Y4LNCDCP.js.map → chunk-WF7HYDJ4.js.map} +2 -2
- package/dist/safe-js/chunks/{chunk-GMPZBMPA.js → chunk-Y5ZXQHL6.js} +3 -3
- package/dist/safe-js/chunks/{cli-runtime-YK2WE33M.js → cli-runtime-EPXCJ5AG.js} +14 -14
- package/dist/safe-js/chunks/{dump-ATWBOZWV.js → dump-TWVEBH5W.js} +4 -4
- package/dist/safe-js/chunks/{fs-D72Y52I5.js → fs-DSNHTHBT.js} +4 -4
- package/dist/safe-js/chunks/harness-RLA643GD.js +10 -0
- package/dist/safe-js/chunks/mcp-IEY7HXXT.js +11 -0
- package/dist/safe-js/chunks/migration-file-QMI45CSP.js +12 -0
- package/dist/safe-js/chunks/restore-R5PLLBST.js +13 -0
- package/dist/safe-js/chunks/run-QATVEFVQ.js +17 -0
- package/dist/safe-js/chunks/runtime-modules-5D7KDFMZ.js +10 -0
- package/dist/safe-js/cli.js +2 -2
- package/dist/safe-js/core.js +7 -7
- package/dist/safe-js/index.js +14 -14
- package/dist/safe-js/interp/async.d.ts +4 -1
- package/dist/safe-js/interp/budget.d.ts +12 -6
- package/dist/safe-js/interp/collection-iterator.d.ts +1 -1
- package/dist/safe-js/interp/host-bridge.d.ts +2 -0
- package/dist/safe-js/interp/host-capabilities.d.ts +13 -4
- package/dist/safe-js/interp/interpreter.d.ts +5 -1
- package/dist/safe-js/interp/intl-numberformat.d.ts +2 -2
- package/dist/safe-js/interp/jobs.d.ts +8 -0
- package/dist/safe-js/interp/scope.d.ts +9 -2
- package/dist/safe-js/interp/typed-array.d.ts +2 -2
- package/dist/safe-js/interp/values.d.ts +1 -0
- package/dist/safe-js/modules/registry.d.ts +4 -1
- package/dist/safe-js/modules/source-graph.d.ts +19 -1
- package/dist/safe-js/parse/compact-spans.d.ts +18 -0
- package/dist/safe-js/parse/dynamic-source.d.ts +3 -1
- package/dist/safe-js/parse/function-source.d.ts +1 -1
- package/dist/safe-js/parse/parser.d.ts +8 -3
- package/dist/safe-js/parse/tokenizer.d.ts +4 -0
- package/dist/safe-js/realm.d.ts +16 -3
- package/dist/safe-js/restore.d.ts +1 -0
- package/dist/safe-js/run.d.ts +10 -0
- package/package.json +2 -2
- package/dist/safe-js/chunks/chunk-A4L72WXV.js.map +0 -7
- package/dist/safe-js/chunks/chunk-B4M6QVUV.js.map +0 -7
- package/dist/safe-js/chunks/chunk-BHYBD6SY.js.map +0 -7
- package/dist/safe-js/chunks/chunk-HYD4K4HN.js.map +0 -7
- package/dist/safe-js/chunks/chunk-ILYJBA2D.js.map +0 -7
- package/dist/safe-js/chunks/chunk-Q7B6JIMI.js.map +0 -7
- package/dist/safe-js/chunks/harness-LUYCGWHZ.js +0 -10
- package/dist/safe-js/chunks/mcp-IWKZB2R2.js +0 -11
- package/dist/safe-js/chunks/migration-file-IXO5MLP4.js +0 -12
- package/dist/safe-js/chunks/restore-SI7HOC6C.js +0 -13
- package/dist/safe-js/chunks/run-SHI2PYR6.js +0 -17
- package/dist/safe-js/chunks/runtime-modules-OO72HTVF.js +0 -10
- /package/dist/safe-js/chunks/{chunk-BEXRQET4.js.map → chunk-5MT2LF3W.js.map} +0 -0
- /package/dist/safe-js/chunks/{chunk-JNLY7IMV.js.map → chunk-7FCMZUZJ.js.map} +0 -0
- /package/dist/safe-js/chunks/{chunk-4CX3HYRY.js.map → chunk-HY3Q377V.js.map} +0 -0
- /package/dist/safe-js/chunks/{chunk-LPBTSTDG.js.map → chunk-QMZG576E.js.map} +0 -0
- /package/dist/safe-js/chunks/{chunk-IS7YUCOF.js.map → chunk-SWQHZKYM.js.map} +0 -0
- /package/dist/safe-js/chunks/{chunk-GMPZBMPA.js.map → chunk-Y5ZXQHL6.js.map} +0 -0
- /package/dist/safe-js/chunks/{cli-runtime-YK2WE33M.js.map → cli-runtime-EPXCJ5AG.js.map} +0 -0
- /package/dist/safe-js/chunks/{dump-ATWBOZWV.js.map → dump-TWVEBH5W.js.map} +0 -0
- /package/dist/safe-js/chunks/{fs-D72Y52I5.js.map → fs-DSNHTHBT.js.map} +0 -0
- /package/dist/safe-js/chunks/{harness-LUYCGWHZ.js.map → harness-RLA643GD.js.map} +0 -0
- /package/dist/safe-js/chunks/{mcp-IWKZB2R2.js.map → mcp-IEY7HXXT.js.map} +0 -0
- /package/dist/safe-js/chunks/{migration-file-IXO5MLP4.js.map → migration-file-QMI45CSP.js.map} +0 -0
- /package/dist/safe-js/chunks/{restore-SI7HOC6C.js.map → restore-R5PLLBST.js.map} +0 -0
- /package/dist/safe-js/chunks/{run-SHI2PYR6.js.map → run-QATVEFVQ.js.map} +0 -0
- /package/dist/safe-js/chunks/{runtime-modules-OO72HTVF.js.map → runtime-modules-5D7KDFMZ.js.map} +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
+
hashParsedAst,
|
|
2
3
|
hashSource,
|
|
3
4
|
validateSnapshotMigration
|
|
4
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-Y5ZXQHL6.js";
|
|
5
6
|
import {
|
|
6
7
|
SnapshotValidationError,
|
|
7
8
|
assertSnapshotInactive,
|
|
@@ -14,12 +15,13 @@ import {
|
|
|
14
15
|
validateGuestFunctionAst,
|
|
15
16
|
validateRuntimeSnapshotDescriptors,
|
|
16
17
|
validateTemplateObjects
|
|
17
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-IZ52PAOD.js";
|
|
18
19
|
import {
|
|
19
20
|
ParseError,
|
|
21
|
+
parseExecutableModule,
|
|
20
22
|
parseModule,
|
|
21
23
|
replaceErrorStack
|
|
22
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-RYVHEOHM.js";
|
|
23
25
|
|
|
24
26
|
// packages/safe-js/src/restore.ts
|
|
25
27
|
var SnapshotMismatchError = class extends Error {
|
|
@@ -40,17 +42,14 @@ function restore(snapshot, options, owner) {
|
|
|
40
42
|
try {
|
|
41
43
|
validateDumpEnvelope(snapshot, { resume: true });
|
|
42
44
|
} catch (error) {
|
|
43
|
-
if (!(error instanceof SnapshotValidationError) || error.code !== "invalidState" || !inMemoryRunSnapshots.has(snapshot)) throw error;
|
|
45
|
+
if (!(error instanceof SnapshotValidationError) || error.code !== "invalidState" || error.path === "$.replayError" || !inMemoryRunSnapshots.has(snapshot)) throw error;
|
|
44
46
|
validateRuntimeSnapshotDescriptors(snapshot);
|
|
45
47
|
snapshot = JSON.parse(serializeSafeJSSnapshot(snapshot));
|
|
46
48
|
validateDumpEnvelope(snapshot, { resume: true });
|
|
47
49
|
}
|
|
48
50
|
validateSnapshotMigration(snapshot.migration, snapshot.sourceHash, owner);
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
owner,
|
|
52
|
-
snapshot.executionSemantics !== "jobs-v6" && snapshot.executionSemantics !== "jobs-v7"
|
|
53
|
-
);
|
|
51
|
+
const includeFunctionSource = snapshot.executionSemantics !== "jobs-v6" && snapshot.executionSemantics !== "jobs-v7";
|
|
52
|
+
const currentSourceHash = options.importSpecifiers === void 0 ? hashSource(options.source, owner, includeFunctionSource) : hashParsedAst(parseExecutableModule(options.source, "<input>", owner, options.importSpecifiers), includeFunctionSource);
|
|
54
53
|
if (snapshot.sourceHash !== currentSourceHash) {
|
|
55
54
|
throw new SnapshotMismatchError(snapshot.sourceHash, currentSourceHash);
|
|
56
55
|
}
|
|
@@ -77,7 +76,7 @@ function restore(snapshot, options, owner) {
|
|
|
77
76
|
}
|
|
78
77
|
if (closures.length > 0) {
|
|
79
78
|
const functions = /* @__PURE__ */ new Map();
|
|
80
|
-
const pending = [parseModule(options.source, "<input>", owner)];
|
|
79
|
+
const pending = [options.importSpecifiers === void 0 ? parseModule(options.source, "<input>", owner) : parseExecutableModule(options.source, "<input>", owner, options.importSpecifiers)];
|
|
81
80
|
while (pending.length > 0) {
|
|
82
81
|
const value = pending.pop();
|
|
83
82
|
if (value === null || typeof value !== "object") continue;
|
|
@@ -112,4 +111,4 @@ export {
|
|
|
112
111
|
SnapshotMismatchError,
|
|
113
112
|
restore
|
|
114
113
|
};
|
|
115
|
-
//# sourceMappingURL=chunk-
|
|
114
|
+
//# sourceMappingURL=chunk-KHJDAEET.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/restore.ts"],
|
|
4
|
+
"sourcesContent": ["import { hashParsedAst, hashSource } from \"./parse/hash.js\";\nimport type { CompileOwner } from \"./interp/budget.js\";\nimport { replaceErrorStack } from \"./error/shape.js\";\nimport { SnapshotValidationError, validateDumpEnvelope, validateRuntimeSnapshotDescriptors } from \"./snapshot/validation.js\";\nimport { inMemoryRunSnapshots, serializeSafeJSSnapshot } from \"./snapshot/dump-format.js\";\nimport { assertSnapshotInactive } from \"./interp/running-state.js\";\nimport { validateSnapshotMigration, type SnapshotMigration } from \"./snapshot/migration.js\";\nimport { parseExecutableModule, parseModule } from \"./parse/parser.js\";\nimport { ParseError } from \"./parse/format-error.js\";\nimport { createModuleSource, createDynamicSource, createEvalSource, type DynamicSource, type EvalSourceContext } from \"./parse/dynamic-source.js\";\nimport { validateGuestFunctionAst } from \"./snapshot/guest-ast-validation.js\";\nimport { validateTemplateObjects } from \"./snapshot/template-validation.js\";\nimport type { ParseResult } from \"./parse.js\";\n\nexport type SafeJSSnapshot = {\n version?: number;\n sourceHash: string;\n migration?: SnapshotMigration;\n clock?: {\n next: number;\n };\n random?: {\n seed: number;\n state: number;\n initialState?: number;\n resumeState?: number;\n };\n [key: string]: unknown;\n};\n\nexport type RestoreOptions = {\n source: string;\n importSpecifiers?: readonly string[];\n};\n\nexport class SnapshotMismatchError extends Error {\n readonly actualHash: string;\n readonly expectedHash: string;\n\n constructor(expectedHash: string, actualHash: string) {\n super(\n `source changed since snapshot was taken (hash ${expectedHash} expected, got ${actualHash}); pass --reset to discard`\n );\n this.name = \"SnapshotMismatchError\";\n this.actualHash = actualHash;\n this.expectedHash = expectedHash;\n replaceErrorStack(this);\n }\n}\n\nexport function restore<TSnapshot extends SafeJSSnapshot>(\n snapshot: TSnapshot,\n options: RestoreOptions,\n owner?: CompileOwner\n): TSnapshot {\n assertSnapshotInactive(snapshot);\n try {\n validateDumpEnvelope(snapshot, { resume: true });\n } catch (error) {\n if (!(error instanceof SnapshotValidationError) || error.code !== \"invalidState\" || error.path === \"$.replayError\" ||\n !inMemoryRunSnapshots.has(snapshot)) throw error;\n // Runtime snapshots can retain guest descriptor state. Use the same portable\n // representation as dump(), then apply all normal validation below.\n validateRuntimeSnapshotDescriptors(snapshot);\n snapshot = JSON.parse(serializeSafeJSSnapshot(snapshot)) as TSnapshot;\n validateDumpEnvelope(snapshot, { resume: true });\n }\n validateSnapshotMigration(snapshot.migration, snapshot.sourceHash, owner);\n\n const includeFunctionSource = snapshot.executionSemantics !== \"jobs-v6\" && snapshot.executionSemantics !== \"jobs-v7\";\n const currentSourceHash = options.importSpecifiers === undefined\n ? hashSource(options.source, owner, includeFunctionSource)\n : hashParsedAst(parseExecutableModule(options.source, \"<input>\", owner, options.importSpecifiers), includeFunctionSource);\n\n if (snapshot.sourceHash !== currentSourceHash) {\n throw new SnapshotMismatchError(snapshot.sourceHash, currentSourceHash);\n }\n\n if (snapshot.heap !== undefined && typeof snapshot.heap === \"object\" && snapshot.heap !== null) {\n const entries = Object.entries(snapshot.heap);\n const closures = entries.filter(([, value]) =>\n value !== null && typeof value === \"object\" && ([\"guest-function\", \"guest-class\", \"guest-generator\"].includes(String((value as Record<string, unknown>).kind)) ||\n (value as Record<string, unknown>).templateNodeId !== undefined));\n const dynamicSources = new Map<number, DynamicSource>();\n for (const [id, value] of entries) {\n const record = value as Record<string, unknown>;\n if (record.kind === \"guest-source\" || record.kind === \"guest-script\") {\n try {\n const compiled = record.kind === \"guest-script\"\n ? createEvalSource(record.body as string, record.context as EvalSourceContext, owner)\n : record.functionKind === \"module\" ? createModuleSource(record.body as string, owner)\n : createDynamicSource(record.functionKind as Exclude<DynamicSource[\"kind\"], \"eval\" | \"module\">,\n record.parameters as string, record.body as string, owner);\n dynamicSources.set(Number(id), compiled.source);\n } catch (error) {\n if (!(error instanceof SyntaxError) && !(error instanceof ParseError)) throw error;\n throw new SnapshotValidationError(\"invalidValue\", `$.heap[${JSON.stringify(id)}]`, error.message);\n }\n }\n }\n if (closures.length > 0) {\n const functions = new Map<number, Record<string, unknown>>();\n const pending: unknown[] = [options.importSpecifiers === undefined\n ? parseModule(options.source, \"<input>\", owner)\n : parseExecutableModule(options.source, \"<input>\", owner, options.importSpecifiers)];\n while (pending.length > 0) {\n const value = pending.pop();\n if (value === null || typeof value !== \"object\") continue;\n const node = value as Record<string, unknown>;\n if (typeof node.nodeId === \"number\") {\n functions.set(node.nodeId, node);\n }\n for (const entry of Object.values(node)) pending.push(entry);\n }\n for (const [id, value] of closures) {\n const record = value as Record<string, unknown>;\n if (record.kind === \"guest-array\") continue;\n const nodes = record.dynamicSource === undefined ? functions\n : dynamicSources.get((record.dynamicSource as {id: number}).id)!.nodes;\n const origin = nodes.get(record.astNodeId as number);\n try { validateGuestFunctionAst(record, origin); }\n catch (error) {\n throw new SnapshotValidationError(\"invalidValue\", `$.heap[${JSON.stringify(id)}].astNodeId`, error instanceof Error ? error.message : String(error));\n }\n }\n try { validateTemplateObjects(snapshot.heap as Record<string, unknown>, functions.values() as Iterable<ParseResult>, dynamicSources); }\n catch (error) { throw new SnapshotValidationError(\"invalidValue\", \"$.heap\", String(error)); }\n }\n }\n\n return snapshot;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|