@workflow/core 5.0.0-beta.5 → 5.0.0-beta.50

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 (310) hide show
  1. package/dist/attribute-changes.d.ts +5 -0
  2. package/dist/attribute-changes.d.ts.map +1 -0
  3. package/dist/attribute-changes.js +25 -0
  4. package/dist/capabilities.d.ts +35 -2
  5. package/dist/capabilities.d.ts.map +1 -1
  6. package/dist/capabilities.js +74 -5
  7. package/dist/capture-stack.d.ts +1 -1
  8. package/dist/capture-stack.js +2 -2
  9. package/dist/class-serialization.d.ts +32 -0
  10. package/dist/class-serialization.d.ts.map +1 -1
  11. package/dist/class-serialization.js +37 -1
  12. package/dist/classify-error.d.ts +19 -3
  13. package/dist/classify-error.d.ts.map +1 -1
  14. package/dist/classify-error.js +98 -6
  15. package/dist/context-violation-error.d.ts +5 -5
  16. package/dist/context-violation-error.d.ts.map +1 -1
  17. package/dist/context-violation-error.js +8 -6
  18. package/dist/create-hook.d.ts +72 -7
  19. package/dist/create-hook.d.ts.map +1 -1
  20. package/dist/create-hook.js +1 -1
  21. package/dist/define-hook.js +2 -2
  22. package/dist/describe-error.d.ts +7 -7
  23. package/dist/describe-error.d.ts.map +1 -1
  24. package/dist/describe-error.js +97 -12
  25. package/dist/encryption.d.ts +38 -4
  26. package/dist/encryption.d.ts.map +1 -1
  27. package/dist/encryption.js +96 -14
  28. package/dist/events-consumer.d.ts +271 -0
  29. package/dist/events-consumer.d.ts.map +1 -1
  30. package/dist/events-consumer.js +646 -42
  31. package/dist/flushable-stream.d.ts +56 -1
  32. package/dist/flushable-stream.d.ts.map +1 -1
  33. package/dist/flushable-stream.js +123 -11
  34. package/dist/global.d.ts +36 -2
  35. package/dist/global.d.ts.map +1 -1
  36. package/dist/global.js +21 -6
  37. package/dist/index.d.ts +2 -1
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +3 -2
  40. package/dist/log-format.d.ts +2 -2
  41. package/dist/log-format.js +7 -7
  42. package/dist/logger.d.ts +1 -0
  43. package/dist/logger.d.ts.map +1 -1
  44. package/dist/logger.js +10 -6
  45. package/dist/private.d.ts +226 -9
  46. package/dist/private.d.ts.map +1 -1
  47. package/dist/private.js +626 -7
  48. package/dist/replay-payload-cache.d.ts +64 -0
  49. package/dist/replay-payload-cache.d.ts.map +1 -0
  50. package/dist/replay-payload-cache.js +158 -0
  51. package/dist/runtime/compute-instance.d.ts +13 -0
  52. package/dist/runtime/compute-instance.d.ts.map +1 -0
  53. package/dist/runtime/compute-instance.js +14 -0
  54. package/dist/runtime/constants.d.ts +315 -0
  55. package/dist/runtime/constants.d.ts.map +1 -1
  56. package/dist/runtime/constants.js +502 -16
  57. package/dist/runtime/count-step-started-events.d.ts +52 -0
  58. package/dist/runtime/count-step-started-events.d.ts.map +1 -0
  59. package/dist/runtime/count-step-started-events.js +72 -0
  60. package/dist/runtime/deployment-guard.d.ts +99 -0
  61. package/dist/runtime/deployment-guard.d.ts.map +1 -0
  62. package/dist/runtime/deployment-guard.js +154 -0
  63. package/dist/runtime/get-port-lazy.d.ts +15 -0
  64. package/dist/runtime/get-port-lazy.d.ts.map +1 -1
  65. package/dist/runtime/get-port-lazy.js +75 -6
  66. package/dist/runtime/get-world-lazy.d.ts +5 -14
  67. package/dist/runtime/get-world-lazy.d.ts.map +1 -1
  68. package/dist/runtime/get-world-lazy.js +19 -29
  69. package/dist/runtime/helpers.d.ts +341 -29
  70. package/dist/runtime/helpers.d.ts.map +1 -1
  71. package/dist/runtime/helpers.js +559 -57
  72. package/dist/runtime/quickjs-assets.generated.d.ts +14 -0
  73. package/dist/runtime/quickjs-assets.generated.d.ts.map +1 -0
  74. package/dist/runtime/quickjs-assets.generated.js +30 -0
  75. package/dist/runtime/quickjs-entrypoint.d.ts +136 -0
  76. package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -0
  77. package/dist/runtime/quickjs-entrypoint.js +1686 -0
  78. package/dist/runtime/quickjs-runtime.d.ts +244 -0
  79. package/dist/runtime/quickjs-runtime.d.ts.map +1 -0
  80. package/dist/runtime/quickjs-runtime.js +2427 -0
  81. package/dist/runtime/quickjs-serde.d.ts +107 -0
  82. package/dist/runtime/quickjs-serde.d.ts.map +1 -0
  83. package/dist/runtime/quickjs-serde.js +2159 -0
  84. package/dist/runtime/replay-budget.d.ts +97 -0
  85. package/dist/runtime/replay-budget.d.ts.map +1 -0
  86. package/dist/runtime/replay-budget.js +139 -0
  87. package/dist/runtime/replay-recovery-reporter.d.ts +36 -0
  88. package/dist/runtime/replay-recovery-reporter.d.ts.map +1 -0
  89. package/dist/runtime/replay-recovery-reporter.js +64 -0
  90. package/dist/runtime/resume-hook.d.ts +91 -8
  91. package/dist/runtime/resume-hook.d.ts.map +1 -1
  92. package/dist/runtime/resume-hook.js +512 -89
  93. package/dist/runtime/resume-latency.d.ts +150 -0
  94. package/dist/runtime/resume-latency.d.ts.map +1 -0
  95. package/dist/runtime/resume-latency.js +155 -0
  96. package/dist/runtime/run-id-time.d.ts +19 -0
  97. package/dist/runtime/run-id-time.d.ts.map +1 -0
  98. package/dist/runtime/run-id-time.js +42 -0
  99. package/dist/runtime/run.d.ts +72 -7
  100. package/dist/runtime/run.d.ts.map +1 -1
  101. package/dist/runtime/run.js +280 -53
  102. package/dist/runtime/runs.d.ts +54 -3
  103. package/dist/runtime/runs.d.ts.map +1 -1
  104. package/dist/runtime/runs.js +126 -16
  105. package/dist/runtime/start.d.ts +101 -2
  106. package/dist/runtime/start.d.ts.map +1 -1
  107. package/dist/runtime/start.js +352 -61
  108. package/dist/runtime/step-executor.d.ts +205 -5
  109. package/dist/runtime/step-executor.d.ts.map +1 -1
  110. package/dist/runtime/step-executor.js +760 -127
  111. package/dist/runtime/step-latency.d.ts +220 -0
  112. package/dist/runtime/step-latency.d.ts.map +1 -0
  113. package/dist/runtime/step-latency.js +215 -0
  114. package/dist/runtime/step-ownership.d.ts +72 -0
  115. package/dist/runtime/step-ownership.d.ts.map +1 -0
  116. package/dist/runtime/step-ownership.js +114 -0
  117. package/dist/runtime/step-single-flight.d.ts +12 -0
  118. package/dist/runtime/step-single-flight.d.ts.map +1 -0
  119. package/dist/runtime/step-single-flight.js +75 -0
  120. package/dist/runtime/suspension-handler.d.ts +269 -7
  121. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  122. package/dist/runtime/suspension-handler.js +1253 -125
  123. package/dist/runtime/unserializable-step.d.ts +34 -0
  124. package/dist/runtime/unserializable-step.d.ts.map +1 -0
  125. package/dist/runtime/unserializable-step.js +52 -0
  126. package/dist/runtime/vm-mode.d.ts +44 -0
  127. package/dist/runtime/vm-mode.d.ts.map +1 -0
  128. package/dist/runtime/vm-mode.js +62 -0
  129. package/dist/runtime/vm-serde-bundle.generated.d.ts +14 -0
  130. package/dist/runtime/vm-serde-bundle.generated.d.ts.map +1 -0
  131. package/dist/runtime/vm-serde-bundle.generated.js +16 -0
  132. package/dist/runtime/wait-continuation.d.ts +106 -0
  133. package/dist/runtime/wait-continuation.d.ts.map +1 -0
  134. package/dist/runtime/wait-continuation.js +136 -0
  135. package/dist/runtime/wait-until.d.ts +18 -0
  136. package/dist/runtime/wait-until.d.ts.map +1 -0
  137. package/dist/runtime/wait-until.js +42 -0
  138. package/dist/runtime/world-compatibility.d.ts +32 -0
  139. package/dist/runtime/world-compatibility.d.ts.map +1 -0
  140. package/dist/runtime/world-compatibility.js +44 -0
  141. package/dist/runtime/world-init.d.ts +17 -42
  142. package/dist/runtime/world-init.d.ts.map +1 -1
  143. package/dist/runtime/world-init.js +18 -43
  144. package/dist/runtime/world.d.ts +14 -2
  145. package/dist/runtime/world.d.ts.map +1 -1
  146. package/dist/runtime/world.js +75 -19
  147. package/dist/runtime.d.ts +10 -6
  148. package/dist/runtime.d.ts.map +1 -1
  149. package/dist/runtime.js +3741 -490
  150. package/dist/sealed-box.d.ts +167 -0
  151. package/dist/sealed-box.d.ts.map +1 -0
  152. package/dist/sealed-box.js +571 -0
  153. package/dist/serialization/client.d.ts +3 -3
  154. package/dist/serialization/client.d.ts.map +1 -1
  155. package/dist/serialization/client.js +8 -4
  156. package/dist/serialization/codec-devalue-vm.d.ts +16 -0
  157. package/dist/serialization/codec-devalue-vm.d.ts.map +1 -0
  158. package/dist/serialization/codec-devalue-vm.js +148 -0
  159. package/dist/serialization/codec-devalue.d.ts +1 -1
  160. package/dist/serialization/codec-devalue.d.ts.map +1 -1
  161. package/dist/serialization/codec-devalue.js +24 -6
  162. package/dist/serialization/codec.d.ts +37 -2
  163. package/dist/serialization/codec.d.ts.map +1 -1
  164. package/dist/serialization/codec.js +2 -2
  165. package/dist/serialization/compression.d.ts +105 -0
  166. package/dist/serialization/compression.d.ts.map +1 -0
  167. package/dist/serialization/compression.js +261 -0
  168. package/dist/serialization/encryption.d.ts +119 -17
  169. package/dist/serialization/encryption.d.ts.map +1 -1
  170. package/dist/serialization/encryption.js +152 -17
  171. package/dist/serialization/errors.d.ts +13 -0
  172. package/dist/serialization/errors.d.ts.map +1 -1
  173. package/dist/serialization/errors.js +20 -2
  174. package/dist/serialization/format.d.ts +6 -6
  175. package/dist/serialization/format.js +7 -7
  176. package/dist/serialization/hardened.d.ts +156 -0
  177. package/dist/serialization/hardened.d.ts.map +1 -0
  178. package/dist/serialization/hardened.js +538 -0
  179. package/dist/serialization/index.d.ts +10 -8
  180. package/dist/serialization/index.d.ts.map +1 -1
  181. package/dist/serialization/index.js +10 -8
  182. package/dist/serialization/reducers/class-vm.d.ts +20 -0
  183. package/dist/serialization/reducers/class-vm.d.ts.map +1 -0
  184. package/dist/serialization/reducers/class-vm.js +77 -0
  185. package/dist/serialization/reducers/class.d.ts.map +1 -1
  186. package/dist/serialization/reducers/class.js +11 -6
  187. package/dist/serialization/reducers/common-vm.d.ts +15 -0
  188. package/dist/serialization/reducers/common-vm.d.ts.map +1 -0
  189. package/dist/serialization/reducers/common-vm.js +616 -0
  190. package/dist/serialization/reducers/common.d.ts +1 -1
  191. package/dist/serialization/reducers/common.d.ts.map +1 -1
  192. package/dist/serialization/reducers/common.js +202 -62
  193. package/dist/serialization/reducers/step-function-vm.d.ts +44 -0
  194. package/dist/serialization/reducers/step-function-vm.d.ts.map +1 -0
  195. package/dist/serialization/reducers/step-function-vm.js +97 -0
  196. package/dist/serialization/reducers/step-function.d.ts.map +1 -1
  197. package/dist/serialization/reducers/step-function.js +25 -9
  198. package/dist/serialization/step.d.ts +4 -4
  199. package/dist/serialization/step.d.ts.map +1 -1
  200. package/dist/serialization/step.js +9 -5
  201. package/dist/serialization/types.d.ts +80 -1
  202. package/dist/serialization/types.d.ts.map +1 -1
  203. package/dist/serialization/types.js +15 -1
  204. package/dist/serialization/workflow-vm.d.ts +29 -0
  205. package/dist/serialization/workflow-vm.d.ts.map +1 -0
  206. package/dist/serialization/workflow-vm.js +74 -0
  207. package/dist/serialization-format.d.ts +64 -8
  208. package/dist/serialization-format.d.ts.map +1 -1
  209. package/dist/serialization-format.js +225 -73
  210. package/dist/serialization.d.ts +262 -34
  211. package/dist/serialization.d.ts.map +1 -1
  212. package/dist/serialization.js +1879 -274
  213. package/dist/set-attributes.d.ts +13 -0
  214. package/dist/set-attributes.d.ts.map +1 -0
  215. package/dist/set-attributes.js +60 -0
  216. package/dist/source-map.d.ts +25 -0
  217. package/dist/source-map.d.ts.map +1 -1
  218. package/dist/source-map.js +154 -10
  219. package/dist/step/context-storage.d.ts +61 -2
  220. package/dist/step/context-storage.d.ts.map +1 -1
  221. package/dist/step/context-storage.js +7 -5
  222. package/dist/step/writable-stream.d.ts +3 -3
  223. package/dist/step/writable-stream.d.ts.map +1 -1
  224. package/dist/step/writable-stream.js +72 -9
  225. package/dist/step.d.ts.map +1 -1
  226. package/dist/step.js +148 -27
  227. package/dist/symbols.d.ts +50 -0
  228. package/dist/symbols.d.ts.map +1 -1
  229. package/dist/symbols.js +51 -1
  230. package/dist/telemetry/semantic-conventions.d.ts +397 -2
  231. package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
  232. package/dist/telemetry/semantic-conventions.js +297 -3
  233. package/dist/telemetry.d.ts +91 -0
  234. package/dist/telemetry.d.ts.map +1 -1
  235. package/dist/telemetry.js +244 -17
  236. package/dist/test-support/orchestrator-context.d.ts +25 -0
  237. package/dist/test-support/orchestrator-context.d.ts.map +1 -0
  238. package/dist/test-support/orchestrator-context.js +101 -0
  239. package/dist/types.d.ts +6 -0
  240. package/dist/types.d.ts.map +1 -1
  241. package/dist/types.js +23 -1
  242. package/dist/util.d.ts +0 -5
  243. package/dist/util.d.ts.map +1 -1
  244. package/dist/util.js +1 -15
  245. package/dist/version.d.ts +1 -1
  246. package/dist/version.d.ts.map +1 -1
  247. package/dist/version.js +2 -2
  248. package/dist/vm/index.d.ts.map +1 -1
  249. package/dist/vm/index.js +84 -14
  250. package/dist/vm/script-cache.d.ts +26 -0
  251. package/dist/vm/script-cache.d.ts.map +1 -0
  252. package/dist/vm/script-cache.js +131 -0
  253. package/dist/vm/uint8array-base64.js +1 -1
  254. package/dist/workflow/abort-controller.d.ts +2 -2
  255. package/dist/workflow/abort-controller.d.ts.map +1 -1
  256. package/dist/workflow/abort-controller.js +88 -21
  257. package/dist/workflow/attribute-dispatcher.d.ts +6 -0
  258. package/dist/workflow/attribute-dispatcher.d.ts.map +1 -0
  259. package/dist/workflow/attribute-dispatcher.js +45 -0
  260. package/dist/workflow/create-hook.d.ts.map +1 -1
  261. package/dist/workflow/create-hook.js +24 -3
  262. package/dist/workflow/get-workflow-metadata.js +2 -2
  263. package/dist/workflow/hook.d.ts.map +1 -1
  264. package/dist/workflow/hook.js +304 -47
  265. package/dist/workflow/index.d.ts +1 -0
  266. package/dist/workflow/index.d.ts.map +1 -1
  267. package/dist/workflow/index.js +2 -1
  268. package/dist/workflow/set-attributes.d.ts +68 -0
  269. package/dist/workflow/set-attributes.d.ts.map +1 -0
  270. package/dist/workflow/set-attributes.js +60 -0
  271. package/dist/workflow/sleep.d.ts.map +1 -1
  272. package/dist/workflow/sleep.js +58 -12
  273. package/dist/workflow/world-init-stub.d.ts +3 -3
  274. package/dist/workflow/world-init-stub.js +4 -4
  275. package/dist/workflow.d.ts +95 -3
  276. package/dist/workflow.d.ts.map +1 -1
  277. package/dist/workflow.js +895 -561
  278. package/docs/api-reference/create-hook.mdx +89 -10
  279. package/docs/api-reference/create-webhook.mdx +16 -15
  280. package/docs/api-reference/define-hook.mdx +35 -33
  281. package/docs/api-reference/fatal-error.mdx +30 -8
  282. package/docs/api-reference/fetch.mdx +14 -10
  283. package/docs/api-reference/get-step-metadata.mdx +2 -2
  284. package/docs/api-reference/get-workflow-metadata.mdx +3 -3
  285. package/docs/api-reference/get-writable.mdx +7 -7
  286. package/docs/api-reference/index.mdx +4 -1
  287. package/docs/api-reference/retryable-error.mdx +1 -1
  288. package/docs/api-reference/set-attributes.mdx +61 -0
  289. package/docs/api-reference/sleep.mdx +4 -4
  290. package/docs/foundations/cancellation.mdx +31 -32
  291. package/docs/foundations/errors-and-retries.mdx +42 -11
  292. package/docs/foundations/hooks.mdx +64 -35
  293. package/docs/foundations/idempotency.mdx +244 -12
  294. package/docs/foundations/index.mdx +1 -23
  295. package/docs/foundations/meta.json +2 -1
  296. package/docs/foundations/serialization.mdx +21 -22
  297. package/docs/foundations/starting-workflows.mdx +106 -30
  298. package/docs/foundations/streaming.mdx +107 -59
  299. package/docs/foundations/versioning.mdx +263 -0
  300. package/docs/foundations/workflows-and-steps.mdx +9 -9
  301. package/docs/how-it-works/cancellation.mdx +63 -63
  302. package/docs/how-it-works/code-transform.mdx +83 -67
  303. package/docs/how-it-works/encryption.mdx +30 -26
  304. package/docs/how-it-works/event-sourcing.mdx +98 -34
  305. package/docs/how-it-works/framework-integrations.mdx +96 -337
  306. package/docs/how-it-works/understanding-directives.mdx +22 -22
  307. package/package.json +24 -15
  308. package/dist/runtime/step-handler.d.ts +0 -2
  309. package/dist/runtime/step-handler.d.ts.map +0 -1
  310. package/dist/runtime/step-handler.js +0 -776
