@temelj/workflow 0.0.0-alpha.3 → 0.0.0-alpha.4

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 (461) hide show
  1. package/README.md +394 -2
  2. package/dist/attributes.d.mts +11 -9
  3. package/dist/attributes.mjs +23 -5
  4. package/dist/bundle.d.mts +5 -23
  5. package/dist/bundle.mjs +2 -18
  6. package/dist/client/create.d.mts +26 -23
  7. package/dist/client/create.mjs +26 -32
  8. package/dist/client/facades.d.mts +12 -18
  9. package/dist/client/facades.mjs +102 -93
  10. package/dist/client/mod.mjs +1 -2
  11. package/dist/client/run-handle.d.mts +17 -54
  12. package/dist/client/run-handle.mjs +35 -105
  13. package/dist/client/worker-options.d.mts +8 -8
  14. package/dist/client/worker-options.mjs +11 -11
  15. package/dist/cloudflare/cloudflare.d.mts +4 -5
  16. package/dist/cloudflare/codec.d.mts +28 -13
  17. package/dist/cloudflare/codec.mjs +40 -17
  18. package/dist/cloudflare/entrypoint.d.mts +3 -4
  19. package/dist/cloudflare/entrypoint.mjs +4 -3
  20. package/dist/cloudflare/execution.d.mts +3 -4
  21. package/dist/cloudflare/execution.mjs +20 -13
  22. package/dist/cloudflare/host.d.mts +6 -7
  23. package/dist/cloudflare/host.mjs +7 -6
  24. package/dist/cloudflare/mod.d.mts +4 -4
  25. package/dist/cloudflare/mod.mjs +2 -2
  26. package/dist/cloudflare/name.d.mts +3 -4
  27. package/dist/cloudflare/name.mjs +3 -3
  28. package/dist/cloudflare/registry.d.mts +3 -23
  29. package/dist/cloudflare/registry.mjs +2 -20
  30. package/dist/cloudflare/runtime.d.mts +11 -18
  31. package/dist/cloudflare/runtime.mjs +52 -73
  32. package/dist/cloudflare/step.d.mts +6 -6
  33. package/dist/cloudflare/step.mjs +69 -57
  34. package/dist/cloudflare/types.d.mts +17 -36
  35. package/dist/collection.d.mts +8 -11
  36. package/dist/collection.mjs +10 -14
  37. package/dist/compiled-function.d.mts +14 -19
  38. package/dist/compiled-function.mjs +12 -24
  39. package/dist/compiled.d.mts +4 -0
  40. package/dist/compiled.mjs +4 -0
  41. package/dist/compiler/ast.d.mts +26 -0
  42. package/dist/{vite → compiler}/ast.mjs +24 -16
  43. package/dist/{vite → compiler}/error.d.mts +4 -6
  44. package/dist/{vite → compiler}/error.mjs +14 -16
  45. package/dist/compiler/manifest.d.mts +6 -0
  46. package/dist/{vite → compiler}/manifest.mjs +9 -7
  47. package/dist/compiler/plugin.d.mts +7 -0
  48. package/dist/{vite → compiler}/plugin.mjs +45 -46
  49. package/dist/compiler/safety.d.mts +12 -0
  50. package/dist/{vite → compiler}/safety.mjs +5 -11
  51. package/dist/{vite → compiler}/source-edit.d.mts +3 -4
  52. package/dist/{vite → compiler}/source-edit.mjs +1 -1
  53. package/dist/{vite → compiler}/source-map.d.mts +4 -3
  54. package/dist/{vite → compiler}/source-map.mjs +3 -3
  55. package/dist/compiler/source.d.mts +7 -0
  56. package/dist/{vite → compiler}/source.mjs +1 -1
  57. package/dist/compiler/transform.d.mts +12 -0
  58. package/dist/{vite → compiler}/transform.mjs +37 -38
  59. package/dist/definition.d.mts +17 -25
  60. package/dist/definition.mjs +19 -35
  61. package/dist/engine/child-workflow.d.mts +5 -9
  62. package/dist/engine/child-workflow.mjs +46 -67
  63. package/dist/engine/command-identity.d.mts +5 -6
  64. package/dist/engine/command-identity.mjs +9 -5
  65. package/dist/engine/context.d.mts +17 -0
  66. package/dist/engine/create.d.mts +36 -94
  67. package/dist/engine/create.mjs +55 -260
  68. package/dist/engine/deterministic.d.mts +6 -11
  69. package/dist/engine/deterministic.mjs +47 -68
  70. package/dist/engine/durable-command.d.mts +5 -5
  71. package/dist/engine/durable-command.mjs +2 -2
  72. package/dist/engine/execution-service.d.mts +20 -24
  73. package/dist/engine/execution-service.mjs +54 -52
  74. package/dist/engine/hooks.d.mts +17 -39
  75. package/dist/engine/hooks.mjs +73 -94
  76. package/dist/engine/inspection.d.mts +23 -15
  77. package/dist/engine/inspection.mjs +55 -29
  78. package/dist/engine/lifecycle.d.mts +6 -12
  79. package/dist/engine/lifecycle.mjs +5 -5
  80. package/dist/engine/lock-replay.d.mts +8 -15
  81. package/dist/engine/lock-replay.mjs +12 -25
  82. package/dist/engine/lock.d.mts +10 -15
  83. package/dist/engine/lock.mjs +65 -51
  84. package/dist/engine/message.d.mts +14 -34
  85. package/dist/engine/message.mjs +94 -127
  86. package/dist/engine/observation.d.mts +9 -11
  87. package/dist/engine/observation.mjs +18 -27
  88. package/dist/engine/replay.d.mts +18 -19
  89. package/dist/engine/replay.mjs +32 -56
  90. package/dist/engine/resume.d.mts +16 -0
  91. package/dist/engine/resume.mjs +24 -0
  92. package/dist/engine/retry.d.mts +15 -19
  93. package/dist/engine/retry.mjs +17 -17
  94. package/dist/engine/run-data.d.mts +4 -8
  95. package/dist/engine/run-data.mjs +24 -22
  96. package/dist/engine/run-service.d.mts +24 -33
  97. package/dist/engine/run-service.mjs +125 -93
  98. package/dist/engine/run-utils.d.mts +11 -13
  99. package/dist/engine/run-utils.mjs +23 -46
  100. package/dist/engine/schedule.d.mts +8 -22
  101. package/dist/engine/schedule.mjs +37 -34
  102. package/dist/engine/serialization.d.mts +9 -6
  103. package/dist/engine/serialization.mjs +30 -21
  104. package/dist/engine/signals.d.mts +23 -0
  105. package/dist/engine/signals.mjs +41 -0
  106. package/dist/engine/start.d.mts +18 -0
  107. package/dist/engine/start.mjs +88 -0
  108. package/dist/engine/state.d.mts +37 -67
  109. package/dist/engine/state.mjs +119 -280
  110. package/dist/engine/step-api.d.mts +5 -8
  111. package/dist/engine/step-api.mjs +16 -16
  112. package/dist/engine/stream-reader.d.mts +12 -0
  113. package/dist/engine/stream-reader.mjs +154 -0
  114. package/dist/engine/stream.d.mts +9 -54
  115. package/dist/engine/stream.mjs +54 -196
  116. package/dist/engine/summary/recovery.d.mts +35 -0
  117. package/dist/engine/summary/recovery.mjs +363 -0
  118. package/dist/engine/summary/runs.d.mts +43 -0
  119. package/dist/engine/summary/runs.mjs +294 -0
  120. package/dist/engine/summary/step-attempts.d.mts +5 -10
  121. package/dist/engine/summary/step-attempts.mjs +157 -36
  122. package/dist/engine/summary/tally.d.mts +44 -0
  123. package/dist/engine/summary/tally.mjs +142 -0
  124. package/dist/engine/task.d.mts +4 -5
  125. package/dist/engine/task.mjs +40 -48
  126. package/dist/errors/base.d.mts +17 -77
  127. package/dist/errors/base.mjs +26 -327
  128. package/dist/errors/capability.d.mts +3 -6
  129. package/dist/errors/capability.mjs +4 -8
  130. package/dist/errors/codes.d.mts +116 -0
  131. package/dist/{types/error-code.mjs → errors/codes.mjs} +2 -17
  132. package/dist/errors/definition.d.mts +3 -17
  133. package/dist/errors/definition.mjs +5 -42
  134. package/dist/errors/failures.d.mts +17 -51
  135. package/dist/errors/failures.mjs +35 -102
  136. package/dist/errors/hook.d.mts +5 -9
  137. package/dist/errors/hook.mjs +4 -16
  138. package/dist/errors/implementation.d.mts +3 -6
  139. package/dist/errors/implementation.mjs +7 -12
  140. package/dist/errors/lock.d.mts +7 -20
  141. package/dist/errors/lock.mjs +8 -44
  142. package/dist/errors/message.d.mts +14 -59
  143. package/dist/errors/message.mjs +13 -39
  144. package/dist/errors/mod.d.mts +4 -5
  145. package/dist/errors/mod.mjs +5 -7
  146. package/dist/errors/records.d.mts +10 -4
  147. package/dist/errors/records.mjs +256 -256
  148. package/dist/errors/run.d.mts +27 -68
  149. package/dist/errors/run.mjs +31 -85
  150. package/dist/errors/schedule.d.mts +7 -18
  151. package/dist/errors/schedule.mjs +7 -39
  152. package/dist/errors/step.d.mts +12 -45
  153. package/dist/errors/step.mjs +13 -34
  154. package/dist/errors/stream.d.mts +8 -16
  155. package/dist/errors/stream.mjs +7 -41
  156. package/dist/esbuild.d.mts +6 -4
  157. package/dist/esbuild.mjs +2 -1
  158. package/dist/events/descriptors.d.mts +12 -241
  159. package/dist/events/descriptors.mjs +12 -5
  160. package/dist/history/projection.d.mts +4 -6
  161. package/dist/history/projection.mjs +22 -26
  162. package/dist/history/replay-projection.d.mts +44 -48
  163. package/dist/history/replay-projection.mjs +41 -50
  164. package/dist/history/{mod.d.mts → replay.d.mts} +16 -21
  165. package/dist/history/{mod.mjs → replay.mjs} +21 -25
  166. package/dist/history/sequencer.d.mts +10 -11
  167. package/dist/history/sequencer.mjs +11 -7
  168. package/dist/history/step-attempts.d.mts +4 -7
  169. package/dist/history/step-attempts.mjs +8 -9
  170. package/dist/history/timeline.d.mts +4 -13
  171. package/dist/history/timeline.mjs +46 -265
  172. package/dist/history/validator.d.mts +5 -7
  173. package/dist/history/validator.mjs +9 -24
  174. package/dist/hook-token.d.mts +7 -0
  175. package/dist/hook-token.mjs +32 -0
  176. package/dist/ids.d.mts +8 -0
  177. package/dist/ids.mjs +21 -0
  178. package/dist/message-options.d.mts +11 -5
  179. package/dist/message-options.mjs +9 -7
  180. package/dist/mod.d.mts +32 -36
  181. package/dist/mod.mjs +9 -13
  182. package/dist/otel/metrics.d.mts +31 -0
  183. package/dist/otel/metrics.mjs +60 -0
  184. package/dist/otel/mod.d.mts +3 -0
  185. package/dist/otel/mod.mjs +3 -0
  186. package/dist/otel/spans.d.mts +24 -0
  187. package/dist/otel/spans.mjs +218 -0
  188. package/dist/otel/support.d.mts +15 -8
  189. package/dist/otel/support.mjs +18 -40
  190. package/dist/{otel.d.mts → otel/telemetry.d.mts} +5 -6
  191. package/dist/otel/telemetry.mjs +305 -0
  192. package/dist/pagination.d.mts +6 -12
  193. package/dist/pagination.mjs +10 -14
  194. package/dist/registry.d.mts +8 -5
  195. package/dist/registry.mjs +19 -10
  196. package/dist/rolldown.d.mts +6 -4
  197. package/dist/rolldown.mjs +2 -1
  198. package/dist/rollup.d.mts +6 -4
  199. package/dist/rollup.mjs +2 -1
  200. package/dist/rspack.d.mts +6 -4
  201. package/dist/rspack.mjs +2 -1
  202. package/dist/run-status.d.mts +29 -0
  203. package/dist/run-status.mjs +42 -0
  204. package/dist/schema/common.d.mts +22 -0
  205. package/dist/schema/common.mjs +54 -0
  206. package/dist/schema/error.d.mts +17 -0
  207. package/dist/schema/error.mjs +39 -0
  208. package/dist/schema/events.d.mts +446 -0
  209. package/dist/schema/events.mjs +235 -0
  210. package/dist/schema/pagination.d.mts +5 -0
  211. package/dist/schema/pagination.mjs +11 -0
  212. package/dist/schema/persisted-value.d.mts +8 -0
  213. package/dist/schema/persisted-value.mjs +94 -0
  214. package/dist/schema/run.d.mts +51 -0
  215. package/dist/schema/run.mjs +88 -0
  216. package/dist/schema/store.d.mts +94 -0
  217. package/dist/schema/store.mjs +116 -0
  218. package/dist/step-definition.d.mts +4 -9
  219. package/dist/step-definition.mjs +2 -2
  220. package/dist/store/capabilities.d.mts +8 -9
  221. package/dist/store/capabilities.mjs +7 -7
  222. package/dist/store/cleanup.d.mts +9 -14
  223. package/dist/store/cleanup.mjs +86 -85
  224. package/dist/store/create.d.mts +28 -29
  225. package/dist/store/create.mjs +10 -11
  226. package/dist/store/events.d.mts +48 -0
  227. package/dist/store/events.mjs +263 -0
  228. package/dist/store/indexes.d.mts +25 -0
  229. package/dist/store/indexes.mjs +282 -0
  230. package/dist/store/instrumentation.d.mts +2 -3
  231. package/dist/store/instrumentation.mjs +30 -30
  232. package/dist/store/lock.d.mts +4 -5
  233. package/dist/store/lock.mjs +5 -7
  234. package/dist/store/materialization.d.mts +10 -17
  235. package/dist/store/materialization.mjs +39 -33
  236. package/dist/store/mod.d.mts +3 -3
  237. package/dist/store/mod.mjs +2 -2
  238. package/dist/store/query.d.mts +13 -17
  239. package/dist/store/query.mjs +13 -13
  240. package/dist/store/run.d.mts +25 -34
  241. package/dist/store/run.mjs +67 -108
  242. package/dist/store/schedule.d.mts +6 -8
  243. package/dist/store/schedule.mjs +11 -11
  244. package/dist/store/step-attempt.d.mts +9 -12
  245. package/dist/store/step-attempt.mjs +9 -9
  246. package/dist/store/storage-value.d.mts +3 -3
  247. package/dist/store/storage-value.mjs +17 -1
  248. package/dist/store/validation.d.mts +17 -20
  249. package/dist/store/validation.mjs +30 -33
  250. package/dist/store-keys.d.mts +35 -47
  251. package/dist/store-keys.mjs +9 -17
  252. package/dist/telemetry.d.mts +16 -16
  253. package/dist/telemetry.mjs +3 -3
  254. package/dist/temporal.d.mts +11 -16
  255. package/dist/temporal.mjs +8 -9
  256. package/dist/timer.d.mts +12 -10
  257. package/dist/timer.mjs +11 -3
  258. package/dist/types/cleanup.d.mts +13 -50
  259. package/dist/types/cleanup.mjs +1 -22
  260. package/dist/types/client.d.mts +101 -162
  261. package/dist/types/{vite.d.mts → compiler.d.mts} +17 -24
  262. package/dist/types/compiler.mjs +1 -0
  263. package/dist/types/definition.d.mts +22 -34
  264. package/dist/types/engine-options.d.mts +10 -17
  265. package/dist/types/engine.d.mts +15 -274
  266. package/dist/types/error.d.mts +15 -217
  267. package/dist/types/error.mjs +1 -48
  268. package/dist/types/events.d.mts +59 -2730
  269. package/dist/types/events.mjs +1 -283
  270. package/dist/types/hook.d.mts +27 -85
  271. package/dist/types/hook.mjs +1 -66
  272. package/dist/types/ids.d.mts +9 -0
  273. package/dist/types/ids.mjs +1 -0
  274. package/dist/types/lock.d.mts +8 -26
  275. package/dist/types/lock.mjs +1 -18
  276. package/dist/types/message.d.mts +29 -43
  277. package/dist/types/observation.d.mts +43 -58
  278. package/dist/types/pagination.d.mts +6 -22
  279. package/dist/types/pagination.mjs +1 -13
  280. package/dist/types/result.d.mts +11 -43
  281. package/dist/types/retry.d.mts +7 -14
  282. package/dist/types/run-list.d.mts +9 -11
  283. package/dist/types/run-options.d.mts +25 -32
  284. package/dist/types/run.d.mts +35 -315
  285. package/dist/types/run.mjs +1 -207
  286. package/dist/types/runtime.d.mts +33 -145
  287. package/dist/types/runtime.mjs +1 -21
  288. package/dist/types/schedule.d.mts +13 -72
  289. package/dist/types/schedule.mjs +1 -48
  290. package/dist/types/step-attempts.d.mts +65 -261
  291. package/dist/types/step-attempts.mjs +1 -43
  292. package/dist/types/step.d.mts +66 -77
  293. package/dist/types/step.mjs +1 -5
  294. package/dist/types/store.d.mts +50 -182
  295. package/dist/types/stream.d.mts +19 -40
  296. package/dist/types/summary.d.mts +174 -278
  297. package/dist/types/telemetry.d.mts +23 -28
  298. package/dist/types/telemetry.mjs +1 -9
  299. package/dist/types/timeline.d.mts +46 -233
  300. package/dist/types/worker.d.mts +22 -29
  301. package/dist/values.d.mts +15 -0
  302. package/dist/values.mjs +57 -0
  303. package/dist/vite.d.mts +5 -6
  304. package/dist/vite.mjs +3 -4
  305. package/dist/webpack.d.mts +6 -4
  306. package/dist/webpack.mjs +2 -1
  307. package/dist/worker/error.d.mts +2 -9
  308. package/dist/worker/error.mjs +20 -32
  309. package/dist/worker/missing-implementation.d.mts +19 -0
  310. package/dist/worker/missing-implementation.mjs +62 -0
  311. package/dist/worker/worker.d.mts +18 -0
  312. package/dist/{worker.mjs → worker/worker.mjs} +64 -118
  313. package/package.json +28 -47
  314. package/dist/engine/execution-api.d.mts +0 -29
  315. package/dist/engine/execution-api.mjs +0 -33
  316. package/dist/engine/inspection-api.d.mts +0 -34
  317. package/dist/engine/inspection-api.mjs +0 -78
  318. package/dist/engine/mod.d.mts +0 -4
  319. package/dist/engine/mod.mjs +0 -2
  320. package/dist/engine/recovery.d.mts +0 -26
  321. package/dist/engine/recovery.mjs +0 -92
  322. package/dist/engine/retry-policy.d.mts +0 -4
  323. package/dist/engine/retry-policy.mjs +0 -4
  324. package/dist/engine/start-api.d.mts +0 -30
  325. package/dist/engine/start-api.mjs +0 -99
  326. package/dist/engine/summary/active-events.d.mts +0 -34
  327. package/dist/engine/summary/active-events.mjs +0 -69
  328. package/dist/engine/summary/child-workflow-runs.d.mts +0 -24
  329. package/dist/engine/summary/child-workflow-runs.mjs +0 -138
  330. package/dist/engine/summary/child-workflow-waits.d.mts +0 -21
  331. package/dist/engine/summary/child-workflow-waits.mjs +0 -67
  332. package/dist/engine/summary/recovery-child-workflow-waits.d.mts +0 -11
  333. package/dist/engine/summary/recovery-child-workflow-waits.mjs +0 -89
  334. package/dist/engine/summary/recovery-due-runs.d.mts +0 -16
  335. package/dist/engine/summary/recovery-due-runs.mjs +0 -52
  336. package/dist/engine/summary/recovery-failed-runs.d.mts +0 -14
  337. package/dist/engine/summary/recovery-failed-runs.mjs +0 -33
  338. package/dist/engine/summary/recovery-lease-runs.d.mts +0 -16
  339. package/dist/engine/summary/recovery-lease-runs.mjs +0 -69
  340. package/dist/engine/summary/recovery-locks.d.mts +0 -18
  341. package/dist/engine/summary/recovery-locks.mjs +0 -100
  342. package/dist/engine/summary/recovery-message-waits.d.mts +0 -11
  343. package/dist/engine/summary/recovery-message-waits.mjs +0 -74
  344. package/dist/engine/summary/recovery-retry-runs.d.mts +0 -17
  345. package/dist/engine/summary/recovery-retry-runs.mjs +0 -65
  346. package/dist/engine/summary/recovery-run-timestamps.d.mts +0 -13
  347. package/dist/engine/summary/recovery-run-timestamps.mjs +0 -18
  348. package/dist/engine/summary/recovery-runs.d.mts +0 -23
  349. package/dist/engine/summary/recovery-runs.mjs +0 -54
  350. package/dist/engine/summary/recovery-schedules.d.mts +0 -10
  351. package/dist/engine/summary/recovery-schedules.mjs +0 -46
  352. package/dist/engine/summary/recovery-sleep-waits.d.mts +0 -10
  353. package/dist/engine/summary/recovery-sleep-waits.mjs +0 -53
  354. package/dist/engine/summary/recovery-waits.d.mts +0 -21
  355. package/dist/engine/summary/recovery-waits.mjs +0 -29
  356. package/dist/engine/summary/run-availability.d.mts +0 -13
  357. package/dist/engine/summary/run-availability.mjs +0 -37
  358. package/dist/engine/summary/run-cleanup.d.mts +0 -14
  359. package/dist/engine/summary/run-cleanup.mjs +0 -44
  360. package/dist/engine/summary/run-failure.d.mts +0 -14
  361. package/dist/engine/summary/run-failure.mjs +0 -62
  362. package/dist/engine/summary/run-hooks.d.mts +0 -14
  363. package/dist/engine/summary/run-hooks.mjs +0 -63
  364. package/dist/engine/summary/run-lease.d.mts +0 -11
  365. package/dist/engine/summary/run-lease.mjs +0 -64
  366. package/dist/engine/summary/run-message-waits.d.mts +0 -15
  367. package/dist/engine/summary/run-message-waits.mjs +0 -62
  368. package/dist/engine/summary/run-metrics.d.mts +0 -31
  369. package/dist/engine/summary/run-metrics.mjs +0 -93
  370. package/dist/engine/summary/run-retry.d.mts +0 -9
  371. package/dist/engine/summary/run-retry.mjs +0 -69
  372. package/dist/engine/summary/run-sleeps.d.mts +0 -15
  373. package/dist/engine/summary/run-sleeps.mjs +0 -61
  374. package/dist/engine/summary/run-state.d.mts +0 -26
  375. package/dist/engine/summary/run-state.mjs +0 -48
  376. package/dist/engine/summary/run-status.d.mts +0 -16
  377. package/dist/engine/summary/run-status.mjs +0 -35
  378. package/dist/engine/summary/run-streams.d.mts +0 -14
  379. package/dist/engine/summary/run-streams.mjs +0 -46
  380. package/dist/engine/summary/run-transition.d.mts +0 -9
  381. package/dist/engine/summary/run-transition.mjs +0 -39
  382. package/dist/engine/summary/run-workflow.d.mts +0 -9
  383. package/dist/engine/summary/run-workflow.mjs +0 -47
  384. package/dist/engine/summary/step-attempt-active-child-workflows.d.mts +0 -13
  385. package/dist/engine/summary/step-attempt-active-child-workflows.mjs +0 -55
  386. package/dist/engine/summary/step-attempt-active-fields.d.mts +0 -23
  387. package/dist/engine/summary/step-attempt-active-fields.mjs +0 -14
  388. package/dist/engine/summary/step-attempt-active-message-waits.d.mts +0 -12
  389. package/dist/engine/summary/step-attempt-active-message-waits.mjs +0 -47
  390. package/dist/engine/summary/step-attempt-active-sleeps.d.mts +0 -19
  391. package/dist/engine/summary/step-attempt-active-sleeps.mjs +0 -44
  392. package/dist/engine/summary/step-attempt-buckets.d.mts +0 -22
  393. package/dist/engine/summary/step-attempt-buckets.mjs +0 -152
  394. package/dist/engine/summary/step-attempt-failure.d.mts +0 -12
  395. package/dist/engine/summary/step-attempt-failure.mjs +0 -61
  396. package/dist/engine/summary/step-attempt-lifecycle.d.mts +0 -13
  397. package/dist/engine/summary/step-attempt-lifecycle.mjs +0 -19
  398. package/dist/engine/summary.d.mts +0 -32
  399. package/dist/engine/summary.mjs +0 -37
  400. package/dist/errors/details.d.mts +0 -13
  401. package/dist/errors/details.mjs +0 -66
  402. package/dist/errors/record-view.d.mts +0 -11
  403. package/dist/errors/record-view.mjs +0 -24
  404. package/dist/errors/runtime.d.mts +0 -12
  405. package/dist/errors/runtime.mjs +0 -24
  406. package/dist/events/mod.d.mts +0 -3
  407. package/dist/events/mod.mjs +0 -2
  408. package/dist/history/attempt-key.d.mts +0 -6
  409. package/dist/history/attempt-key.mjs +0 -7
  410. package/dist/inspection/mod.d.mts +0 -5
  411. package/dist/inspection/mod.mjs +0 -3
  412. package/dist/otel.mjs +0 -590
  413. package/dist/runtime.d.mts +0 -35
  414. package/dist/runtime.mjs +0 -198
  415. package/dist/store/append-projection.d.mts +0 -15
  416. package/dist/store/append-projection.mjs +0 -26
  417. package/dist/store/compaction.d.mts +0 -5
  418. package/dist/store/compaction.mjs +0 -8
  419. package/dist/store/event-append-project.d.mts +0 -15
  420. package/dist/store/event-append-project.mjs +0 -77
  421. package/dist/store/event-append.d.mts +0 -37
  422. package/dist/store/event-append.mjs +0 -80
  423. package/dist/store/event-history.d.mts +0 -22
  424. package/dist/store/event-history.mjs +0 -75
  425. package/dist/store/event.d.mts +0 -10
  426. package/dist/store/event.mjs +0 -28
  427. package/dist/store/idempotency.d.mts +0 -10
  428. package/dist/store/idempotency.mjs +0 -167
  429. package/dist/store/message-index.d.mts +0 -21
  430. package/dist/store/message-index.mjs +0 -122
  431. package/dist/store/revision.d.mts +0 -4
  432. package/dist/store/revision.mjs +0 -7
  433. package/dist/store/schema.d.mts +0 -14
  434. package/dist/store/schema.mjs +0 -17
  435. package/dist/types/common.d.mts +0 -20
  436. package/dist/types/common.mjs +0 -16
  437. package/dist/types/error-code.d.mts +0 -256
  438. package/dist/types/message-id.d.mts +0 -7
  439. package/dist/types/message-id.mjs +0 -5
  440. package/dist/types/run-id.d.mts +0 -7
  441. package/dist/types/run-id.mjs +0 -5
  442. package/dist/types/step-id.d.mts +0 -7
  443. package/dist/types/step-id.mjs +0 -5
  444. package/dist/types/stream-id.d.mts +0 -7
  445. package/dist/types/stream-id.mjs +0 -5
  446. package/dist/types/worker-id.d.mts +0 -7
  447. package/dist/types/worker-id.mjs +0 -5
  448. package/dist/utility.d.mts +0 -49
  449. package/dist/utility.mjs +0 -122
  450. package/dist/vite/ast.d.mts +0 -23
  451. package/dist/vite/generated-name.d.mts +0 -7
  452. package/dist/vite/generated-name.mjs +0 -9
  453. package/dist/vite/manifest.d.mts +0 -7
  454. package/dist/vite/plugin.d.mts +0 -7
  455. package/dist/vite/safety.d.mts +0 -12
  456. package/dist/vite/source.d.mts +0 -7
  457. package/dist/vite/transform.d.mts +0 -7
  458. package/dist/webhook.d.mts +0 -16
  459. package/dist/webhook.mjs +0 -17
  460. package/dist/worker.d.mts +0 -19
  461. /package/dist/{types/vite.mjs → engine/context.mjs} +0 -0
