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/core.cjs DELETED
@@ -1,7 +0,0 @@
1
- "use strict";var Te=Object.defineProperty;var Ht=Object.getOwnPropertyDescriptor;var Wt=Object.getOwnPropertyNames;var $t=Object.prototype.hasOwnProperty;var Yt=(e,t)=>{for(var r in t)Te(e,r,{get:t[r],enumerable:!0})},qt=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let m of Wt(t))!$t.call(e,m)&&m!==r&&Te(e,m,{get:()=>t[m],enumerable:!(i=Ht(t,m))||i.enumerable});return e};var zt=e=>qt(Te({},"__esModule",{value:!0}),e);var sr={};Yt(sr,{ALL_SLUGS:()=>Be,AWAITLY_CANCELLED:()=>rt,AWAITLY_SLUGS:()=>ue,AWAITLY_TIMEOUT:()=>nt,AWAITLY_UNEXPECTED:()=>tt,Match:()=>Ft,PROMISE_REJECTED:()=>et,TaggedError:()=>K,UnexpectedError:()=>Z,UnwrapError:()=>se,all:()=>Mt,allAsync:()=>ce,allSettled:()=>It,allSettledAsync:()=>Kt,andThen:()=>Rt,any:()=>Ut,anyAsync:()=>Nt,bimap:()=>At,err:()=>O,exhaustive:()=>_e,extractErrorTag:()=>he,extractStepMetadata:()=>Ae,from:()=>yt,fromNullable:()=>Tt,fromPromise:()=>wt,hydrate:()=>Oe,isAwaitlySlug:()=>Fe,isErr:()=>at,isOk:()=>st,isOneOf:()=>Ue,isSerializedResult:()=>_t,isTag:()=>De,isUnexpectedError:()=>xe,lookupErrorClassification:()=>be,map:()=>kt,mapError:()=>gt,mapErrorTry:()=>bt,mapTry:()=>ht,match:()=>Se,matchError:()=>Ce,matchOrElse:()=>Ee,matchTag:()=>Pe,matchTags:()=>ve,matchValue:()=>Ne,matchWhen:()=>Ie,ok:()=>I,orElse:()=>St,orElseAsync:()=>Ot,orElseValue:()=>Me,partition:()=>Dt,recover:()=>Pt,recoverAsync:()=>vt,runOrNull:()=>dt,runOrThrow:()=>pt,runOrThrowAsync:()=>Et,runOrUndefined:()=>mt,slugCategory:()=>je,slugDocsUrl:()=>ie,tags:()=>ot,tap:()=>xt,tapError:()=>Ct,tryAsync:()=>ft,unwrap:()=>pe,unwrapOr:()=>lt,unwrapOrElse:()=>ct});module.exports=zt(sr);var ue={"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 je(e){return e.split("-")[0]}function ie(e){return`https://jagreehal.github.io/awaitly/rules/#${e}`}function Fe(e){return Object.prototype.hasOwnProperty.call(ue,e)}var Be=Object.keys(ue);var oe=class extends Error{_tag};function K(e,t){return class extends oe{_tag=e;constructor(r,i){let m=t?.message?t.message(r??{}):e;if(super(m),this.name=e,t?.slug!==void 0){if(!t.hint)throw new TypeError(`TaggedError: 'hint' is required when 'slug' is set (slug: "${t.slug}")`);Object.defineProperty(this,"code",{value:t.slug,enumerable:!0,writable:!1,configurable:!1}),Object.defineProperty(this,"hint",{value:t.hint,enumerable:!0,writable:!1,configurable:!1}),Object.defineProperty(this,"docsUrl",{value:ie(t.slug),enumerable:!0,writable:!1,configurable:!1})}if(Object.setPrototypeOf(this,new.target.prototype),r&&typeof r=="object"){let p;if(t?.slug!==void 0){let{_tag:j,name:v,message:N,stack:a,code:F,hint:L,docsUrl:Ke,...re}=r;p=re}else{let{_tag:j,name:v,message:N,stack:a,...F}=r;p=F}let T=Object.prototype.hasOwnProperty.call(p,"cause"),S=T?p.cause:void 0;T&&delete p.cause;let D=i?.cause!==void 0;if(T&&D)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,p),T&&(this.cause=S),D&&(this.cause=i?.cause)}else i?.cause!==void 0&&(this.cause=i.cause)}}}Object.defineProperty(K,Symbol.hasInstance,{value:e=>e instanceof oe});(m=>{function e(p){return p instanceof Error}m.isError=e;function t(p){return p instanceof oe}m.isTaggedError=t;function r(p,T){let S=p._tag,D=T[S];return D(p)}m.match=r;function i(p,T,S){let D=p._tag,j=T[D];return j?j(p):S(p)}m.matchPartial=i})(K||={});var Le=class extends K("TimeoutError",{slug:"runtime-step-timeout",hint:"Increase the step's timeout option, or check why the upstream operation is slow.",message:t=>t.operation?`TimeoutError: ${t.operation} timed out after ${t.ms}ms`:`TimeoutError: Operation timed out after ${t.ms}ms`}){},Ve=class extends K("RetryExhaustedError",{slug:"runtime-retry-exhausted",hint:"All retry attempts failed. Inspect lastError and decide whether to surface it or compensate.",message:t=>t.operation?`RetryExhaustedError: ${t.operation} failed after ${t.attempts} attempts`:`RetryExhaustedError: Operation failed after ${t.attempts} attempts`}){},He=class extends K("RateLimitError",{slug:"runtime-rate-limit",hint:"Wait retryAfterMs before retrying, or apply step.cache to deduplicate calls.",message:t=>t.limiterName?`RateLimitError: Rate limit exceeded for ${t.limiterName}${t.retryAfterMs?`, retry after ${t.retryAfterMs}ms`:""}`:`RateLimitError: Rate limit exceeded${t.retryAfterMs?`, retry after ${t.retryAfterMs}ms`:""}`}){},We=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:t=>`CircuitBreakerOpenError: Circuit ${t.circuitName} is ${t.state??"OPEN"}${t.retryAfterMs?`, retry after ${Math.ceil(t.retryAfterMs/1e3)}s`:""}`}){},$e=class extends K("ValidationError",{message:t=>`ValidationError: Invalid ${t.field} - ${t.reason}`}){},Ye=class extends K("NotFoundError",{message:t=>t.id?`NotFoundError: ${t.resource} with id ${t.id} not found`:`NotFoundError: ${t.resource} not found`}){},qe=class extends K("UnauthorizedError",{message:t=>t.reason?`UnauthorizedError: ${t.reason}`:t.action&&t.resource?`UnauthorizedError: Not authorized to ${t.action} ${t.resource}`:"UnauthorizedError: Access denied"}){},ze=class extends K("NetworkError",{message:t=>t.url?`NetworkError: ${t.reason} (${t.url})`:`NetworkError: ${t.reason}`}){},Je=class extends K("CompensationError",{slug:"runtime-saga-compensation",hint:"A saga compensation step failed. Inspect compensationError and ensure compensation is idempotent.",message:t=>`CompensationError: Failed to compensate step ${t.step}`}){},Z=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:t=>`UnexpectedError: ${t.cause instanceof Error?t.cause.message:String(t.cause??"unknown")}`}){};function Ge(e){return{ok:!0,value:e}}var Jt=e=>typeof e=="object"&&e!==null&&"ok"in e&&typeof e.ok=="boolean"&&(e.ok?"value"in e:"error"in e),Xe=(e,t)=>{let r={},i=new Map;for(let m of Object.keys(e)){let p=e[m];typeof p=="function"&&(r[m]=(...T)=>{let S=(i.get(m)??0)+1;i.set(m,S);let D=S===1?m:`${m}#${S}`;return t(D,async()=>{let j=await p(...T);return Jt(j)?j:Ge(j)})})}return r};function Gt(e){let t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!t)return;let r=parseFloat(t[1]),i=t[2].toLowerCase();return{_tag:"Duration",millis:r*({ms:1,s:1e3,m:6e4,h:36e5,d:864e5}[i]??1)}}var et="PROMISE_REJECTED",tt="AWAITLY_UNEXPECTED",rt="AWAITLY_CANCELLED",nt="AWAITLY_TIMEOUT",ot=(...e)=>e;function Xt(e){return new Z({cause:e})}function I(e){return{ok:!0,value:e}}function O(e,t){let r=t?.cause;return{ok:!1,error:e,...r!==void 0?{cause:r}:{}}}var st=e=>e.ok,at=e=>!e.ok,xe=e=>e instanceof Z||typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="UnexpectedError";function Ce(e,t){if(t===void 0){let i=e;return m=>Ce(m,i)}let r=e;return xe(r)?t.UnexpectedError(r):t[r](r)}function he(e){if(e==null)return"unknown";if(typeof e=="string")return e.trim()||"unknown";if(typeof e=="object"){let t=e;if(typeof t._tag=="string"){let r=t._tag.trim();if(r)return r}if(typeof t.tag=="string"){let r=t.tag.trim();if(r)return r}if(typeof t.code=="string"){let r=t.code.trim();if(r)return r}else if(typeof t.code=="number")return String(t.code);if(e instanceof Error&&e.name){let r=e.name.trim();if(r)return r}}return"unknown"}function be(e,t){if(!(!t||!e))return t[e]}function Ae(e){let{intent:t,domain:r,owner:i,tags:m,stateChanges:p,emits:T,calls:S}=e;if(!t&&!r&&!i&&!m?.length&&!p?.length&&!T?.length&&!S?.length)return;let D={};return t&&(D.intent=t),r&&(D.domain=r),i&&(D.owner=i),m?.length&&(D.tags=m),p?.length&&(D.stateChanges=p),T?.length&&(D.emits=T),S?.length&&(D.calls=S),D}function V(e,t,r,i,m){let p=he(e),T=be(p,t),S={tag:p,origin:r};return T!==void 0&&(S.classification=T),i!==void 0&&(S.attempt=i),m!==void 0&&(S.cumulativeDurationMs=m),S}var te=Symbol.for("step_timeout_marker");function Ze(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:te in e}function Zt(e){if(!(typeof e!="object"||e===null)){if(e.type==="STEP_TIMEOUT"){let t=e;return{timeoutMs:t.timeoutMs,stepName:t.stepName,stepKey:t.stepKey,attempt:t.attempt}}if(te in e)return e[te]}}var ut=Symbol("early-exit");function Qt(e,t){return{[ut]:!0,error:e,meta:t}}function er(e){return typeof e=="object"&&e!==null&&e[ut]===!0}var it=Symbol("mapper-exception");function Q(e){return{[it]:!0,thrown:e}}function tr(e){return typeof e=="object"&&e!==null&&e[it]===!0}function ke(e,t){let{backoff:r,initialDelay:i,maxDelay:m,jitter:p}=t,T;switch(r){case"fixed":T=i;break;case"linear":T=i*e;break;case"exponential":T=i*Math.pow(2,e-1);break}if(T=Math.min(T,m),p){let S=T*.25*Math.random();T=T+S}return Math.floor(T)}function ge(e){return new Promise(t=>setTimeout(t,e))}var Qe=Symbol("timeout"),le=Symbol("timeout-option");function rr(e){return typeof e=="object"&&e!==null&&e[le]===!0}async function nr(e,t,r,i){let m=new AbortController,p=t.onTimeout??"error",T=()=>typeof p=="function"?p({name:r.name,key:r.key,ms:t.ms}):t.error??{type:"STEP_TIMEOUT",stepName:r.name,stepKey:r.key,timeoutMs:t.ms,attempt:r.attempt},S;i?.aborted&&m.abort(i.reason);let D;i&&!i.aborted&&(D=()=>m.abort(i.reason),i.addEventListener("abort",D,{once:!0}));let j=new Promise((N,a)=>{S=setTimeout(()=>{if(p!=="disconnect"&&m.abort(),p==="option"){a({[le]:!0,ms:t.ms});return}a({[Qe]:!0,error:T()})},t.ms)}),v;t.signal?v=Promise.resolve(e(m.signal)):v=Promise.resolve(e());try{return await Promise.race([v,j])}catch(N){if(typeof N=="object"&&N!==null&&N[le]===!0)throw{[le]:!0,ms:t.ms};if(typeof N=="object"&&N!==null&&N[Qe]===!0){p==="disconnect"&&v.catch(()=>{});let a=N.error;if(typeof a=="object"&&a!==null&&a.type!=="STEP_TIMEOUT"){let F={timeoutMs:t.ms,stepName:r.name,stepKey:r.key,attempt:r.attempt};te in a?a[te]=F:Object.defineProperty(a,te,{value:F,enumerable:!1,writable:!0,configurable:!1})}throw a}throw N}finally{clearTimeout(S),D&&i&&i.removeEventListener("abort",D)}}var ee={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,shouldRetry:()=>!0,onRetry:()=>{}};async function Re(e,t,r){if(typeof e!="function"){let d=e,B=t;if(typeof B!="function")throw new TypeError("[awaitly] run(deps, fn) requires a callback as the second argument. Example: run({ getUser }, async (s) => s.getUser(id))");return Re(({step:G})=>B(Xe(d,G),{step:G}),r)}let i=e,m=t,{onError:p,onEvent:T,catchUnexpected:S,workflowId:D,workflowName:j,context:v,_workflowSignal:N}=m&&typeof m=="object"?m:{},a=D??crypto.randomUUID(),F=S??Xt,L=[],Ke=0,re=d=>d??`step_${++Ke}`,c=d=>{let B=d.context!==void 0||v===void 0?d:{...d,context:v},W=j!==void 0&&B.workflowName===void 0?{...B,workflowName:j}:B;if(W.type==="step_success"){let G=W.stepId;for(let ae=L.length-1;ae>=0;ae--){let H=L[ae];if(H.type==="race"&&!H.winnerId){H.winnerId=G;break}}}T?.(W,v)},U=Qt,J=d=>er(d),Y=(d,B)=>d,Bt=d=>typeof d=="function"?!1:!!(d&&typeof d=="object"&&"ok"in d||d&&typeof d=="object"&&"then"in d&&typeof d.then=="function");try{let B=function(u){let y={};for(let[o,s]of Object.entries(u))if(typeof s=="function")y[o]=s;else if(s&&typeof s=="object"&&"fn"in s)y[o]=s.fn;else throw new TypeError(`step.all: operation "${o}" must be a function or { fn, errors? } object`);return y},W=function(u,y){let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let s=performance.now(),n=!1;L.push({scopeId:o,type:"parallel"});let l=()=>{if(n)return;n=!0;let E=L.findIndex(w=>w.scopeId===o);E!==-1&&L.splice(E,1),c({type:"scope_end",workflowId:a,scopeId:o,ts:Date.now(),durationMs:performance.now()-s})};c({type:"scope_start",workflowId:a,scopeId:o,scopeType:"parallel",name:u,ts:Date.now()});try{let E=await y();if(l(),!E.ok)throw p?.(E.error,u,v),U(E.error,{origin:"result",resultCause:E.cause});return E.value}catch(E){throw l(),E}})()},G=function(u,y){let o=Object.keys(u),s=y.name??`Parallel(${o.join(", ")})`,n=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let l=performance.now(),E=!1;L.push({scopeId:n,type:"parallel"});let w=()=>{if(E)return;E=!0;let f=L.findIndex(k=>k.scopeId===n);f!==-1&&L.splice(f,1),c({type:"scope_end",workflowId:a,scopeId:n,ts:Date.now(),durationMs:performance.now()-l})};c({type:"scope_start",workflowId:a,scopeId:n,scopeType:"parallel",name:s,ts:Date.now()});try{let f=await new Promise(R=>{if(o.length===0){R([]);return}let A=!1,M=o.length,x=new Array(o.length);for(let _=0;_<o.length;_++){let C=o[_],b=_;Promise.resolve(u[C]()).catch(h=>O({type:"PROMISE_REJECTED",cause:h},{cause:{type:"PROMISE_REJECTION",reason:h}})).then(h=>{if(!A){if(!h.ok){A=!0,R([{key:C,result:h}]);return}x[b]={key:C,result:h},M--,M===0&&R(x)}})}});w();let k={};for(let{key:R,result:A}of f){if(!A.ok)throw p?.(A.error,R,v),U(A.error,{origin:"result",resultCause:A.cause});k[R]=A.value}return k}catch(f){throw w(),f}})()};var ar=B,ur=W,ir=G;let d=(u,y,o)=>(async()=>{if(typeof u!="string"||u.length===0)throw new Error('[awaitly] step() requires an explicit string ID as the first argument. Example: step("fetchUser", () => fetchUser(id))');let s=o??{},n=Ae(s),l=u,E=s.key??u,w=s.key??u,{description:f,retry:k,timeout:R}=s,A=re(E),M=T,x=M?performance.now():0,C=Bt(y)?()=>y:y,h={attempts:Math.max(1,k?.attempts??1),backoff:k?.backoff??ee.backoff,initialDelay:k?.initialDelay??ee.initialDelay,maxDelay:k?.maxDelay??ee.maxDelay,jitter:k?.jitter??ee.jitter,shouldRetry:k?.shouldRetry??ee.shouldRetry,onRetry:k?.onRetry??ee.onRetry};T&&c({type:"step_start",workflowId:a,stepId:A,stepKey:E,name:l,description:f,ts:Date.now(),...n&&{metadata:n}});let X;for(let P=1;P<=h.attempts;P++){let Lt=M?performance.now():0;try{let g;if(R?g=await nr(C,R,{name:l,key:E,attempt:P},N):g=await C(),g.ok){let z=performance.now()-x;return c({type:"step_success",workflowId:a,stepId:A,stepKey:E,name:l,description:f,ts:Date.now(),durationMs:z,...n&&{metadata:n}}),w&&c({type:"step_complete",workflowId:a,stepKey:w,name:l,description:f,ts:Date.now(),durationMs:z,result:g,...n&&{metadata:n}}),g.value}if(X=g,P<h.attempts&&h.shouldRetry(g.error,P)){let z=ke(P,h);c({type:"step_retry",workflowId:a,stepId:A,stepKey:E,name:l,ts:Date.now(),attempt:P+1,maxAttempts:h.attempts,delayMs:z,error:g.error,...n&&{metadata:n},diagnostics:V(g.error,s.errorMeta,"result",P,performance.now()-x)}),h.onRetry(g.error,P,z),await ge(z);continue}h.attempts>1&&c({type:"step_retries_exhausted",workflowId:a,stepId:A,stepKey:E,name:l,ts:Date.now(),durationMs:performance.now()-x,attempts:P,lastError:g.error,...n&&{metadata:n},diagnostics:V(g.error,s.errorMeta,"result",P,performance.now()-x)});break}catch(g){let z=performance.now()-Lt;if(rr(g)){let $=g.ms;c({type:"step_timeout",workflowId:a,stepId:A,stepKey:E,name:l,ts:Date.now(),timeoutMs:$,attempt:P,...n&&{metadata:n},diagnostics:V(g,s.errorMeta,"timeout",P)}),c({type:"step_success",workflowId:a,stepId:A,stepKey:E,name:l,description:f,ts:Date.now(),durationMs:performance.now()-x,...n&&{metadata:n}}),w&&c({type:"step_complete",workflowId:a,stepKey:w,name:l,description:f,ts:Date.now(),durationMs:performance.now()-x,result:I(void 0),...n&&{metadata:n}});return}if(J(g))throw c({type:"step_aborted",workflowId:a,stepId:A,stepKey:E,name:l,description:f,ts:Date.now(),durationMs:z,...n&&{metadata:n}}),g;if(Ze(g)){let $=Zt(g),Vt=R?.ms??$?.timeoutMs??0;if(c({type:"step_timeout",workflowId:a,stepId:A,stepKey:E,name:l,ts:Date.now(),timeoutMs:Vt,attempt:P,...n&&{metadata:n},diagnostics:V(g,s.errorMeta,"timeout",P)}),P<h.attempts&&h.shouldRetry(g,P)){let fe=ke(P,h);c({type:"step_retry",workflowId:a,stepId:A,stepKey:E,name:l,ts:Date.now(),attempt:P+1,maxAttempts:h.attempts,delayMs:fe,error:g,...n&&{metadata:n},diagnostics:V(g,s.errorMeta,"timeout",P,performance.now()-x)}),h.onRetry(g,P,fe),await ge(fe);continue}h.attempts>1&&c({type:"step_retries_exhausted",workflowId:a,stepId:A,stepKey:E,name:l,ts:Date.now(),durationMs:performance.now()-x,attempts:P,lastError:g,...n&&{metadata:n},diagnostics:V(g,s.errorMeta,"timeout",P,performance.now()-x)});let we=performance.now()-x;throw c({type:"step_error",workflowId:a,stepId:A,stepKey:E,name:l,description:f,ts:Date.now(),durationMs:we,error:g,...n&&{metadata:n},diagnostics:V(g,s.errorMeta,"timeout",P,we)}),w&&c({type:"step_complete",workflowId:a,stepKey:w,name:l,description:f,ts:Date.now(),durationMs:we,result:O(g,{cause:g}),meta:{origin:"throw",thrown:g},...n&&{metadata:n}}),p?.(g,l,v),U(g,{origin:"throw",thrown:g})}if(P<h.attempts&&h.shouldRetry(g,P)){let $=ke(P,h);c({type:"step_retry",workflowId:a,stepId:A,stepKey:E,name:l,ts:Date.now(),attempt:P+1,maxAttempts:h.attempts,delayMs:$,error:g,...n&&{metadata:n},diagnostics:V(g,s.errorMeta,"throw",P,performance.now()-x)}),h.onRetry(g,P,$),await ge($);continue}h.attempts>1&&!Ze(g)&&c({type:"step_retries_exhausted",workflowId:a,stepId:A,stepKey:E,name:l,ts:Date.now(),durationMs:performance.now()-x,attempts:P,lastError:g,...n&&{metadata:n},diagnostics:V(g,s.errorMeta,"throw",P,performance.now()-x)});let ye=performance.now()-x,ne;try{ne=F(g)}catch($){throw Q($)}throw c({type:"step_error",workflowId:a,stepId:A,stepKey:E,name:l,description:f,ts:Date.now(),durationMs:ye,error:ne,...n&&{metadata:n},diagnostics:V(g,s.errorMeta,"throw",P,ye)}),w&&c({type:"step_complete",workflowId:a,stepKey:w,name:l,description:f,ts:Date.now(),durationMs:ye,result:O(ne,{cause:g}),meta:{origin:"throw",thrown:g},...n&&{metadata:n}}),p?.(ne,l,v),U(ne,{origin:"throw",thrown:g})}}let q=X,de=performance.now()-x,me=Y(q.error,{origin:"result",resultCause:q.cause});throw c({type:"step_error",workflowId:a,stepId:A,stepKey:E,name:l,description:f,ts:Date.now(),durationMs:de,error:me,...n&&{metadata:n},diagnostics:V(q.error,s.errorMeta,"result",h.attempts,de)}),w&&c({type:"step_complete",workflowId:a,stepKey:w,name:l,description:f,ts:Date.now(),durationMs:de,result:q,meta:{origin:"result",resultCause:q.cause},...n&&{metadata:n}}),p?.(me,l,v),U(me,{origin:"result",resultCause:q.cause})})();d.try=(u,y,o)=>{if(typeof u!="string"||u.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 s="error"in o?()=>o.error:o.onError;if(o.retry||o.timeout)return d.retry(u,async()=>{try{return I(await y())}catch(f){return O(s(f),{cause:f})}},{attempts:o.retry?.attempts??1,...o.retry??{},key:o.key,timeout:o.timeout});let n=o.key??u,l=u,E=u,w=T;return(async()=>{let f=w?performance.now():0;T&&c({type:"step_start",workflowId:a,stepId:E,stepKey:n,name:l,ts:Date.now()});try{let k=await y(),R=performance.now()-f;return c({type:"step_success",workflowId:a,stepId:E,stepKey:n,name:l,ts:Date.now(),durationMs:R}),n&&c({type:"step_complete",workflowId:a,stepKey:n,name:l,ts:Date.now(),durationMs:R,result:I(k)}),k}catch(k){let R=s(k),A=performance.now()-f,M=Y(R,{origin:"throw",thrown:k});throw c({type:"step_error",workflowId:a,stepId:E,stepKey:n,name:l,ts:Date.now(),durationMs:A,error:M}),n&&c({type:"step_complete",workflowId:a,stepKey:n,name:l,ts:Date.now(),durationMs:A,result:O(R,{cause:k}),meta:{origin:"throw",thrown:k}}),p?.(M,l,v),U(M,{origin:"throw",thrown:k})}})()},d.fromResult=(u,y,o)=>{if(typeof u!="string"||u.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 s=o.key??u,n=u,l=u,E="error"in o?()=>o.error:o.onError,w=T;return(async()=>{let f=w?performance.now():0;T&&c({type:"step_start",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now()});let k=await y();if(k.ok){let R=performance.now()-f;return c({type:"step_success",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:R}),s&&c({type:"step_complete",workflowId:a,stepKey:s,name:n,ts:Date.now(),durationMs:R,result:I(k.value)}),k.value}else{let R=E(k.error),A=performance.now()-f,M=Y(R,{origin:"result",resultCause:k.error});throw c({type:"step_error",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:A,error:M}),s&&c({type:"step_complete",workflowId:a,stepKey:s,name:n,ts:Date.now(),durationMs:A,result:O(R,{cause:k.error}),meta:{origin:"result",resultCause:k.error}}),p?.(M,n,v),U(M,{origin:"result",resultCause:k.error})}})()},d.fromNullable=(u,y,o,s)=>{if(typeof u!="string"||u.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 d(u,async()=>{let n=await y();return n!=null?I(n):O(o())},s)},d.retry=(u,y,o)=>{if(typeof u!="string"||u.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 d(u,y,{key:o.key??u,retry:{attempts:o.attempts,backoff:o.backoff,initialDelay:o.initialDelay,maxDelay:o.maxDelay,jitter:o.jitter,shouldRetry:o.shouldRetry,onRetry:o.onRetry},timeout:o.timeout})},d.withTimeout=(u,y,o)=>{if(typeof u!="string"||u.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 d(u,y,{key:o.key??u,timeout:o})},d.sleep=(u,y,o)=>{if(typeof u!="string"||u.length===0)throw new Error('[awaitly] step.sleep() requires an explicit string ID as the first argument. Example: step.sleep("delay", "5s")');let s=typeof y=="string"?Gt(y):y;if(!s)throw new Error(`step.sleep: invalid duration '${y}'`);let n=s.millis,l=o?.signal;return d(u,async()=>{if(N?.aborted||l?.aborted){let E=new Error("Sleep aborted");throw E.name="AbortError",E}return new Promise((E,w)=>{let f={timeoutId:void 0},k=()=>{f.timeoutId&&clearTimeout(f.timeoutId);let R=new Error("Sleep aborted");R.name="AbortError",w(R)};N?.addEventListener("abort",k,{once:!0}),l?.addEventListener("abort",k,{once:!0}),f.timeoutId=setTimeout(()=>{N?.removeEventListener("abort",k),l?.removeEventListener("abort",k),E(I(void 0))},n)})},{key:o?.key??u,description:o?.description})},d.all=((...u)=>{if(typeof u[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 y=u[0],o=u[1];if(typeof o=="function")return W(y,o);if(o&&typeof o=="object"&&!Array.isArray(o)){let n=B(o);return G(n,{name:y})}throw new TypeError("step.all(name, ...): second argument must be a function (array form) or an object of operations (object form).")}),d.race=(u,y)=>{let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let s=performance.now(),n=!1,l={scopeId:o,type:"race",winnerId:void 0};L.push(l);let E=()=>{if(n)return;n=!0;let w=L.findIndex(f=>f.scopeId===o);w!==-1&&L.splice(w,1),c({type:"scope_end",workflowId:a,scopeId:o,ts:Date.now(),durationMs:performance.now()-s,winnerId:l.winnerId})};c({type:"scope_start",workflowId:a,scopeId:o,scopeType:"race",name:u,ts:Date.now()});try{let w=await y();if(E(),!w.ok)throw p?.(w.error,u,v),U(w.error,{origin:"result",resultCause:w.cause});return w.value}catch(w){throw E(),w}})()},d.if=(u,y,o)=>o(),d.label=d.if,d.branch=async(u,y)=>{let{condition:o,then:s,else:n}=y;if(o())return await s();if(n)return await n()},d.arm=(u,y)=>({fn:u,errors:y}),d.forEach=async(u,y,o)=>{let s=[],n=o.maxIterations,l=0,E="run"in o,w=Symbol.asyncIterator in y?y:(async function*(){yield*y})();for await(let f of w){if(n!==void 0&&l>=n)break;let k;E?k=await o.run(f,l):k=await o.item.handler(f,l,d),s.push(k),l++}return s},d.item=u=>({__forEachItemHandler:!0,handler:u}),d.dep=(u,y)=>y,d.workflow=(u,y,o)=>d(u,y,o),d.map=async(u,y,o,s)=>{let n=s?.concurrency??y.length;return d(u,()=>n>=y.length?ce(y.map((l,E)=>o(l,E))):(async()=>{let l=[];for(let E=0;E<y.length;E+=n){let w=y.slice(E,E+n),f=await ce(w.map((k,R)=>o(k,E+R)));if(!f.ok)return f;l.push(...f.value)}return I(l)})(),{key:s?.key})},d.withFallback=(u,y,o)=>{if(typeof u!="string"||u.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 s=o.key??u,n=u,l=re(s),E=T;return(async()=>{let w=E?performance.now():0;T&&c({type:"step_start",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now()});let f;try{f=await y()}catch(x){if(J(x))throw c({type:"step_aborted",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:performance.now()-w}),x;let _;try{_=F(x)}catch(b){throw Q(b)}if(o.on!==void 0&&o.on!==_){let b=performance.now()-w;throw c({type:"step_error",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:b,error:_}),s&&c({type:"step_complete",workflowId:a,stepKey:s,name:n,ts:Date.now(),durationMs:b,result:O(_,{cause:x}),meta:{origin:"throw",thrown:x}}),p?.(_,n,v),U(_,{origin:"throw",thrown:x})}let C;try{C=await o.fallback()}catch(b){if(J(b))throw c({type:"step_aborted",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:performance.now()-w}),b;let h;try{h=F(b)}catch(q){throw Q(q)}let X=performance.now()-w;throw c({type:"step_error",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:X,error:h}),s&&c({type:"step_complete",workflowId:a,stepKey:s,name:n,ts:Date.now(),durationMs:X,result:O(h,{cause:b}),meta:{origin:"throw",thrown:b}}),p?.(h,n,v),U(h,{origin:"throw",thrown:b})}if(C.ok){let b=performance.now()-w;return c({type:"step_success",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:b}),s&&c({type:"step_complete",workflowId:a,stepKey:s,name:n,ts:Date.now(),durationMs:b,result:C,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(_)}}),C.value}else{let b=performance.now()-w,h=Y(C.error,{origin:"result",resultCause:C.cause});throw c({type:"step_error",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:b,error:h}),s&&c({type:"step_complete",workflowId:a,stepKey:s,name:n,ts:Date.now(),durationMs:b,result:C,meta:{origin:"result",resultCause:C.cause}}),p?.(h,n,v),U(h,{origin:"result",resultCause:C.cause})}}if(f.ok){let x=performance.now()-w;return c({type:"step_success",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:x}),s&&c({type:"step_complete",workflowId:a,stepKey:s,name:n,ts:Date.now(),durationMs:x,result:f}),f.value}let k=f.error;if(o.on!==void 0&&o.on!==k){let x=performance.now()-w,_=Y(k,{origin:"result",resultCause:f.cause});throw c({type:"step_error",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:x,error:_}),s&&c({type:"step_complete",workflowId:a,stepKey:s,name:n,ts:Date.now(),durationMs:x,result:f,meta:{origin:"result",resultCause:f.cause}}),p?.(_,n,v),U(_,{origin:"result",resultCause:f.cause})}let R;try{R=await o.fallback()}catch(x){if(J(x))throw c({type:"step_aborted",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:performance.now()-w}),x;let _;try{_=F(x)}catch(b){throw Q(b)}let C=performance.now()-w;throw c({type:"step_error",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:C,error:_}),s&&c({type:"step_complete",workflowId:a,stepKey:s,name:n,ts:Date.now(),durationMs:C,result:O(_,{cause:x}),meta:{origin:"throw",thrown:x}}),p?.(_,n,v),U(_,{origin:"throw",thrown:x})}if(R.ok){let x=performance.now()-w;return c({type:"step_success",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:x}),s&&c({type:"step_complete",workflowId:a,stepKey:s,name:n,ts:Date.now(),durationMs:x,result:R,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(k)}}),R.value}let A=performance.now()-w,M=Y(R.error,{origin:"result",resultCause:R.cause});throw c({type:"step_error",workflowId:a,stepId:l,stepKey:s,name:n,ts:Date.now(),durationMs:A,error:M}),s&&c({type:"step_complete",workflowId:a,stepKey:s,name:n,ts:Date.now(),durationMs:A,result:R,meta:{origin:"result",resultCause:R.cause}}),p?.(M,n,v),U(M,{origin:"result",resultCause:R.cause})})()},d.withResource=(u,y)=>{if(typeof u!="string"||u.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 o=u,s=u,n=re(o),l=T;return(async()=>{let E=l?performance.now():0;T&&c({type:"step_start",workflowId:a,stepId:n,stepKey:o,name:s,ts:Date.now()});let w;try{w=await y.acquire()}catch(C){if(J(C))throw c({type:"step_aborted",workflowId:a,stepId:n,stepKey:o,name:s,ts:Date.now(),durationMs:performance.now()-E}),C;let b;try{b=F(C)}catch(X){throw Q(X)}let h=performance.now()-E;throw c({type:"step_error",workflowId:a,stepId:n,stepKey:o,name:s,ts:Date.now(),durationMs:h,error:b}),o&&c({type:"step_complete",workflowId:a,stepKey:o,name:s,ts:Date.now(),durationMs:h,result:O(b,{cause:C}),meta:{origin:"throw",thrown:C}}),p?.(b,s,v),U(b,{origin:"throw",thrown:C})}if(!w.ok){let C=performance.now()-E,b=Y(w.error,{origin:"result",resultCause:w.cause});throw c({type:"step_error",workflowId:a,stepId:n,stepKey:o,name:s,ts:Date.now(),durationMs:C,error:b}),o&&c({type:"step_complete",workflowId:a,stepKey:o,name:s,ts:Date.now(),durationMs:C,result:w,meta:{origin:"result",resultCause:w.cause}}),p?.(b,s,v),U(b,{origin:"result",resultCause:w.cause})}let f=w.value,k,R,A=!1;try{k=await y.use(f)}catch(C){if(J(C)){try{await y.release(f)}catch(b){console.warn(`[awaitly] step.withResource("${u}"): release threw after earlyExit:`,b)}throw C}R=C,A=!0}try{await y.release(f)}catch(C){console.warn(`[awaitly] step.withResource("${u}"): release threw:`,C)}if(A){let C;try{C=F(R)}catch(h){throw Q(h)}let b=performance.now()-E;throw c({type:"step_error",workflowId:a,stepId:n,stepKey:o,name:s,ts:Date.now(),durationMs:b,error:C}),o&&c({type:"step_complete",workflowId:a,stepKey:o,name:s,ts:Date.now(),durationMs:b,result:O(C,{cause:R}),meta:{origin:"throw",thrown:R}}),p?.(C,s,v),U(C,{origin:"throw",thrown:R})}let M=k;if(M.ok){let C=performance.now()-E;return c({type:"step_success",workflowId:a,stepId:n,stepKey:o,name:s,ts:Date.now(),durationMs:C}),o&&c({type:"step_complete",workflowId:a,stepKey:o,name:s,ts:Date.now(),durationMs:C,result:M}),M.value}let x=performance.now()-E,_=Y(M.error,{origin:"result",resultCause:M.cause});throw c({type:"step_error",workflowId:a,stepId:n,stepKey:o,name:s,ts:Date.now(),durationMs:x,error:_}),o&&c({type:"step_complete",workflowId:a,stepKey:o,name:s,ts:Date.now(),durationMs:x,result:M,meta:{origin:"result",resultCause:M.cause}}),p?.(_,s,v),U(_,{origin:"result",resultCause:M.cause})})()};let H=await i({step:d});if(process.env.NODE_ENV!=="production"&&H!==null&&typeof H=="object"&&"ok"in H&&typeof H.ok=="boolean"){let u=H;(u.ok===!0&&"value"in u||u.ok===!1&&"error"in u)&&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 I(H)}catch(d){if(tr(d))throw d.thrown;if(J(d)){let W=d.meta.origin==="throw"?d.meta.thrown:d.meta.origin==="result"?d.meta.resultCause:void 0;return O(d.error,{cause:W})}let B=F(d);return p?.(B,"unexpected",v),O(B,{cause:d})}}Re.strict=(e,t)=>Re(e,t);var se=class extends Error{constructor(r,i){super(`Unwrap called on an error result: ${String(r)}`);this.error=r;this.cause=i;this.name="UnwrapError"}error;cause},pe=e=>{if(e.ok)return e.value;throw new se(e.error,e.cause)},lt=(e,t)=>e.ok?e.value:t,ct=(e,t)=>e.ok?e.value:t(e.error,e.cause),pt=e=>pe(e),Et=e=>Promise.resolve(e).then(pe),dt=e=>e.ok?e.value:null,mt=e=>e.ok?e.value:void 0;function yt(e,t){try{return I(e())}catch(r){return t?O(t(r),{cause:r}):O(r)}}async function wt(e,t){try{return I(await e)}catch(r){return t?O(t(r),{cause:r}):O(r)}}async function ft(e,t){try{return I(await e())}catch(r){return t?O(t(r),{cause:r}):O(r)}}function Tt(e,t){return e!=null?I(e):O(t())}function kt(e,t){return e.ok?I(t(e.value)):e}function gt(e,t){return e.ok?e:O(t(e.error),{cause:e.cause})}function Se(e,t){if(t===void 0){let r=e;return i=>Se(i,r)}return e.ok?t.ok(e.value):t.err(e.error,e.cause)}function Rt(e,t){return e.ok?t(e.value):e}function xt(e,t){return e.ok&&t(e.value),e}function Ct(e,t){return e.ok||t(e.error,e.cause),e}function ht(e,t,r){if(!e.ok)return e;try{return I(t(e.value))}catch(i){return O(r(i),{cause:i})}}function bt(e,t,r){if(e.ok)return e;try{return O(t(e.error),{cause:e.cause})}catch(i){return O(r(i),{cause:i})}}function At(e,t,r){return e.ok?I(t(e.value)):O(r(e.error),{cause:e.cause})}function St(e,t){return e.ok?e:t(e.error,e.cause)}async function Ot(e,t){let r=await e;return r.ok?r:t(r.error,r.cause)}function Pt(e,t){return e.ok?I(e.value):I(t(e.error,e.cause))}async function vt(e,t){let r=await e;return r.ok?I(r.value):I(await t(r.error,r.cause))}function Oe(e){return e!==null&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&(e.ok===!0&&"value"in e||e.ok===!1&&"error"in e)?e:null}function _t(e){return Oe(e)!==null}function Mt(e){let t=[];for(let r of e){if(!r.ok)return r;t.push(r.value)}return I(t)}async function ce(e){return e.length===0?I([]):new Promise(t=>{let r=!1,i=e.length,m=new Array(e.length);for(let p=0;p<e.length;p++){let T=p;Promise.resolve(e[T]).catch(S=>O({type:"PROMISE_REJECTED",cause:S},{cause:{type:"PROMISE_REJECTION",reason:S}})).then(S=>{if(!r){if(!S.ok){r=!0,t(S);return}m[T]=S.value,i--,i===0&&t(I(m))}})}})}function It(e){let t=[],r=[];for(let i of e)i.ok?t.push(i.value):r.push({error:i.error,cause:i.cause});return r.length>0?O(r):I(t)}function Dt(e){let t=[],r=[];for(let i of e)i.ok?t.push(i.value):r.push(i.error);return{values:t,errors:r}}function Ut(e){if(e.length===0)return O({type:"EMPTY_INPUT",message:"any() requires at least one Result"});let t=null;for(let r of e){if(r.ok)return r;t||(t=r)}return t}async function Nt(e){return e.length===0?O({type:"EMPTY_INPUT",message:"anyAsync() requires at least one Result"}):new Promise(t=>{let r=!1,i=e.length,m=null;for(let p of e)Promise.resolve(p).catch(T=>O({type:"PROMISE_REJECTED",cause:T},{cause:{type:"PROMISE_REJECTION",reason:T}})).then(T=>{if(!r){if(T.ok){r=!0,t(T);return}m||(m=T),i--,i===0&&t(m)}})})}async function Kt(e){let t=await Promise.all(e.map(m=>Promise.resolve(m).then(p=>({status:"result",result:p})).catch(p=>({status:"rejected",error:{type:"PROMISE_REJECTED",cause:p},cause:{type:"PROMISE_REJECTION",reason:p}})))),r=[],i=[];for(let m of t)m.status==="rejected"?i.push({error:m.error,cause:m.cause}):m.result.ok?r.push(m.result.value):i.push({error:m.result.error,cause:m.result.cause});return i.length>0?O(i):I(r)}function Pe(e,t){return r=>{let i=new Map(r.handlers);return i.set(e,t),{_tag:"Matcher",value:r.value,handlers:i,_remaining:void 0,_output:void 0}}}function ve(e){return t=>{let r=new Map(t.handlers);for(let[i,m]of Object.entries(e))m&&r.set(i,m);return{_tag:"Matcher",value:t.value,handlers:r,_remaining:void 0,_output:void 0}}}function _e(e){let t=e.handlers.get(e.value._tag);if(!t)throw new Error(`No handler for tag: ${e.value._tag}`);return t(e.value)}function Ee(e){return t=>{let r=t.handlers.get(t.value._tag);return r?r(t.value):e(t.value)}}function Me(e){return Ee(()=>e)}function Ie(e,t,r){return i=>{let m=new Map(i.handlers),p=i.handlers.get(e);return m.set(e,T=>{let S=T;if(t(S))return r(S);if(p)return p(T);throw new Error(`No handler matched for tag: ${e}`)}),{_tag:"Matcher",value:i.value,handlers:m,_remaining:i._remaining,_output:void 0}}}function De(e){return t=>t._tag===e}function Ue(...e){let t=new Set(e);return r=>t.has(r._tag)}function or(e){return typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="Matcher"}function jt(e){return{...e,pipe(t){let r=t(e);return or(r)?jt(r):r}}}function Ne(e){return jt({_tag:"Matcher",value:e,handlers:new Map,_remaining:e,_output:void 0})}var Ft={value:Ne,tag:Pe,tags:ve,when:Ie,exhaustive:_e,orElse:Ee,orElseValue:Me,is:De,isOneOf:Ue};0&&(module.exports={ALL_SLUGS,AWAITLY_CANCELLED,AWAITLY_SLUGS,AWAITLY_TIMEOUT,AWAITLY_UNEXPECTED,Match,PROMISE_REJECTED,TaggedError,UnexpectedError,UnwrapError,all,allAsync,allSettled,allSettledAsync,andThen,any,anyAsync,bimap,err,exhaustive,extractErrorTag,extractStepMetadata,from,fromNullable,fromPromise,hydrate,isAwaitlySlug,isErr,isOk,isOneOf,isSerializedResult,isTag,isUnexpectedError,lookupErrorClassification,map,mapError,mapErrorTry,mapTry,match,matchError,matchOrElse,matchTag,matchTags,matchValue,matchWhen,ok,orElse,orElseAsync,orElseValue,partition,recover,recoverAsync,runOrNull,runOrThrow,runOrThrowAsync,runOrUndefined,slugCategory,slugDocsUrl,tags,tap,tapError,tryAsync,unwrap,unwrapOr,unwrapOrElse});
7
- //# sourceMappingURL=core.cjs.map