@@ -1,18 +1,20 @@
1
1
  /**
2
- * Serialization module public API.
2
+ * Serialization module: public API.
3
3
  *
4
4
  * Re-exports the mode-specific serialize/deserialize functions and
5
5
  * the codec/format/encryption abstractions.
6
6
  */
7
- export type { FormatPrefix, SerializableSpecial, Reducers, Revivers, } from './types.js';
8
- export { SerializationFormat, isFormatPrefix } from './types.js';
9
- export type { Codec, SerializationMode } from './codec.js';
7
+ export type { Codec, CodecOptions, SerializationMode } from './codec.js';
10
8
  export { devalueCodec } from './codec-devalue.js';
11
- export { encodeWithFormatPrefix, decodeFormatPrefix, peekFormatPrefix, isEncrypted, } from './format.js';
12
- export { encrypt, decrypt, type CryptoKey, type EncryptionKeyParam, } from './encryption.js';
13
- import * as workflow from './workflow.js';
14
- import * as step from './step.js';
9
+ export { COMPRESSION_MIN_BYTES, type CompressionCodec, type CompressionStats, compress, decompress, isCompressed, } from './compression.js';
10
+ export { type CryptoKey, decrypt, type EncryptionKeyParam, encrypt, } from './encryption.js';
11
+ export { decodeFormatPrefix, encodeWithFormatPrefix, isEncrypted, peekFormatPrefix, } from './format.js';
12
+ export type { GuestCodeExecution, GuestCodeStats } from './hardened.js';
13
+ export type { FormatPrefix, Reducers, Revivers, SerializableSpecial, } from './types.js';
14
+ export { isFormatPrefix, SerializationFormat } from './types.js';
15
15
  import * as client from './client.js';
