awaitly 1.35.0 → 2.0.0

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 (241) hide show
  1. package/dist/{duration.d.ts → di-BDlT7InM.d.cts} +15 -1
  2. package/dist/{duration.d.cts → di-BbFFfO8y.d.ts} +15 -1
  3. package/dist/errors-DtXvrCiO.d.cts +708 -0
  4. package/dist/errors-DtXvrCiO.d.ts +708 -0
  5. package/dist/index.cjs +4594 -1
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.cts +1970 -141
  8. package/dist/index.d.ts +1970 -141
  9. package/dist/index.js +4398 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/result.cjs +641 -1
  12. package/dist/result.cjs.map +1 -1
  13. package/dist/result.d.cts +29 -4
  14. package/dist/result.d.ts +29 -4
  15. package/dist/result.js +561 -1
  16. package/dist/result.js.map +1 -1
  17. package/dist/testing.cjs +4202 -8
  18. package/dist/testing.cjs.map +1 -1
  19. package/dist/testing.d.cts +2 -6
  20. package/dist/testing.d.ts +2 -6
  21. package/dist/testing.js +4154 -8
  22. package/dist/testing.js.map +1 -1
  23. package/dist/{run-entry-DGs0tySr.d.cts → types-B8NfNRGX.d.ts} +1078 -1502
  24. package/dist/{run-entry-BOuNyVoO.d.ts → types-BZ2f4MRR.d.cts} +1078 -1502
  25. package/dist/workflow.cjs +7096 -6
  26. package/dist/workflow.cjs.map +1 -1
  27. package/dist/workflow.d.cts +3346 -22
  28. package/dist/workflow.d.ts +3346 -22
  29. package/dist/workflow.js +6929 -6
  30. package/dist/workflow.js.map +1 -1
  31. package/package.json +3 -168
  32. package/dist/adapters.cjs +0 -7
  33. package/dist/adapters.cjs.map +0 -1
  34. package/dist/adapters.d.cts +0 -179
  35. package/dist/adapters.d.ts +0 -179
  36. package/dist/adapters.js +0 -7
  37. package/dist/adapters.js.map +0 -1
  38. package/dist/batch.cjs +0 -7
  39. package/dist/batch.cjs.map +0 -1
  40. package/dist/batch.d.cts +0 -200
  41. package/dist/batch.d.ts +0 -200
  42. package/dist/batch.js +0 -7
  43. package/dist/batch.js.map +0 -1
  44. package/dist/bind-deps.cjs +0 -2
  45. package/dist/bind-deps.cjs.map +0 -1
  46. package/dist/bind-deps.d.cts +0 -28
  47. package/dist/bind-deps.d.ts +0 -28
  48. package/dist/bind-deps.js +0 -2
  49. package/dist/bind-deps.js.map +0 -1
  50. package/dist/cache.cjs +0 -2
  51. package/dist/cache.cjs.map +0 -1
  52. package/dist/cache.d.cts +0 -269
  53. package/dist/cache.d.ts +0 -269
  54. package/dist/cache.js +0 -2
  55. package/dist/cache.js.map +0 -1
  56. package/dist/circuit-breaker.cjs +0 -7
  57. package/dist/circuit-breaker.cjs.map +0 -1
  58. package/dist/circuit-breaker.d.cts +0 -211
  59. package/dist/circuit-breaker.d.ts +0 -211
  60. package/dist/circuit-breaker.js +0 -7
  61. package/dist/circuit-breaker.js.map +0 -1
  62. package/dist/conditional.cjs +0 -2
  63. package/dist/conditional.cjs.map +0 -1
  64. package/dist/conditional.d.cts +0 -252
  65. package/dist/conditional.d.ts +0 -252
  66. package/dist/conditional.js +0 -2
  67. package/dist/conditional.js.map +0 -1
  68. package/dist/core.cjs +0 -7
  69. package/dist/core.cjs.map +0 -1
  70. package/dist/core.d.cts +0 -5
  71. package/dist/core.d.ts +0 -5
  72. package/dist/core.js +0 -7
  73. package/dist/core.js.map +0 -1
  74. package/dist/di-By77n4Fa.d.ts +0 -15
  75. package/dist/di-OJfsohf-.d.cts +0 -15
  76. package/dist/diagnostics.cjs +0 -8
  77. package/dist/diagnostics.cjs.map +0 -1
  78. package/dist/diagnostics.d.cts +0 -68
  79. package/dist/diagnostics.d.ts +0 -68
  80. package/dist/diagnostics.js +0 -8
  81. package/dist/diagnostics.js.map +0 -1
  82. package/dist/durable.cjs +0 -11
  83. package/dist/durable.cjs.map +0 -1
  84. package/dist/durable.d.cts +0 -9
  85. package/dist/durable.d.ts +0 -9
  86. package/dist/durable.js +0 -11
  87. package/dist/durable.js.map +0 -1
  88. package/dist/duration.cjs +0 -2
  89. package/dist/duration.cjs.map +0 -1
  90. package/dist/duration.js +0 -2
  91. package/dist/duration.js.map +0 -1
  92. package/dist/engine.cjs +0 -11
  93. package/dist/engine.cjs.map +0 -1
  94. package/dist/engine.d.cts +0 -115
  95. package/dist/engine.d.ts +0 -115
  96. package/dist/engine.js +0 -11
  97. package/dist/engine.js.map +0 -1
  98. package/dist/errors.cjs +0 -2
  99. package/dist/errors.cjs.map +0 -1
  100. package/dist/errors.d.cts +0 -361
  101. package/dist/errors.d.ts +0 -361
  102. package/dist/errors.js +0 -2
  103. package/dist/errors.js.map +0 -1
  104. package/dist/fetch.cjs +0 -7
  105. package/dist/fetch.cjs.map +0 -1
  106. package/dist/fetch.d.cts +0 -86
  107. package/dist/fetch.d.ts +0 -86
  108. package/dist/fetch.js +0 -7
  109. package/dist/fetch.js.map +0 -1
  110. package/dist/flow.cjs +0 -7
  111. package/dist/flow.cjs.map +0 -1
  112. package/dist/flow.d.cts +0 -163
  113. package/dist/flow.d.ts +0 -163
  114. package/dist/flow.js +0 -7
  115. package/dist/flow.js.map +0 -1
  116. package/dist/functional.cjs +0 -2
  117. package/dist/functional.cjs.map +0 -1
  118. package/dist/functional.d.cts +0 -444
  119. package/dist/functional.d.ts +0 -444
  120. package/dist/functional.js +0 -2
  121. package/dist/functional.js.map +0 -1
  122. package/dist/guards-4sV7mTqj.d.cts +0 -72
  123. package/dist/guards-BIX05ALH.d.ts +0 -72
  124. package/dist/hitl-DFn4Xa_l.d.cts +0 -468
  125. package/dist/hitl-DU5VpKq7.d.ts +0 -468
  126. package/dist/hitl.cjs +0 -7
  127. package/dist/hitl.cjs.map +0 -1
  128. package/dist/hitl.d.cts +0 -442
  129. package/dist/hitl.d.ts +0 -442
  130. package/dist/hitl.js +0 -7
  131. package/dist/hitl.js.map +0 -1
  132. package/dist/index-CnvBryQB.d.ts +0 -417
  133. package/dist/index-DEZEf8Fs.d.cts +0 -417
  134. package/dist/match-entry-DjI2bLpD.d.cts +0 -209
  135. package/dist/match-entry-DjI2bLpD.d.ts +0 -209
  136. package/dist/match.cjs +0 -2
  137. package/dist/match.cjs.map +0 -1
  138. package/dist/match.d.cts +0 -1
  139. package/dist/match.d.ts +0 -1
  140. package/dist/match.js +0 -2
  141. package/dist/match.js.map +0 -1
  142. package/dist/otel.cjs +0 -2
  143. package/dist/otel.cjs.map +0 -1
  144. package/dist/otel.d.cts +0 -188
  145. package/dist/otel.d.ts +0 -188
  146. package/dist/otel.js +0 -2
  147. package/dist/otel.js.map +0 -1
  148. package/dist/persistence-entry-B-8PjnSR.d.cts +0 -831
  149. package/dist/persistence-entry-D8zRkLiT.d.ts +0 -831
  150. package/dist/persistence.cjs +0 -2
  151. package/dist/persistence.cjs.map +0 -1
  152. package/dist/persistence.d.cts +0 -7
  153. package/dist/persistence.d.ts +0 -7
  154. package/dist/persistence.js +0 -2
  155. package/dist/persistence.js.map +0 -1
  156. package/dist/policies.cjs +0 -2
  157. package/dist/policies.cjs.map +0 -1
  158. package/dist/policies.d.cts +0 -379
  159. package/dist/policies.d.ts +0 -379
  160. package/dist/policies.js +0 -2
  161. package/dist/policies.js.map +0 -1
  162. package/dist/ratelimit.cjs +0 -7
  163. package/dist/ratelimit.cjs.map +0 -1
  164. package/dist/ratelimit.d.cts +0 -458
  165. package/dist/ratelimit.d.ts +0 -458
  166. package/dist/ratelimit.js +0 -7
  167. package/dist/ratelimit.js.map +0 -1
  168. package/dist/reliability.cjs +0 -11
  169. package/dist/reliability.cjs.map +0 -1
  170. package/dist/reliability.d.cts +0 -11
  171. package/dist/reliability.d.ts +0 -11
  172. package/dist/reliability.js +0 -11
  173. package/dist/reliability.js.map +0 -1
  174. package/dist/resolver.cjs +0 -7
  175. package/dist/resolver.cjs.map +0 -1
  176. package/dist/resolver.d.cts +0 -68
  177. package/dist/resolver.d.ts +0 -68
  178. package/dist/resolver.js +0 -7
  179. package/dist/resolver.js.map +0 -1
  180. package/dist/resource.cjs +0 -7
  181. package/dist/resource.cjs.map +0 -1
  182. package/dist/resource.d.cts +0 -174
  183. package/dist/resource.d.ts +0 -174
  184. package/dist/resource.js +0 -7
  185. package/dist/resource.js.map +0 -1
  186. package/dist/result/retry.cjs +0 -2
  187. package/dist/result/retry.cjs.map +0 -1
  188. package/dist/result/retry.d.cts +0 -70
  189. package/dist/result/retry.d.ts +0 -70
  190. package/dist/result/retry.js +0 -2
  191. package/dist/result/retry.js.map +0 -1
  192. package/dist/retry.cjs +0 -2
  193. package/dist/retry.cjs.map +0 -1
  194. package/dist/retry.d.cts +0 -388
  195. package/dist/retry.d.ts +0 -388
  196. package/dist/retry.js +0 -2
  197. package/dist/retry.js.map +0 -1
  198. package/dist/run.cjs +0 -7
  199. package/dist/run.cjs.map +0 -1
  200. package/dist/run.d.cts +0 -4
  201. package/dist/run.d.ts +0 -4
  202. package/dist/run.js +0 -7
  203. package/dist/run.js.map +0 -1
  204. package/dist/saga.cjs +0 -11
  205. package/dist/saga.cjs.map +0 -1
  206. package/dist/saga.d.cts +0 -164
  207. package/dist/saga.d.ts +0 -164
  208. package/dist/saga.js +0 -11
  209. package/dist/saga.js.map +0 -1
  210. package/dist/singleflight.cjs +0 -2
  211. package/dist/singleflight.cjs.map +0 -1
  212. package/dist/singleflight.d.cts +0 -145
  213. package/dist/singleflight.d.ts +0 -145
  214. package/dist/singleflight.js +0 -2
  215. package/dist/singleflight.js.map +0 -1
  216. package/dist/slugs.cjs +0 -2
  217. package/dist/slugs.cjs.map +0 -1
  218. package/dist/slugs.d.cts +0 -67
  219. package/dist/slugs.d.ts +0 -67
  220. package/dist/slugs.js +0 -2
  221. package/dist/slugs.js.map +0 -1
  222. package/dist/streaming.cjs +0 -9
  223. package/dist/streaming.cjs.map +0 -1
  224. package/dist/streaming.d.cts +0 -596
  225. package/dist/streaming.d.ts +0 -596
  226. package/dist/streaming.js +0 -9
  227. package/dist/streaming.js.map +0 -1
  228. package/dist/tagged-error.cjs +0 -2
  229. package/dist/tagged-error.cjs.map +0 -1
  230. package/dist/tagged-error.d.cts +0 -275
  231. package/dist/tagged-error.d.ts +0 -275
  232. package/dist/tagged-error.js +0 -2
  233. package/dist/tagged-error.js.map +0 -1
  234. package/dist/types-BziYHFkD.d.ts +0 -323
  235. package/dist/types-C5jLEUqY.d.cts +0 -323
  236. package/dist/webhook.cjs +0 -7
  237. package/dist/webhook.cjs.map +0 -1
  238. package/dist/webhook.d.cts +0 -499
  239. package/dist/webhook.d.ts +0 -499
  240. package/dist/webhook.js +0 -7
  241. package/dist/webhook.js.map +0 -1
