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