@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,3 +1,4 @@
1
+ import { isPlainObject } from "@temelj/value";
1
2
  //#region src/collection.ts
2
3
  /** Returns whether a value matches one expected value or any value in an expected list. */
3
4
  function matchesOptionalValue(value, expected) {
@@ -13,21 +14,16 @@ function uniqueBy(items, key) {
13
14
  return true;
14
15
  });
15
16
  }
16
- /** Returns a copy of an object without properties whose value is undefined. */
17
+ /** Copies the defined own enumerable fields of a plain record. */
17
18
  function omitUndefined(value) {
18
- return Object.fromEntries(Object.entries(value).filter(([, item]) => item !== void 0));
19
+ if (!isPlainObject(value)) throw new TypeError("Expected a plain record");
20
+ const result = { ...value };
21
+ for (const key of Reflect.ownKeys(result)) if (Object.getOwnPropertyDescriptor(result, key)?.value === void 0) Reflect.deleteProperty(result, key);
22
+ return result;
19
23
  }
20
- /** Returns an object containing one property only when the value is defined. */
21
- function optionalProperty(key, value) {
22
- return value === void 0 ? {} : { [key]: value };
23
- }
24
- /** Returns sorted string values from a set. */
25
- function sortedStringSet(values) {
26
- return [...values].sort();
27
- }
28
- /** Returns an object containing a sorted string set only when the set is not empty. */
29
- function optionalSortedStringSetProperty(key, values) {
30
- return values.size === 0 ? {} : { [key]: sortedStringSet(values) };
24
+ function limitItems(items, limit) {
25
+ if (limit === void 0) return items;
26
+ return items.slice(0, limit);
31
27
  }
32
28
  //#endregion
33
- export { matchesOptionalValue, omitUndefined, optionalProperty, optionalSortedStringSetProperty, sortedStringSet, uniqueBy };
29
+ export { limitItems, matchesOptionalValue, omitUndefined, uniqueBy };
@@ -1,27 +1,22 @@
1
1
  import { RegistryLike, WorkflowImplementation } from "./types/definition.mjs";
2
- import { WorkflowStepApi, WorkflowStepDefinition } from "./types/step.mjs";
3
- import { CompiledWorkflowFunction, WorkflowClient, WorkflowRunHandle } from "./types/client.mjs";
2
+ import { StepApi, StepDefinition } from "./types/step.mjs";
3
+ import { CompiledWorkflowFunction } from "./types/client.mjs";
4
4
  //#region src/compiled-function.d.ts
5
- type AnyCompiledWorkflowFunction = (...args: never[]) => unknown;
6
- type AnyCompiledWorkflowImplementation = WorkflowImplementation<readonly unknown[], unknown, readonly unknown[]>;
7
- type AnyCompiledWorkflowStepDefinition = WorkflowStepDefinition<readonly unknown[], unknown>;
5
+ export declare const COMPILED_WORKFLOW: unique symbol;
6
+ export declare const COMPILED_STEP: unique symbol;
7
+ type AnyCompiledImplementation = WorkflowImplementation<readonly unknown[], unknown, readonly unknown[]>;
8
8
  /** Attaches compiled workflow metadata to a directive-authored function. */
9
- declare function attachWorkflowDefinition<TArgs extends readonly unknown[], TOutput>(fn: CompiledWorkflowFunction<TArgs, TOutput>, definition: WorkflowImplementation<TArgs, Awaited<TOutput>, TArgs>): CompiledWorkflowFunction<TArgs, TOutput>;
9
+ export declare function attachWorkflowDefinition<TArgs extends readonly unknown[], TOutput>(fn: CompiledWorkflowFunction<TArgs, TOutput>, definition: WorkflowImplementation<NoInfer<TArgs>, Awaited<NoInfer<TOutput>>, NoInfer<TArgs>>): CompiledWorkflowFunction<TArgs, TOutput>;
10
10
  /** Attaches compiled step metadata to a directive-authored function. */
11
- declare function attachWorkflowStepDefinition<TArgs extends readonly unknown[], TOutput>(fn: CompiledWorkflowFunction<TArgs, TOutput>, definition: WorkflowStepDefinition<TArgs, Awaited<TOutput>>): CompiledWorkflowFunction<TArgs, TOutput>;
11
+ export declare function attachWorkflowStepDefinition<TArgs extends readonly unknown[], TOutput>(fn: CompiledWorkflowFunction<TArgs, TOutput>, definition: StepDefinition<NoInfer<TArgs>, Awaited<NoInfer<TOutput>>>): CompiledWorkflowFunction<TArgs, TOutput>;
12
12
  /** Reads workflow metadata previously attached to a compiled workflow function. */
13
- declare function getWorkflowFunctionDefinition<TArgs extends readonly unknown[], TOutput>(fn: CompiledWorkflowFunction<TArgs, TOutput>): WorkflowImplementation<TArgs, Awaited<TOutput>, TArgs> | undefined;
13
+ export declare function getWorkflowFunctionDefinition<TArgs extends readonly unknown[], TOutput>(fn: CompiledWorkflowFunction<TArgs, TOutput>): WorkflowImplementation<TArgs, Awaited<TOutput>, TArgs> | undefined;
14
14
  /** Reads step metadata previously attached to a compiled step function. */
15
- declare function getWorkflowStepFunctionDefinition<TArgs extends readonly unknown[], TOutput>(fn: CompiledWorkflowFunction<TArgs, TOutput>): WorkflowStepDefinition<TArgs, Awaited<TOutput>> | undefined;
16
- /** Reads erased workflow metadata from a function after runtime validation. */
17
- declare function getCompiledWorkflowDefinition(fn: AnyCompiledWorkflowFunction): AnyCompiledWorkflowImplementation | undefined;
18
- /** Reads erased step metadata from a function after runtime validation. */
19
- declare function getCompiledWorkflowStepDefinition(fn: AnyCompiledWorkflowFunction): AnyCompiledWorkflowStepDefinition | undefined;
20
- /** Registers compiled workflow functions with a workflow registry. */
21
- declare function registerWorkflowFunctions(registry: RegistryLike, workflows: readonly AnyCompiledWorkflowFunction[]): void;
22
- /** Starts a compiled workflow function through a workflow client. */
23
- declare function runWorkflowFunction<TArgs extends readonly unknown[], TOutput>(client: WorkflowClient, workflow: CompiledWorkflowFunction<TArgs, TOutput>, ...args: TArgs): Promise<WorkflowRunHandle<Awaited<TOutput>>>;
15
+ export declare function getWorkflowStepFunctionDefinition<TArgs extends readonly unknown[], TOutput>(fn: CompiledWorkflowFunction<TArgs, TOutput>): StepDefinition<TArgs, Awaited<TOutput>> | undefined;
16
+ /** Reads compiler-owned metadata for heterogeneous workflow registration. */
17
+ export declare function getCompiledDefinition(fn: Function): AnyCompiledImplementation | undefined;
18
+ export declare function registerWorkflowFunctions(registry: RegistryLike, workflows: readonly Function[]): void;
24
19
  /** Calls a compiled step function through the durable step API when metadata is present. */
25
- declare function callWorkflowStepFunction<TArgs extends readonly unknown[], TOutput>(step: WorkflowStepApi, fn: CompiledWorkflowFunction<TArgs, TOutput>, ...args: TArgs): Promise<Awaited<TOutput>>;
20
+ export declare function callWorkflowStepFunction<TArgs extends readonly unknown[], TOutput>(step: StepApi, fn: CompiledWorkflowFunction<TArgs, TOutput>, ...args: TArgs): Promise<Awaited<TOutput>>;
26
21
  //#endregion
27
- export { attachWorkflowDefinition, attachWorkflowStepDefinition, callWorkflowStepFunction, getCompiledWorkflowDefinition, getCompiledWorkflowStepDefinition, getWorkflowFunctionDefinition, getWorkflowStepFunctionDefinition, registerWorkflowFunctions, runWorkflowFunction };
22
+ export {};
@@ -1,54 +1,42 @@
1
1
  import { WorkflowDefinitionError } from "./errors/definition.mjs";
2
2
  import "./errors/mod.mjs";
3
3
  //#region src/compiled-function.ts
4
- const workflowDefinitions = /* @__PURE__ */ new WeakMap();
5
- const stepDefinitions = /* @__PURE__ */ new WeakMap();
4
+ const COMPILED_WORKFLOW = Symbol("temelj.workflow.definition");
5
+ const COMPILED_STEP = Symbol("temelj.workflow.step");
6
6
  /** Attaches compiled workflow metadata to a directive-authored function. */
7
7
  function attachWorkflowDefinition(fn, definition) {
8
- workflowDefinitions.set(fn, definition);
8
+ Object.defineProperty(fn, COMPILED_WORKFLOW, { value: definition });
9
9
  return fn;
10
10
  }
11
11
  /** Attaches compiled step metadata to a directive-authored function. */
12
12
  function attachWorkflowStepDefinition(fn, definition) {
13
- stepDefinitions.set(fn, definition);
13
+ Object.defineProperty(fn, COMPILED_STEP, { value: definition });
14
14
  return fn;
15
15
  }
16
16
  /** Reads workflow metadata previously attached to a compiled workflow function. */
17
17
  function getWorkflowFunctionDefinition(fn) {
18
- return getCompiledWorkflowDefinition(fn);
18
+ return fn[COMPILED_WORKFLOW];
19
19
  }
20
20
  /** Reads step metadata previously attached to a compiled step function. */
21
21
  function getWorkflowStepFunctionDefinition(fn) {
22
- return getCompiledWorkflowStepDefinition(fn);
22
+ return fn[COMPILED_STEP];
23
23
  }
24
- /** Reads erased workflow metadata from a function after runtime validation. */
25
- function getCompiledWorkflowDefinition(fn) {
26
- return workflowDefinitions.get(fn);
24
+ /** Reads compiler-owned metadata for heterogeneous workflow registration. */
25
+ function getCompiledDefinition(fn) {
26
+ return Object.getOwnPropertyDescriptor(fn, COMPILED_WORKFLOW)?.value;
27
27
  }
28
- /** Reads erased step metadata from a function after runtime validation. */
29
- function getCompiledWorkflowStepDefinition(fn) {
30
- return stepDefinitions.get(fn);
31
- }
32
- /** Registers compiled workflow functions with a workflow registry. */
33
28
  function registerWorkflowFunctions(registry, workflows) {
34
29
  for (const workflow of workflows) {
35
- const definition = getCompiledWorkflowDefinition(workflow);
30
+ const definition = getCompiledDefinition(workflow);
36
31
  if (definition === void 0) WorkflowDefinitionError.compiledMetadataMissing();
37
32
  registry.register(definition);
38
33
  }
39
34
  }
40
- /** Starts a compiled workflow function through a workflow client. */
41
- async function runWorkflowFunction(client, workflow, ...args) {
42
- const definition = getWorkflowFunctionDefinition(workflow);
43
- if (definition === void 0) WorkflowDefinitionError.compiledMetadataMissing();
44
- client.register(definition);
45
- return await client.runs.start(definition.definition, args);
46
- }
47
35
  /** Calls a compiled step function through the durable step API when metadata is present. */
48
36
  async function callWorkflowStepFunction(step, fn, ...args) {
49
37
  const definition = getWorkflowStepFunctionDefinition(fn);
50
38
  if (definition === void 0) return await fn(...args);
51
- return await step.task.call(definition, ...args);
39
+ return await step.call(definition, ...args);
52
40
  }
53
41
  //#endregion
54
- export { attachWorkflowDefinition, attachWorkflowStepDefinition, callWorkflowStepFunction, getCompiledWorkflowDefinition, getCompiledWorkflowStepDefinition, getWorkflowFunctionDefinition, getWorkflowStepFunctionDefinition, registerWorkflowFunctions, runWorkflowFunction };
42
+ export { COMPILED_STEP, COMPILED_WORKFLOW, attachWorkflowDefinition, attachWorkflowStepDefinition, callWorkflowStepFunction, getCompiledDefinition, getWorkflowFunctionDefinition, getWorkflowStepFunctionDefinition, registerWorkflowFunctions };
@@ -0,0 +1,4 @@
1
+ import { attachWorkflowDefinition, attachWorkflowStepDefinition, callWorkflowStepFunction } from "./compiled-function.mjs";
2
+ import { implementWorkflow } from "./definition.mjs";
3
+ import { defineWorkflowStep } from "./step-definition.mjs";
4
+ export { attachWorkflowDefinition, attachWorkflowStepDefinition, callWorkflowStepFunction, defineWorkflowStep, implementWorkflow };
@@ -0,0 +1,4 @@
1
+ import { attachWorkflowDefinition, attachWorkflowStepDefinition, callWorkflowStepFunction } from "./compiled-function.mjs";
2
+ import { implementWorkflow } from "./definition.mjs";
3
+ import { defineWorkflowStep } from "./step-definition.mjs";
4
+ export { attachWorkflowDefinition, attachWorkflowStepDefinition, callWorkflowStepFunction, defineWorkflowStep, implementWorkflow };
@@ -0,0 +1,26 @@
1
+ import { BindingIdentifier, CallExpression, Node, Program } from "oxc-parser";
2
+ //#region src/compiler/ast.d.ts
3
+ type AstNode = Node | Program;
4
+ export interface SourceFile {
5
+ readonly fileName: string;
6
+ readonly text: string;
7
+ readonly program: Program;
8
+ }
9
+ interface WorkflowSpan {
10
+ readonly start: number;
11
+ readonly end: number;
12
+ }
13
+ export declare function parseSource(fileName: string, text: string): SourceFile;
14
+ export declare function spanText(sourceFile: SourceFile, node: WorkflowSpan): string;
15
+ export declare function leadingTriviaStart(text: string, start: number): number;
16
+ interface SourcePosition {
17
+ readonly line: number;
18
+ readonly column: number;
19
+ }
20
+ export declare function lineAndColumnOfPosition(text: string, position: number): SourcePosition;
21
+ export declare function visitNode(node: AstNode, visitor: (node: AstNode) => void): void;
22
+ export declare function workflowNodeChildren(node: AstNode): readonly AstNode[];
23
+ export declare function isIdentifier(node: Node): node is BindingIdentifier;
24
+ export declare function isCallExpression(node: Node): node is CallExpression;
25
+ //#endregion
26
+ export {};
@@ -1,6 +1,6 @@
1
1
  import { workflowSourceKindForId } from "./source.mjs";
2
- import { parseSync } from "oxc-parser";
3
- //#region src/vite/ast.ts
2
+ import { parseSync, visitorKeys } from "oxc-parser";
3
+ //#region src/compiler/ast.ts
4
4
  const PARSER_OPTIONS_BY_SOURCE_KIND = {
5
5
  js: {
6
6
  lang: "js",
@@ -19,7 +19,7 @@ const PARSER_OPTIONS_BY_SOURCE_KIND = {
19
19
  astType: "ts"
20
20
  }
21
21
  };
22
- function parseWorkflowSource(fileName, text) {
22
+ function parseSource(fileName, text) {
23
23
  const result = parseSync(fileName, text, {
24
24
  ...PARSER_OPTIONS_BY_SOURCE_KIND[workflowSourceKindForId(fileName)],
25
25
  sourceType: "module"
@@ -46,28 +46,36 @@ function lineAndColumnOfPosition(text, position) {
46
46
  column: lines.at(-1).length + 1
47
47
  };
48
48
  }
49
- function visitWorkflowNode(node, visitor) {
49
+ function visitNode(node, visitor) {
50
50
  for (const child of workflowNodeChildren(node)) {
51
51
  visitor(child);
52
- visitWorkflowNode(child, visitor);
52
+ visitNode(child, visitor);
53
53
  }
54
54
  }
55
55
  function workflowNodeChildren(node) {
56
56
  const children = [];
57
+ const keys = visitorKeys[node.type] ?? [];
57
58
  for (const [key, value] of Object.entries(node)) {
58
- if (key === "parent" || key === "decorators" || key === "typeAnnotation" || key === "typeArguments" || key === "typeParameters" || key === "returnType") continue;
59
- if (isWorkflowAstNode(value)) {
60
- children.push(value);
61
- continue;
62
- }
63
- if (Array.isArray(value)) {
64
- for (const item of value) if (isWorkflowAstNode(item)) children.push(item);
65
- }
59
+ if (!keys.includes(key) || NON_RUNTIME_AST_KEYS.has(key)) continue;
60
+ const child = value;
61
+ if (Array.isArray(child)) {
62
+ for (const item of child) if (item !== null) children.push(item);
63
+ } else if (child !== null && child !== void 0) children.push(child);
66
64
  }
67
65
  return children;
68
66
  }
69
- function isWorkflowAstNode(value) {
70
- return typeof value === "object" && value !== null && typeof value.type === "string" && typeof value.start === "number" && typeof value.end === "number";
67
+ const NON_RUNTIME_AST_KEYS = /* @__PURE__ */ new Set([
68
+ "decorators",
69
+ "typeAnnotation",
70
+ "typeArguments",
71
+ "typeParameters",
72
+ "returnType"
73
+ ]);
74
+ function isIdentifier(node) {
75
+ return node.type === "Identifier";
76
+ }
77
+ function isCallExpression(node) {
78
+ return node.type === "CallExpression";
71
79
  }
72
80
  //#endregion
73
- export { leadingTriviaStart, lineAndColumnOfPosition, parseWorkflowSource, spanText, visitWorkflowNode, workflowNodeChildren };
81
+ export { isCallExpression, isIdentifier, leadingTriviaStart, lineAndColumnOfPosition, parseSource, spanText, visitNode, workflowNodeChildren };
@@ -1,7 +1,6 @@
1
- //#region src/vite/error.d.ts
2
- /** Error thrown for transform failures. */
3
- declare class WorkflowTransformError extends Error {
4
- constructor(message: string, context?: Function);
1
+ //#region src/compiler/error.d.ts
2
+ export declare class WorkflowTransformError extends Error {
3
+ constructor(message: string);
5
4
  static directiveParametersMustBeIdentifiers(this: void): never;
6
5
  static metadataMissing(this: void, name: string): never;
7
6
  static directiveFunctionMustBeNamed(this: void): never;
@@ -15,5 +14,4 @@ declare class WorkflowTransformError extends Error {
15
14
  static invalidSourceReadRange(this: void, start: number, end: number): never;
16
15
  static overlappingSourceReplacementRanges(this: void, currentStart: number, currentEnd: number, previousStart: number, previousEnd: number): never;
17
16
  }
18
- //#endregion
19
- export { WorkflowTransformError };
17
+ //#endregion
@@ -1,46 +1,44 @@
1
- //#region src/vite/error.ts
2
- /** Error thrown for transform failures. */
1
+ //#region src/compiler/error.ts
3
2
  var WorkflowTransformError = class WorkflowTransformError extends Error {
4
- constructor(message, context) {
3
+ constructor(message) {
5
4
  super(message);
6
5
  this.name = "WorkflowTransformError";
7
- if (Error.captureStackTrace !== void 0) Error.captureStackTrace(this, context ?? this.constructor);
8
6
  }
9
7
  static directiveParametersMustBeIdentifiers() {
10
- throw new WorkflowTransformError("Workflow directive parameters must be identifiers", WorkflowTransformError.directiveParametersMustBeIdentifiers);
8
+ throw new WorkflowTransformError("Workflow directive parameters must be identifiers");
11
9
  }
12
10
  static metadataMissing(name) {
13
- throw new WorkflowTransformError(`Workflow metadata was not collected for ${name}`, WorkflowTransformError.metadataMissing);
11
+ throw new WorkflowTransformError(`Workflow metadata was not collected for ${name}`);
14
12
  }
15
13
  static directiveFunctionMustBeNamed() {
16
- throw new WorkflowTransformError("Directive function declarations must be named", WorkflowTransformError.directiveFunctionMustBeNamed);
14
+ throw new WorkflowTransformError("Directive function declarations must be named");
17
15
  }
18
16
  static directiveFunctionCannotBeGenerator(directive, name) {
19
- throw new WorkflowTransformError(`"${directive}" function ${name} cannot be a generator`, WorkflowTransformError.directiveFunctionCannotBeGenerator);
17
+ throw new WorkflowTransformError(`"${directive}" function ${name} cannot be a generator`);
20
18
  }
21
19
  static workflowFunctionMustBeAsync(name) {
22
- throw new WorkflowTransformError(`"use workflow" function ${name} must be async`, WorkflowTransformError.workflowFunctionMustBeAsync);
20
+ throw new WorkflowTransformError(`"use workflow" function ${name} must be async`);
23
21
  }
24
22
  static directivesMustBeTopLevel() {
25
- throw new WorkflowTransformError("Workflow directives are only supported on top-level functions", WorkflowTransformError.directivesMustBeTopLevel);
23
+ throw new WorkflowTransformError("Workflow directives are only supported on top-level functions");
26
24
  }
27
25
  static directiveImportsMustBeNamed(specifier) {
28
- throw new WorkflowTransformError(`Workflow directive imports from ${specifier} must use named imports`, WorkflowTransformError.directiveImportsMustBeNamed);
26
+ throw new WorkflowTransformError(`Workflow directive imports from ${specifier} must use named imports`);
29
27
  }
30
28
  static directiveReExportsMustBeNamed(specifier) {
31
- throw new WorkflowTransformError(`Workflow directive re-exports from ${specifier} must use named exports`, WorkflowTransformError.directiveReExportsMustBeNamed);
29
+ throw new WorkflowTransformError(`Workflow directive re-exports from ${specifier} must use named exports`);
32
30
  }
33
31
  static nondeterministicGlobal(workflowName, globalName, line, character) {
34
- throw new WorkflowTransformError(`"use workflow" function ${workflowName} uses nondeterministic global ${globalName} at ${line}:${character}; use deterministic workflow helpers or durable steps`, WorkflowTransformError.nondeterministicGlobal);
32
+ throw new WorkflowTransformError(`"use workflow" function ${workflowName} uses nondeterministic global ${globalName} at ${line}:${character}; use deterministic workflow helpers or durable steps`);
35
33
  }
36
34
  static invalidSourceReplacementRange(start, end) {
37
- throw new WorkflowTransformError(`Invalid source replacement range: ${start}..${end}`, WorkflowTransformError.invalidSourceReplacementRange);
35
+ throw new WorkflowTransformError(`Invalid source replacement range: ${start}..${end}`);
38
36
  }
39
37
  static invalidSourceReadRange(start, end) {
40
- throw new WorkflowTransformError(`Invalid source read range: ${start}..${end}`, WorkflowTransformError.invalidSourceReadRange);
38
+ throw new WorkflowTransformError(`Invalid source read range: ${start}..${end}`);
41
39
  }
42
40
  static overlappingSourceReplacementRanges(currentStart, currentEnd, previousStart, previousEnd) {
43
- throw new WorkflowTransformError(`Overlapping source replacement ranges: ${currentStart}..${currentEnd} and ${previousStart}..${previousEnd}`, WorkflowTransformError.overlappingSourceReplacementRanges);
41
+ throw new WorkflowTransformError(`Overlapping source replacement ranges: ${currentStart}..${currentEnd} and ${previousStart}..${previousEnd}`);
44
42
  }
45
43
  };
46
44
  //#endregion
@@ -0,0 +1,6 @@
1
+ import { TransformManifest, TransformManifestFunction, TransformManifestImportEdge } from "../types/compiler.mjs";
2
+ import { Program } from "oxc-parser";
3
+ //#region src/compiler/manifest.d.ts
4
+ export declare function collectImportedStepBindings(sourceFile: Program, file: string, manifests: readonly TransformManifest[]): ReadonlyMap<string, TransformManifestImportEdge>;
5
+ export declare function collectReExportedManifestFunctions(sourceFile: Program, file: string, manifests: readonly TransformManifest[]): readonly TransformManifestFunction[];
6
+ //#endregion
@@ -1,6 +1,6 @@
1
1
  import { WorkflowTransformError } from "./error.mjs";
2
2
  import path from "node:path";
3
- //#region src/vite/manifest.ts
3
+ //#region src/compiler/manifest.ts
4
4
  const JS_TS_EXTENSION_PATTERN = /\.[cm]?[jt]sx?$/;
5
5
  function collectImportedStepBindings(sourceFile, file, manifests) {
6
6
  const manifestBySource = new Map(manifests.map((manifest) => [manifest.file, manifest]));
@@ -16,14 +16,15 @@ function collectImportedStepBindings(sourceFile, file, manifests) {
16
16
  const importName = moduleExportNameText(element.imported);
17
17
  const step = exportedSteps.get(importName);
18
18
  if (step === void 0) continue;
19
- importedSteps.set(element.local.name, {
19
+ const binding = {
20
20
  source: resolved.source,
21
21
  importName,
22
22
  localName: element.local.name,
23
23
  kind: "step",
24
24
  workflowName: step.workflowName,
25
- ...step.version === void 0 ? {} : { version: step.version }
26
- });
25
+ version: step.version
26
+ };
27
+ importedSteps.set(element.local.name, binding);
27
28
  }
28
29
  }
29
30
  return importedSteps;
@@ -46,14 +47,15 @@ function collectReExportedManifestFunctions(sourceFile, file, manifests) {
46
47
  const importName = moduleExportNameText(element.local);
47
48
  const entry = exported.get(importName);
48
49
  if (entry === void 0) continue;
49
- functions.push({
50
+ const reExport = {
50
51
  kind: entry.kind,
51
52
  exportName: moduleExportNameText(element.exported),
52
53
  localName: entry.localName,
53
54
  generatedName: entry.generatedName,
54
55
  workflowName: entry.workflowName,
55
- ...entry.version === void 0 ? {} : { version: entry.version }
56
- });
56
+ version: entry.version
57
+ };
58
+ functions.push(reExport);
57
59
  }
58
60
  }
59
61
  return functions;
@@ -0,0 +1,7 @@
1
+ import { PluginOptions } from "../types/compiler.mjs";
2
+ //#region src/compiler/plugin.d.ts
3
+ export declare const workflowPlugin: import("unplugin").UnpluginInstance<PluginOptions | undefined, false>;
4
+ /** Creates the Vite plugin that compiles workflow and step directives. */
5
+ export declare const workflow: (options?: PluginOptions) => ReturnType<typeof workflowPlugin.vite>;
6
+ //#endregion
7
+ export type { PluginOptions };
@@ -1,10 +1,10 @@
1
1
  import { stripQuery } from "./source.mjs";
2
- import { parseWorkflowSource } from "./ast.mjs";
3
- import { transformWorkflowSource } from "./transform.mjs";
2
+ import { parseSource } from "./ast.mjs";
3
+ import { hasDirectiveCandidate, transformWorkflowSource } from "./transform.mjs";
4
4
  import fs from "node:fs/promises";
5
5
  import path from "node:path";
6
6
  import { createUnplugin } from "unplugin";
7
- //#region src/vite/plugin.ts
7
+ //#region src/compiler/plugin.ts
8
8
  const workflowUnpluginFactory = (options = {}) => {
9
9
  const include = options.include?.map((pattern) => new RegExp(pattern));
10
10
  const exclude = options.exclude?.map((pattern) => new RegExp(pattern));
@@ -17,49 +17,54 @@ const workflowUnpluginFactory = (options = {}) => {
17
17
  transformInclude(id) {
18
18
  return matchesFilters(id, include, exclude);
19
19
  },
20
- async transform(code, id) {
21
- await loadWorkflowImportManifests({
22
- context: this,
23
- code,
24
- id,
25
- options,
26
- include,
27
- exclude,
28
- manifests,
29
- manifestFileById,
30
- loadingManifests
31
- });
32
- const result = transformAndStoreWorkflowManifest(code, id, options, manifests, manifestFileById);
33
- if (result === void 0) return null;
34
- return {
35
- code: result.code,
36
- ...result.map === void 0 ? {} : { map: toUnpluginSourceMap(result.map) }
37
- };
20
+ transform(code, id) {
21
+ return transformWithImports(void 0, code, id);
38
22
  },
39
- vite: { handleHotUpdate(context) {
40
- if (!matchesFilters(context.file, include, exclude)) return;
41
- const modules = context.modules.filter((module) => module.id !== null);
42
- if (modules.length === 0) return;
43
- return modules;
44
- } }
23
+ rollup: { transform: transformWithNativeContext },
24
+ rolldown: { transform: transformWithNativeContext },
25
+ unloader: { transform: transformWithNativeContext },
26
+ vite: {
27
+ transform: transformWithNativeContext,
28
+ handleHotUpdate(context) {
29
+ if (!matchesFilters(context.file, include, exclude)) return;
30
+ const modules = context.modules.filter((module) => module.id !== null);
31
+ if (modules.length === 0) return;
32
+ return modules;
33
+ }
34
+ }
45
35
  };
36
+ async function transformWithImports(context, code, id) {
37
+ if (!matchesFilters(id, include, exclude)) return null;
38
+ await loadImportManifests({
39
+ context,
40
+ code,
41
+ id,
42
+ options,
43
+ include,
44
+ exclude,
45
+ manifests,
46
+ manifestFileById,
47
+ loadingManifests
48
+ });
49
+ return transformAndStoreManifest(code, id, options, manifests, manifestFileById) ?? null;
50
+ }
51
+ function transformWithNativeContext(code, id) {
52
+ return transformWithImports(this, code, id);
53
+ }
46
54
  };
47
55
  const JS_TS_EXTENSION_PATTERN = /\.[cm]?[jt]sx?$/;
48
- function toUnpluginSourceMap(map) {
49
- return map;
50
- }
51
56
  const workflowPlugin = createUnplugin(workflowUnpluginFactory);
52
57
  /** Creates the Vite plugin that compiles workflow and step directives. */
53
58
  const workflow = workflowPlugin.vite;
54
- async function loadWorkflowImportManifests({ context, code, id, options, include, exclude, manifests, manifestFileById, loadingManifests }) {
55
- if (!hasWorkflowManifestCandidate(code) || loadingManifests.has(id)) return;
59
+ async function loadImportManifests({ context, code, id, options, include, exclude, manifests, manifestFileById, loadingManifests }) {
60
+ if (!hasDirectiveCandidate(code) || loadingManifests.has(id)) return;
56
61
  loadingManifests.add(id);
57
62
  try {
58
- for (const source of collectRelativeImportSources(code, id)) if (canLoadWorkflowImportManifests(context)) {
63
+ for (const source of collectRelativeImportSources(code, id)) if (context !== void 0) {
59
64
  const resolved = await context.resolve(source, id, { skipSelf: true });
60
65
  if (resolved === null || !matchesFilters(resolved.id, include, exclude)) continue;
61
66
  await context.load({ id: resolved.id });
62
- await preloadWorkflowImportFile({
67
+ await preloadImportFile({
63
68
  context,
64
69
  id: resolved.id,
65
70
  options,
@@ -72,7 +77,7 @@ async function loadWorkflowImportManifests({ context, code, id, options, include
72
77
  } else {
73
78
  const resolved = await resolveRelativeImportFile(source, id);
74
79
  if (resolved === void 0 || !matchesFilters(resolved, include, exclude)) continue;
75
- await preloadWorkflowImportFile({
80
+ await preloadImportFile({
76
81
  context,
77
82
  id: resolved,
78
83
  options,
@@ -87,11 +92,11 @@ async function loadWorkflowImportManifests({ context, code, id, options, include
87
92
  loadingManifests.delete(id);
88
93
  }
89
94
  }
90
- async function preloadWorkflowImportFile({ context, id, options, include, exclude, manifests, manifestFileById, loadingManifests }) {
95
+ async function preloadImportFile({ context, id, options, include, exclude, manifests, manifestFileById, loadingManifests }) {
91
96
  const cleanId = stripQuery(id);
92
97
  const importedCode = await fs.readFile(cleanId, "utf8").catch(() => void 0);
93
98
  if (importedCode === void 0) return;
94
- await loadWorkflowImportManifests({
99
+ await loadImportManifests({
95
100
  context,
96
101
  code: importedCode,
97
102
  id: cleanId,
@@ -102,9 +107,9 @@ async function preloadWorkflowImportFile({ context, id, options, include, exclud
102
107
  manifestFileById,
103
108
  loadingManifests
104
109
  });
105
- transformAndStoreWorkflowManifest(importedCode, cleanId, options, manifests, manifestFileById);
110
+ transformAndStoreManifest(importedCode, cleanId, options, manifests, manifestFileById);
106
111
  }
107
- function transformAndStoreWorkflowManifest(code, id, options, manifests, manifestFileById) {
112
+ function transformAndStoreManifest(code, id, options, manifests, manifestFileById) {
108
113
  const result = transformWorkflowSource(code, id, {
109
114
  ...options,
110
115
  manifests: [...options.manifests ?? [], ...manifests.values()]
@@ -123,15 +128,9 @@ function transformAndStoreWorkflowManifest(code, id, options, manifests, manifes
123
128
  manifestFileById.set(id, result.manifest.file);
124
129
  return result;
125
130
  }
126
- function canLoadWorkflowImportManifests(context) {
127
- return typeof context.resolve === "function" && typeof context.load === "function";
128
- }
129
- function hasWorkflowManifestCandidate(code) {
130
- return code.includes("\"use workflow\"") || code.includes("'use workflow'") || code.includes("\"use step\"") || code.includes("'use step'") || code.includes(" from ");
131
- }
132
131
  function collectRelativeImportSources(code, id) {
133
132
  if (!JS_TS_EXTENSION_PATTERN.test(stripQuery(id))) return [];
134
- const sourceFile = parseWorkflowSource(id, code);
133
+ const sourceFile = parseSource(id, code);
135
134
  const sources = /* @__PURE__ */ new Set();
136
135
  for (const statement of sourceFile.program.body) if ((statement.type === "ImportDeclaration" || statement.type === "ExportNamedDeclaration" || statement.type === "ExportAllDeclaration") && statement.source !== null && isRelativeImportSource(statement.source.value)) sources.add(statement.source.value);
137
136
  return [...sources];
@@ -0,0 +1,12 @@
1
+ import { FunctionBody, Program } from "oxc-parser";
2
+ //#region src/compiler/safety.d.ts
3
+ interface SafetyTarget {
4
+ readonly name: string;
5
+ readonly body: FunctionBody;
6
+ }
7
+ export declare function rejectObviousNondeterministicGlobals(entry: SafetyTarget, sourceFile: {
8
+ readonly text: string;
9
+ readonly program: Program;
10
+ }): void;
11
+ //#endregion
12
+ export {};
@@ -1,7 +1,7 @@
1
- import { lineAndColumnOfPosition, visitWorkflowNode } from "./ast.mjs";
1
+ import { isCallExpression, isIdentifier, lineAndColumnOfPosition, visitNode } from "./ast.mjs";
2
2
  import { WorkflowTransformError } from "./error.mjs";
3
3
  import { builtinModules } from "node:module";
4
- //#region src/vite/safety.ts
4
+ //#region src/compiler/safety.ts
5
5
  const unsafeGlobalCallNames = /* @__PURE__ */ new Set([
6
6
  "Date",
7
7
  "fetch",
@@ -11,8 +11,8 @@ const unsafeGlobalCallNames = /* @__PURE__ */ new Set([
11
11
  "queueMicrotask"
12
12
  ]);
13
13
  function rejectObviousNondeterministicGlobals(entry, sourceFile) {
14
- const unsafeImports = collectUnsafeWorkflowImportBindings(sourceFile.program);
15
- visitWorkflowNode(entry.body, (node) => {
14
+ const unsafeImports = collectUnsafeImportBindings(sourceFile.program);
15
+ visitNode(entry.body, (node) => {
16
16
  if (isIdentifier(node) && unsafeImports.has(node.name)) throwNondeterministicGlobalError(entry.name, unsafeImports.get(node.name), node, sourceFile);
17
17
  if (isNewExpression(node) && isIdentifier(node.callee) && node.callee.name === "Date") throwNondeterministicGlobalError(entry.name, "Date", node, sourceFile);
18
18
  if (isCallExpression(node) && isIdentifier(node.callee) && unsafeGlobalCallNames.has(node.callee.name)) throwNondeterministicGlobalError(entry.name, node.callee.name, node, sourceFile);
@@ -22,7 +22,7 @@ function rejectObviousNondeterministicGlobals(entry, sourceFile) {
22
22
  }
23
23
  });
24
24
  }
25
- function collectUnsafeWorkflowImportBindings(sourceFile) {
25
+ function collectUnsafeImportBindings(sourceFile) {
26
26
  const bindings = /* @__PURE__ */ new Map();
27
27
  for (const statement of sourceFile.body) {
28
28
  if (statement.type !== "ImportDeclaration") continue;
@@ -77,12 +77,6 @@ function stripGlobalQualifier(path) {
77
77
  if (path.startsWith("window.")) return path.slice(7);
78
78
  return path;
79
79
  }
80
- function isIdentifier(node) {
81
- return node.type === "Identifier";
82
- }
83
- function isCallExpression(node) {
84
- return node.type === "CallExpression";
85
- }
86
80
  function isNewExpression(node) {
87
81
  return node.type === "NewExpression";
88
82
  }
@@ -1,6 +1,6 @@
1
- //#region src/vite/source-edit.d.ts
1
+ //#region src/compiler/source-edit.d.ts
2
2
  /** Small source rewriting helper for AST-position based transforms. */
3
- declare class SourceEditor {
3
+ export declare class SourceEditor {
4
4
  #private;
5
5
  constructor(source: string);
6
6
  remove(start: number, end: number): void;
@@ -8,5 +8,4 @@ declare class SourceEditor {
8
8
  read(start: number, end: number): string;
9
9
  toString(): string;
10
10
  }
11
- //#endregion
12
- export { SourceEditor };
11
+ //#endregion
@@ -1,5 +1,5 @@
1
1
  import { WorkflowTransformError } from "./error.mjs";
2
- //#region src/vite/source-edit.ts
2
+ //#region src/compiler/source-edit.ts
3
3
  /** Small source rewriting helper for AST-position based transforms. */
4
4
  var SourceEditor = class {
5
5
  #source;