16
+ import * as step from './step.js';
17
+ import * as workflow from './workflow.js';
16
18
  export { workflow, step, client };
17
19
  export { revive } from './reducers/common.js';
18
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,QAAQ,EACR,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,GACZ,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,OAAO,EACP,OAAO,EACP,KAAK,SAAS,EACd,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EACL,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,QAAQ,EACR,UAAU,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,KAAK,SAAS,EACd,OAAO,EACP,KAAK,kBAAkB,EACvB,OAAO,GACR,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAExE,YAAY,EACV,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,20 +1,22 @@
1
1
  /**
2
- * Serialization module public API.
2
+ * Serialization module: public API.
3
3
  *
4
4
  * Re-exports the mode-specific serialize/deserialize functions and
5
5
  * the codec/format/encryption abstractions.
6
6
  */
7
- export { SerializationFormat, isFormatPrefix } from './types.js';
8
7
  export { devalueCodec } from './codec-devalue.js';
9
- // Re-export format prefix utilities
10
- export { encodeWithFormatPrefix, decodeFormatPrefix, peekFormatPrefix, isEncrypted, } from './format.js';
8
+ // Re-export composable compression
9
+ export { COMPRESSION_MIN_BYTES, compress, decompress, isCompressed, } from './compression.js';
11
10
  // Re-export composable encryption
12
- export { encrypt, decrypt, } from './encryption.js';
11
+ export { decrypt, encrypt, } from './encryption.js';
12
+ // Re-export format prefix utilities
13
+ export { decodeFormatPrefix, encodeWithFormatPrefix, isEncrypted, peekFormatPrefix, } from './format.js';
14
+ export { isFormatPrefix, SerializationFormat } from './types.js';
15
+ import * as client from './client.js';
16
+ import * as step from './step.js';
13
17
  // Re-export mode-specific modules as namespaces
14
18
  import * as workflow from './workflow.js';
15
- import * as step from './step.js';
16
- import * as client from './client.js';
17
19
  export { workflow, step, client };
18
20
  // Re-export revive helper (used by legacy compat in serialization.ts)
