@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.
Files changed (85) hide show
  1. package/README.md +36 -6
  2. package/dist/config-mutations/types.d.ts +3 -1
  3. package/dist/safe-js/chunks/{chunk-B4M6QVUV.js → chunk-3QQYJ4RQ.js} +3 -2
  4. package/dist/safe-js/chunks/chunk-3QQYJ4RQ.js.map +7 -0
  5. package/dist/safe-js/chunks/{chunk-BEXRQET4.js → chunk-5MT2LF3W.js} +3 -3
  6. package/dist/safe-js/chunks/{chunk-JNLY7IMV.js → chunk-7FCMZUZJ.js} +4 -4
  7. package/dist/safe-js/chunks/{chunk-BHYBD6SY.js → chunk-7TL6Z6LT.js} +58 -8
  8. package/dist/safe-js/chunks/chunk-7TL6Z6LT.js.map +7 -0
  9. package/dist/safe-js/chunks/{chunk-HYD4K4HN.js → chunk-BRBOVGNC.js} +63 -1
  10. package/dist/safe-js/chunks/chunk-BRBOVGNC.js.map +7 -0
  11. package/dist/safe-js/chunks/{chunk-4CX3HYRY.js → chunk-HY3Q377V.js} +2 -2
  12. package/dist/safe-js/chunks/{chunk-DNA7BMBY.js → chunk-IZ52PAOD.js} +8540 -7309
  13. package/dist/safe-js/chunks/{chunk-DNA7BMBY.js.map → chunk-IZ52PAOD.js.map} +4 -4
  14. package/dist/safe-js/chunks/{chunk-A4L72WXV.js → chunk-KHJDAEET.js} +10 -11
  15. package/dist/safe-js/chunks/chunk-KHJDAEET.js.map +7 -0
  16. package/dist/safe-js/chunks/{chunk-Q7B6JIMI.js → chunk-M6HUSN7X.js} +404 -117
  17. package/dist/safe-js/chunks/chunk-M6HUSN7X.js.map +7 -0
  18. package/dist/safe-js/chunks/{chunk-LPBTSTDG.js → chunk-QMZG576E.js} +4 -4
  19. package/dist/safe-js/chunks/{chunk-ILYJBA2D.js → chunk-RYVHEOHM.js} +1109 -100
  20. package/dist/safe-js/chunks/chunk-RYVHEOHM.js.map +7 -0
  21. package/dist/safe-js/chunks/{chunk-IS7YUCOF.js → chunk-SWQHZKYM.js} +2 -2
  22. package/dist/safe-js/chunks/{chunk-Y4LNCDCP.js → chunk-WF7HYDJ4.js} +4 -5
  23. package/dist/safe-js/chunks/{chunk-Y4LNCDCP.js.map → chunk-WF7HYDJ4.js.map} +2 -2
  24. package/dist/safe-js/chunks/{chunk-GMPZBMPA.js → chunk-Y5ZXQHL6.js} +3 -3
  25. package/dist/safe-js/chunks/{cli-runtime-YK2WE33M.js → cli-runtime-EPXCJ5AG.js} +14 -14
  26. package/dist/safe-js/chunks/{dump-ATWBOZWV.js → dump-TWVEBH5W.js} +4 -4
  27. package/dist/safe-js/chunks/{fs-D72Y52I5.js → fs-DSNHTHBT.js} +4 -4
  28. package/dist/safe-js/chunks/harness-RLA643GD.js +10 -0
  29. package/dist/safe-js/chunks/mcp-IEY7HXXT.js +11 -0
  30. package/dist/safe-js/chunks/migration-file-QMI45CSP.js +12 -0
  31. package/dist/safe-js/chunks/restore-R5PLLBST.js +13 -0
  32. package/dist/safe-js/chunks/run-QATVEFVQ.js +17 -0
  33. package/dist/safe-js/chunks/runtime-modules-5D7KDFMZ.js +10 -0
  34. package/dist/safe-js/cli.js +2 -2
  35. package/dist/safe-js/core.js +7 -7
  36. package/dist/safe-js/index.js +14 -14
  37. package/dist/safe-js/interp/async.d.ts +4 -1
  38. package/dist/safe-js/interp/budget.d.ts +12 -6
  39. package/dist/safe-js/interp/collection-iterator.d.ts +1 -1
  40. package/dist/safe-js/interp/host-bridge.d.ts +2 -0
  41. package/dist/safe-js/interp/host-capabilities.d.ts +13 -4
  42. package/dist/safe-js/interp/interpreter.d.ts +5 -1
  43. package/dist/safe-js/interp/intl-numberformat.d.ts +2 -2
  44. package/dist/safe-js/interp/jobs.d.ts +8 -0
  45. package/dist/safe-js/interp/scope.d.ts +9 -2
  46. package/dist/safe-js/interp/typed-array.d.ts +2 -2
  47. package/dist/safe-js/interp/values.d.ts +1 -0
  48. package/dist/safe-js/modules/registry.d.ts +4 -1
  49. package/dist/safe-js/modules/source-graph.d.ts +19 -1
  50. package/dist/safe-js/parse/compact-spans.d.ts +18 -0
  51. package/dist/safe-js/parse/dynamic-source.d.ts +3 -1
  52. package/dist/safe-js/parse/function-source.d.ts +1 -1
  53. package/dist/safe-js/parse/parser.d.ts +8 -3
  54. package/dist/safe-js/parse/tokenizer.d.ts +4 -0
  55. package/dist/safe-js/realm.d.ts +16 -3
  56. package/dist/safe-js/restore.d.ts +1 -0
  57. package/dist/safe-js/run.d.ts +10 -0
  58. package/package.json +2 -2
  59. package/dist/safe-js/chunks/chunk-A4L72WXV.js.map +0 -7
  60. package/dist/safe-js/chunks/chunk-B4M6QVUV.js.map +0 -7
  61. package/dist/safe-js/chunks/chunk-BHYBD6SY.js.map +0 -7
  62. package/dist/safe-js/chunks/chunk-HYD4K4HN.js.map +0 -7
  63. package/dist/safe-js/chunks/chunk-ILYJBA2D.js.map +0 -7
  64. package/dist/safe-js/chunks/chunk-Q7B6JIMI.js.map +0 -7
  65. package/dist/safe-js/chunks/harness-LUYCGWHZ.js +0 -10
  66. package/dist/safe-js/chunks/mcp-IWKZB2R2.js +0 -11
  67. package/dist/safe-js/chunks/migration-file-IXO5MLP4.js +0 -12
  68. package/dist/safe-js/chunks/restore-SI7HOC6C.js +0 -13
  69. package/dist/safe-js/chunks/run-SHI2PYR6.js +0 -17
  70. package/dist/safe-js/chunks/runtime-modules-OO72HTVF.js +0 -10
  71. /package/dist/safe-js/chunks/{chunk-BEXRQET4.js.map → chunk-5MT2LF3W.js.map} +0 -0
  72. /package/dist/safe-js/chunks/{chunk-JNLY7IMV.js.map → chunk-7FCMZUZJ.js.map} +0 -0
  73. /package/dist/safe-js/chunks/{chunk-4CX3HYRY.js.map → chunk-HY3Q377V.js.map} +0 -0
  74. /package/dist/safe-js/chunks/{chunk-LPBTSTDG.js.map → chunk-QMZG576E.js.map} +0 -0
  75. /package/dist/safe-js/chunks/{chunk-IS7YUCOF.js.map → chunk-SWQHZKYM.js.map} +0 -0
  76. /package/dist/safe-js/chunks/{chunk-GMPZBMPA.js.map → chunk-Y5ZXQHL6.js.map} +0 -0
  77. /package/dist/safe-js/chunks/{cli-runtime-YK2WE33M.js.map → cli-runtime-EPXCJ5AG.js.map} +0 -0
  78. /package/dist/safe-js/chunks/{dump-ATWBOZWV.js.map → dump-TWVEBH5W.js.map} +0 -0
  79. /package/dist/safe-js/chunks/{fs-D72Y52I5.js.map → fs-DSNHTHBT.js.map} +0 -0
  80. /package/dist/safe-js/chunks/{harness-LUYCGWHZ.js.map → harness-RLA643GD.js.map} +0 -0
  81. /package/dist/safe-js/chunks/{mcp-IWKZB2R2.js.map → mcp-IEY7HXXT.js.map} +0 -0
  82. /package/dist/safe-js/chunks/{migration-file-IXO5MLP4.js.map → migration-file-QMI45CSP.js.map} +0 -0
  83. /package/dist/safe-js/chunks/{restore-SI7HOC6C.js.map → restore-R5PLLBST.js.map} +0 -0
  84. /package/dist/safe-js/chunks/{run-SHI2PYR6.js.map → run-QATVEFVQ.js.map} +0 -0
  85. /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-GMPZBMPA.js";
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-DNA7BMBY.js";
18
+ } from "./chunk-IZ52PAOD.js";
18
19
  import {
19
20
  ParseError,
21
+ parseExecutableModule,
20
22
  parseModule,
21
23
  replaceErrorStack
22
- } from "./chunk-ILYJBA2D.js";
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 currentSourceHash = hashSource(
50
- options.source,
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-A4L72WXV.js.map
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
+ }