@temelj/workflow 0.0.0-alpha.1

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 (393) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/dist/attributes.d.mts +15 -0
  4. package/dist/attributes.mjs +30 -0
  5. package/dist/client/create.d.mts +31 -0
  6. package/dist/client/create.mjs +67 -0
  7. package/dist/client/facades.d.mts +21 -0
  8. package/dist/client/facades.mjs +142 -0
  9. package/dist/client/mod.d.mts +2 -0
  10. package/dist/client/mod.mjs +2 -0
  11. package/dist/client/run-handle.d.mts +66 -0
  12. package/dist/client/run-handle.mjs +156 -0
  13. package/dist/client/worker-options.d.mts +17 -0
  14. package/dist/client/worker-options.mjs +25 -0
  15. package/dist/collection.d.mts +15 -0
  16. package/dist/collection.mjs +33 -0
  17. package/dist/compiled-function.d.mts +27 -0
  18. package/dist/compiled-function.mjs +54 -0
  19. package/dist/definition.d.mts +37 -0
  20. package/dist/definition.mjs +83 -0
  21. package/dist/engine/child-workflow.d.mts +10 -0
  22. package/dist/engine/child-workflow.mjs +333 -0
  23. package/dist/engine/command-identity.d.mts +9 -0
  24. package/dist/engine/command-identity.mjs +14 -0
  25. package/dist/engine/create.d.mts +106 -0
  26. package/dist/engine/create.mjs +402 -0
  27. package/dist/engine/deterministic.d.mts +12 -0
  28. package/dist/engine/deterministic.mjs +102 -0
  29. package/dist/engine/durable-command.d.mts +10 -0
  30. package/dist/engine/durable-command.mjs +17 -0
  31. package/dist/engine/execution-api.d.mts +29 -0
  32. package/dist/engine/execution-api.mjs +33 -0
  33. package/dist/engine/execution-service.d.mts +41 -0
  34. package/dist/engine/execution-service.mjs +288 -0
  35. package/dist/engine/hooks.d.mts +56 -0
  36. package/dist/engine/hooks.mjs +237 -0
  37. package/dist/engine/inspection-api.d.mts +34 -0
  38. package/dist/engine/inspection-api.mjs +77 -0
  39. package/dist/engine/inspection.d.mts +18 -0
  40. package/dist/engine/inspection.mjs +149 -0
  41. package/dist/engine/lifecycle.d.mts +18 -0
  42. package/dist/engine/lifecycle.mjs +38 -0
  43. package/dist/engine/lock-replay.d.mts +30 -0
  44. package/dist/engine/lock-replay.mjs +38 -0
  45. package/dist/engine/lock.d.mts +21 -0
  46. package/dist/engine/lock.mjs +197 -0
  47. package/dist/engine/message.d.mts +47 -0
  48. package/dist/engine/message.mjs +357 -0
  49. package/dist/engine/mod.d.mts +4 -0
  50. package/dist/engine/mod.mjs +2 -0
  51. package/dist/engine/observation.d.mts +35 -0
  52. package/dist/engine/observation.mjs +201 -0
  53. package/dist/engine/recovery.d.mts +26 -0
  54. package/dist/engine/recovery.mjs +92 -0
  55. package/dist/engine/replay.d.mts +41 -0
  56. package/dist/engine/replay.mjs +122 -0
  57. package/dist/engine/retry-policy.d.mts +4 -0
  58. package/dist/engine/retry-policy.mjs +4 -0
  59. package/dist/engine/retry.d.mts +23 -0
  60. package/dist/engine/retry.mjs +75 -0
  61. package/dist/engine/run-data.d.mts +9 -0
  62. package/dist/engine/run-data.mjs +74 -0
  63. package/dist/engine/run-service.d.mts +38 -0
  64. package/dist/engine/run-service.mjs +133 -0
  65. package/dist/engine/run-utils.d.mts +16 -0
  66. package/dist/engine/run-utils.mjs +83 -0
  67. package/dist/engine/schedule.d.mts +25 -0
  68. package/dist/engine/schedule.mjs +207 -0
  69. package/dist/engine/serialization.d.mts +9 -0
  70. package/dist/engine/serialization.mjs +85 -0
  71. package/dist/engine/start-api.d.mts +30 -0
  72. package/dist/engine/start-api.mjs +98 -0
  73. package/dist/engine/state.d.mts +77 -0
  74. package/dist/engine/state.mjs +464 -0
  75. package/dist/engine/step-api.d.mts +9 -0
  76. package/dist/engine/step-api.mjs +25 -0
  77. package/dist/engine/stream.d.mts +55 -0
  78. package/dist/engine/stream.mjs +333 -0
  79. package/dist/engine/summary/active-events.d.mts +34 -0
  80. package/dist/engine/summary/active-events.mjs +69 -0
  81. package/dist/engine/summary/child-workflow-runs.d.mts +24 -0
  82. package/dist/engine/summary/child-workflow-runs.mjs +138 -0
  83. package/dist/engine/summary/child-workflow-waits.d.mts +21 -0
  84. package/dist/engine/summary/child-workflow-waits.mjs +67 -0
  85. package/dist/engine/summary/recovery-child-workflow-waits.d.mts +11 -0
  86. package/dist/engine/summary/recovery-child-workflow-waits.mjs +89 -0
  87. package/dist/engine/summary/recovery-due-runs.d.mts +16 -0
  88. package/dist/engine/summary/recovery-due-runs.mjs +52 -0
  89. package/dist/engine/summary/recovery-failed-runs.d.mts +14 -0
  90. package/dist/engine/summary/recovery-failed-runs.mjs +33 -0
  91. package/dist/engine/summary/recovery-lease-runs.d.mts +16 -0
  92. package/dist/engine/summary/recovery-lease-runs.mjs +69 -0
  93. package/dist/engine/summary/recovery-locks.d.mts +18 -0
  94. package/dist/engine/summary/recovery-locks.mjs +100 -0
  95. package/dist/engine/summary/recovery-message-waits.d.mts +11 -0
  96. package/dist/engine/summary/recovery-message-waits.mjs +74 -0
  97. package/dist/engine/summary/recovery-retry-runs.d.mts +17 -0
  98. package/dist/engine/summary/recovery-retry-runs.mjs +65 -0
  99. package/dist/engine/summary/recovery-run-timestamps.d.mts +13 -0
  100. package/dist/engine/summary/recovery-run-timestamps.mjs +18 -0
  101. package/dist/engine/summary/recovery-runs.d.mts +23 -0
  102. package/dist/engine/summary/recovery-runs.mjs +54 -0
  103. package/dist/engine/summary/recovery-schedules.d.mts +10 -0
  104. package/dist/engine/summary/recovery-schedules.mjs +46 -0
  105. package/dist/engine/summary/recovery-sleep-waits.d.mts +10 -0
  106. package/dist/engine/summary/recovery-sleep-waits.mjs +53 -0
  107. package/dist/engine/summary/recovery-waits.d.mts +21 -0
  108. package/dist/engine/summary/recovery-waits.mjs +29 -0
  109. package/dist/engine/summary/run-availability.d.mts +13 -0
  110. package/dist/engine/summary/run-availability.mjs +37 -0
  111. package/dist/engine/summary/run-cleanup.d.mts +14 -0
  112. package/dist/engine/summary/run-cleanup.mjs +44 -0
  113. package/dist/engine/summary/run-failure.d.mts +14 -0
  114. package/dist/engine/summary/run-failure.mjs +62 -0
  115. package/dist/engine/summary/run-hooks.d.mts +14 -0
  116. package/dist/engine/summary/run-hooks.mjs +63 -0
  117. package/dist/engine/summary/run-lease.d.mts +11 -0
  118. package/dist/engine/summary/run-lease.mjs +64 -0
  119. package/dist/engine/summary/run-message-waits.d.mts +15 -0
  120. package/dist/engine/summary/run-message-waits.mjs +62 -0
  121. package/dist/engine/summary/run-metrics.d.mts +31 -0
  122. package/dist/engine/summary/run-metrics.mjs +93 -0
  123. package/dist/engine/summary/run-retry.d.mts +9 -0
  124. package/dist/engine/summary/run-retry.mjs +69 -0
  125. package/dist/engine/summary/run-sleeps.d.mts +15 -0
  126. package/dist/engine/summary/run-sleeps.mjs +61 -0
  127. package/dist/engine/summary/run-state.d.mts +26 -0
  128. package/dist/engine/summary/run-state.mjs +48 -0
  129. package/dist/engine/summary/run-status.d.mts +16 -0
  130. package/dist/engine/summary/run-status.mjs +35 -0
  131. package/dist/engine/summary/run-streams.d.mts +14 -0
  132. package/dist/engine/summary/run-streams.mjs +46 -0
  133. package/dist/engine/summary/run-transition.d.mts +9 -0
  134. package/dist/engine/summary/run-transition.mjs +39 -0
  135. package/dist/engine/summary/run-workflow.d.mts +9 -0
  136. package/dist/engine/summary/run-workflow.mjs +47 -0
  137. package/dist/engine/summary/step-attempt-active-child-workflows.d.mts +13 -0
  138. package/dist/engine/summary/step-attempt-active-child-workflows.mjs +55 -0
  139. package/dist/engine/summary/step-attempt-active-fields.d.mts +23 -0
  140. package/dist/engine/summary/step-attempt-active-fields.mjs +14 -0
  141. package/dist/engine/summary/step-attempt-active-message-waits.d.mts +12 -0
  142. package/dist/engine/summary/step-attempt-active-message-waits.mjs +47 -0
  143. package/dist/engine/summary/step-attempt-active-sleeps.d.mts +19 -0
  144. package/dist/engine/summary/step-attempt-active-sleeps.mjs +44 -0
  145. package/dist/engine/summary/step-attempt-buckets.d.mts +22 -0
  146. package/dist/engine/summary/step-attempt-buckets.mjs +152 -0
  147. package/dist/engine/summary/step-attempt-failure.d.mts +12 -0
  148. package/dist/engine/summary/step-attempt-failure.mjs +61 -0
  149. package/dist/engine/summary/step-attempt-lifecycle.d.mts +13 -0
  150. package/dist/engine/summary/step-attempt-lifecycle.mjs +19 -0
  151. package/dist/engine/summary/step-attempts.d.mts +11 -0
  152. package/dist/engine/summary/step-attempts.mjs +43 -0
  153. package/dist/engine/summary.d.mts +32 -0
  154. package/dist/engine/summary.mjs +37 -0
  155. package/dist/engine/task.d.mts +6 -0
  156. package/dist/engine/task.mjs +207 -0
  157. package/dist/errors/base.d.mts +99 -0
  158. package/dist/errors/base.mjs +426 -0
  159. package/dist/errors/capability.d.mts +11 -0
  160. package/dist/errors/capability.mjs +23 -0
  161. package/dist/errors/definition.d.mts +21 -0
  162. package/dist/errors/definition.mjs +51 -0
  163. package/dist/errors/details.d.mts +13 -0
  164. package/dist/errors/details.mjs +65 -0
  165. package/dist/errors/failures.d.mts +81 -0
  166. package/dist/errors/failures.mjs +168 -0
  167. package/dist/errors/hook.d.mts +14 -0
  168. package/dist/errors/hook.mjs +30 -0
  169. package/dist/errors/implementation.d.mts +11 -0
  170. package/dist/errors/implementation.mjs +25 -0
  171. package/dist/errors/lock.d.mts +28 -0
  172. package/dist/errors/lock.mjs +70 -0
  173. package/dist/errors/message.d.mts +106 -0
  174. package/dist/errors/message.mjs +122 -0
  175. package/dist/errors/mod.d.mts +17 -0
  176. package/dist/errors/mod.mjs +17 -0
  177. package/dist/errors/record-view.d.mts +11 -0
  178. package/dist/errors/record-view.mjs +24 -0
  179. package/dist/errors/records.d.mts +7 -0
  180. package/dist/errors/records.mjs +280 -0
  181. package/dist/errors/run.d.mts +116 -0
  182. package/dist/errors/run.mjs +232 -0
  183. package/dist/errors/runtime.d.mts +12 -0
  184. package/dist/errors/runtime.mjs +24 -0
  185. package/dist/errors/schedule.d.mts +27 -0
  186. package/dist/errors/schedule.mjs +65 -0
  187. package/dist/errors/step.d.mts +76 -0
  188. package/dist/errors/step.mjs +113 -0
  189. package/dist/errors/stream.d.mts +24 -0
  190. package/dist/errors/stream.mjs +64 -0
  191. package/dist/esbuild.d.mts +7 -0
  192. package/dist/esbuild.mjs +6 -0
  193. package/dist/events/descriptors.d.mts +245 -0
  194. package/dist/events/descriptors.mjs +405 -0
  195. package/dist/events/mod.d.mts +3 -0
  196. package/dist/events/mod.mjs +2 -0
  197. package/dist/history/attempt-key.d.mts +6 -0
  198. package/dist/history/attempt-key.mjs +7 -0
  199. package/dist/history/mod.d.mts +71 -0
  200. package/dist/history/mod.mjs +195 -0
  201. package/dist/history/projection.d.mts +8 -0
  202. package/dist/history/projection.mjs +259 -0
  203. package/dist/history/replay-projection.d.mts +88 -0
  204. package/dist/history/replay-projection.mjs +369 -0
  205. package/dist/history/sequencer.d.mts +16 -0
  206. package/dist/history/sequencer.mjs +78 -0
  207. package/dist/history/step-attempts.d.mts +9 -0
  208. package/dist/history/step-attempts.mjs +50 -0
  209. package/dist/history/timeline.d.mts +16 -0
  210. package/dist/history/timeline.mjs +272 -0
  211. package/dist/history/validator.d.mts +9 -0
  212. package/dist/history/validator.mjs +110 -0
  213. package/dist/inspection/mod.d.mts +5 -0
  214. package/dist/inspection/mod.mjs +3 -0
  215. package/dist/message-options.d.mts +8 -0
  216. package/dist/message-options.mjs +25 -0
  217. package/dist/mod.d.mts +52 -0
  218. package/dist/mod.mjs +26 -0
  219. package/dist/otel/support.d.mts +18 -0
  220. package/dist/otel/support.mjs +102 -0
  221. package/dist/otel.d.mts +30 -0
  222. package/dist/otel.mjs +588 -0
  223. package/dist/pagination.d.mts +25 -0
  224. package/dist/pagination.mjs +73 -0
  225. package/dist/registry.d.mts +20 -0
  226. package/dist/registry.mjs +48 -0
  227. package/dist/rolldown.d.mts +7 -0
  228. package/dist/rolldown.mjs +6 -0
  229. package/dist/rollup.d.mts +7 -0
  230. package/dist/rollup.mjs +6 -0
  231. package/dist/rspack.d.mts +7 -0
  232. package/dist/rspack.mjs +6 -0
  233. package/dist/runtime.d.mts +34 -0
  234. package/dist/runtime.mjs +194 -0
  235. package/dist/step-definition.d.mts +10 -0
  236. package/dist/step-definition.mjs +15 -0
  237. package/dist/store/append-projection.d.mts +15 -0
  238. package/dist/store/append-projection.mjs +26 -0
  239. package/dist/store/capabilities.d.mts +14 -0
  240. package/dist/store/capabilities.mjs +42 -0
  241. package/dist/store/cleanup.d.mts +18 -0
  242. package/dist/store/cleanup.mjs +338 -0
  243. package/dist/store/compaction.d.mts +5 -0
  244. package/dist/store/compaction.mjs +8 -0
  245. package/dist/store/create.d.mts +52 -0
  246. package/dist/store/create.mjs +159 -0
  247. package/dist/store/event-append-project.d.mts +15 -0
  248. package/dist/store/event-append-project.mjs +77 -0
  249. package/dist/store/event-append.d.mts +37 -0
  250. package/dist/store/event-append.mjs +80 -0
  251. package/dist/store/event-history.d.mts +22 -0
  252. package/dist/store/event-history.mjs +75 -0
  253. package/dist/store/event.d.mts +10 -0
  254. package/dist/store/event.mjs +28 -0
  255. package/dist/store/idempotency.d.mts +10 -0
  256. package/dist/store/idempotency.mjs +167 -0
  257. package/dist/store/instrumentation.d.mts +7 -0
  258. package/dist/store/instrumentation.mjs +123 -0
  259. package/dist/store/lock.d.mts +8 -0
  260. package/dist/store/lock.mjs +28 -0
  261. package/dist/store/materialization.d.mts +30 -0
  262. package/dist/store/materialization.mjs +127 -0
  263. package/dist/store/message-index.d.mts +21 -0
  264. package/dist/store/message-index.mjs +121 -0
  265. package/dist/store/mod.d.mts +5 -0
  266. package/dist/store/mod.mjs +4 -0
  267. package/dist/store/query.d.mts +24 -0
  268. package/dist/store/query.mjs +82 -0
  269. package/dist/store/revision.d.mts +4 -0
  270. package/dist/store/revision.mjs +7 -0
  271. package/dist/store/run.d.mts +49 -0
  272. package/dist/store/run.mjs +236 -0
  273. package/dist/store/schedule.d.mts +12 -0
  274. package/dist/store/schedule.mjs +41 -0
  275. package/dist/store/schema.d.mts +14 -0
  276. package/dist/store/schema.mjs +17 -0
  277. package/dist/store/step-attempt.d.mts +14 -0
  278. package/dist/store/step-attempt.mjs +23 -0
  279. package/dist/store/storage-value.d.mts +5 -0
  280. package/dist/store/storage-value.mjs +6 -0
  281. package/dist/store/validation.d.mts +35 -0
  282. package/dist/store/validation.mjs +77 -0
  283. package/dist/store-keys.d.mts +49 -0
  284. package/dist/store-keys.mjs +63 -0
  285. package/dist/telemetry.d.mts +132 -0
  286. package/dist/telemetry.mjs +172 -0
  287. package/dist/temporal.d.mts +23 -0
  288. package/dist/temporal.mjs +59 -0
  289. package/dist/timer.d.mts +12 -0
  290. package/dist/timer.mjs +28 -0
  291. package/dist/types/cleanup.d.mts +112 -0
  292. package/dist/types/cleanup.mjs +22 -0
  293. package/dist/types/client.d.mts +270 -0
  294. package/dist/types/client.mjs +1 -0
  295. package/dist/types/common.d.mts +19 -0
  296. package/dist/types/common.mjs +15 -0
  297. package/dist/types/definition.d.mts +92 -0
  298. package/dist/types/definition.mjs +1 -0
  299. package/dist/types/engine-options.d.mts +76 -0
  300. package/dist/types/engine-options.mjs +1 -0
  301. package/dist/types/engine.d.mts +309 -0
  302. package/dist/types/engine.mjs +1 -0
  303. package/dist/types/error-code.d.mts +256 -0
  304. package/dist/types/error-code.mjs +131 -0
  305. package/dist/types/error.d.mts +236 -0
  306. package/dist/types/error.mjs +48 -0
  307. package/dist/types/events.d.mts +2869 -0
  308. package/dist/types/events.mjs +283 -0
  309. package/dist/types/hook.d.mts +149 -0
  310. package/dist/types/hook.mjs +66 -0
  311. package/dist/types/lock.d.mts +63 -0
  312. package/dist/types/lock.mjs +18 -0
  313. package/dist/types/message-id.d.mts +7 -0
  314. package/dist/types/message-id.mjs +5 -0
  315. package/dist/types/message.d.mts +87 -0
  316. package/dist/types/message.mjs +1 -0
  317. package/dist/types/observation.d.mts +146 -0
  318. package/dist/types/observation.mjs +1 -0
  319. package/dist/types/pagination.d.mts +32 -0
  320. package/dist/types/pagination.mjs +13 -0
  321. package/dist/types/result.d.mts +62 -0
  322. package/dist/types/result.mjs +1 -0
  323. package/dist/types/retry.d.mts +48 -0
  324. package/dist/types/retry.mjs +1 -0
  325. package/dist/types/run-id.d.mts +7 -0
  326. package/dist/types/run-id.mjs +5 -0
  327. package/dist/types/run-list.d.mts +43 -0
  328. package/dist/types/run-list.mjs +1 -0
  329. package/dist/types/run-options.d.mts +86 -0
  330. package/dist/types/run-options.mjs +1 -0
  331. package/dist/types/run.d.mts +355 -0
  332. package/dist/types/run.mjs +207 -0
  333. package/dist/types/runtime.d.mts +143 -0
  334. package/dist/types/runtime.mjs +21 -0
  335. package/dist/types/schedule.d.mts +127 -0
  336. package/dist/types/schedule.mjs +48 -0
  337. package/dist/types/step-attempts.d.mts +326 -0
  338. package/dist/types/step-attempts.mjs +43 -0
  339. package/dist/types/step-id.d.mts +7 -0
  340. package/dist/types/step-id.mjs +5 -0
  341. package/dist/types/step.d.mts +183 -0
  342. package/dist/types/step.mjs +5 -0
  343. package/dist/types/store.d.mts +254 -0
  344. package/dist/types/store.mjs +1 -0
  345. package/dist/types/stream-id.d.mts +7 -0
  346. package/dist/types/stream-id.mjs +5 -0
  347. package/dist/types/stream.d.mts +126 -0
  348. package/dist/types/stream.mjs +1 -0
  349. package/dist/types/summary.d.mts +318 -0
  350. package/dist/types/summary.mjs +1 -0
  351. package/dist/types/telemetry.d.mts +74 -0
  352. package/dist/types/telemetry.mjs +9 -0
  353. package/dist/types/timeline.d.mts +237 -0
  354. package/dist/types/timeline.mjs +1 -0
  355. package/dist/types/vite.d.mts +65 -0
  356. package/dist/types/vite.mjs +1 -0
  357. package/dist/types/worker-id.d.mts +7 -0
  358. package/dist/types/worker-id.mjs +5 -0
  359. package/dist/types/worker.d.mts +94 -0
  360. package/dist/types/worker.mjs +1 -0
  361. package/dist/utility.d.mts +49 -0
  362. package/dist/utility.mjs +122 -0
  363. package/dist/vite/ast.d.mts +23 -0
  364. package/dist/vite/ast.mjs +73 -0
  365. package/dist/vite/error.d.mts +19 -0
  366. package/dist/vite/error.mjs +47 -0
  367. package/dist/vite/generated-name.d.mts +7 -0
  368. package/dist/vite/generated-name.mjs +9 -0
  369. package/dist/vite/manifest.d.mts +7 -0
  370. package/dist/vite/manifest.mjs +106 -0
  371. package/dist/vite/plugin.d.mts +7 -0
  372. package/dist/vite/plugin.mjs +190 -0
  373. package/dist/vite/safety.d.mts +12 -0
  374. package/dist/vite/safety.mjs +96 -0
  375. package/dist/vite/source-edit.d.mts +12 -0
  376. package/dist/vite/source-edit.mjs +44 -0
  377. package/dist/vite/source-map.d.mts +11 -0
  378. package/dist/vite/source-map.mjs +53 -0
  379. package/dist/vite/source.d.mts +7 -0
  380. package/dist/vite/source.mjs +14 -0
  381. package/dist/vite/transform.d.mts +7 -0
  382. package/dist/vite/transform.mjs +405 -0
  383. package/dist/vite.d.mts +6 -0
  384. package/dist/vite.mjs +5 -0
  385. package/dist/webhook.d.mts +16 -0
  386. package/dist/webhook.mjs +17 -0
  387. package/dist/webpack.d.mts +7 -0
  388. package/dist/webpack.mjs +6 -0
  389. package/dist/worker/error.d.mts +11 -0
  390. package/dist/worker/error.mjs +40 -0
  391. package/dist/worker.d.mts +18 -0
  392. package/dist/worker.mjs +427 -0
  393. package/package.json +144 -0