19
21
  export { revive } from './reducers/common.js';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQVNILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFJakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELG9DQUFvQztBQUNwQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsV0FBVyxHQUNaLE1BQU0sYUFBYSxDQUFDO0FBRXJCLGtDQUFrQztBQUNsQyxPQUFPLEVBQ0wsT0FBTyxFQUNQLE9BQU8sR0FHUixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLGdEQUFnRDtBQUNoRCxPQUFPLEtBQUssUUFBUSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEtBQUssTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUVsQyxzRUFBc0U7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXJpYWxpemF0aW9uIG1vZHVsZSDigJQgcHVibGljIEFQSS5cbiAqXG4gKiBSZS1leHBvcnRzIHRoZSBtb2RlLXNwZWNpZmljIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBmdW5jdGlvbnMgYW5kXG4gKiB0aGUgY29kZWMvZm9ybWF0L2VuY3J5cHRpb24gYWJzdHJhY3Rpb25zLlxuICovXG5cbi8vIFJlLWV4cG9ydCB0eXBlc1xuZXhwb3J0IHR5cGUge1xuICBGb3JtYXRQcmVmaXgsXG4gIFNlcmlhbGl6YWJsZVNwZWNpYWwsXG4gIFJlZHVjZXJzLFxuICBSZXZpdmVycyxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5leHBvcnQgeyBTZXJpYWxpemF0aW9uRm9ybWF0LCBpc0Zvcm1hdFByZWZpeCB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vLyBSZS1leHBvcnQgY29kZWMgaW50ZXJmYWNlIGFuZCBtb2RlIHR5cGVcbmV4cG9ydCB0eXBlIHsgQ29kZWMsIFNlcmlhbGl6YXRpb25Nb2RlIH0gZnJvbSAnLi9jb2RlYy5qcyc7XG5leHBvcnQgeyBkZXZhbHVlQ29kZWMgfSBmcm9tICcuL2NvZGVjLWRldmFsdWUuanMnO1xuXG4vLyBSZS1leHBvcnQgZm9ybWF0IHByZWZpeCB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gIGVuY29kZVdpdGhGb3JtYXRQcmVmaXgsXG4gIGRlY29kZUZvcm1hdFByZWZpeCxcbiAgcGVla0Zvcm1hdFByZWZpeCxcbiAgaXNFbmNyeXB0ZWQsXG59IGZyb20gJy4vZm9ybWF0LmpzJztcblxuLy8gUmUtZXhwb3J0IGNvbXBvc2FibGUgZW5jcnlwdGlvblxuZXhwb3J0IHtcbiAgZW5jcnlwdCxcbiAgZGVjcnlwdCxcbiAgdHlwZSBDcnlwdG9LZXksXG4gIHR5cGUgRW5jcnlwdGlvbktleVBhcmFtLFxufSBmcm9tICcuL2VuY3J5cHRpb24uanMnO1xuXG4vLyBSZS1leHBvcnQgbW9kZS1zcGVjaWZpYyBtb2R1bGVzIGFzIG5hbWVzcGFjZXNcbmltcG9ydCAqIGFzIHdvcmtmbG93IGZyb20gJy4vd29ya2Zsb3cuanMnO1xuaW1wb3J0ICogYXMgc3RlcCBmcm9tICcuL3N0ZXAuanMnO1xuaW1wb3J0ICogYXMgY2xpZW50IGZyb20gJy4vY2xpZW50LmpzJztcbmV4cG9ydCB7IHdvcmtmbG93LCBzdGVwLCBjbGllbnQgfTtcblxuLy8gUmUtZXhwb3J0IHJldml2ZSBoZWxwZXIgKHVzZWQgYnkgbGVnYWN5IGNvbXBhdCBpbiBzZXJpYWxpemF0aW9uLnRzKVxuZXhwb3J0IHsgcmV2aXZlIH0gZnJvbSAnLi9yZWR1Y2Vycy9jb21tb24uanMnO1xuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUlILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxtQ0FBbUM7QUFDbkMsT0FBTyxFQUNMLHFCQUFxQixFQUdyQixRQUFRLEVBQ1IsVUFBVSxFQUNWLFlBQVksR0FDYixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLGtDQUFrQztBQUNsQyxPQUFPLEVBRUwsT0FBTyxFQUVQLE9BQU8sR0FDUixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLG9DQUFvQztBQUNwQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixXQUFXLEVBQ1gsZ0JBQWdCLEdBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBV3JCLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakUsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsZ0RBQWdEO0FBQ2hELE9BQU8sS0FBSyxRQUFRLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBRWxDLHNFQUFzRTtBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlcmlhbGl6YXRpb24gbW9kdWxlOiBwdWJsaWMgQVBJLlxuICpcbiAqIFJlLWV4cG9ydHMgdGhlIG1vZGUtc3BlY2lmaWMgc2VyaWFsaXplL2Rlc2VyaWFsaXplIGZ1bmN0aW9ucyBhbmRcbiAqIHRoZSBjb2RlYy9mb3JtYXQvZW5jcnlwdGlvbiBhYnN0cmFjdGlvbnMuXG4gKi9cblxuLy8gUmUtZXhwb3J0IGNvZGVjIGludGVyZmFjZSBhbmQgbW9kZSB0eXBlXG5leHBvcnQgdHlwZSB7IENvZGVjLCBDb2RlY09wdGlvbnMsIFNlcmlhbGl6YXRpb25Nb2RlIH0gZnJvbSAnLi9jb2RlYy5qcyc7XG5leHBvcnQgeyBkZXZhbHVlQ29kZWMgfSBmcm9tICcuL2NvZGVjLWRldmFsdWUuanMnO1xuLy8gUmUtZXhwb3J0IGNvbXBvc2FibGUgY29tcHJlc3Npb25cbmV4cG9ydCB7XG4gIENPTVBSRVNTSU9OX01JTl9CWVRFUyxcbiAgdHlwZSBDb21wcmVzc2lvbkNvZGVjLFxuICB0eXBlIENvbXByZXNzaW9uU3RhdHMsXG4gIGNvbXByZXNzLFxuICBkZWNvbXByZXNzLFxuICBpc0NvbXByZXNzZWQsXG59IGZyb20gJy4vY29tcHJlc3Npb24uanMnO1xuLy8gUmUtZXhwb3J0IGNvbXBvc2FibGUgZW5jcnlwdGlvblxuZXhwb3J0IHtcbiAgdHlwZSBDcnlwdG9LZXksXG4gIGRlY3J5cHQsXG4gIHR5cGUgRW5jcnlwdGlvbktleVBhcmFtLFxuICBlbmNyeXB0LFxufSBmcm9tICcuL2VuY3J5cHRpb24uanMnO1xuLy8gUmUtZXhwb3J0IGZvcm1hdCBwcmVmaXggdXRpbGl0aWVzXG5leHBvcnQge1xuICBkZWNvZGVGb3JtYXRQcmVmaXgsXG4gIGVuY29kZVdpdGhGb3JtYXRQcmVmaXgsXG4gIGlzRW5jcnlwdGVkLFxuICBwZWVrRm9ybWF0UHJlZml4LFxufSBmcm9tICcuL2Zvcm1hdC5qcyc7XG4vLyBSZS1leHBvcnQgaGFyZGVuZWQtc2VyaWFsaXphdGlvbiBvYnNlcnZhdGlvbiB0eXBlcyAocG9wdWxhdGVkIHZpYVxuLy8gYENvZGVjT3B0aW9ucy5ndWVzdENvZGVTdGF0c2ApXG5leHBvcnQgdHlwZSB7IEd1ZXN0Q29kZUV4ZWN1dGlvbiwgR3Vlc3RDb2RlU3RhdHMgfSBmcm9tICcuL2hhcmRlbmVkLmpzJztcbi8vIFJlLWV4cG9ydCB0eXBlc1xuZXhwb3J0IHR5cGUge1xuICBGb3JtYXRQcmVmaXgsXG4gIFJlZHVjZXJzLFxuICBSZXZpdmVycyxcbiAgU2VyaWFsaXphYmxlU3BlY2lhbCxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5leHBvcnQgeyBpc0Zvcm1hdFByZWZpeCwgU2VyaWFsaXphdGlvbkZvcm1hdCB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5pbXBvcnQgKiBhcyBjbGllbnQgZnJvbSAnLi9jbGllbnQuanMnO1xuaW1wb3J0ICogYXMgc3RlcCBmcm9tICcuL3N0ZXAuanMnO1xuLy8gUmUtZXhwb3J0IG1vZGUtc3BlY2lmaWMgbW9kdWxlcyBhcyBuYW1lc3BhY2VzXG5pbXBvcnQgKiBhcyB3b3JrZmxvdyBmcm9tICcuL3dvcmtmbG93LmpzJztcbmV4cG9ydCB7IHdvcmtmbG93LCBzdGVwLCBjbGllbnQgfTtcblxuLy8gUmUtZXhwb3J0IHJldml2ZSBoZWxwZXIgKHVzZWQgYnkgbGVnYWN5IGNvbXBhdCBpbiBzZXJpYWxpemF0aW9uLnRzKVxuZXhwb3J0IHsgcmV2aXZlIH0gZnJvbSAnLi9yZWR1Y2Vycy9jb21tb24uanMnO1xuIl19