package/dist/run.d.cts DELETED
@@ -1,4 +0,0 @@
1
- export { ah as BackoffStrategy, ai as BoundSteps, aw as EARLY_EXIT_SYMBOL, ax as EarlyExit, h as ErrorsOf, ag as RetryOptions, ak as RunOptions, al as RunOptionsWithCatch, am as RunOptionsWithoutCatch, af as RunStep, an as STEP_TIMEOUT_MARKER, ao as ScopeType, av as StepFailureMeta, aj as StepOptions, ap as StepTimeoutError, aq as StepTimeoutMarkerMeta, ar as TimeoutOptions, ae as WorkflowEvent, ay as createEarlyExit, as as getStepTimeoutMeta, az as isEarlyExit, at as isStepTimeoutError, au as run } from './run-entry-DGs0tySr.cjs';
2
- import './errors.cjs';
3
- import './tagged-error.cjs';
4
- import './slugs.cjs';
package/dist/run.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export { ah as BackoffStrategy, ai as BoundSteps, aw as EARLY_EXIT_SYMBOL, ax as EarlyExit, h as ErrorsOf, ag as RetryOptions, ak as RunOptions, al as RunOptionsWithCatch, am as RunOptionsWithoutCatch, af as RunStep, an as STEP_TIMEOUT_MARKER, ao as ScopeType, av as StepFailureMeta, aj as StepOptions, ap as StepTimeoutError, aq as StepTimeoutMarkerMeta, ar as TimeoutOptions, ae as WorkflowEvent, ay as createEarlyExit, as as getStepTimeoutMeta, az as isEarlyExit, at as isStepTimeoutError, au as run } from './run-entry-BOuNyVoO.js';
2
- import './errors.js';
3
- import './tagged-error.js';
4
- import './slugs.js';
package/dist/run.js DELETED
@@ -1,7 +0,0 @@
1
- var Fe={"step-require-id":"step-require-id","step-no-immediate-execution":"step-no-immediate-execution","step-require-thunk-for-key":"step-require-thunk-for-key","step-no-bare-await":"step-no-bare-await","step-no-try-catch-wrap":"step-no-try-catch-wrap","step-stable-cache-keys":"step-stable-cache-keys","workflow-no-floating":"workflow-no-floating","workflow-options-position":"workflow-options-position","workflow-callback-shape":"workflow-callback-shape","workflow-no-callable-form":"workflow-no-callable-form","workflow-no-dynamic-import":"workflow-no-dynamic-import","result-no-floating":"result-no-floating","result-require-handling":"result-require-handling","result-no-double-wrap":"result-no-double-wrap","result-no-manual-propagation":"result-no-manual-propagation","result-no-direct-ok-err":"result-no-direct-ok-err","error-check-unexpected-first":"error-check-unexpected-first","error-access-cause":"error-access-cause","error-normalize":"error-normalize","error-no-throw-in-deps":"error-no-throw-in-deps","concurrency-no-promise-all":"concurrency-no-promise-all","concurrency-no-promise-race":"concurrency-no-promise-race","concurrency-no-promise-allsettled":"concurrency-no-promise-allsettled","runtime-step-timeout":"runtime-step-timeout","runtime-step-aborted":"runtime-step-aborted","runtime-retry-exhausted":"runtime-retry-exhausted","runtime-rate-limit":"runtime-rate-limit","runtime-circuit-open":"runtime-circuit-open","runtime-unexpected":"runtime-unexpected","runtime-resolver-not-found":"runtime-resolver-not-found","runtime-saga-compensation":"runtime-saga-compensation"};function Te(n){return`https://jagreehal.github.io/awaitly/rules/#${n}`}var Ze=Object.keys(Fe);var ne=class extends Error{_tag};function K(n,r){return class extends ne{_tag=n;constructor(y,b){let P=r?.message?r.message(y??{}):n;if(super(P),this.name=n,r?.slug!==void 0){if(!r.hint)throw new TypeError(`TaggedError: 'hint' is required when 'slug' is set (slug: "${r.slug}")`);Object.defineProperty(this,"code",{value:r.slug,enumerable:!0,writable:!1,configurable:!1}),Object.defineProperty(this,"hint",{value:r.hint,enumerable:!0,writable:!1,configurable:!1}),Object.defineProperty(this,"docsUrl",{value:Te(r.slug),enumerable:!0,writable:!1,configurable:!1})}if(Object.setPrototypeOf(this,new.target.prototype),y&&typeof y=="object"){let p;if(r?.slug!==void 0){let{_tag:N,name:v,message:U,stack:s,code:j,hint:B,docsUrl:fe,...re}=y;p=re}else{let{_tag:N,name:v,message:U,stack:s,...j}=y;p=j}let k=Object.prototype.hasOwnProperty.call(p,"cause"),S=k?p.cause:void 0;k&&delete p.cause;let M=b?.cause!==void 0;if(k&&M)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,p),k&&(this.cause=S),M&&(this.cause=b?.cause)}else b?.cause!==void 0&&(this.cause=b.cause)}}}Object.defineProperty(K,Symbol.hasInstance,{value:n=>n instanceof ne});(P=>{function n(p){return p instanceof Error}P.isError=n;function r(p){return p instanceof ne}P.isTaggedError=r;function y(p,k){let S=p._tag,M=k[S];return M(p)}P.match=y;function b(p,k,S){let M=p._tag,N=k[M];return N?N(p):S(p)}P.matchPartial=b})(K||={});var ke=class extends K("TimeoutError",{slug:"runtime-step-timeout",hint:"Increase the step's timeout option, or check why the upstream operation is slow.",message:r=>r.operation?`TimeoutError: ${r.operation} timed out after ${r.ms}ms`:`TimeoutError: Operation timed out after ${r.ms}ms`}){},Re=class extends K("RetryExhaustedError",{slug:"runtime-retry-exhausted",hint:"All retry attempts failed. Inspect lastError and decide whether to surface it or compensate.",message:r=>r.operation?`RetryExhaustedError: ${r.operation} failed after ${r.attempts} attempts`:`RetryExhaustedError: Operation failed after ${r.attempts} attempts`}){},ge=class extends K("RateLimitError",{slug:"runtime-rate-limit",hint:"Wait retryAfterMs before retrying, or apply step.cache to deduplicate calls.",message:r=>r.limiterName?`RateLimitError: Rate limit exceeded for ${r.limiterName}${r.retryAfterMs?`, retry after ${r.retryAfterMs}ms`:""}`:`RateLimitError: Rate limit exceeded${r.retryAfterMs?`, retry after ${r.retryAfterMs}ms`:""}`}){},xe=class extends K("CircuitBreakerOpenError",{slug:"runtime-circuit-open",hint:"The circuit is open. Wait for it to half-open or fall back to a degraded path.",message:r=>`CircuitBreakerOpenError: Circuit ${r.circuitName} is ${r.state??"OPEN"}${r.retryAfterMs?`, retry after ${Math.ceil(r.retryAfterMs/1e3)}s`:""}`}){},Ce=class extends K("ValidationError",{message:r=>`ValidationError: Invalid ${r.field} - ${r.reason}`}){},he=class extends K("NotFoundError",{message:r=>r.id?`NotFoundError: ${r.resource} with id ${r.id} not found`:`NotFoundError: ${r.resource} not found`}){},be=class extends K("UnauthorizedError",{message:r=>r.reason?`UnauthorizedError: ${r.reason}`:r.action&&r.resource?`UnauthorizedError: Not authorized to ${r.action} ${r.resource}`:"UnauthorizedError: Access denied"}){},Ae=class extends K("NetworkError",{message:r=>r.url?`NetworkError: ${r.reason} (${r.url})`:`NetworkError: ${r.reason}`}){},Se=class extends K("CompensationError",{slug:"runtime-saga-compensation",hint:"A saga compensation step failed. Inspect compensationError and ensure compensation is idempotent.",message:r=>`CompensationError: Failed to compensate step ${r.step}`}){},se=class extends K("UnexpectedError",{slug:"runtime-unexpected",hint:"An unexpected exception escaped a step. Inspect cause; consider returning a typed Result instead of throwing.",message:r=>`UnexpectedError: ${r.cause instanceof Error?r.cause.message:String(r.cause??"unknown")}`}){};function Pe(n){return{ok:!0,value:n}}var Be=n=>typeof n=="object"&&n!==null&&"ok"in n&&typeof n.ok=="boolean"&&(n.ok?"value"in n:"error"in n),ve=(n,r)=>{let y={},b=new Map;for(let P of Object.keys(n)){let p=n[P];typeof p=="function"&&(y[P]=(...k)=>{let S=(b.get(P)??0)+1;b.set(P,S);let M=S===1?P:`${P}#${S}`;return r(M,async()=>{let N=await p(...k);return Be(N)?N:Pe(N)})})}return y};function Le(n){let r=n.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!r)return;let y=parseFloat(r[1]),b=r[2].toLowerCase();return{_tag:"Duration",millis:y*({ms:1,s:1e3,m:6e4,h:36e5,d:864e5}[b]??1)}}function Ve(n){return new se({cause:n})}function W(n){return{ok:!0,value:n}}function D(n,r){let y=r?.cause;return{ok:!1,error:n,...y!==void 0?{cause:y}:{}}}function We(n){if(n==null)return"unknown";if(typeof n=="string")return n.trim()||"unknown";if(typeof n=="object"){let r=n;if(typeof r._tag=="string"){let y=r._tag.trim();if(y)return y}if(typeof r.tag=="string"){let y=r.tag.trim();if(y)return y}if(typeof r.code=="string"){let y=r.code.trim();if(y)return y}else if(typeof r.code=="number")return String(r.code);if(n instanceof Error&&n.name){let y=n.name.trim();if(y)return y}}return"unknown"}function $e(n,r){if(!(!r||!n))return r[n]}function He(n){let{intent:r,domain:y,owner:b,tags:P,stateChanges:p,emits:k,calls:S}=n;if(!r&&!y&&!b&&!P?.length&&!p?.length&&!k?.length&&!S?.length)return;let M={};return r&&(M.intent=r),y&&(M.domain=y),b&&(M.owner=b),P?.length&&(M.tags=P),p?.length&&(M.stateChanges=p),k?.length&&(M.emits=k),S?.length&&(M.calls=S),M}function L(n,r,y,b,P){let p=We(n),k=$e(p,r),S={tag:p,origin:y};return k!==void 0&&(S.classification=k),b!==void 0&&(S.attempt=b),P!==void 0&&(S.cumulativeDurationMs=P),S}var Z=Symbol.for("step_timeout_marker");function ye(n){return typeof n!="object"||n===null?!1:n.type==="STEP_TIMEOUT"?!0:Z in n}function Me(n){if(!(typeof n!="object"||n===null)){if(n.type==="STEP_TIMEOUT"){let r=n;return{timeoutMs:r.timeoutMs,stepName:r.stepName,stepKey:r.stepKey,attempt:r.attempt}}if(Z in n)return n[Z]}}var we=Symbol("early-exit");function Ie(n,r){return{[we]:!0,error:n,meta:r}}function Ue(n){return typeof n=="object"&&n!==null&&n[we]===!0}var De=Symbol("mapper-exception");function Q(n){return{[De]:!0,thrown:n}}function qe(n){return typeof n=="object"&&n!==null&&n[De]===!0}function de(n,r){let{backoff:y,initialDelay:b,maxDelay:P,jitter:p}=r,k;switch(y){case"fixed":k=b;break;case"linear":k=b*n;break;case"exponential":k=b*Math.pow(2,n-1);break}if(k=Math.min(k,P),p){let S=k*.25*Math.random();k=k+S}return Math.floor(k)}function me(n){return new Promise(r=>setTimeout(r,n))}var Oe=Symbol("timeout"),ae=Symbol("timeout-option");function Ye(n){return typeof n=="object"&&n!==null&&n[ae]===!0}async function ze(n,r,y,b){let P=new AbortController,p=r.onTimeout??"error",k=()=>typeof p=="function"?p({name:y.name,key:y.key,ms:r.ms}):r.error??{type:"STEP_TIMEOUT",stepName:y.name,stepKey:y.key,timeoutMs:r.ms,attempt:y.attempt},S;b?.aborted&&P.abort(b.reason);let M;b&&!b.aborted&&(M=()=>P.abort(b.reason),b.addEventListener("abort",M,{once:!0}));let N=new Promise((U,s)=>{S=setTimeout(()=>{if(p!=="disconnect"&&P.abort(),p==="option"){s({[ae]:!0,ms:r.ms});return}s({[Oe]:!0,error:k()})},r.ms)}),v;r.signal?v=Promise.resolve(n(P.signal)):v=Promise.resolve(n());try{return await Promise.race([v,N])}catch(U){if(typeof U=="object"&&U!==null&&U[ae]===!0)throw{[ae]:!0,ms:r.ms};if(typeof U=="object"&&U!==null&&U[Oe]===!0){p==="disconnect"&&v.catch(()=>{});let s=U.error;if(typeof s=="object"&&s!==null&&s.type!=="STEP_TIMEOUT"){let j={timeoutMs:r.ms,stepName:y.name,stepKey:y.key,attempt:y.attempt};Z in s?s[Z]=j:Object.defineProperty(s,Z,{value:j,enumerable:!1,writable:!0,configurable:!1})}throw s}throw U}finally{clearTimeout(S),M&&b&&b.removeEventListener("abort",M)}}var ee={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,shouldRetry:()=>!0,onRetry:()=>{}};async function ue(n,r,y){if(typeof n!="function"){let l=n,F=r;if(typeof F!="function")throw new TypeError("[awaitly] run(deps, fn) requires a callback as the second argument. Example: run({ getUser }, async (s) => s.getUser(id))");return ue(({step:G})=>F(ve(l,G),{step:G}),y)}let b=n,P=r,{onError:p,onEvent:k,catchUnexpected:S,workflowId:M,workflowName:N,context:v,_workflowSignal:U}=P&&typeof P=="object"?P:{},s=M??crypto.randomUUID(),j=S??Ve,B=[],fe=0,re=l=>l??`step_${++fe}`,i=l=>{let F=l.context!==void 0||v===void 0?l:{...l,context:v},$=N!==void 0&&F.workflowName===void 0?{...F,workflowName:N}:F;if($.type==="step_success"){let G=$.stepId;for(let oe=B.length-1;oe>=0;oe--){let V=B[oe];if(V.type==="race"&&!V.winnerId){V.winnerId=G;break}}}k?.($,v)},I=Ie,J=l=>Ue(l),q=(l,F)=>l,Ke=l=>typeof l=="function"?!1:!!(l&&typeof l=="object"&&"ok"in l||l&&typeof l=="object"&&"then"in l&&typeof l.then=="function");try{let F=function(a){let E={};for(let[t,o]of Object.entries(a))if(typeof o=="function")E[t]=o;else if(o&&typeof o=="object"&&"fn"in o)E[t]=o.fn;else throw new TypeError(`step.all: operation "${t}" must be a function or { fn, errors? } object`);return E},$=function(a,E){let t=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let o=performance.now(),e=!1;B.push({scopeId:t,type:"parallel"});let u=()=>{if(e)return;e=!0;let c=B.findIndex(d=>d.scopeId===t);c!==-1&&B.splice(c,1),i({type:"scope_end",workflowId:s,scopeId:t,ts:Date.now(),durationMs:performance.now()-o})};i({type:"scope_start",workflowId:s,scopeId:t,scopeType:"parallel",name:a,ts:Date.now()});try{let c=await E();if(u(),!c.ok)throw p?.(c.error,a,v),I(c.error,{origin:"result",resultCause:c.cause});return c.value}catch(c){throw u(),c}})()},G=function(a,E){let t=Object.keys(a),o=E.name??`Parallel(${t.join(", ")})`,e=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let u=performance.now(),c=!1;B.push({scopeId:e,type:"parallel"});let d=()=>{if(c)return;c=!0;let m=B.findIndex(w=>w.scopeId===e);m!==-1&&B.splice(m,1),i({type:"scope_end",workflowId:s,scopeId:e,ts:Date.now(),durationMs:performance.now()-u})};i({type:"scope_start",workflowId:s,scopeId:e,scopeType:"parallel",name:o,ts:Date.now()});try{let m=await new Promise(T=>{if(t.length===0){T([]);return}let h=!1,_=t.length,R=new Array(t.length);for(let O=0;O<t.length;O++){let g=t[O],C=O;Promise.resolve(a[g]()).catch(x=>D({type:"PROMISE_REJECTED",cause:x},{cause:{type:"PROMISE_REJECTION",reason:x}})).then(x=>{if(!h){if(!x.ok){h=!0,T([{key:g,result:x}]);return}R[C]={key:g,result:x},_--,_===0&&T(R)}})}});d();let w={};for(let{key:T,result:h}of m){if(!h.ok)throw p?.(h.error,T,v),I(h.error,{origin:"result",resultCause:h.cause});w[T]=h.value}return w}catch(m){throw d(),m}})()};var Je=F,Ge=$,Xe=G;let l=(a,E,t)=>(async()=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step() requires an explicit string ID as the first argument. Example: step("fetchUser", () => fetchUser(id))');let o=t??{},e=He(o),u=a,c=o.key??a,d=o.key??a,{description:m,retry:w,timeout:T}=o,h=re(c),_=k,R=_?performance.now():0,g=Ke(E)?()=>E:E,x={attempts:Math.max(1,w?.attempts??1),backoff:w?.backoff??ee.backoff,initialDelay:w?.initialDelay??ee.initialDelay,maxDelay:w?.maxDelay??ee.maxDelay,jitter:w?.jitter??ee.jitter,shouldRetry:w?.shouldRetry??ee.shouldRetry,onRetry:w?.onRetry??ee.onRetry};k&&i({type:"step_start",workflowId:s,stepId:h,stepKey:c,name:u,description:m,ts:Date.now(),...e&&{metadata:e}});let X;for(let A=1;A<=x.attempts;A++){let Ne=_?performance.now():0;try{let f;if(T?f=await ze(g,T,{name:u,key:c,attempt:A},U):f=await g(),f.ok){let z=performance.now()-R;return i({type:"step_success",workflowId:s,stepId:h,stepKey:c,name:u,description:m,ts:Date.now(),durationMs:z,...e&&{metadata:e}}),d&&i({type:"step_complete",workflowId:s,stepKey:d,name:u,description:m,ts:Date.now(),durationMs:z,result:f,...e&&{metadata:e}}),f.value}if(X=f,A<x.attempts&&x.shouldRetry(f.error,A)){let z=de(A,x);i({type:"step_retry",workflowId:s,stepId:h,stepKey:c,name:u,ts:Date.now(),attempt:A+1,maxAttempts:x.attempts,delayMs:z,error:f.error,...e&&{metadata:e},diagnostics:L(f.error,o.errorMeta,"result",A,performance.now()-R)}),x.onRetry(f.error,A,z),await me(z);continue}x.attempts>1&&i({type:"step_retries_exhausted",workflowId:s,stepId:h,stepKey:c,name:u,ts:Date.now(),durationMs:performance.now()-R,attempts:A,lastError:f.error,...e&&{metadata:e},diagnostics:L(f.error,o.errorMeta,"result",A,performance.now()-R)});break}catch(f){let z=performance.now()-Ne;if(Ye(f)){let H=f.ms;i({type:"step_timeout",workflowId:s,stepId:h,stepKey:c,name:u,ts:Date.now(),timeoutMs:H,attempt:A,...e&&{metadata:e},diagnostics:L(f,o.errorMeta,"timeout",A)}),i({type:"step_success",workflowId:s,stepId:h,stepKey:c,name:u,description:m,ts:Date.now(),durationMs:performance.now()-R,...e&&{metadata:e}}),d&&i({type:"step_complete",workflowId:s,stepKey:d,name:u,description:m,ts:Date.now(),durationMs:performance.now()-R,result:W(void 0),...e&&{metadata:e}});return}if(J(f))throw i({type:"step_aborted",workflowId:s,stepId:h,stepKey:c,name:u,description:m,ts:Date.now(),durationMs:z,...e&&{metadata:e}}),f;if(ye(f)){let H=Me(f),je=T?.ms??H?.timeoutMs??0;if(i({type:"step_timeout",workflowId:s,stepId:h,stepKey:c,name:u,ts:Date.now(),timeoutMs:je,attempt:A,...e&&{metadata:e},diagnostics:L(f,o.errorMeta,"timeout",A)}),A<x.attempts&&x.shouldRetry(f,A)){let Ee=de(A,x);i({type:"step_retry",workflowId:s,stepId:h,stepKey:c,name:u,ts:Date.now(),attempt:A+1,maxAttempts:x.attempts,delayMs:Ee,error:f,...e&&{metadata:e},diagnostics:L(f,o.errorMeta,"timeout",A,performance.now()-R)}),x.onRetry(f,A,Ee),await me(Ee);continue}x.attempts>1&&i({type:"step_retries_exhausted",workflowId:s,stepId:h,stepKey:c,name:u,ts:Date.now(),durationMs:performance.now()-R,attempts:A,lastError:f,...e&&{metadata:e},diagnostics:L(f,o.errorMeta,"timeout",A,performance.now()-R)});let pe=performance.now()-R;throw i({type:"step_error",workflowId:s,stepId:h,stepKey:c,name:u,description:m,ts:Date.now(),durationMs:pe,error:f,...e&&{metadata:e},diagnostics:L(f,o.errorMeta,"timeout",A,pe)}),d&&i({type:"step_complete",workflowId:s,stepKey:d,name:u,description:m,ts:Date.now(),durationMs:pe,result:D(f,{cause:f}),meta:{origin:"throw",thrown:f},...e&&{metadata:e}}),p?.(f,u,v),I(f,{origin:"throw",thrown:f})}if(A<x.attempts&&x.shouldRetry(f,A)){let H=de(A,x);i({type:"step_retry",workflowId:s,stepId:h,stepKey:c,name:u,ts:Date.now(),attempt:A+1,maxAttempts:x.attempts,delayMs:H,error:f,...e&&{metadata:e},diagnostics:L(f,o.errorMeta,"throw",A,performance.now()-R)}),x.onRetry(f,A,H),await me(H);continue}x.attempts>1&&!ye(f)&&i({type:"step_retries_exhausted",workflowId:s,stepId:h,stepKey:c,name:u,ts:Date.now(),durationMs:performance.now()-R,attempts:A,lastError:f,...e&&{metadata:e},diagnostics:L(f,o.errorMeta,"throw",A,performance.now()-R)});let le=performance.now()-R,te;try{te=j(f)}catch(H){throw Q(H)}throw i({type:"step_error",workflowId:s,stepId:h,stepKey:c,name:u,description:m,ts:Date.now(),durationMs:le,error:te,...e&&{metadata:e},diagnostics:L(f,o.errorMeta,"throw",A,le)}),d&&i({type:"step_complete",workflowId:s,stepKey:d,name:u,description:m,ts:Date.now(),durationMs:le,result:D(te,{cause:f}),meta:{origin:"throw",thrown:f},...e&&{metadata:e}}),p?.(te,u,v),I(te,{origin:"throw",thrown:f})}}let Y=X,ie=performance.now()-R,ce=q(Y.error,{origin:"result",resultCause:Y.cause});throw i({type:"step_error",workflowId:s,stepId:h,stepKey:c,name:u,description:m,ts:Date.now(),durationMs:ie,error:ce,...e&&{metadata:e},diagnostics:L(Y.error,o.errorMeta,"result",x.attempts,ie)}),d&&i({type:"step_complete",workflowId:s,stepKey:d,name:u,description:m,ts:Date.now(),durationMs:ie,result:Y,meta:{origin:"result",resultCause:Y.cause},...e&&{metadata:e}}),p?.(ce,u,v),I(ce,{origin:"result",resultCause:Y.cause})})();l.try=(a,E,t)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.try() requires an explicit string ID as the first argument. Example: step.try("parse", () => JSON.parse(str), { error: "PARSE_ERROR" })');let o="error"in t?()=>t.error:t.onError;if(t.retry||t.timeout)return l.retry(a,async()=>{try{return W(await E())}catch(m){return D(o(m),{cause:m})}},{attempts:t.retry?.attempts??1,...t.retry??{},key:t.key,timeout:t.timeout});let e=t.key??a,u=a,c=a,d=k;return(async()=>{let m=d?performance.now():0;k&&i({type:"step_start",workflowId:s,stepId:c,stepKey:e,name:u,ts:Date.now()});try{let w=await E(),T=performance.now()-m;return i({type:"step_success",workflowId:s,stepId:c,stepKey:e,name:u,ts:Date.now(),durationMs:T}),e&&i({type:"step_complete",workflowId:s,stepKey:e,name:u,ts:Date.now(),durationMs:T,result:W(w)}),w}catch(w){let T=o(w),h=performance.now()-m,_=q(T,{origin:"throw",thrown:w});throw i({type:"step_error",workflowId:s,stepId:c,stepKey:e,name:u,ts:Date.now(),durationMs:h,error:_}),e&&i({type:"step_complete",workflowId:s,stepKey:e,name:u,ts:Date.now(),durationMs:h,result:D(T,{cause:w}),meta:{origin:"throw",thrown:w}}),p?.(_,u,v),I(_,{origin:"throw",thrown:w})}})()},l.fromResult=(a,E,t)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.fromResult() requires an explicit string ID as the first argument. Example: step.fromResult("callProvider", () => callProvider(input), { onError: (e) => ({ type: "FAILED" }) })');let o=t.key??a,e=a,u=a,c="error"in t?()=>t.error:t.onError,d=k;return(async()=>{let m=d?performance.now():0;k&&i({type:"step_start",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now()});let w=await E();if(w.ok){let T=performance.now()-m;return i({type:"step_success",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:T}),o&&i({type:"step_complete",workflowId:s,stepKey:o,name:e,ts:Date.now(),durationMs:T,result:W(w.value)}),w.value}else{let T=c(w.error),h=performance.now()-m,_=q(T,{origin:"result",resultCause:w.error});throw i({type:"step_error",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:h,error:_}),o&&i({type:"step_complete",workflowId:s,stepKey:o,name:e,ts:Date.now(),durationMs:h,result:D(T,{cause:w.error}),meta:{origin:"result",resultCause:w.error}}),p?.(_,e,v),I(_,{origin:"result",resultCause:w.error})}})()},l.fromNullable=(a,E,t,o)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.fromNullable() requires an explicit string ID as the first argument. Example: step.fromNullable("getUser", () => db.find(id), () => ({ type: "NOT_FOUND" }))');return l(a,async()=>{let e=await E();return e!=null?W(e):D(t())},o)},l.retry=(a,E,t)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.retry() requires an explicit string ID as the first argument. Example: step.retry("fetchData", () => fetchData(), { attempts: 3 })');return l(a,E,{key:t.key??a,retry:{attempts:t.attempts,backoff:t.backoff,initialDelay:t.initialDelay,maxDelay:t.maxDelay,jitter:t.jitter,shouldRetry:t.shouldRetry,onRetry:t.onRetry},timeout:t.timeout})},l.withTimeout=(a,E,t)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.withTimeout() requires an explicit string ID as the first argument. Example: step.withTimeout("slowOp", () => slowOp(), { ms: 5000 })');return l(a,E,{key:t.key??a,timeout:t})},l.sleep=(a,E,t)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.sleep() requires an explicit string ID as the first argument. Example: step.sleep("delay", "5s")');let o=typeof E=="string"?Le(E):E;if(!o)throw new Error(`step.sleep: invalid duration '${E}'`);let e=o.millis,u=t?.signal;return l(a,async()=>{if(U?.aborted||u?.aborted){let c=new Error("Sleep aborted");throw c.name="AbortError",c}return new Promise((c,d)=>{let m={timeoutId:void 0},w=()=>{m.timeoutId&&clearTimeout(m.timeoutId);let T=new Error("Sleep aborted");T.name="AbortError",d(T)};U?.addEventListener("abort",w,{once:!0}),u?.addEventListener("abort",w,{once:!0}),m.timeoutId=setTimeout(()=>{U?.removeEventListener("abort",w),u?.removeEventListener("abort",w),c(W(void 0))},e)})},{key:t?.key??a,description:t?.description})},l.all=((...a)=>{if(typeof a[0]!="string")throw new TypeError("step.all(name, ...): first argument must be a string (step name). Example: step.all('Fetch data', { user: () => fetchUser(), posts: () => fetchPosts() })");let E=a[0],t=a[1];if(typeof t=="function")return $(E,t);if(t&&typeof t=="object"&&!Array.isArray(t)){let e=F(t);return G(e,{name:E})}throw new TypeError("step.all(name, ...): second argument must be a function (array form) or an object of operations (object form).")}),l.race=(a,E)=>{let t=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let o=performance.now(),e=!1,u={scopeId:t,type:"race",winnerId:void 0};B.push(u);let c=()=>{if(e)return;e=!0;let d=B.findIndex(m=>m.scopeId===t);d!==-1&&B.splice(d,1),i({type:"scope_end",workflowId:s,scopeId:t,ts:Date.now(),durationMs:performance.now()-o,winnerId:u.winnerId})};i({type:"scope_start",workflowId:s,scopeId:t,scopeType:"race",name:a,ts:Date.now()});try{let d=await E();if(c(),!d.ok)throw p?.(d.error,a,v),I(d.error,{origin:"result",resultCause:d.cause});return d.value}catch(d){throw c(),d}})()},l.if=(a,E,t)=>t(),l.label=l.if,l.branch=async(a,E)=>{let{condition:t,then:o,else:e}=E;if(t())return await o();if(e)return await e()},l.arm=(a,E)=>({fn:a,errors:E}),l.forEach=async(a,E,t)=>{let o=[],e=t.maxIterations,u=0,c="run"in t,d=Symbol.asyncIterator in E?E:(async function*(){yield*E})();for await(let m of d){if(e!==void 0&&u>=e)break;let w;c?w=await t.run(m,u):w=await t.item.handler(m,u,l),o.push(w),u++}return o},l.item=a=>({__forEachItemHandler:!0,handler:a}),l.dep=(a,E)=>E,l.workflow=(a,E,t)=>l(a,E,t),l.map=async(a,E,t,o)=>{let e=o?.concurrency??E.length;return l(a,()=>e>=E.length?_e(E.map((u,c)=>t(u,c))):(async()=>{let u=[];for(let c=0;c<E.length;c+=e){let d=E.slice(c,c+e),m=await _e(d.map((w,T)=>t(w,c+T)));if(!m.ok)return m;u.push(...m.value)}return W(u)})(),{key:o?.key})},l.withFallback=(a,E,t)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.withFallback() requires an explicit string ID as the first argument. Example: step.withFallback("getUser", () => fetchUser(id), { fallback: () => fetchFromCache(id) })');let o=t.key??a,e=a,u=re(o),c=k;return(async()=>{let d=c?performance.now():0;k&&i({type:"step_start",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now()});let m;try{m=await E()}catch(R){if(J(R))throw i({type:"step_aborted",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:performance.now()-d}),R;let O;try{O=j(R)}catch(C){throw Q(C)}if(t.on!==void 0&&t.on!==O){let C=performance.now()-d;throw i({type:"step_error",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:C,error:O}),o&&i({type:"step_complete",workflowId:s,stepKey:o,name:e,ts:Date.now(),durationMs:C,result:D(O,{cause:R}),meta:{origin:"throw",thrown:R}}),p?.(O,e,v),I(O,{origin:"throw",thrown:R})}let g;try{g=await t.fallback()}catch(C){if(J(C))throw i({type:"step_aborted",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:performance.now()-d}),C;let x;try{x=j(C)}catch(Y){throw Q(Y)}let X=performance.now()-d;throw i({type:"step_error",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:X,error:x}),o&&i({type:"step_complete",workflowId:s,stepKey:o,name:e,ts:Date.now(),durationMs:X,result:D(x,{cause:C}),meta:{origin:"throw",thrown:C}}),p?.(x,e,v),I(x,{origin:"throw",thrown:C})}if(g.ok){let C=performance.now()-d;return i({type:"step_success",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:C}),o&&i({type:"step_complete",workflowId:s,stepKey:o,name:e,ts:Date.now(),durationMs:C,result:g,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(O)}}),g.value}else{let C=performance.now()-d,x=q(g.error,{origin:"result",resultCause:g.cause});throw i({type:"step_error",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:C,error:x}),o&&i({type:"step_complete",workflowId:s,stepKey:o,name:e,ts:Date.now(),durationMs:C,result:g,meta:{origin:"result",resultCause:g.cause}}),p?.(x,e,v),I(x,{origin:"result",resultCause:g.cause})}}if(m.ok){let R=performance.now()-d;return i({type:"step_success",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:R}),o&&i({type:"step_complete",workflowId:s,stepKey:o,name:e,ts:Date.now(),durationMs:R,result:m}),m.value}let w=m.error;if(t.on!==void 0&&t.on!==w){let R=performance.now()-d,O=q(w,{origin:"result",resultCause:m.cause});throw i({type:"step_error",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:R,error:O}),o&&i({type:"step_complete",workflowId:s,stepKey:o,name:e,ts:Date.now(),durationMs:R,result:m,meta:{origin:"result",resultCause:m.cause}}),p?.(O,e,v),I(O,{origin:"result",resultCause:m.cause})}let T;try{T=await t.fallback()}catch(R){if(J(R))throw i({type:"step_aborted",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:performance.now()-d}),R;let O;try{O=j(R)}catch(C){throw Q(C)}let g=performance.now()-d;throw i({type:"step_error",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:g,error:O}),o&&i({type:"step_complete",workflowId:s,stepKey:o,name:e,ts:Date.now(),durationMs:g,result:D(O,{cause:R}),meta:{origin:"throw",thrown:R}}),p?.(O,e,v),I(O,{origin:"throw",thrown:R})}if(T.ok){let R=performance.now()-d;return i({type:"step_success",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:R}),o&&i({type:"step_complete",workflowId:s,stepKey:o,name:e,ts:Date.now(),durationMs:R,result:T,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(w)}}),T.value}let h=performance.now()-d,_=q(T.error,{origin:"result",resultCause:T.cause});throw i({type:"step_error",workflowId:s,stepId:u,stepKey:o,name:e,ts:Date.now(),durationMs:h,error:_}),o&&i({type:"step_complete",workflowId:s,stepKey:o,name:e,ts:Date.now(),durationMs:h,result:T,meta:{origin:"result",resultCause:T.cause}}),p?.(_,e,v),I(_,{origin:"result",resultCause:T.cause})})()},l.withResource=(a,E)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.withResource() requires an explicit string ID as the first argument. Example: step.withResource("useDb", { acquire: () => connect(), use: (db) => query(db), release: (db) => db.close() })');let t=a,o=a,e=re(t),u=k;return(async()=>{let c=u?performance.now():0;k&&i({type:"step_start",workflowId:s,stepId:e,stepKey:t,name:o,ts:Date.now()});let d;try{d=await E.acquire()}catch(g){if(J(g))throw i({type:"step_aborted",workflowId:s,stepId:e,stepKey:t,name:o,ts:Date.now(),durationMs:performance.now()-c}),g;let C;try{C=j(g)}catch(X){throw Q(X)}let x=performance.now()-c;throw i({type:"step_error",workflowId:s,stepId:e,stepKey:t,name:o,ts:Date.now(),durationMs:x,error:C}),t&&i({type:"step_complete",workflowId:s,stepKey:t,name:o,ts:Date.now(),durationMs:x,result:D(C,{cause:g}),meta:{origin:"throw",thrown:g}}),p?.(C,o,v),I(C,{origin:"throw",thrown:g})}if(!d.ok){let g=performance.now()-c,C=q(d.error,{origin:"result",resultCause:d.cause});throw i({type:"step_error",workflowId:s,stepId:e,stepKey:t,name:o,ts:Date.now(),durationMs:g,error:C}),t&&i({type:"step_complete",workflowId:s,stepKey:t,name:o,ts:Date.now(),durationMs:g,result:d,meta:{origin:"result",resultCause:d.cause}}),p?.(C,o,v),I(C,{origin:"result",resultCause:d.cause})}let m=d.value,w,T,h=!1;try{w=await E.use(m)}catch(g){if(J(g)){try{await E.release(m)}catch(C){console.warn(`[awaitly] step.withResource("${a}"): release threw after earlyExit:`,C)}throw g}T=g,h=!0}try{await E.release(m)}catch(g){console.warn(`[awaitly] step.withResource("${a}"): release threw:`,g)}if(h){let g;try{g=j(T)}catch(x){throw Q(x)}let C=performance.now()-c;throw i({type:"step_error",workflowId:s,stepId:e,stepKey:t,name:o,ts:Date.now(),durationMs:C,error:g}),t&&i({type:"step_complete",workflowId:s,stepKey:t,name:o,ts:Date.now(),durationMs:C,result:D(g,{cause:T}),meta:{origin:"throw",thrown:T}}),p?.(g,o,v),I(g,{origin:"throw",thrown:T})}let _=w;if(_.ok){let g=performance.now()-c;return i({type:"step_success",workflowId:s,stepId:e,stepKey:t,name:o,ts:Date.now(),durationMs:g}),t&&i({type:"step_complete",workflowId:s,stepKey:t,name:o,ts:Date.now(),durationMs:g,result:_}),_.value}let R=performance.now()-c,O=q(_.error,{origin:"result",resultCause:_.cause});throw i({type:"step_error",workflowId:s,stepId:e,stepKey:t,name:o,ts:Date.now(),durationMs:R,error:O}),t&&i({type:"step_complete",workflowId:s,stepKey:t,name:o,ts:Date.now(),durationMs:R,result:_,meta:{origin:"result",resultCause:_.cause}}),p?.(O,o,v),I(O,{origin:"result",resultCause:_.cause})})()};let V=await b({step:l});if(process.env.NODE_ENV!=="production"&&V!==null&&typeof V=="object"&&"ok"in V&&typeof V.ok=="boolean"){let a=V;(a.ok===!0&&"value"in a||a.ok===!1&&"error"in a)&&console.warn(`awaitly: Workflow executor returned a Result-like object. Return raw values, not ok() or err().
2
-
3
- Incorrect: return ok({ data });
4
- Correct: return { data };
5
-
6
- See: https://jagreehal.github.io/awaitly/guides/troubleshooting/#returning-ok-from-workflow-executor-double-wrapping`)}return W(V)}catch(l){if(qe(l))throw l.thrown;if(J(l)){let $=l.meta.origin==="throw"?l.meta.thrown:l.meta.origin==="result"?l.meta.resultCause:void 0;return D(l.error,{cause:$})}let F=j(l);return p?.(F,"unexpected",v),D(F,{cause:l})}}ue.strict=(n,r)=>ue(n,r);async function _e(n){return n.length===0?W([]):new Promise(r=>{let y=!1,b=n.length,P=new Array(n.length);for(let p=0;p<n.length;p++){let k=p;Promise.resolve(n[k]).catch(S=>D({type:"PROMISE_REJECTED",cause:S},{cause:{type:"PROMISE_REJECTION",reason:S}})).then(S=>{if(!y){if(!S.ok){y=!0,r(S);return}P[k]=S.value,b--,b===0&&r(W(P))}})}})}export{we as EARLY_EXIT_SYMBOL,Z as STEP_TIMEOUT_MARKER,Ie as createEarlyExit,Me as getStepTimeoutMeta,Ue as isEarlyExit,ye as isStepTimeoutError,ue as run};
7
- //# sourceMappingURL=run.js.map