@@ -0,0 +1,405 @@
1
+ import { stripQuery } from "./source.mjs";
2
+ import { leadingTriviaStart, parseWorkflowSource, spanText, visitWorkflowNode, workflowNodeChildren } from "./ast.mjs";
3
+ import { WorkflowTransformError } from "./error.mjs";
4
+ import { makeGeneratedName } from "./generated-name.mjs";
5
+ import { collectImportedStepBindings, collectReExportedManifestFunctions } from "./manifest.mjs";
6
+ import { rejectObviousNondeterministicGlobals } from "./safety.mjs";
7
+ import { SourceEditor } from "./source-edit.mjs";
8
+ import { createGeneratedSourceMap } from "./source-map.mjs";
9
+ import path from "node:path";
10
+ //#region src/vite/transform.ts
11
+ const JS_TS_EXTENSION_PATTERN = /\.[cm]?[jt]sx?$/;
12
+ const GENERATED_CONTEXT_NAME = makeGeneratedName("context");
13
+ const GENERATED_DEFINE_WORKFLOW_NAME = makeGeneratedName("implementWorkflow");
14
+ const GENERATED_DEFINE_WORKFLOW_STEP_NAME = makeGeneratedName("defineWorkflowStep");
15
+ const GENERATED_ATTACH_WORKFLOW_DEFINITION_NAME = makeGeneratedName("attachWorkflowDefinition");
16
+ const GENERATED_ATTACH_WORKFLOW_STEP_DEFINITION_NAME = makeGeneratedName("attachWorkflowStepDefinition");
17
+ const GENERATED_CALL_WORKFLOW_STEP_FUNCTION_NAME = makeGeneratedName("callWorkflowStepFunction");
18
+ /** Transforms one TypeScript module containing workflow or step directives. */
19
+ function transformWorkflowSource(code, id, options = {}) {
20
+ if (!JS_TS_EXTENSION_PATTERN.test(stripQuery(id)) || !hasWorkflowTransformCandidateText(code)) return;
21
+ const sourceFile = parseWorkflowSource(id, code);
22
+ const directiveFunctions = collectDirectiveFunctions(sourceFile.program);
23
+ const file = relativeFile(id, options.root);
24
+ const reExportedFunctions = collectReExportedManifestFunctions(sourceFile.program, file, options.manifests ?? []);
25
+ if (directiveFunctions.length === 0 && reExportedFunctions.length === 0) return;
26
+ const editor = new SourceEditor(code);
27
+ for (const entry of directiveFunctions) editor.remove(leadingTriviaStart(code, entry.directive.start), entry.directive.end);
28
+ const entries = directiveFunctions.map((entry) => createMetadataEntry(entry, file, options));
29
+ const localFunctions = directiveFunctions.map((entry, index) => createManifestFunction(entry, entries[index]));
30
+ const workflowByName = new Map(directiveFunctions.filter((entry) => entry.kind === "workflow").map((entry) => [entry.name, entry]));
31
+ const localStepNames = new Set(directiveFunctions.filter((entry) => entry.kind === "step").map((entry) => entry.name));
32
+ const importedSteps = collectImportedStepBindings(sourceFile.program, file, options.manifests ?? []);
33
+ const knownStepNames = /* @__PURE__ */ new Set([...localStepNames, ...importedSteps.keys()]);
34
+ const importText = directiveFunctions.length === 0 ? "" : createRuntimeImportText(options.runtimeImport);
35
+ const definitionText = entries.map((entry, index) => createDefinitionText(directiveFunctions[index], entry, sourceFile)).join("\n\n");
36
+ const transformedCode = editor.toString();
37
+ const sourceText = directiveFunctions.length === 0 ? transformedCode.trim() : transformedCode.trimEnd();
38
+ const transformedResultCode = `${[
39
+ importText,
40
+ sourceText,
41
+ definitionText
42
+ ].filter((part) => part !== "").join("\n\n")}\n`;
43
+ return {
44
+ code: transformedResultCode,
45
+ ...options.sourcemap === true ? { map: createGeneratedSourceMap({
46
+ id,
47
+ originalCode: sourceFile.text,
48
+ generatedCode: transformedResultCode,
49
+ generatedSource: transformedCode,
50
+ sourceText
51
+ }) } : {},
52
+ metadata: {
53
+ file,
54
+ entries
55
+ },
56
+ manifest: {
57
+ file,
58
+ functions: [...localFunctions, ...reExportedFunctions],
59
+ imports: [...importedSteps.values()]
60
+ }
61
+ };
62
+ function createDefinitionText(entry, metadata, currentSourceFile) {
63
+ const config = createDefinitionConfig(metadata);
64
+ if (entry.kind === "step") {
65
+ const contextName = uniqueName(GENERATED_CONTEXT_NAME, entry.parameters.map((parameter, index) => {
66
+ const name = parameterName(parameter);
67
+ if (name === void 0) WorkflowTransformError.directiveParametersMustBeIdentifiers();
68
+ return name || `arg${index}`;
69
+ }));
70
+ return [
71
+ `const ${metadata.generatedName} = ${GENERATED_DEFINE_WORKFLOW_STEP_NAME}(${config}, async (${[...entry.parameters.map((parameter) => spanText(currentSourceFile, parameter)), contextName].join(", ")}) => {`,
72
+ bodyWithoutDirective(entry.body, currentSourceFile),
73
+ "});",
74
+ `${GENERATED_ATTACH_WORKFLOW_STEP_DEFINITION_NAME}(${entry.name}, ${metadata.generatedName});`
75
+ ].join("\n");
76
+ }
77
+ const workflow = workflowByName.get(entry.name);
78
+ if (workflow === void 0) WorkflowTransformError.metadataMissing(entry.name);
79
+ return [
80
+ `const ${metadata.generatedName} = ${GENERATED_DEFINE_WORKFLOW_NAME}(${config}, async (${GENERATED_CONTEXT_NAME}) => {`,
81
+ createWorkflowBody(workflow, currentSourceFile, knownStepNames),
82
+ "});",
83
+ `${GENERATED_ATTACH_WORKFLOW_DEFINITION_NAME}(${entry.name}, ${metadata.generatedName});`
84
+ ].join("\n");
85
+ }
86
+ }
87
+ function hasWorkflowTransformCandidateText(code) {
88
+ return code.includes("\"use workflow\"") || code.includes("'use workflow'") || code.includes("\"use step\"") || code.includes("'use step'") || code.includes(" from ");
89
+ }
90
+ function collectDirectiveFunctions(sourceFile) {
91
+ const entries = [];
92
+ for (const statement of sourceFile.body) for (const entry of directiveFunctionsFromStatement(statement)) entries.push(entry);
93
+ rejectNestedDirectiveFunctions(sourceFile, new Set(entries.map((entry) => entry.body)));
94
+ return entries;
95
+ }
96
+ function directiveFunctionsFromStatement(statement) {
97
+ const declaration = statement.type === "ExportNamedDeclaration" && statement.declaration !== null ? statement.declaration : statement;
98
+ if (isFunctionDeclaration(declaration)) {
99
+ const entry = directiveFunctionFromDeclaration(declaration);
100
+ return entry === void 0 ? [] : [entry];
101
+ }
102
+ if (declaration.type !== "VariableDeclaration") return [];
103
+ return declaration.declarations.flatMap((variableDeclaration) => {
104
+ const entry = directiveFunctionFromVariableDeclaration(variableDeclaration);
105
+ return entry === void 0 ? [] : [entry];
106
+ });
107
+ }
108
+ function directiveFunctionFromDeclaration(node) {
109
+ if (node.body === null) return;
110
+ const directive = directiveFromBody(node.body);
111
+ if (directive === void 0) return;
112
+ if (node.id === null) WorkflowTransformError.directiveFunctionMustBeNamed();
113
+ rejectUnsupportedDirectiveFunction(node, directive.kind, node.id.name);
114
+ return {
115
+ kind: directive.kind,
116
+ name: node.id.name,
117
+ node,
118
+ body: node.body,
119
+ parameters: node.params,
120
+ directive: directive.statement
121
+ };
122
+ }
123
+ function directiveFunctionFromVariableDeclaration(node) {
124
+ if (node.id.type !== "Identifier" || node.init === null) return;
125
+ const initializer = node.init;
126
+ if (!isArrowOrFunctionExpression(initializer)) return;
127
+ if (initializer.body === null || initializer.body.type !== "BlockStatement") return;
128
+ const directive = directiveFromBody(initializer.body);
129
+ if (directive === void 0) return;
130
+ rejectUnsupportedDirectiveFunction(initializer, directive.kind, node.id.name);
131
+ return {
132
+ kind: directive.kind,
133
+ name: node.id.name,
134
+ node,
135
+ body: initializer.body,
136
+ parameters: initializer.params,
137
+ directive: directive.statement
138
+ };
139
+ }
140
+ function directiveFromBody(body) {
141
+ const firstStatement = body.body[0];
142
+ if (firstStatement === void 0 || firstStatement.type !== "ExpressionStatement") return;
143
+ if (firstStatement.expression.type !== "Literal") return;
144
+ if (firstStatement.expression.value === "use workflow") return {
145
+ kind: "workflow",
146
+ statement: firstStatement
147
+ };
148
+ if (firstStatement.expression.value === "use step") return {
149
+ kind: "step",
150
+ statement: firstStatement
151
+ };
152
+ }
153
+ function rejectUnsupportedDirectiveFunction(node, kind, name) {
154
+ if (node.generator) WorkflowTransformError.directiveFunctionCannotBeGenerator(directiveText(kind), name);
155
+ if (kind === "workflow" && !node.async) WorkflowTransformError.workflowFunctionMustBeAsync(name);
156
+ }
157
+ function rejectNestedDirectiveFunctions(sourceFile, topLevelBodies) {
158
+ visitWorkflowNode(sourceFile, (node) => {
159
+ if (isFunctionLike(node) && node.body !== null && node.body.type === "BlockStatement" && !topLevelBodies.has(node.body) && directiveFromBody(node.body) !== void 0) WorkflowTransformError.directivesMustBeTopLevel();
160
+ });
161
+ }
162
+ function createMetadataEntry(entry, file, options) {
163
+ const workflowName = options.name?.(file, entry.name, entry.kind) ?? `${file}:${entry.name}`;
164
+ const version = typeof options.version === "function" ? options.version(file, entry.name) : options.version;
165
+ return {
166
+ kind: entry.kind,
167
+ name: entry.name,
168
+ generatedName: makeGeneratedName(entry.kind, sanitizeIdentifier(entry.name)),
169
+ workflowName,
170
+ ...version === void 0 ? {} : { version }
171
+ };
172
+ }
173
+ function createManifestFunction(entry, metadata) {
174
+ return {
175
+ kind: entry.kind,
176
+ exportName: entry.name,
177
+ localName: entry.name,
178
+ generatedName: metadata.generatedName,
179
+ workflowName: metadata.workflowName,
180
+ ...metadata.version === void 0 ? {} : { version: metadata.version }
181
+ };
182
+ }
183
+ function createDefinitionConfig(metadata) {
184
+ const fields = [`name: ${JSON.stringify(metadata.workflowName)}`];
185
+ if (metadata.version !== void 0) fields.push(`version: ${JSON.stringify(metadata.version)}`);
186
+ return `{ ${fields.join(", ")} }`;
187
+ }
188
+ function createWorkflowBody(entry, sourceFile, localStepNames) {
189
+ const names = entry.parameters.map((parameter, index) => {
190
+ const name = parameterName(parameter);
191
+ if (name === void 0) WorkflowTransformError.directiveParametersMustBeIdentifiers();
192
+ return name || `arg${index}`;
193
+ });
194
+ const inputLine = `const ${names.length === 0 ? "[]" : `[${names.join(", ")}]`} = ${GENERATED_CONTEXT_NAME}.input;`;
195
+ rejectObviousNondeterministicGlobals(entry, sourceFile);
196
+ return `${inputLine}\n${rewriteWorkflowCalls(bodyWithoutDirective(entry.body, sourceFile), sourceFile, localStepNames, new Set(names))}`;
197
+ }
198
+ function bodyWithoutDirective(body, sourceFile) {
199
+ const statements = body.body.slice(1);
200
+ if (statements.length === 0) return "";
201
+ const start = leadingTriviaStart(sourceFile.text, statements[0].start);
202
+ const end = statements.at(-1).end;
203
+ return new SourceEditor(sourceFile.text).read(start, end);
204
+ }
205
+ function rewriteWorkflowCalls(bodyText, sourceFile, knownStepNames, initialLocalNames) {
206
+ const wrapped = `async function ${makeGeneratedName("workflow", "body")}() {${bodyText}}`;
207
+ const bodySource = parseWorkflowSource(sourceFile.fileName, wrapped);
208
+ const editor = new SourceEditor(bodyText);
209
+ const offset = wrapped.indexOf(bodyText);
210
+ const wrapper = bodySource.program.body[0];
211
+ if (!isFunctionDeclaration(wrapper) || wrapper.body === null) return bodyText;
212
+ const visit = (node, localNames) => {
213
+ if (isCallExpression(node) && isIdentifier(node.callee) && knownStepNames.has(node.callee.name) && !localNames.has(node.callee.name)) {
214
+ const args = node.arguments.map((argument) => spanText(bodySource, argument)).join(", ");
215
+ editor.replace(node.start - offset, node.end - offset, `${GENERATED_CALL_WORKFLOW_STEP_FUNCTION_NAME}(${GENERATED_CONTEXT_NAME}.step, ${node.callee.name}${args === "" ? "" : `, ${args}`})`);
216
+ return;
217
+ }
218
+ if (isBlockStatement(node)) {
219
+ visitBlock(node, localNames);
220
+ return;
221
+ }
222
+ if (isFunctionLike(node)) {
223
+ visitFunctionLike(node, localNames);
224
+ return;
225
+ }
226
+ if (node.type === "ForStatement") {
227
+ visitForStatement(node, localNames);
228
+ return;
229
+ }
230
+ if (node.type === "ForInStatement" || node.type === "ForOfStatement") {
231
+ visitForInOrOfStatement(node, localNames);
232
+ return;
233
+ }
234
+ if (node.type === "CatchClause") {
235
+ visitCatchClause(node, localNames);
236
+ return;
237
+ }
238
+ if (node.type === "SwitchStatement") {
239
+ visitSwitchStatement(node, localNames);
240
+ return;
241
+ }
242
+ for (const child of workflowNodeChildren(node)) visit(child, localNames);
243
+ };
244
+ const visitBlock = (block, inheritedLocalNames) => {
245
+ const localNames = collectBlockLocalNames(block, inheritedLocalNames);
246
+ for (const statement of block.body) visit(statement, localNames);
247
+ };
248
+ const visitFunctionLike = (node, inheritedLocalNames) => {
249
+ const localNames = new Set(inheritedLocalNames);
250
+ if (node.type !== "ArrowFunctionExpression" && node.id !== null) localNames.add(node.id.name);
251
+ for (const parameter of node.params) collectParameterNames(parameter, localNames);
252
+ const body = node.body;
253
+ if (body !== null) visit(body, localNames);
254
+ };
255
+ const visitForStatement = (node, inheritedLocalNames) => {
256
+ const localNames = new Set(inheritedLocalNames);
257
+ if (node.init !== null) {
258
+ collectForInitializerNames(node.init, localNames);
259
+ visit(node.init, inheritedLocalNames);
260
+ }
261
+ if (node.test !== null) visit(node.test, localNames);
262
+ if (node.update !== null) visit(node.update, localNames);
263
+ visit(node.body, localNames);
264
+ };
265
+ const visitForInOrOfStatement = (node, inheritedLocalNames) => {
266
+ const localNames = new Set(inheritedLocalNames);
267
+ collectForInitializerNames(node.left, localNames);
268
+ visit(node.right, inheritedLocalNames);
269
+ visit(node.body, localNames);
270
+ };
271
+ const visitCatchClause = (node, inheritedLocalNames) => {
272
+ const localNames = new Set(inheritedLocalNames);
273
+ if (node.param !== null) collectBindingNames(node.param, localNames);
274
+ visit(node.body, localNames);
275
+ };
276
+ const visitSwitchStatement = (node, inheritedLocalNames) => {
277
+ visit(node.discriminant, inheritedLocalNames);
278
+ const localNames = collectSwitchCaseBlockLocalNames(node, inheritedLocalNames);
279
+ for (const clause of node.cases) {
280
+ if (clause.test !== null) visit(clause.test, localNames);
281
+ for (const statement of clause.consequent) visit(statement, localNames);
282
+ }
283
+ };
284
+ visitBlock(wrapper.body, initialLocalNames);
285
+ return editor.toString();
286
+ }
287
+ function collectBlockLocalNames(block, inheritedLocalNames) {
288
+ const localNames = new Set(inheritedLocalNames);
289
+ for (const statement of block.body) collectStatementLocalNames(statement, localNames);
290
+ return localNames;
291
+ }
292
+ function collectSwitchCaseBlockLocalNames(switchStatement, inheritedLocalNames) {
293
+ const localNames = new Set(inheritedLocalNames);
294
+ for (const clause of switchStatement.cases) for (const statement of clause.consequent) collectStatementLocalNames(statement, localNames);
295
+ return localNames;
296
+ }
297
+ function collectStatementLocalNames(statement, localNames) {
298
+ if (statement.type === "VariableDeclaration") {
299
+ for (const declaration of statement.declarations) collectBindingNames(declaration.id, localNames);
300
+ return;
301
+ }
302
+ if (isFunctionDeclaration(statement) && statement.id !== null) {
303
+ localNames.add(statement.id.name);
304
+ return;
305
+ }
306
+ if (isClassDeclaration(statement) && statement.id !== null) localNames.add(statement.id.name);
307
+ }
308
+ function collectForInitializerNames(initializer, localNames) {
309
+ if (initializer.type === "VariableDeclaration") for (const declaration of initializer.declarations) collectBindingNames(declaration.id, localNames);
310
+ }
311
+ function collectParameterNames(parameter, localNames) {
312
+ if (parameter.type === "TSParameterProperty") {
313
+ collectParameterNames(parameter.parameter, localNames);
314
+ return;
315
+ }
316
+ if (parameter.type === "RestElement") {
317
+ collectBindingNames(parameter.argument, localNames);
318
+ return;
319
+ }
320
+ collectBindingNames(parameter, localNames);
321
+ }
322
+ function collectBindingNames(name, localNames) {
323
+ if (name.type === "Identifier") {
324
+ localNames.add(name.name);
325
+ return;
326
+ }
327
+ if (name.type === "RestElement") {
328
+ collectBindingNames(name.argument, localNames);
329
+ return;
330
+ }
331
+ if (name.type === "AssignmentPattern") {
332
+ collectBindingNames(name.left, localNames);
333
+ return;
334
+ }
335
+ if (name.type === "ObjectPattern") {
336
+ for (const property of name.properties) {
337
+ if (property.type === "RestElement") {
338
+ collectBindingNames(property.argument, localNames);
339
+ continue;
340
+ }
341
+ collectBindingNames(property.value, localNames);
342
+ }
343
+ return;
344
+ }
345
+ for (const element of name.elements) if (element !== null) collectBindingNames(element, localNames);
346
+ }
347
+ function parameterName(parameter) {
348
+ if (parameter.type === "Identifier") return parameter.name;
349
+ }
350
+ function isIdentifier(node) {
351
+ return node.type === "Identifier";
352
+ }
353
+ function isFunctionDeclaration(node) {
354
+ return node.type === "FunctionDeclaration";
355
+ }
356
+ function isClassDeclaration(node) {
357
+ return node.type === "ClassDeclaration";
358
+ }
359
+ function isFunctionLike(node) {
360
+ return node.type === "FunctionDeclaration" || node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
361
+ }
362
+ function isArrowOrFunctionExpression(node) {
363
+ return node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
364
+ }
365
+ function isBlockStatement(node) {
366
+ return node.type === "BlockStatement";
367
+ }
368
+ function isCallExpression(node) {
369
+ return node.type === "CallExpression";
370
+ }
371
+ function uniqueName(base, usedNames) {
372
+ let name = base;
373
+ let index = 1;
374
+ const used = new Set(usedNames);
375
+ while (used.has(name)) {
376
+ name = `${base}_${index}`;
377
+ index++;
378
+ }
379
+ return name;
380
+ }
381
+ function createRuntimeImportText(specifier = "@temelj/workflow") {
382
+ return [
383
+ "import {",
384
+ ` implementWorkflow as ${GENERATED_DEFINE_WORKFLOW_NAME},`,
385
+ ` defineWorkflowStep as ${GENERATED_DEFINE_WORKFLOW_STEP_NAME},`,
386
+ ` attachWorkflowDefinition as ${GENERATED_ATTACH_WORKFLOW_DEFINITION_NAME},`,
387
+ ` attachWorkflowStepDefinition as ${GENERATED_ATTACH_WORKFLOW_STEP_DEFINITION_NAME},`,
388
+ ` callWorkflowStepFunction as ${GENERATED_CALL_WORKFLOW_STEP_FUNCTION_NAME},`,
389
+ `} from ${JSON.stringify(specifier)};`
390
+ ].join("\n");
391
+ }
392
+ function relativeFile(id, root = process.cwd()) {
393
+ const cleanId = stripQuery(id);
394
+ const relative = path.relative(root, cleanId).replaceAll(path.sep, "/");
395
+ return relative.startsWith("..") ? path.basename(cleanId) : relative;
396
+ }
397
+ function sanitizeIdentifier(value) {
398
+ const sanitized = value.replaceAll(/\W/g, "_");
399
+ return /^\d/.test(sanitized) ? `_${sanitized}` : sanitized;
400
+ }
401
+ function directiveText(kind) {
402
+ return kind === "workflow" ? "use workflow" : "use step";
403
+ }
404
+ //#endregion
405
+ export { WorkflowTransformError, transformWorkflowSource };
@@ -0,0 +1,6 @@
1
+ import { DirectiveKind, TransformManifest, TransformManifestFunction, TransformManifestImportEdge, TransformMetadata, TransformMetadataEntry, TransformOptions, TransformResult, VitePluginOptions, WorkflowPluginOptions } from "./types/vite.mjs";
2
+ import { workflow, workflowPlugin } from "./vite/plugin.mjs";
3
+ import { GENERATED_PREFIX, makeGeneratedName } from "./vite/generated-name.mjs";
4
+ import { WorkflowTransformError } from "./vite/error.mjs";
5
+ import { transformWorkflowSource } from "./vite/transform.mjs";
6
+ export { type DirectiveKind, GENERATED_PREFIX, type TransformManifest, type TransformManifestFunction, type TransformManifestImportEdge, type TransformMetadata, type TransformMetadataEntry, type TransformOptions, type TransformResult, type VitePluginOptions, type WorkflowPluginOptions, WorkflowTransformError, makeGeneratedName, transformWorkflowSource, workflow, workflowPlugin };
package/dist/vite.mjs ADDED
@@ -0,0 +1,5 @@
1
+ import { WorkflowTransformError } from "./vite/error.mjs";
2
+ import { GENERATED_PREFIX, makeGeneratedName } from "./vite/generated-name.mjs";
3
+ import { transformWorkflowSource } from "./vite/transform.mjs";
4
+ import { workflow, workflowPlugin } from "./vite/plugin.mjs";
5
+ export { GENERATED_PREFIX, WorkflowTransformError, makeGeneratedName, transformWorkflowSource, workflow, workflowPlugin };
@@ -0,0 +1,16 @@
1
+ import { ParsedWorkflowWebhookToken, ResumeWebhookOptions } from "./types/hook.mjs";
2
+ //#region src/webhook.d.ts
3
+ /** Minimal grouped hook facade required by the webhook resume helper. */
4
+ interface WebhookResumer {
5
+ /** Grouped external resume hook operations. */
6
+ readonly hooks: {
7
+ /** Completes a pending webhook-labeled external resume hook. */
8
+ resumeWebhook(token: string, options?: ResumeWebhookOptions): Promise<void>;
9
+ };
10
+ }
11
+ /** Parses a workflow webhook resume token without resuming the hook. */
12
+ declare function parseWebhookToken(token: string): ParsedWorkflowWebhookToken;
13
+ /** Resumes a workflow webhook through a compatible webhook resumer. */
14
+ declare function resumeWebhook(resumer: WebhookResumer, token: string, options?: ResumeWebhookOptions): Promise<void>;
15
+ //#endregion
16
+ export { WebhookResumer, parseWebhookToken, resumeWebhook };
@@ -0,0 +1,17 @@
1
+ import { parseWebhookToken as parseWebhookToken$1 } from "./types/hook.mjs";
2
+ //#region src/webhook.ts
3
+ /** Parses a workflow webhook resume token without resuming the hook. */
4
+ function parseWebhookToken(token) {
5
+ const webhook = parseWebhookToken$1(token);
6
+ return {
7
+ runId: webhook.runId,
8
+ name: webhook.name,
9
+ messageId: webhook.messageId
10
+ };
11
+ }
12
+ /** Resumes a workflow webhook through a compatible webhook resumer. */
13
+ async function resumeWebhook(resumer, token, options = {}) {
14
+ await resumer.hooks.resumeWebhook(token, options);
15
+ }
16
+ //#endregion
17
+ export { parseWebhookToken, resumeWebhook };
@@ -0,0 +1,7 @@
1
+ import { WorkflowPluginOptions } from "./types/vite.mjs";
2
+ import { workflowPlugin } from "./vite/plugin.mjs";
3
+ //#region src/webpack.d.ts
4
+ /** Creates the webpack plugin that compiles workflow and step directives. */
5
+ declare const workflow: (options?: WorkflowPluginOptions | undefined) => import("webpack").WebpackPluginInstance;
6
+ //#endregion
7
+ export { type WorkflowPluginOptions, workflow, workflowPlugin };
@@ -0,0 +1,6 @@
1
+ import { workflowPlugin } from "./vite/plugin.mjs";
2
+ //#region src/webpack.ts
3
+ /** Creates the webpack plugin that compiles workflow and step directives. */
4
+ const workflow = workflowPlugin.webpack;
5
+ //#endregion
6
+ export { workflow, workflowPlugin };
@@ -0,0 +1,11 @@
1
+ import { WorkflowResolvedMissingImplementationRetryConfig } from "../types/retry.mjs";
2
+ import { WorkflowRunRecord } from "../types/run.mjs";
3
+ import { WorkflowErrorRecord } from "../types/error.mjs";
4
+ //#region src/worker/error.d.ts
5
+ declare const DEFAULT_MISSING_IMPLEMENTATION_RETRY_INTERVAL: Temporal.Duration;
6
+ declare function makeMissingImplementationNotFoundErrorRecord(run: WorkflowRunRecord): WorkflowErrorRecord;
7
+ declare function makeMissingImplementationDeadlineErrorRecord(run: WorkflowRunRecord, deadlineAt: Temporal.Instant): WorkflowErrorRecord;
8
+ declare function missingImplementationRetryDelay(retry: WorkflowResolvedMissingImplementationRetryConfig, retryAttempt: number): Temporal.Duration;
9
+ declare function toWorkflowWorkerErrorRecord(error: unknown): WorkflowErrorRecord;
10
+ //#endregion
11
+ export { DEFAULT_MISSING_IMPLEMENTATION_RETRY_INTERVAL, makeMissingImplementationDeadlineErrorRecord, makeMissingImplementationNotFoundErrorRecord, missingImplementationRetryDelay, toWorkflowWorkerErrorRecord };
@@ -0,0 +1,40 @@
1
+ import { WorkflowOptionsError } from "../errors/base.mjs";
2
+ import { WorkflowRunDeadlineExceededError } from "../errors/run.mjs";
3
+ import { durationTotal, isPositiveSafeInteger, safeDuration } from "../utility.mjs";
4
+ import { WorkflowImplementationNotFoundError } from "../errors/implementation.mjs";
5
+ //#region src/worker/error.ts
6
+ const DEFAULT_MISSING_IMPLEMENTATION_RETRY_INTERVAL = Temporal.Duration.from({ seconds: 30 });
7
+ function makeMissingImplementationNotFoundErrorRecord(run) {
8
+ return toWorkflowWorkerErrorRecord(WorkflowImplementationNotFoundError.create(run.workflowName, run.workflowVersion));
9
+ }
10
+ function makeMissingImplementationDeadlineErrorRecord(run, deadlineAt) {
11
+ return toWorkflowWorkerErrorRecord(WorkflowRunDeadlineExceededError.create(run.id, deadlineAt));
12
+ }
13
+ function missingImplementationRetryDelay(retry, retryAttempt) {
14
+ if (!isPositiveSafeInteger(retryAttempt)) WorkflowOptionsError.missingImplementationRetryAttemptPositiveSafeInteger();
15
+ const exponentialDelay = durationTotal(retry.initialInterval) * retry.backoffCoefficient ** Math.max(0, retryAttempt - 1);
16
+ const delay = retry.maximumInterval === void 0 ? exponentialDelay : Math.min(exponentialDelay, durationTotal(retry.maximumInterval));
17
+ safeDuration(delay, "Workflow missing implementation retry delay");
18
+ return Temporal.Duration.from({ milliseconds: delay });
19
+ }
20
+ function toWorkflowWorkerErrorRecord(error) {
21
+ if (!(error instanceof Error)) return {
22
+ name: "WorkflowNonErrorThrow",
23
+ message: String(error)
24
+ };
25
+ return {
26
+ name: error.name,
27
+ message: error.message,
28
+ ...error.stack === void 0 ? {} : { stack: error.stack },
29
+ ...error instanceof WorkflowRunDeadlineExceededError ? { details: {
30
+ runId: error.runId,
31
+ deadlineAt: error.deadlineAt.toString()
32
+ } } : {},
33
+ ...error instanceof WorkflowImplementationNotFoundError ? { details: {
34
+ workflowName: error.workflowName,
35
+ ...error.workflowVersion === void 0 ? {} : { workflowVersion: error.workflowVersion }
36
+ } } : {}
37
+ };
38
+ }
39
+ //#endregion
40
+ export { DEFAULT_MISSING_IMPLEMENTATION_RETRY_INTERVAL, makeMissingImplementationDeadlineErrorRecord, makeMissingImplementationNotFoundErrorRecord, missingImplementationRetryDelay, toWorkflowWorkerErrorRecord };
@@ -0,0 +1,18 @@
1
+ import { RunId } from "./types/run-id.mjs";
2
+ import { ExecutionResult } from "./types/result.mjs";
3
+ import { WorkflowRunRecord } from "./types/run.mjs";
4
+ import { CreateWorkflowWorkerOptions, WorkflowWorker as WorkflowWorker$1, WorkflowWorkerLeaseOptions, WorkflowWorkerRunFilterOptions, WorkflowWorkerRunOptions, WorkflowWorkerRunResult } from "./types/worker.mjs";
5
+ //#region src/worker.d.ts
6
+ /** Storage-backed workflow worker implementation. */
7
+ declare class WorkflowWorker implements WorkflowWorker$1 {
8
+ #private;
9
+ constructor(options: CreateWorkflowWorkerOptions);
10
+ processRun(runId: RunId): Promise<ExecutionResult<unknown>>;
11
+ processNextRun(options?: WorkflowWorkerRunFilterOptions): Promise<ExecutionResult<unknown> | undefined>;
12
+ extendLease(runId: RunId, options?: WorkflowWorkerLeaseOptions): Promise<WorkflowRunRecord | undefined>;
13
+ releaseLease(runId: RunId, options?: WorkflowWorkerLeaseOptions): Promise<WorkflowRunRecord | undefined>;
14
+ run(options?: WorkflowWorkerRunOptions): Promise<WorkflowWorkerRunResult>;
15
+ stop(): Promise<void>;
16
+ }
17
+ //#endregion
18
+ export { WorkflowWorker };