@@ -0,0 +1,20 @@
1
+ /**
2
+ * VM-compatible copy: identical semantics to class.ts before the host-side
3
+ * hardening (#3257) made that module depend on `serialization/hardened.ts`
4
+ * (which imports `node:util` and captures host intrinsics, meaningless
5
+ * and unbundleable inside the QuickJS VM, where the codec already runs in
6
+ * the guest realm). The host/guest boundary hardening for the QuickJS
7
+ * engine lands with the host-side serde (#3263), which retires this
8
+ * bundle entirely. Wire format is identical to the hardened host version.
9
+ */
10
+ /**
11
+ * Reducers and revivers for custom class serialization.
12
+ *
13
+ * Handles:
14
+ * - Class: class constructors with a `classId` property
15
+ * - Instance: instances of classes with custom WORKFLOW_SERIALIZE/DESERIALIZE methods
16
+ */
17
+ import type { Reducers, Revivers } from '../types.js';
18
+ export declare function getClassReducers(): Partial<Reducers>;
19
+ export declare function getClassRevivers(global?: Record<string, any>): Partial<Revivers>;
20
+ //# sourceMappingURL=class-vm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-vm.d.ts","sourceRoot":"","sources":["../../../src/serialization/reducers/class-vm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAItD,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,CA8BpD;AAID,wBAAgB,gBAAgB,CAC9B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAc,GACvC,OAAO,CAAC,QAAQ,CAAC,CAiCnB"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * VM-compatible copy: identical semantics to class.ts before the host-side
3
+ * hardening (#3257) made that module depend on `serialization/hardened.ts`
4
+ * (which imports `node:util` and captures host intrinsics, meaningless
5
+ * and unbundleable inside the QuickJS VM, where the codec already runs in
6
+ * the guest realm). The host/guest boundary hardening for the QuickJS
7
+ * engine lands with the host-side serde (#3263), which retires this
8
+ * bundle entirely. Wire format is identical to the hardened host version.
9
+ */
10
+ /**
11
+ * Reducers and revivers for custom class serialization.
12
+ *
13
+ * Handles:
14
+ * - Class: class constructors with a `classId` property
15
+ * - Instance: instances of classes with custom WORKFLOW_SERIALIZE/DESERIALIZE methods
16
+ */
17
+ import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE } from '@workflow/serde';
18
+ import { getSerializationClass } from '../../class-serialization.js';
19
+ // ---- Reducers ----
20
+ export function getClassReducers() {
21
+ return {
22
+ // Class and Instance are intentionally placed before Error so that
23
+ // custom Error subclasses with WORKFLOW_SERIALIZE take precedence
24
+ // over the generic Error serialization (devalue uses first-match-wins).
25
+ Class: (value) => {
26
+ if (typeof value !== 'function')
27
+ return false;
28
+ const classId = value.classId;
29
+ if (typeof classId !== 'string')
30
+ return false;
31
+ return { classId };
32
+ },
33
+ Instance: (value) => {
34
+ if (value === null || typeof value !== 'object')
35
+ return false;
36
+ const cls = value.constructor;
37
+ if (!cls || typeof cls !== 'function')
38
+ return false;
39
+ const serialize = cls[WORKFLOW_SERIALIZE];
40
+ if (typeof serialize !== 'function')
41
+ return false;
42
+ const classId = cls.classId;
43
+ if (typeof classId !== 'string') {
44
+ throw new Error(`Class "${cls.name}" with ${String(WORKFLOW_SERIALIZE)} must have a static "classId" property.`);
45
+ }
46
+ const data = serialize.call(cls, value);
47
+ return { classId, data };
48
+ },
49
+ };
50
+ }
51
+ // ---- Revivers ----
52
+ export function getClassRevivers(global = globalThis) {
53
+ return {
54
+ Class: (value) => {
55
+ const classId = value.classId;
56
+ const cls = getSerializationClass(classId, global);
57
+ if (!cls) {
58
+ throw new Error(`Class "${classId}" not found. Make sure the class is registered with registerSerializationClass.`);
59
+ }
60
+ return cls;
61
+ },
62
+ Instance: (value) => {
63
+ const classId = value.classId;
64
+ const data = value.data;
65
+ const cls = getSerializationClass(classId, global);
66
+ if (!cls) {
67
+ throw new Error(`Class "${classId}" not found. Make sure the class is registered with registerSerializationClass.`);
68
+ }
69
+ const deserialize = cls[WORKFLOW_DESERIALIZE];
70
+ if (typeof deserialize !== 'function') {
71
+ throw new Error(`Class "${classId}" does not have a static ${String(WORKFLOW_DESERIALIZE)} method.`);
72
+ }
73
+ return deserialize.call(cls, data);
74
+ },
75
+ };
76
+ }
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Mtdm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VyaWFsaXphdGlvbi9yZWR1Y2Vycy9jbGFzcy12bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNIOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR3JFLHFCQUFxQjtBQUVyQixNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU87UUFDTCxtRUFBbUU7UUFDbkUsa0VBQWtFO1FBQ2xFLHdFQUF3RTtRQUN4RSxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNmLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM5QyxNQUFNLE9BQU8sR0FBSSxLQUFhLENBQUMsT0FBTyxDQUFDO1lBQ3ZDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUNELFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xCLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQzlELE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFDOUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxVQUFVO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBRXBELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzFDLElBQUksT0FBTyxTQUFTLEtBQUssVUFBVTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUVsRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQzVCLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQ2IsVUFBVSxHQUFHLENBQUMsSUFBSSxVQUFVLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyx5Q0FBeUMsQ0FDaEcsQ0FBQztZQUNKLENBQUM7WUFFRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELHFCQUFxQjtBQUVyQixNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLFNBQThCLFVBQVU7SUFFeEMsT0FBTztRQUNMLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2YsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM5QixNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsVUFBVSxPQUFPLGlGQUFpRixDQUNuRyxDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUNELFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDOUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUV4QixNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsVUFBVSxPQUFPLGlGQUFpRixDQUNuRyxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFJLEdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3ZELElBQUksT0FBTyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQ2IsVUFBVSxPQUFPLDRCQUE0QixNQUFNLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUNwRixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWTS1jb21wYXRpYmxlIGNvcHk6IGlkZW50aWNhbCBzZW1hbnRpY3MgdG8gY2xhc3MudHMgYmVmb3JlIHRoZSBob3N0LXNpZGVcbiAqIGhhcmRlbmluZyAoIzMyNTcpIG1hZGUgdGhhdCBtb2R1bGUgZGVwZW5kIG9uIGBzZXJpYWxpemF0aW9uL2hhcmRlbmVkLnRzYFxuICogKHdoaWNoIGltcG9ydHMgYG5vZGU6dXRpbGAgYW5kIGNhcHR1cmVzIGhvc3QgaW50cmluc2ljcywgbWVhbmluZ2xlc3NcbiAqIGFuZCB1bmJ1bmRsZWFibGUgaW5zaWRlIHRoZSBRdWlja0pTIFZNLCB3aGVyZSB0aGUgY29kZWMgYWxyZWFkeSBydW5zIGluXG4gKiB0aGUgZ3Vlc3QgcmVhbG0pLiBUaGUgaG9zdC9ndWVzdCBib3VuZGFyeSBoYXJkZW5pbmcgZm9yIHRoZSBRdWlja0pTXG4gKiBlbmdpbmUgbGFuZHMgd2l0aCB0aGUgaG9zdC1zaWRlIHNlcmRlICgjMzI2MyksIHdoaWNoIHJldGlyZXMgdGhpc1xuICogYnVuZGxlIGVudGlyZWx5LiBXaXJlIGZvcm1hdCBpcyBpZGVudGljYWwgdG8gdGhlIGhhcmRlbmVkIGhvc3QgdmVyc2lvbi5cbiAqL1xuLyoqXG4gKiBSZWR1Y2VycyBhbmQgcmV2aXZlcnMgZm9yIGN1c3RvbSBjbGFzcyBzZXJpYWxpemF0aW9uLlxuICpcbiAqIEhhbmRsZXM6XG4gKiAtIENsYXNzOiBjbGFzcyBjb25zdHJ1Y3RvcnMgd2l0aCBhIGBjbGFzc0lkYCBwcm9wZXJ0eVxuICogLSBJbnN0YW5jZTogaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2l0aCBjdXN0b20gV09SS0ZMT1dfU0VSSUFMSVpFL0RFU0VSSUFMSVpFIG1ldGhvZHNcbiAqL1xuXG5pbXBvcnQgeyBXT1JLRkxPV19ERVNFUklBTElaRSwgV09SS0ZMT1dfU0VSSUFMSVpFIH0gZnJvbSAnQHdvcmtmbG93L3NlcmRlJztcbmltcG9ydCB7IGdldFNlcmlhbGl6YXRpb25DbGFzcyB9IGZyb20gJy4uLy4uL2NsYXNzLXNlcmlhbGl6YXRpb24uanMnO1xuaW1wb3J0IHR5cGUgeyBSZWR1Y2VycywgUmV2aXZlcnMgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8vIC0tLS0gUmVkdWNlcnMgLS0tLVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NSZWR1Y2VycygpOiBQYXJ0aWFsPFJlZHVjZXJzPiB7XG4gIHJldHVybiB7XG4gICAgLy8gQ2xhc3MgYW5kIEluc3RhbmNlIGFyZSBpbnRlbnRpb25hbGx5IHBsYWNlZCBiZWZvcmUgRXJyb3Igc28gdGhhdFxuICAgIC8vIGN1c3RvbSBFcnJvciBzdWJjbGFzc2VzIHdpdGggV09SS0ZMT1dfU0VSSUFMSVpFIHRha2UgcHJlY2VkZW5jZVxuICAgIC8vIG92ZXIgdGhlIGdlbmVyaWMgRXJyb3Igc2VyaWFsaXphdGlvbiAoZGV2YWx1ZSB1c2VzIGZpcnN0LW1hdGNoLXdpbnMpLlxuICAgIENsYXNzOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGNsYXNzSWQgPSAodmFsdWUgYXMgYW55KS5jbGFzc0lkO1xuICAgICAgaWYgKHR5cGVvZiBjbGFzc0lkICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHsgY2xhc3NJZCB9O1xuICAgIH0sXG4gICAgSW5zdGFuY2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGNscyA9IHZhbHVlLmNvbnN0cnVjdG9yO1xuICAgICAgaWYgKCFjbHMgfHwgdHlwZW9mIGNscyAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjb25zdCBzZXJpYWxpemUgPSBjbHNbV09SS0ZMT1dfU0VSSUFMSVpFXTtcbiAgICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGNsYXNzSWQgPSBjbHMuY2xhc3NJZDtcbiAgICAgIGlmICh0eXBlb2YgY2xhc3NJZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDbGFzcyBcIiR7Y2xzLm5hbWV9XCIgd2l0aCAke1N0cmluZyhXT1JLRkxPV19TRVJJQUxJWkUpfSBtdXN0IGhhdmUgYSBzdGF0aWMgXCJjbGFzc0lkXCIgcHJvcGVydHkuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhID0gc2VyaWFsaXplLmNhbGwoY2xzLCB2YWx1ZSk7XG4gICAgICByZXR1cm4geyBjbGFzc0lkLCBkYXRhIH07XG4gICAgfSxcbiAgfTtcbn1cblxuLy8gLS0tLSBSZXZpdmVycyAtLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc1Jldml2ZXJzKFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzXG4pOiBQYXJ0aWFsPFJldml2ZXJzPiB7XG4gIHJldHVybiB7XG4gICAgQ2xhc3M6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgY2xhc3NJZCA9IHZhbHVlLmNsYXNzSWQ7XG4gICAgICBjb25zdCBjbHMgPSBnZXRTZXJpYWxpemF0aW9uQ2xhc3MoY2xhc3NJZCwgZ2xvYmFsKTtcbiAgICAgIGlmICghY2xzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2xhc3MgXCIke2NsYXNzSWR9XCIgbm90IGZvdW5kLiBNYWtlIHN1cmUgdGhlIGNsYXNzIGlzIHJlZ2lzdGVyZWQgd2l0aCByZWdpc3RlclNlcmlhbGl6YXRpb25DbGFzcy5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xzO1xuICAgIH0sXG4gICAgSW5zdGFuY2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgY2xhc3NJZCA9IHZhbHVlLmNsYXNzSWQ7XG4gICAgICBjb25zdCBkYXRhID0gdmFsdWUuZGF0YTtcblxuICAgICAgY29uc3QgY2xzID0gZ2V0U2VyaWFsaXphdGlvbkNsYXNzKGNsYXNzSWQsIGdsb2JhbCk7XG4gICAgICBpZiAoIWNscykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENsYXNzIFwiJHtjbGFzc0lkfVwiIG5vdCBmb3VuZC4gTWFrZSBzdXJlIHRoZSBjbGFzcyBpcyByZWdpc3RlcmVkIHdpdGggcmVnaXN0ZXJTZXJpYWxpemF0aW9uQ2xhc3MuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkZXNlcmlhbGl6ZSA9IChjbHMgYXMgYW55KVtXT1JLRkxPV19ERVNFUklBTElaRV07XG4gICAgICBpZiAodHlwZW9mIGRlc2VyaWFsaXplICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2xhc3MgXCIke2NsYXNzSWR9XCIgZG9lcyBub3QgaGF2ZSBhIHN0YXRpYyAke1N0cmluZyhXT1JLRkxPV19ERVNFUklBTElaRSl9IG1ldGhvZC5gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkZXNlcmlhbGl6ZS5jYWxsKGNscywgZGF0YSk7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../../src/serialization/reducers/class.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAItD,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,CA8BpD;AAID,wBAAgB,gBAAgB,CAC9B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAc,GACvC,OAAO,CAAC,QAAQ,CAAC,CAiCnB"}
1
+ {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../../src/serialization/reducers/class.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAItD,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAkCpD;AAID,wBAAgB,gBAAgB,CAC9B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAc,GACvC,OAAO,CAAC,QAAQ,CAAC,CAiCnB"}
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE } from '@workflow/serde';
9
9
  import { getSerializationClass } from '../../class-serialization.js';
10
+ import { readProperty, recordGuestCode } from '../hardened.js';
10
11
  // ---- Reducers ----
11
12
  export function getClassReducers() {
12
13
  return {
@@ -16,7 +17,7 @@ export function getClassReducers() {
16
17
  Class: (value) => {
17
18
  if (typeof value !== 'function')
18
19
  return false;
19
- const classId = value.classId;
20
+ const classId = readProperty(value, 'classId');
20
21
  if (typeof classId !== 'string')
21
22
  return false;
22
23
  return { classId };
@@ -24,16 +25,20 @@ export function getClassReducers() {
24
25
  Instance: (value) => {
25
26
  if (value === null || typeof value !== 'object')
26
27
  return false;
27
- const cls = value.constructor;
28
+ const cls = readProperty(value, 'constructor');
28
29
  if (!cls || typeof cls !== 'function')
29
30
  return false;
30
- const serialize = cls[WORKFLOW_SERIALIZE];
31
+ const serialize = readProperty(cls, WORKFLOW_SERIALIZE);
31
32
  if (typeof serialize !== 'function')
32
33
  return false;
33
- const classId = cls.classId;
34
+ const classId = readProperty(cls, 'classId');
34
35
  if (typeof classId !== 'string') {
35
- throw new Error(`Class "${cls.name}" with ${String(WORKFLOW_SERIALIZE)} must have a static "classId" property.`);
36
+ throw new Error(`Class "${String(readProperty(cls, 'name'))}" with ${String(WORKFLOW_SERIALIZE)} must have a static "classId" property.`);
36
37
  }
38
+ // Custom serializers are workflow code by definition: the data only
39
+ // exists behind them. Record the execution so retention-aware callers
40
+ // can account for possible VM-state perturbation.
41
+ recordGuestCode('method', `[WORKFLOW_SERIALIZE] (${classId})`);
37
42
  const data = serialize.call(cls, value);
38
43
  return { classId, data };
39
44
  },
@@ -65,4 +70,4 @@ export function getClassRevivers(global = globalThis) {
65
70
  },
66
71
  };
67
72
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VyaWFsaXphdGlvbi9yZWR1Y2Vycy9jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUdyRSxxQkFBcUI7QUFFckIsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPO1FBQ0wsbUVBQW1FO1FBQ25FLGtFQUFrRTtRQUNsRSx3RUFBd0U7UUFDeEUsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDZixJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDOUMsTUFBTSxPQUFPLEdBQUksS0FBYSxDQUFDLE9BQU8sQ0FBQztZQUN2QyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNsQixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM5RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1lBQzlCLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssVUFBVTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUVwRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMxQyxJQUFJLE9BQU8sU0FBUyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFFbEQsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUM1QixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLElBQUksS0FBSyxDQUNiLFVBQVUsR0FBRyxDQUFDLElBQUksVUFBVSxNQUFNLENBQUMsa0JBQWtCLENBQUMseUNBQXlDLENBQ2hHLENBQUM7WUFDSixDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxxQkFBcUI7QUFFckIsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixTQUE4QixVQUFVO0lBRXhDLE9BQU87UUFDTCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNmLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDOUIsTUFBTSxHQUFHLEdBQUcscUJBQXFCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxNQUFNLElBQUksS0FBSyxDQUNiLFVBQVUsT0FBTyxpRkFBaUYsQ0FDbkcsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFDRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNsQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFFeEIsTUFBTSxHQUFHLEdBQUcscUJBQXFCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxNQUFNLElBQUksS0FBSyxDQUNiLFVBQVUsT0FBTyxpRkFBaUYsQ0FDbkcsQ0FBQztZQUNKLENBQUM7WUFFRCxNQUFNLFdBQVcsR0FBSSxHQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN2RCxJQUFJLE9BQU8sV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLElBQUksS0FBSyxDQUNiLFVBQVUsT0FBTyw0QkFBNEIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FDcEYsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JDLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVkdWNlcnMgYW5kIHJldml2ZXJzIGZvciBjdXN0b20gY2xhc3Mgc2VyaWFsaXphdGlvbi5cbiAqXG4gKiBIYW5kbGVzOlxuICogLSBDbGFzczogY2xhc3MgY29uc3RydWN0b3JzIHdpdGggYSBgY2xhc3NJZGAgcHJvcGVydHlcbiAqIC0gSW5zdGFuY2U6IGluc3RhbmNlcyBvZiBjbGFzc2VzIHdpdGggY3VzdG9tIFdPUktGTE9XX1NFUklBTElaRS9ERVNFUklBTElaRSBtZXRob2RzXG4gKi9cblxuaW1wb3J0IHsgV09SS0ZMT1dfREVTRVJJQUxJWkUsIFdPUktGTE9XX1NFUklBTElaRSB9IGZyb20gJ0B3b3JrZmxvdy9zZXJkZSc7XG5pbXBvcnQgeyBnZXRTZXJpYWxpemF0aW9uQ2xhc3MgfSBmcm9tICcuLi8uLi9jbGFzcy1zZXJpYWxpemF0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgUmVkdWNlcnMsIFJldml2ZXJzIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vLyAtLS0tIFJlZHVjZXJzIC0tLS1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzUmVkdWNlcnMoKTogUGFydGlhbDxSZWR1Y2Vycz4ge1xuICByZXR1cm4ge1xuICAgIC8vIENsYXNzIGFuZCBJbnN0YW5jZSBhcmUgaW50ZW50aW9uYWxseSBwbGFjZWQgYmVmb3JlIEVycm9yIHNvIHRoYXRcbiAgICAvLyBjdXN0b20gRXJyb3Igc3ViY2xhc3NlcyB3aXRoIFdPUktGTE9XX1NFUklBTElaRSB0YWtlIHByZWNlZGVuY2VcbiAgICAvLyBvdmVyIHRoZSBnZW5lcmljIEVycm9yIHNlcmlhbGl6YXRpb24gKGRldmFsdWUgdXNlcyBmaXJzdC1tYXRjaC13aW5zKS5cbiAgICBDbGFzczogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCBjbGFzc0lkID0gKHZhbHVlIGFzIGFueSkuY2xhc3NJZDtcbiAgICAgIGlmICh0eXBlb2YgY2xhc3NJZCAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB7IGNsYXNzSWQgfTtcbiAgICB9LFxuICAgIEluc3RhbmNlOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCBjbHMgPSB2YWx1ZS5jb25zdHJ1Y3RvcjtcbiAgICAgIGlmICghY2xzIHx8IHR5cGVvZiBjbHMgIT09ICdmdW5jdGlvbicpIHJldHVybiBmYWxzZTtcblxuICAgICAgY29uc3Qgc2VyaWFsaXplID0gY2xzW1dPUktGTE9XX1NFUklBTElaRV07XG4gICAgICBpZiAodHlwZW9mIHNlcmlhbGl6ZSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjb25zdCBjbGFzc0lkID0gY2xzLmNsYXNzSWQ7XG4gICAgICBpZiAodHlwZW9mIGNsYXNzSWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2xhc3MgXCIke2Nscy5uYW1lfVwiIHdpdGggJHtTdHJpbmcoV09SS0ZMT1dfU0VSSUFMSVpFKX0gbXVzdCBoYXZlIGEgc3RhdGljIFwiY2xhc3NJZFwiIHByb3BlcnR5LmBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YSA9IHNlcmlhbGl6ZS5jYWxsKGNscywgdmFsdWUpO1xuICAgICAgcmV0dXJuIHsgY2xhc3NJZCwgZGF0YSB9O1xuICAgIH0sXG4gIH07XG59XG5cbi8vIC0tLS0gUmV2aXZlcnMgLS0tLVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NSZXZpdmVycyhcbiAgZ2xvYmFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gZ2xvYmFsVGhpc1xuKTogUGFydGlhbDxSZXZpdmVycz4ge1xuICByZXR1cm4ge1xuICAgIENsYXNzOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IGNsYXNzSWQgPSB2YWx1ZS5jbGFzc0lkO1xuICAgICAgY29uc3QgY2xzID0gZ2V0U2VyaWFsaXphdGlvbkNsYXNzKGNsYXNzSWQsIGdsb2JhbCk7XG4gICAgICBpZiAoIWNscykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENsYXNzIFwiJHtjbGFzc0lkfVwiIG5vdCBmb3VuZC4gTWFrZSBzdXJlIHRoZSBjbGFzcyBpcyByZWdpc3RlcmVkIHdpdGggcmVnaXN0ZXJTZXJpYWxpemF0aW9uQ2xhc3MuYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNscztcbiAgICB9LFxuICAgIEluc3RhbmNlOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IGNsYXNzSWQgPSB2YWx1ZS5jbGFzc0lkO1xuICAgICAgY29uc3QgZGF0YSA9IHZhbHVlLmRhdGE7XG5cbiAgICAgIGNvbnN0IGNscyA9IGdldFNlcmlhbGl6YXRpb25DbGFzcyhjbGFzc0lkLCBnbG9iYWwpO1xuICAgICAgaWYgKCFjbHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDbGFzcyBcIiR7Y2xhc3NJZH1cIiBub3QgZm91bmQuIE1ha2Ugc3VyZSB0aGUgY2xhc3MgaXMgcmVnaXN0ZXJlZCB3aXRoIHJlZ2lzdGVyU2VyaWFsaXphdGlvbkNsYXNzLmBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVzZXJpYWxpemUgPSAoY2xzIGFzIGFueSlbV09SS0ZMT1dfREVTRVJJQUxJWkVdO1xuICAgICAgaWYgKHR5cGVvZiBkZXNlcmlhbGl6ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENsYXNzIFwiJHtjbGFzc0lkfVwiIGRvZXMgbm90IGhhdmUgYSBzdGF0aWMgJHtTdHJpbmcoV09SS0ZMT1dfREVTRVJJQUxJWkUpfSBtZXRob2QuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVzZXJpYWxpemUuY2FsbChjbHMsIGRhdGEpO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VyaWFsaXphdGlvbi9yZWR1Y2Vycy9jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRy9ELHFCQUFxQjtBQUVyQixNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU87UUFDTCxtRUFBbUU7UUFDbkUsa0VBQWtFO1FBQ2xFLHdFQUF3RTtRQUN4RSxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNmLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM5QyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQy9DLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUNELFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xCLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQzlELE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxVQUFVO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBRXBELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUN4RCxJQUFJLE9BQU8sU0FBUyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFFbEQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM3QyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLElBQUksS0FBSyxDQUNiLFVBQVUsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsVUFBVSxNQUFNLENBQUMsa0JBQWtCLENBQUMseUNBQXlDLENBQ3pILENBQUM7WUFDSixDQUFDO1lBRUQsb0VBQW9FO1lBQ3BFLHNFQUFzRTtZQUN0RSxrREFBa0Q7WUFDbEQsZUFBZSxDQUFDLFFBQVEsRUFBRSx5QkFBeUIsT0FBTyxHQUFHLENBQUMsQ0FBQztZQUMvRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELHFCQUFxQjtBQUVyQixNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLFNBQThCLFVBQVU7SUFFeEMsT0FBTztRQUNMLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2YsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM5QixNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsVUFBVSxPQUFPLGlGQUFpRixDQUNuRyxDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUNELFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDOUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUV4QixNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsVUFBVSxPQUFPLGlGQUFpRixDQUNuRyxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFJLEdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3ZELElBQUksT0FBTyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQ2IsVUFBVSxPQUFPLDRCQUE0QixNQUFNLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUNwRixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZWR1Y2VycyBhbmQgcmV2aXZlcnMgZm9yIGN1c3RvbSBjbGFzcyBzZXJpYWxpemF0aW9uLlxuICpcbiAqIEhhbmRsZXM6XG4gKiAtIENsYXNzOiBjbGFzcyBjb25zdHJ1Y3RvcnMgd2l0aCBhIGBjbGFzc0lkYCBwcm9wZXJ0eVxuICogLSBJbnN0YW5jZTogaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2l0aCBjdXN0b20gV09SS0ZMT1dfU0VSSUFMSVpFL0RFU0VSSUFMSVpFIG1ldGhvZHNcbiAqL1xuXG5pbXBvcnQgeyBXT1JLRkxPV19ERVNFUklBTElaRSwgV09SS0ZMT1dfU0VSSUFMSVpFIH0gZnJvbSAnQHdvcmtmbG93L3NlcmRlJztcbmltcG9ydCB7IGdldFNlcmlhbGl6YXRpb25DbGFzcyB9IGZyb20gJy4uLy4uL2NsYXNzLXNlcmlhbGl6YXRpb24uanMnO1xuaW1wb3J0IHsgcmVhZFByb3BlcnR5LCByZWNvcmRHdWVzdENvZGUgfSBmcm9tICcuLi9oYXJkZW5lZC5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlZHVjZXJzLCBSZXZpdmVycyB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLy8gLS0tLSBSZWR1Y2VycyAtLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc1JlZHVjZXJzKCk6IFBhcnRpYWw8UmVkdWNlcnM+IHtcbiAgcmV0dXJuIHtcbiAgICAvLyBDbGFzcyBhbmQgSW5zdGFuY2UgYXJlIGludGVudGlvbmFsbHkgcGxhY2VkIGJlZm9yZSBFcnJvciBzbyB0aGF0XG4gICAgLy8gY3VzdG9tIEVycm9yIHN1YmNsYXNzZXMgd2l0aCBXT1JLRkxPV19TRVJJQUxJWkUgdGFrZSBwcmVjZWRlbmNlXG4gICAgLy8gb3ZlciB0aGUgZ2VuZXJpYyBFcnJvciBzZXJpYWxpemF0aW9uIChkZXZhbHVlIHVzZXMgZmlyc3QtbWF0Y2gtd2lucykuXG4gICAgQ2xhc3M6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgY2xhc3NJZCA9IHJlYWRQcm9wZXJ0eSh2YWx1ZSwgJ2NsYXNzSWQnKTtcbiAgICAgIGlmICh0eXBlb2YgY2xhc3NJZCAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB7IGNsYXNzSWQgfTtcbiAgICB9LFxuICAgIEluc3RhbmNlOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCBjbHMgPSByZWFkUHJvcGVydHkodmFsdWUsICdjb25zdHJ1Y3RvcicpO1xuICAgICAgaWYgKCFjbHMgfHwgdHlwZW9mIGNscyAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjb25zdCBzZXJpYWxpemUgPSByZWFkUHJvcGVydHkoY2xzLCBXT1JLRkxPV19TRVJJQUxJWkUpO1xuICAgICAgaWYgKHR5cGVvZiBzZXJpYWxpemUgIT09ICdmdW5jdGlvbicpIHJldHVybiBmYWxzZTtcblxuICAgICAgY29uc3QgY2xhc3NJZCA9IHJlYWRQcm9wZXJ0eShjbHMsICdjbGFzc0lkJyk7XG4gICAgICBpZiAodHlwZW9mIGNsYXNzSWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2xhc3MgXCIke1N0cmluZyhyZWFkUHJvcGVydHkoY2xzLCAnbmFtZScpKX1cIiB3aXRoICR7U3RyaW5nKFdPUktGTE9XX1NFUklBTElaRSl9IG11c3QgaGF2ZSBhIHN0YXRpYyBcImNsYXNzSWRcIiBwcm9wZXJ0eS5gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIEN1c3RvbSBzZXJpYWxpemVycyBhcmUgd29ya2Zsb3cgY29kZSBieSBkZWZpbml0aW9uOiB0aGUgZGF0YSBvbmx5XG4gICAgICAvLyBleGlzdHMgYmVoaW5kIHRoZW0uIFJlY29yZCB0aGUgZXhlY3V0aW9uIHNvIHJldGVudGlvbi1hd2FyZSBjYWxsZXJzXG4gICAgICAvLyBjYW4gYWNjb3VudCBmb3IgcG9zc2libGUgVk0tc3RhdGUgcGVydHVyYmF0aW9uLlxuICAgICAgcmVjb3JkR3Vlc3RDb2RlKCdtZXRob2QnLCBgW1dPUktGTE9XX1NFUklBTElaRV0gKCR7Y2xhc3NJZH0pYCk7XG4gICAgICBjb25zdCBkYXRhID0gc2VyaWFsaXplLmNhbGwoY2xzLCB2YWx1ZSk7XG4gICAgICByZXR1cm4geyBjbGFzc0lkLCBkYXRhIH07XG4gICAgfSxcbiAgfTtcbn1cblxuLy8gLS0tLSBSZXZpdmVycyAtLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc1Jldml2ZXJzKFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzXG4pOiBQYXJ0aWFsPFJldml2ZXJzPiB7XG4gIHJldHVybiB7XG4gICAgQ2xhc3M6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgY2xhc3NJZCA9IHZhbHVlLmNsYXNzSWQ7XG4gICAgICBjb25zdCBjbHMgPSBnZXRTZXJpYWxpemF0aW9uQ2xhc3MoY2xhc3NJZCwgZ2xvYmFsKTtcbiAgICAgIGlmICghY2xzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2xhc3MgXCIke2NsYXNzSWR9XCIgbm90IGZvdW5kLiBNYWtlIHN1cmUgdGhlIGNsYXNzIGlzIHJlZ2lzdGVyZWQgd2l0aCByZWdpc3RlclNlcmlhbGl6YXRpb25DbGFzcy5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xzO1xuICAgIH0sXG4gICAgSW5zdGFuY2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgY2xhc3NJZCA9IHZhbHVlLmNsYXNzSWQ7XG4gICAgICBjb25zdCBkYXRhID0gdmFsdWUuZGF0YTtcblxuICAgICAgY29uc3QgY2xzID0gZ2V0U2VyaWFsaXphdGlvbkNsYXNzKGNsYXNzSWQsIGdsb2JhbCk7XG4gICAgICBpZiAoIWNscykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENsYXNzIFwiJHtjbGFzc0lkfVwiIG5vdCBmb3VuZC4gTWFrZSBzdXJlIHRoZSBjbGFzcyBpcyByZWdpc3RlcmVkIHdpdGggcmVnaXN0ZXJTZXJpYWxpemF0aW9uQ2xhc3MuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkZXNlcmlhbGl6ZSA9IChjbHMgYXMgYW55KVtXT1JLRkxPV19ERVNFUklBTElaRV07XG4gICAgICBpZiAodHlwZW9mIGRlc2VyaWFsaXplICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2xhc3MgXCIke2NsYXNzSWR9XCIgZG9lcyBub3QgaGF2ZSBhIHN0YXRpYyAke1N0cmluZyhXT1JLRkxPV19ERVNFUklBTElaRSl9IG1ldGhvZC5gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkZXNlcmlhbGl6ZS5jYWxsKGNscywgZGF0YSk7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ /**
2
+ * VM-compatible common reducers and revivers.
3
+ *
4
+ * Identical to common.ts but without Node.js dependencies:
5
+ * - Uses native `btoa` / `atob` (provided by quickjs-wasi's base64
6
+ * extension, see `quickjs-assets.generated.ts`) instead of Buffer
7
+ * or pure-JS base64.
8
+ * - Uses `instanceof Error` instead of `types.isNativeError()`.
9
+ *
10
+ * This module is safe to bundle into the QuickJS WASM VM.
11
+ */
12
+ import type { Reducers, Revivers } from '../types.js';
13
+ export declare function getCommonReducers(): Partial<Reducers>;
14
+ export declare function getCommonRevivers(): Partial<Revivers>;
15
+ //# sourceMappingURL=common-vm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-vm.d.ts","sourceRoot":"","sources":["../../../src/serialization/reducers/common-vm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAuB,MAAM,aAAa,CAAC;AA6E3E,wBAAgB,iBAAiB,IAAI,OAAO,CAAC,QAAQ,CAAC,CA+QrD;AAID,wBAAgB,iBAAiB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAoPrD"}