@@ -1,25 +1,19 @@
1
- import { StepId } from "./types/step-id.mjs";
1
+ import { StepId } from "./types/ids.mjs";
2
2
  import { CursorKeyPart, PageOptions, WorkflowPage } from "./types/pagination.mjs";
3
- import "./types/step.mjs";
4
3
  //#region src/pagination.d.ts
5
- declare function pageItems<TItem>(items: readonly TItem[], options: PageOptions | undefined, label: string, cursorKey: (item: TItem, index: number) => readonly CursorKeyPart[]): WorkflowPage<TItem>;
6
- declare function makeWorkflowRunCursorKey(run: {
4
+ export declare function pageItems<TItem>(items: readonly TItem[], options: PageOptions | undefined, label: string, cursorKey: (item: TItem, index: number) => readonly CursorKeyPart[]): WorkflowPage<TItem>;
5
+ export declare function makeRunCursorKey(run: {
7
6
  readonly createdAt: Temporal.Instant;
8
7
  readonly id: string;
9
8
  }): readonly [number, string];
10
- declare function makeWorkflowEventCursorKey(_event: unknown, index: number): readonly [number];
11
- declare function makeWorkflowStepAttemptCursorKey(attempt: {
9
+ export declare function makeStepAttemptCursorKey(attempt: {
12
10
  readonly startedAt: Temporal.Instant;
13
11
  readonly stepId: StepId;
14
12
  readonly attempt: number;
15
13
  }): readonly [number, StepId, number];
16
- declare function makeScheduleCursorKey(schedule: {
14
+ export declare function makeScheduleCursorKey(schedule: {
17
15
  readonly nextFireAt: Temporal.Instant;
18
16
  readonly createdAt: Temporal.Instant;
19
17
  readonly id: string;
20
18
  }): readonly [number, number, string];
21
- declare function makeStreamChunkCursorKey(chunk: {
22
- readonly index: number;
23
- }): readonly [number];
24
- //#endregion
25
- export { makeScheduleCursorKey, makeStreamChunkCursorKey, makeWorkflowEventCursorKey, makeWorkflowRunCursorKey, makeWorkflowStepAttemptCursorKey, pageItems };
19
+ //#endregion
@@ -1,6 +1,8 @@
1
1
  import { WorkflowOptionsError } from "./errors/base.mjs";
2
2
  import "./errors/mod.mjs";
3
- import { workflowCursorPayloadSchema } from "./types/pagination.mjs";
3
+ import { cursorPayloadSchema } from "./schema/pagination.mjs";
4
+ import { ss } from "@temelj/standard-schema";
5
+ import { isNumber } from "@temelj/value";
4
6
  import { decodeBase64UrlString, encodeBase64UrlString } from "@temelj/string";
5
7
  //#region src/pagination.ts
6
8
  const CURSOR_PREFIX = "wf-page:";
@@ -17,17 +19,14 @@ function pageItems(items, options, label, cursorKey) {
17
19
  const last = pageItems.at(-1);
18
20
  return {
19
21
  items: pageItems,
20
- ...hasMore && last !== void 0 ? { nextCursor: encodeCursor({ key: [...cursorKey(last, nextOffset - 1)] }) } : {},
22
+ nextCursor: hasMore && last !== void 0 ? encodeCursor({ key: [...cursorKey(last, nextOffset - 1)] }) : void 0,
21
23
  hasMore
22
24
  };
23
25
  }
24
- function makeWorkflowRunCursorKey(run) {
26
+ function makeRunCursorKey(run) {
25
27
  return [run.createdAt.epochMilliseconds, run.id];
26
28
  }
27
- function makeWorkflowEventCursorKey(_event, index) {
28
- return [index];
29
- }
30
- function makeWorkflowStepAttemptCursorKey(attempt) {
29
+ function makeStepAttemptCursorKey(attempt) {
31
30
  return [
32
31
  attempt.startedAt.epochMilliseconds,
33
32
  attempt.stepId,
@@ -41,9 +40,6 @@ function makeScheduleCursorKey(schedule) {
41
40
  schedule.id
42
41
  ];
43
42
  }
44
- function makeStreamChunkCursorKey(chunk) {
45
- return [chunk.index];
46
- }
47
43
  function encodeCursor(payload) {
48
44
  return `${CURSOR_PREFIX}${encodeBase64UrlString(JSON.stringify(payload))}`;
49
45
  }
@@ -51,9 +47,9 @@ function decodeCursor(value, label) {
51
47
  if (value === void 0) return;
52
48
  if (!value.startsWith(CURSOR_PREFIX)) WorkflowOptionsError.cursorInvalid(label);
53
49
  try {
54
- const parsed = workflowCursorPayloadSchema.safeParse(JSON.parse(decodeBase64UrlString(value.slice(8))));
50
+ const parsed = ss.safeParseSync(cursorPayloadSchema, JSON.parse(decodeBase64UrlString(value.slice(8))));
55
51
  if (!parsed.success) WorkflowOptionsError.cursorInvalid(label);
56
- return parsed.data.key;
52
+ return parsed.value.key;
57
53
  } catch (error) {
58
54
  if (!(error instanceof WorkflowOptionsError)) WorkflowOptionsError.cursorInvalid(label);
59
55
  throw error;
@@ -64,10 +60,10 @@ function compareCursorKeys(left, right) {
64
60
  for (let index = 0; index < length; index++) {
65
61
  const leftPart = left[index];
66
62
  const rightPart = right[index];
67
- const compared = leftPart === rightPart ? 0 : leftPart === void 0 ? -1 : rightPart === void 0 ? 1 : typeof leftPart === "number" && Number.isFinite(leftPart) && typeof rightPart === "number" && Number.isFinite(rightPart) ? leftPart - rightPart : String(leftPart).localeCompare(String(rightPart));
63
+ const compared = leftPart === rightPart ? 0 : leftPart === void 0 ? -1 : rightPart === void 0 ? 1 : isNumber(leftPart) && Number.isFinite(leftPart) && isNumber(rightPart) && Number.isFinite(rightPart) ? leftPart - rightPart : String(leftPart).localeCompare(String(rightPart));
68
64
  if (compared !== 0) return compared;
69
65
  }
70
66
  return 0;
71
67
  }
72
68
  //#endregion
73
- export { makeScheduleCursorKey, makeStreamChunkCursorKey, makeWorkflowEventCursorKey, makeWorkflowRunCursorKey, makeWorkflowStepAttemptCursorKey, pageItems };
69
+ export { makeRunCursorKey, makeScheduleCursorKey, makeStepAttemptCursorKey, pageItems };
@@ -1,11 +1,15 @@
1
1
  import { Registry as Registry$1, WorkflowDefinition, WorkflowHandler, WorkflowImplementation } from "./types/definition.mjs";
2
+ import "temporal-polyfill/global";
2
3
  //#region src/registry.d.ts
3
- /** In-memory workflow registry implementation. */
4
- declare class Registry implements Registry$1 {
4
+ /** A compiled function or implementation accepted by a heterogeneous registry. */
5
+ export type RegistryEntry = Function | (Omit<WorkflowImplementation, "handler"> & {
6
+ readonly handler: Function;
7
+ });
8
+ export declare class Registry implements Registry$1 {
5
9
  private readonly implementations;
10
+ constructor(entries?: readonly RegistryEntry[]);
6
11
  /** Defines and registers a workflow implementation. */
7
12
  readonly implementWorkflow: <TInput, TOutput, TRawInput = TInput>(definition: WorkflowDefinition<TInput, TOutput, TRawInput>, handler: WorkflowHandler<TInput, TOutput>) => WorkflowImplementation<TInput, TOutput, TRawInput>;
8
- /** Registers a workflow implementation. */
9
13
  readonly register: <TInput, TOutput, TRawInput = TInput>(implementation: WorkflowImplementation<TInput, TOutput, TRawInput>) => void;
10
14
  /** Returns the workflow implementation registered for a definition. */
11
15
  readonly get: <TInput, TOutput, TRawInput = TInput>(definition: WorkflowDefinition<TInput, TOutput, TRawInput>) => WorkflowImplementation<TInput, TOutput, TRawInput> | undefined;
@@ -16,5 +20,4 @@ declare class Registry implements Registry$1 {
16
20
  /** Returns all registered workflow implementations in registration order. */
17
21
  readonly entries: () => readonly WorkflowImplementation<unknown, unknown>[];
18
22
  }
19
- //#endregion
20
- export { Registry };
23
+ //#endregion
package/dist/registry.mjs CHANGED
@@ -1,9 +1,18 @@
1
1
  import { WorkflowDefinitionError } from "./errors/definition.mjs";
2
2
  import "./errors/mod.mjs";
3
+ import { getCompiledDefinition } from "./compiled-function.mjs";
4
+ import "temporal-polyfill/global";
5
+ import { isFunction } from "@temelj/value";
3
6
  //#region src/registry.ts
4
- /** In-memory workflow registry implementation. */
5
7
  var Registry = class {
6
8
  implementations = /* @__PURE__ */ new Map();
9
+ constructor(entries = []) {
10
+ for (const entry of entries) if (isFunction(entry)) {
11
+ const implementation = getCompiledDefinition(entry);
12
+ if (implementation === void 0) WorkflowDefinitionError.compiledMetadataMissing();
13
+ this.register(implementation);
14
+ } else this.register(entry);
15
+ }
7
16
  /** Defines and registers a workflow implementation. */
8
17
  implementWorkflow = (definition, handler) => {
9
18
  const implementation = {
@@ -11,24 +20,25 @@ var Registry = class {
11
20
  definition,
12
21
  config: definition.config,
13
22
  name: definition.name,
14
- ...definition.version === void 0 ? {} : { version: definition.version },
23
+ version: definition.version,
15
24
  handler
16
25
  };
17
26
  this.register(implementation);
18
27
  return implementation;
19
28
  };
20
- /** Registers a workflow implementation. */
21
29
  register = (implementation) => {
22
- const key = makeWorkflowImplementationKey(implementation.name, implementation.version);
23
- if (this.implementations.has(key)) WorkflowDefinitionError.implementationAlreadyRegistered(key);
30
+ const key = makeImplementationKey(implementation.name, implementation.version);
31
+ if (this.implementations.has(key)) throw new WorkflowDefinitionError(`Workflow implementation already registered: ${implementation.version === void 0 ? implementation.name : `${implementation.name}@${implementation.version}`}`);
24
32
  this.implementations.set(key, implementation);
25
33
  };
26
34
  /** Returns the workflow implementation registered for a definition. */
27
35
  get = (definition) => {
28
- return this.implementations.get(makeWorkflowImplementationKey(definition.name, definition.version));
36
+ const implementation = this.implementations.get(makeImplementationKey(definition.name, definition.version));
37
+ if (implementation?.definition !== definition) return;
38
+ return implementation;
29
39
  };
30
40
  /** Returns the workflow implementation registered for a name and optional version. */
31
- getByName = (name, version) => this.implementations.get(makeWorkflowImplementationKey(name, version));
41
+ getByName = (name, version) => this.implementations.get(makeImplementationKey(name, version));
32
42
  /** Returns the last registered workflow implementation for a name. */
33
43
  latest = (name) => {
34
44
  const implementations = this.entries();
@@ -40,9 +50,8 @@ var Registry = class {
40
50
  /** Returns all registered workflow implementations in registration order. */
41
51
  entries = () => [...this.implementations.values()];
42
52
  };
43
- /** Builds the internal registry key for a workflow implementation. */
44
- function makeWorkflowImplementationKey(name, version) {
45
- return version === void 0 ? name : `${name}@${version}`;
53
+ function makeImplementationKey(name, version) {
54
+ return JSON.stringify([name, version ?? null]);
46
55
  }
47
56
  //#endregion
48
57
  export { Registry };
@@ -1,7 +1,9 @@
1
- import { WorkflowPluginOptions } from "./types/vite.mjs";
2
- import { workflowPlugin } from "./vite/plugin.mjs";
1
+ import { PluginOptions } from "./types/compiler.mjs";
2
+ import { workflowPlugin } from "./compiler/plugin.mjs";
3
+ import "./esbuild.mjs";
4
+ import "temporal-polyfill/global";
3
5
  //#region src/rolldown.d.ts
4
6
  /** Creates the Rolldown plugin that compiles workflow and step directives. */
5
- declare const workflow: (options?: WorkflowPluginOptions | undefined) => import("rolldown").Plugin<any>;
7
+ export declare const workflow: (options?: PluginOptions | undefined) => import("rolldown").Plugin<any>;
6
8
  //#endregion
7
- export { type WorkflowPluginOptions, workflow, workflowPlugin };
9
+ export { type PluginOptions, workflowPlugin };
package/dist/rolldown.mjs CHANGED
@@ -1,4 +1,5 @@
1
- import { workflowPlugin } from "./vite/plugin.mjs";
1
+ import { workflowPlugin } from "./compiler/plugin.mjs";
2
+ import "temporal-polyfill/global";
2
3
  //#region src/rolldown.ts
3
4
  /** Creates the Rolldown plugin that compiles workflow and step directives. */
4
5
  const workflow = workflowPlugin.rolldown;
package/dist/rollup.d.mts CHANGED
@@ -1,7 +1,9 @@
1
- import { WorkflowPluginOptions } from "./types/vite.mjs";
2
- import { workflowPlugin } from "./vite/plugin.mjs";
1
+ import { PluginOptions } from "./types/compiler.mjs";
2
+ import { workflowPlugin } from "./compiler/plugin.mjs";
3
+ import "./esbuild.mjs";
4
+ import "temporal-polyfill/global";
3
5
  //#region src/rollup.d.ts
4
6
  /** Creates the Rollup plugin that compiles workflow and step directives. */
5
- declare const workflow: (options?: WorkflowPluginOptions | undefined) => import("rollup").Plugin<any>;
7
+ export declare const workflow: (options?: PluginOptions | undefined) => import("rollup").Plugin<any>;
6
8
  //#endregion
7
- export { type WorkflowPluginOptions, workflow, workflowPlugin };
9
+ export { type PluginOptions, workflowPlugin };
package/dist/rollup.mjs CHANGED
@@ -1,4 +1,5 @@
1
- import { workflowPlugin } from "./vite/plugin.mjs";
1
+ import { workflowPlugin } from "./compiler/plugin.mjs";
2
+ import "temporal-polyfill/global";
2
3
  //#region src/rollup.ts
3
4
  /** Creates the Rollup plugin that compiles workflow and step directives. */
4
5
  const workflow = workflowPlugin.rollup;
package/dist/rspack.d.mts CHANGED
@@ -1,7 +1,9 @@
1
- import { WorkflowPluginOptions } from "./types/vite.mjs";
2
- import { workflowPlugin } from "./vite/plugin.mjs";
1
+ import { PluginOptions } from "./types/compiler.mjs";
2
+ import { workflowPlugin } from "./compiler/plugin.mjs";
3
+ import "./esbuild.mjs";
4
+ import "temporal-polyfill/global";
3
5
  //#region src/rspack.d.ts
4
6
  /** Creates the Rspack plugin that compiles workflow and step directives. */
5
- declare const workflow: (options?: WorkflowPluginOptions | undefined) => import("unplugin").RspackPluginInstance;
7
+ export declare const workflow: (options?: PluginOptions | undefined) => import("unplugin").RspackPluginInstance;
6
8
  //#endregion
7
- export { type WorkflowPluginOptions, workflow, workflowPlugin };
9
+ export { type PluginOptions, workflowPlugin };
package/dist/rspack.mjs CHANGED
@@ -1,4 +1,5 @@
1
- import { workflowPlugin } from "./vite/plugin.mjs";
1
+ import { workflowPlugin } from "./compiler/plugin.mjs";
2
+ import "temporal-polyfill/global";
2
3
  //#region src/rspack.ts
3
4
  /** Creates the Rspack plugin that compiles workflow and step directives. */
4
5
  const workflow = workflowPlugin.rspack;
@@ -0,0 +1,29 @@
1
+ import { RunRecord, RunStatus, TerminalRunStatus } from "./types/run.mjs";
2
+ import { EventRecord } from "./types/events.mjs";
3
+ //#region src/run-status.d.ts
4
+ export declare function isRunStatus(status: string): status is RunStatus;
5
+ export declare function isActiveRunStatus(status: RunStatus): boolean;
6
+ export declare function isScheduledRunStatus(status: RunStatus): boolean;
7
+ /** Returns whether a workflow run status is terminal for its current execution attempt. */
8
+ export declare function isTerminalRunStatus(status: RunStatus): status is TerminalRunStatus;
9
+ /** Returns whether an event is the terminal lifecycle event matching a run's current status. */
10
+ export declare function isTerminalEventForRun(run: RunRecord, event: EventRecord): boolean;
11
+ export declare function nextRunAttempt(value: number | undefined): number;
12
+ /** Run fields cleared together when a run no longer waits on a retry, a lease, or a result. */
13
+ export declare const CLEARED_RETRY: {
14
+ readonly retryAt: undefined;
15
+ readonly retryReason: undefined;
16
+ readonly retryAttempt: undefined;
17
+ readonly retryStepId: undefined;
18
+ readonly retryStepName: undefined;
19
+ };
20
+ export declare const CLEARED_LEASE: {
21
+ readonly workerId: undefined;
22
+ readonly leaseExpiresAt: undefined;
23
+ };
24
+ export declare const UNFINISHED: {
25
+ readonly error: undefined;
26
+ readonly output: undefined;
27
+ readonly finishedAt: undefined;
28
+ };
29
+ //#endregion
@@ -0,0 +1,42 @@
1
+ import { isNonNegativeSafeInteger } from "./values.mjs";
2
+ //#region src/run-status.ts
3
+ function isRunStatus(status) {
4
+ return status === "pending" || status === "running" || status === "waiting" || status === "completed" || status === "failed" || status === "canceled";
5
+ }
6
+ function isActiveRunStatus(status) {
7
+ return status === "pending" || status === "running" || status === "waiting";
8
+ }
9
+ function isScheduledRunStatus(status) {
10
+ return status === "pending" || status === "waiting";
11
+ }
12
+ /** Returns whether a workflow run status is terminal for its current execution attempt. */
13
+ function isTerminalRunStatus(status) {
14
+ return status === "completed" || status === "failed" || status === "canceled";
15
+ }
16
+ /** Returns whether an event is the terminal lifecycle event matching a run's current status. */
17
+ function isTerminalEventForRun(run, event) {
18
+ return run.status === "completed" && event.kind === "workflow_completed" || run.status === "failed" && event.kind === "workflow_failed";
19
+ }
20
+ function nextRunAttempt(value) {
21
+ if (value === void 0 || !isNonNegativeSafeInteger(value) || value >= Number.MAX_SAFE_INTEGER) return 1;
22
+ return value + 1;
23
+ }
24
+ /** Run fields cleared together when a run no longer waits on a retry, a lease, or a result. */
25
+ const CLEARED_RETRY = {
26
+ retryAt: void 0,
27
+ retryReason: void 0,
28
+ retryAttempt: void 0,
29
+ retryStepId: void 0,
30
+ retryStepName: void 0
31
+ };
32
+ const CLEARED_LEASE = {
33
+ workerId: void 0,
34
+ leaseExpiresAt: void 0
35
+ };
36
+ const UNFINISHED = {
37
+ error: void 0,
38
+ output: void 0,
39
+ finishedAt: void 0
40
+ };
41
+ //#endregion
42
+ export { CLEARED_LEASE, CLEARED_RETRY, UNFINISHED, isActiveRunStatus, isRunStatus, isScheduledRunStatus, isTerminalEventForRun, isTerminalRunStatus, nextRunAttempt };
@@ -0,0 +1,22 @@
1
+ import { Schema, SchemaInput, SchemaOutput } from "@temelj/standard-schema";
2
+ import "temporal-polyfill/global";
3
+ //#region src/schema/common.d.ts
4
+ export declare const temporalInstantSchema: Schema<unknown, Temporal.Instant>;
5
+ export declare const temporalDurationSchema: Schema<unknown, Temporal.Duration>;
6
+ export declare const temporalNonNegativeDurationSchema: Schema<unknown, Temporal.Duration>;
7
+ export declare const nonBlankStringSchema: Schema<unknown, string>;
8
+ export declare const nonBlankStringListSchema: Schema<unknown, string[]>;
9
+ export declare const positiveSafeIntegerSchema: Schema<unknown, number>;
10
+ export declare const nonNegativeSafeIntegerSchema: Schema<unknown, number>;
11
+ export declare const idSchema: Schema<unknown, string>;
12
+ export declare const telemetryContextSchema: Schema<unknown, import("@temelj/standard-schema").ObjectOutput<{
13
+ traceparent: Schema<unknown, string | undefined>;
14
+ tracestate: Schema<unknown, string | undefined>;
15
+ }>>;
16
+ /** A record whose keys must also match `keySchema`. */
17
+ export declare function keyedRecord<TValue extends Schema>(keySchema: Schema<unknown, string>, valueSchema: TValue): Schema<unknown, Record<string, SchemaOutput<TValue>>>;
18
+ /** Picks the schema for a value by its `key` field, so errors come from that schema. */
19
+ export declare function discriminated<const TSchemas extends Record<string, Schema>>(key: string, schemas: TSchemas, message: string): Schema<unknown, SchemaOutput<TSchemas[keyof TSchemas]>>;
20
+ /** Parses a value, throwing an error whose message names every issue. */
21
+ export declare function parse<TSchema extends Schema>(schema: TSchema, value: SchemaInput<TSchema>): SchemaOutput<TSchema>;
22
+ //#endregion
@@ -0,0 +1,54 @@
1
+ import { durationTotal } from "../temporal.mjs";
2
+ import { StandardSchemaValidationError, ss } from "@temelj/standard-schema";
3
+ import "temporal-polyfill/global";
4
+ import { isObject, isPlainObject, isString } from "@temelj/value";
5
+ //#region src/schema/common.ts
6
+ const temporalInstantSchema = ss.instanceOf(Temporal.Instant, "Expected a Temporal.Instant");
7
+ const temporalDurationSchema = ss.instanceOf(Temporal.Duration, "Expected a Temporal.Duration");
8
+ const temporalNonNegativeDurationSchema = ss.refine(temporalDurationSchema, (value) => durationTotal(value) >= 0, "Expected a non-negative duration");
9
+ const nonBlankStringSchema = ss.refine(ss.string(), (value) => value.trim().length > 0, "Expected a non-blank string");
10
+ const nonBlankStringListSchema = ss.array(nonBlankStringSchema);
11
+ const positiveSafeIntegerSchema = ss.positiveSafeInteger();
12
+ const nonNegativeSafeIntegerSchema = ss.nonNegativeSafeInteger();
13
+ const idSchema = ss.refine(ss.string("Expected an ID"), (value) => value.trim().length > 0, "Expected an ID");
14
+ const telemetryContextSchema = ss.object({
15
+ traceparent: ss.optional(nonBlankStringSchema),
16
+ tracestate: ss.optional(nonBlankStringSchema)
17
+ });
18
+ /** A record whose keys must also match `keySchema`. */
19
+ function keyedRecord(keySchema, valueSchema) {
20
+ const recordSchema = ss.record(valueSchema);
21
+ return ss.schema((value) => {
22
+ const record = ss.safeParseSync(recordSchema, value);
23
+ if (!record.success) return { issues: record.issues };
24
+ for (const key of Object.keys(record.value)) {
25
+ const result = ss.safeParseSync(keySchema, key);
26
+ if (!result.success) return ss.failure(result.issues[0]?.message ?? "Invalid key", [key]);
27
+ }
28
+ return ss.success(record.value);
29
+ });
30
+ }
31
+ /** Picks the schema for a value by its `key` field, so errors come from that schema. */
32
+ function discriminated(key, schemas, message) {
33
+ return ss.schema((value) => {
34
+ const tag = isPlainObject(value) ? new Map(Object.entries(value)).get(key) : void 0;
35
+ const schema = isString(tag) && Object.hasOwn(schemas, tag) ? schemas[tag] : void 0;
36
+ if (schema === void 0) return ss.failure(message, [key]);
37
+ const result = ss.safeParseSync(schema, value);
38
+ return result.success ? ss.success(result.value) : { issues: result.issues };
39
+ });
40
+ }
41
+ /** Parses a value, throwing an error whose message names every issue. */
42
+ function parse(schema, value) {
43
+ const result = ss.safeParseSync(schema, value);
44
+ if (result.success) return result.value;
45
+ StandardSchemaValidationError.failed(issuesMessage(result.issues), result.issues);
46
+ }
47
+ function issuesMessage(issues) {
48
+ return issues.map((issue) => {
49
+ const path = issue.path?.map((segment) => isObject(segment) ? String(segment.key) : String(segment)).join(".");
50
+ return path === void 0 || path === "" ? issue.message : `${path}: ${issue.message}`;
51
+ }).join("; ");
52
+ }
53
+ //#endregion
54
+ export { discriminated, idSchema, keyedRecord, nonBlankStringListSchema, nonBlankStringSchema, nonNegativeSafeIntegerSchema, parse, positiveSafeIntegerSchema, telemetryContextSchema, temporalDurationSchema, temporalInstantSchema, temporalNonNegativeDurationSchema };
@@ -0,0 +1,17 @@
1
+ import { WorkflowErrorCode } from "../errors/codes.mjs";
2
+ import { RunStatus, TerminalRunStatus } from "../types/run.mjs";
3
+ import { Schema } from "@temelj/standard-schema";
4
+ //#region src/schema/error.d.ts
5
+ export declare const errorCodeSchema: Schema<unknown, WorkflowErrorCode>;
6
+ export declare const errorDetailsSchema: Schema<unknown, Record<string, string | number | boolean | null | undefined>>;
7
+ export declare const errorRecordSchema: Schema<unknown, import("@temelj/standard-schema").ObjectOutput<{
8
+ code: Schema<unknown, WorkflowErrorCode | undefined>;
9
+ name: Schema<unknown, string>;
10
+ message: Schema<unknown, string>;
11
+ stack: Schema<unknown, string | undefined>;
12
+ details: Schema<unknown, Record<string, string | number | boolean | null | undefined> | undefined>;
13
+ }>>;
14
+ export declare const optionalErrorStringSchema: Schema<unknown, string | undefined>;
15
+ export declare const errorRunStatusSchema: Schema<unknown, RunStatus>;
16
+ export declare const terminalErrorRunStatusSchema: Schema<unknown, TerminalRunStatus>;
17
+ //#endregion
@@ -0,0 +1,39 @@
1
+ import { nonBlankStringSchema } from "./common.mjs";
2
+ import { WorkflowErrorCode } from "../errors/codes.mjs";
3
+ import { ss } from "@temelj/standard-schema";
4
+ import { isPlainObject } from "@temelj/value";
5
+ //#region src/schema/error.ts
6
+ const errorCodeSchema = ss.picklist(Object.values(WorkflowErrorCode));
7
+ const runStatuses = [
8
+ "pending",
9
+ "running",
10
+ "waiting",
11
+ "completed",
12
+ "failed",
13
+ "canceled"
14
+ ];
15
+ const terminalRunStatuses = [
16
+ "completed",
17
+ "failed",
18
+ "canceled"
19
+ ];
20
+ const errorDetailSchema = ss.union([
21
+ ss.string(),
22
+ ss.number(),
23
+ ss.boolean(),
24
+ ss.literal(null),
25
+ ss.literal(void 0)
26
+ ]);
27
+ const errorDetailsSchema = ss.refine(ss.pipe(ss.schema((value) => isPlainObject(value) ? ss.success(value) : ss.failure("Expected an object")), ss.record(errorDetailSchema)), (details) => Object.keys(details).every((key) => key.trim().length > 0), "Expected non-blank detail keys");
28
+ const errorRecordSchema = ss.object({
29
+ code: ss.optional(errorCodeSchema),
30
+ name: nonBlankStringSchema,
31
+ message: nonBlankStringSchema,
32
+ stack: ss.optional(nonBlankStringSchema),
33
+ details: ss.optional(errorDetailsSchema)
34
+ });
35
+ const optionalErrorStringSchema = ss.optional(nonBlankStringSchema);
36
+ const errorRunStatusSchema = ss.picklist(runStatuses, "Expected a workflow run status");
37
+ const terminalErrorRunStatusSchema = ss.picklist(terminalRunStatuses, "Expected a terminal workflow run status");
38
+ //#endregion
39
+ export { errorCodeSchema, errorDetailsSchema, errorRecordSchema, errorRunStatusSchema, optionalErrorStringSchema, terminalErrorRunStatusSchema };