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
@@ -1,9 +0,0 @@
1
- "use strict";var he=Object.defineProperty;var gr=Object.getOwnPropertyDescriptor;var xr=Object.getOwnPropertyNames;var Sr=Object.prototype.hasOwnProperty;var Cr=(e,r)=>{for(var n in r)he(e,n,{get:r[n],enumerable:!0})},br=(e,r,n,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let E of xr(r))!Sr.call(e,E)&&E!==n&&he(e,E,{get:()=>r[E],enumerable:!(u=gr(r,E))||u.enumerable});return e};var hr=e=>br(he({},"__esModule",{value:!0}),e);var Wr={};Cr(Wr,{STREAM_BACKPRESSURE_ERROR:()=>ye,STREAM_CLOSE_ERROR:()=>Ae,STREAM_ENDED:()=>Ee,STREAM_READ_ERROR:()=>me,STREAM_STORE_ERROR:()=>de,STREAM_WRITE_ERROR:()=>pe,chunk:()=>ur,collect:()=>fr,createBackpressureController:()=>je,createFileStreamStore:()=>sr,createMemoryStreamStore:()=>_e,createTestableMemoryStreamStore:()=>or,filter:()=>ir,flatMap:()=>cr,flatMapAsync:()=>lr,getStreamReader:()=>Br,isStreamBackpressureError:()=>De,isStreamEnded:()=>fe,isStreamReadError:()=>Me,isStreamStoreError:()=>Ue,isStreamWriteError:()=>Oe,map:()=>ar,mapAsync:()=>pr,pipe:()=>Tr,reduce:()=>wr,shouldApplyBackpressure:()=>Be,skip:()=>dr,skipWhile:()=>yr,streamBackpressureError:()=>Ne,streamCloseError:()=>Ke,streamEnded:()=>ue,streamReadError:()=>ie,streamStoreError:()=>L,streamWriteError:()=>Fe,take:()=>mr,takeWhile:()=>Er,toAsyncIterable:()=>$});module.exports=hr(Wr);var pe="STREAM_WRITE_ERROR",me="STREAM_READ_ERROR",Ae="STREAM_CLOSE_ERROR",de="STREAM_STORE_ERROR",Ee="STREAM_ENDED",ye="STREAM_BACKPRESSURE_ERROR";function fe(e){return typeof e=="object"&&e!==null&&e.type===Ee}function Oe(e){return typeof e=="object"&&e!==null&&e.type===pe}function Me(e){return typeof e=="object"&&e!==null&&e.type===me}function Ue(e){return typeof e=="object"&&e!==null&&e.type===de}function De(e){return typeof e=="object"&&e!==null&&e.type===ye}function Fe(e,r,n){return{type:pe,reason:e,message:r,...n!==void 0?{cause:n}:{}}}function ie(e,r,n){return{type:me,reason:e,message:r,...n!==void 0?{cause:n}:{}}}function Ke(e,r,n){return{type:Ae,reason:e,message:r,...n!==void 0?{cause:n}:{}}}function L(e,r,n){return{type:de,reason:e,message:r,...n!==void 0?{cause:n}:{}}}function ue(e){return{type:Ee,finalPosition:e}}function Ne(e,r){return{type:ye,bufferedCount:e,highWaterMark:r}}function je(e={}){let r=e.highWaterMark??16,n=e.lowWaterMark??Math.floor(r/2),u=e.onStateChange,E="flowing",a=0,i=[];function p(f){if(E!==f&&(E=f,u?.(f),f==="flowing"&&i.length>0)){let S=i;i=[];for(let N of S)N()}}function m(){E==="flowing"&&a>=r?p("paused"):E==="paused"&&a<=n&&p("flowing")}return{get state(){return E},get bufferedCount(){return a},get highWaterMark(){return r},get lowWaterMark(){return n},increment(){a++,m()},decrement(){a>0&&(a--,m())},setCount(f){a=Math.max(0,f),m()},waitForDrain(){return E==="flowing"?Promise.resolve():new Promise(f=>{i.push(f)})},reset(){a=0,i=[],p("flowing")}}}function Be(e){return e.state==="paused"}var Ar={"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 We(e){return`https://jagreehal.github.io/awaitly/rules/#${e}`}var qr=Object.keys(Ar);var ce=class extends Error{_tag};function z(e,r){return class extends ce{_tag=e;constructor(n,u){let E=r?.message?r.message(n??{}):e;if(super(E),this.name=e,r?.slug!==void 0){if(!r.hint)throw new TypeError(`TaggedError: 'hint' is required when 'slug' is set (slug: "${r.slug}")`);Object.defineProperty(this,"code",{value:r.slug,enumerable:!0,writable:!1,configurable:!1}),Object.defineProperty(this,"hint",{value:r.hint,enumerable:!0,writable:!1,configurable:!1}),Object.defineProperty(this,"docsUrl",{value:We(r.slug),enumerable:!0,writable:!1,configurable:!1})}if(Object.setPrototypeOf(this,new.target.prototype),n&&typeof n=="object"){let a;if(r?.slug!==void 0){let{_tag:f,name:S,message:N,stack:l,code:C,hint:g,docsUrl:A,...D}=n;a=D}else{let{_tag:f,name:S,message:N,stack:l,...C}=n;a=C}let i=Object.prototype.hasOwnProperty.call(a,"cause"),p=i?a.cause:void 0;i&&delete a.cause;let m=u?.cause!==void 0;if(i&&m)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,a),i&&(this.cause=p),m&&(this.cause=u?.cause)}else u?.cause!==void 0&&(this.cause=u.cause)}}}Object.defineProperty(z,Symbol.hasInstance,{value:e=>e instanceof ce});(E=>{function e(a){return a instanceof Error}E.isError=e;function r(a){return a instanceof ce}E.isTaggedError=r;function n(a,i){let p=a._tag,m=i[p];return m(a)}E.match=n;function u(a,i,p){let m=a._tag,f=i[m];return f?f(a):p(a)}E.matchPartial=u})(z||={});var Le=class extends z("TimeoutError",{slug:"runtime-step-timeout",hint:"Increase the step's timeout option, or check why the upstream operation is slow.",message:r=>r.operation?`TimeoutError: ${r.operation} timed out after ${r.ms}ms`:`TimeoutError: Operation timed out after ${r.ms}ms`}){},Ve=class extends z("RetryExhaustedError",{slug:"runtime-retry-exhausted",hint:"All retry attempts failed. Inspect lastError and decide whether to surface it or compensate.",message:r=>r.operation?`RetryExhaustedError: ${r.operation} failed after ${r.attempts} attempts`:`RetryExhaustedError: Operation failed after ${r.attempts} attempts`}){},$e=class extends z("RateLimitError",{slug:"runtime-rate-limit",hint:"Wait retryAfterMs before retrying, or apply step.cache to deduplicate calls.",message:r=>r.limiterName?`RateLimitError: Rate limit exceeded for ${r.limiterName}${r.retryAfterMs?`, retry after ${r.retryAfterMs}ms`:""}`:`RateLimitError: Rate limit exceeded${r.retryAfterMs?`, retry after ${r.retryAfterMs}ms`:""}`}){},He=class extends z("CircuitBreakerOpenError",{slug:"runtime-circuit-open",hint:"The circuit is open. Wait for it to half-open or fall back to a degraded path.",message:r=>`CircuitBreakerOpenError: Circuit ${r.circuitName} is ${r.state??"OPEN"}${r.retryAfterMs?`, retry after ${Math.ceil(r.retryAfterMs/1e3)}s`:""}`}){},ze=class extends z("ValidationError",{message:r=>`ValidationError: Invalid ${r.field} - ${r.reason}`}){},qe=class extends z("NotFoundError",{message:r=>r.id?`NotFoundError: ${r.resource} with id ${r.id} not found`:`NotFoundError: ${r.resource} not found`}){},Ye=class extends z("UnauthorizedError",{message:r=>r.reason?`UnauthorizedError: ${r.reason}`:r.action&&r.resource?`UnauthorizedError: Not authorized to ${r.action} ${r.resource}`:"UnauthorizedError: Access denied"}){},Je=class extends z("NetworkError",{message:r=>r.url?`NetworkError: ${r.reason} (${r.url})`:`NetworkError: ${r.reason}`}){},Ge=class extends z("CompensationError",{slug:"runtime-saga-compensation",hint:"A saga compensation step failed. Inspect compensationError and ensure compensation is idempotent.",message:r=>`CompensationError: Failed to compensate step ${r.step}`}){},we=class extends z("UnexpectedError",{slug:"runtime-unexpected",hint:"An unexpected exception escaped a step. Inspect cause; consider returning a typed Result instead of throwing.",message:r=>`UnexpectedError: ${r.cause instanceof Error?r.cause.message:String(r.cause??"unknown")}`}){};function Xe(e){return{ok:!0,value:e}}var vr=e=>typeof e=="object"&&e!==null&&"ok"in e&&typeof e.ok=="boolean"&&(e.ok?"value"in e:"error"in e),Ze=(e,r)=>{let n={},u=new Map;for(let E of Object.keys(e)){let a=e[E];typeof a=="function"&&(n[E]=(...i)=>{let p=(u.get(E)??0)+1;u.set(E,p);let m=p===1?E:`${E}#${p}`;return r(m,async()=>{let f=await a(...i);return vr(f)?f:Xe(f)})})}return n};function Pr(e){let r=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!r)return;let n=parseFloat(r[1]),u=r[2].toLowerCase();return{_tag:"Duration",millis:n*({ms:1,s:1e3,m:6e4,h:36e5,d:864e5}[u]??1)}}function Ir(e){return new we({cause:e})}function K(e){return{ok:!0,value:e}}function O(e,r){let n=r?.cause;return{ok:!1,error:e,...n!==void 0?{cause:n}:{}}}function _r(e){if(e==null)return"unknown";if(typeof e=="string")return e.trim()||"unknown";if(typeof e=="object"){let r=e;if(typeof r._tag=="string"){let n=r._tag.trim();if(n)return n}if(typeof r.tag=="string"){let n=r.tag.trim();if(n)return n}if(typeof r.code=="string"){let n=r.code.trim();if(n)return n}else if(typeof r.code=="number")return String(r.code);if(e instanceof Error&&e.name){let n=e.name.trim();if(n)return n}}return"unknown"}function Or(e,r){if(!(!r||!e))return r[e]}function Mr(e){let{intent:r,domain:n,owner:u,tags:E,stateChanges:a,emits:i,calls:p}=e;if(!r&&!n&&!u&&!E?.length&&!a?.length&&!i?.length&&!p?.length)return;let m={};return r&&(m.intent=r),n&&(m.domain=n),u&&(m.owner=u),E?.length&&(m.tags=E),a?.length&&(m.stateChanges=a),i?.length&&(m.emits=i),p?.length&&(m.calls=p),m}function J(e,r,n,u,E){let a=_r(e),i=Or(a,r),p={tag:a,origin:n};return i!==void 0&&(p.classification=i),u!==void 0&&(p.attempt=u),E!==void 0&&(p.cumulativeDurationMs=E),p}var se=Symbol.for("step_timeout_marker");function Qe(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:se in e}function Ur(e){if(!(typeof e!="object"||e===null)){if(e.type==="STEP_TIMEOUT"){let r=e;return{timeoutMs:r.timeoutMs,stepName:r.stepName,stepKey:r.stepKey,attempt:r.attempt}}if(se in e)return e[se]}}var tr=Symbol("early-exit");function Dr(e,r){return{[tr]:!0,error:e,meta:r}}function Fr(e){return typeof e=="object"&&e!==null&&e[tr]===!0}var nr=Symbol("mapper-exception");function ne(e){return{[nr]:!0,thrown:e}}function Kr(e){return typeof e=="object"&&e!==null&&e[nr]===!0}function ve(e,r){let{backoff:n,initialDelay:u,maxDelay:E,jitter:a}=r,i;switch(n){case"fixed":i=u;break;case"linear":i=u*e;break;case"exponential":i=u*Math.pow(2,e-1);break}if(i=Math.min(i,E),a){let p=i*.25*Math.random();i=i+p}return Math.floor(i)}function Pe(e){return new Promise(r=>setTimeout(r,e))}var er=Symbol("timeout"),Te=Symbol("timeout-option");function Nr(e){return typeof e=="object"&&e!==null&&e[Te]===!0}async function jr(e,r,n,u){let E=new AbortController,a=r.onTimeout??"error",i=()=>typeof a=="function"?a({name:n.name,key:n.key,ms:r.ms}):r.error??{type:"STEP_TIMEOUT",stepName:n.name,stepKey:n.key,timeoutMs:r.ms,attempt:n.attempt},p;u?.aborted&&E.abort(u.reason);let m;u&&!u.aborted&&(m=()=>E.abort(u.reason),u.addEventListener("abort",m,{once:!0}));let f=new Promise((N,l)=>{p=setTimeout(()=>{if(a!=="disconnect"&&E.abort(),a==="option"){l({[Te]:!0,ms:r.ms});return}l({[er]:!0,error:i()})},r.ms)}),S;r.signal?S=Promise.resolve(e(E.signal)):S=Promise.resolve(e());try{return await Promise.race([S,f])}catch(N){if(typeof N=="object"&&N!==null&&N[Te]===!0)throw{[Te]:!0,ms:r.ms};if(typeof N=="object"&&N!==null&&N[er]===!0){a==="disconnect"&&S.catch(()=>{});let l=N.error;if(typeof l=="object"&&l!==null&&l.type!=="STEP_TIMEOUT"){let C={timeoutMs:r.ms,stepName:n.name,stepKey:n.key,attempt:n.attempt};se in l?l[se]=C:Object.defineProperty(l,se,{value:C,enumerable:!1,writable:!0,configurable:!1})}throw l}throw N}finally{clearTimeout(p),m&&u&&u.removeEventListener("abort",m)}}var oe={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,shouldRetry:()=>!0,onRetry:()=>{}};async function Ie(e,r,n){if(typeof e!="function"){let T=e,q=r;if(typeof q!="function")throw new TypeError("[awaitly] run(deps, fn) requires a callback as the second argument. Example: run({ getUser }, async (s) => s.getUser(id))");return Ie(({step:re})=>q(Ze(T,re),{step:re}),n)}let u=e,E=r,{onError:a,onEvent:i,catchUnexpected:p,workflowId:m,workflowName:f,context:S,_workflowSignal:N}=E&&typeof E=="object"?E:{},l=m??crypto.randomUUID(),C=p??Ir,g=[],A=0,D=T=>T??`step_${++A}`,c=T=>{let q=T.context!==void 0||S===void 0?T:{...T,context:S},X=f!==void 0&&q.workflowName===void 0?{...q,workflowName:f}:q;if(X.type==="step_success"){let re=X.stepId;for(let le=g.length-1;le>=0;le--){let G=g[le];if(G.type==="race"&&!G.winnerId){G.winnerId=re;break}}}i?.(X,S)},j=Dr,V=T=>Fr(T),H=(T,q)=>T,ke=T=>typeof T=="function"?!1:!!(T&&typeof T=="object"&&"ok"in T||T&&typeof T=="object"&&"then"in T&&typeof T.then=="function");try{let q=function(d){let k={};for(let[o,s]of Object.entries(d))if(typeof s=="function")k[o]=s;else if(s&&typeof s=="object"&&"fn"in s)k[o]=s.fn;else throw new TypeError(`step.all: operation "${o}" must be a function or { fn, errors? } object`);return k},X=function(d,k){let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let s=performance.now(),t=!1;g.push({scopeId:o,type:"parallel"});let y=()=>{if(t)return;t=!0;let w=g.findIndex(R=>R.scopeId===o);w!==-1&&g.splice(w,1),c({type:"scope_end",workflowId:l,scopeId:o,ts:Date.now(),durationMs:performance.now()-s})};c({type:"scope_start",workflowId:l,scopeId:o,scopeType:"parallel",name:d,ts:Date.now()});try{let w=await k();if(y(),!w.ok)throw a?.(w.error,d,S),j(w.error,{origin:"result",resultCause:w.cause});return w.value}catch(w){throw y(),w}})()},re=function(d,k){let o=Object.keys(d),s=k.name??`Parallel(${o.join(", ")})`,t=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let y=performance.now(),w=!1;g.push({scopeId:t,type:"parallel"});let R=()=>{if(w)return;w=!0;let x=g.findIndex(b=>b.scopeId===t);x!==-1&&g.splice(x,1),c({type:"scope_end",workflowId:l,scopeId:t,ts:Date.now(),durationMs:performance.now()-y})};c({type:"scope_start",workflowId:l,scopeId:t,scopeType:"parallel",name:s,ts:Date.now()});try{let x=await new Promise(v=>{if(o.length===0){v([]);return}let U=!1,W=o.length,P=new Array(o.length);for(let B=0;B<o.length;B++){let I=o[B],M=B;Promise.resolve(d[I]()).catch(_=>O({type:"PROMISE_REJECTED",cause:_},{cause:{type:"PROMISE_REJECTION",reason:_}})).then(_=>{if(!U){if(!_.ok){U=!0,v([{key:I,result:_}]);return}P[M]={key:I,result:_},W--,W===0&&v(P)}})}});R();let b={};for(let{key:v,result:U}of x){if(!U.ok)throw a?.(U.error,v,S),j(U.error,{origin:"result",resultCause:U.cause});b[v]=U.value}return b}catch(x){throw R(),x}})()};var Re=q,Lr=X,Vr=re;let T=(d,k,o)=>(async()=>{if(typeof d!="string"||d.length===0)throw new Error('[awaitly] step() requires an explicit string ID as the first argument. Example: step("fetchUser", () => fetchUser(id))');let s=o??{},t=Mr(s),y=d,w=s.key??d,R=s.key??d,{description:x,retry:b,timeout:v}=s,U=D(w),W=i,P=W?performance.now():0,I=ke(k)?()=>k:k,_={attempts:Math.max(1,b?.attempts??1),backoff:b?.backoff??oe.backoff,initialDelay:b?.initialDelay??oe.initialDelay,maxDelay:b?.maxDelay??oe.maxDelay,jitter:b?.jitter??oe.jitter,shouldRetry:b?.shouldRetry??oe.shouldRetry,onRetry:b?.onRetry??oe.onRetry};i&&c({type:"step_start",workflowId:l,stepId:U,stepKey:w,name:y,description:x,ts:Date.now(),...t&&{metadata:t}});let te;for(let F=1;F<=_.attempts;F++){let kr=W?performance.now():0;try{let h;if(v?h=await jr(I,v,{name:y,key:w,attempt:F},N):h=await I(),h.ok){let ee=performance.now()-P;return c({type:"step_success",workflowId:l,stepId:U,stepKey:w,name:y,description:x,ts:Date.now(),durationMs:ee,...t&&{metadata:t}}),R&&c({type:"step_complete",workflowId:l,stepKey:R,name:y,description:x,ts:Date.now(),durationMs:ee,result:h,...t&&{metadata:t}}),h.value}if(te=h,F<_.attempts&&_.shouldRetry(h.error,F)){let ee=ve(F,_);c({type:"step_retry",workflowId:l,stepId:U,stepKey:w,name:y,ts:Date.now(),attempt:F+1,maxAttempts:_.attempts,delayMs:ee,error:h.error,...t&&{metadata:t},diagnostics:J(h.error,s.errorMeta,"result",F,performance.now()-P)}),_.onRetry(h.error,F,ee),await Pe(ee);continue}_.attempts>1&&c({type:"step_retries_exhausted",workflowId:l,stepId:U,stepKey:w,name:y,ts:Date.now(),durationMs:performance.now()-P,attempts:F,lastError:h.error,...t&&{metadata:t},diagnostics:J(h.error,s.errorMeta,"result",F,performance.now()-P)});break}catch(h){let ee=performance.now()-kr;if(Nr(h)){let Z=h.ms;c({type:"step_timeout",workflowId:l,stepId:U,stepKey:w,name:y,ts:Date.now(),timeoutMs:Z,attempt:F,...t&&{metadata:t},diagnostics:J(h,s.errorMeta,"timeout",F)}),c({type:"step_success",workflowId:l,stepId:U,stepKey:w,name:y,description:x,ts:Date.now(),durationMs:performance.now()-P,...t&&{metadata:t}}),R&&c({type:"step_complete",workflowId:l,stepKey:R,name:y,description:x,ts:Date.now(),durationMs:performance.now()-P,result:K(void 0),...t&&{metadata:t}});return}if(V(h))throw c({type:"step_aborted",workflowId:l,stepId:U,stepKey:w,name:y,description:x,ts:Date.now(),durationMs:ee,...t&&{metadata:t}}),h;if(Qe(h)){let Z=Ur(h),Rr=v?.ms??Z?.timeoutMs??0;if(c({type:"step_timeout",workflowId:l,stepId:U,stepKey:w,name:y,ts:Date.now(),timeoutMs:Rr,attempt:F,...t&&{metadata:t},diagnostics:J(h,s.errorMeta,"timeout",F)}),F<_.attempts&&_.shouldRetry(h,F)){let be=ve(F,_);c({type:"step_retry",workflowId:l,stepId:U,stepKey:w,name:y,ts:Date.now(),attempt:F+1,maxAttempts:_.attempts,delayMs:be,error:h,...t&&{metadata:t},diagnostics:J(h,s.errorMeta,"timeout",F,performance.now()-P)}),_.onRetry(h,F,be),await Pe(be);continue}_.attempts>1&&c({type:"step_retries_exhausted",workflowId:l,stepId:U,stepKey:w,name:y,ts:Date.now(),durationMs:performance.now()-P,attempts:F,lastError:h,...t&&{metadata:t},diagnostics:J(h,s.errorMeta,"timeout",F,performance.now()-P)});let Ce=performance.now()-P;throw c({type:"step_error",workflowId:l,stepId:U,stepKey:w,name:y,description:x,ts:Date.now(),durationMs:Ce,error:h,...t&&{metadata:t},diagnostics:J(h,s.errorMeta,"timeout",F,Ce)}),R&&c({type:"step_complete",workflowId:l,stepKey:R,name:y,description:x,ts:Date.now(),durationMs:Ce,result:O(h,{cause:h}),meta:{origin:"throw",thrown:h},...t&&{metadata:t}}),a?.(h,y,S),j(h,{origin:"throw",thrown:h})}if(F<_.attempts&&_.shouldRetry(h,F)){let Z=ve(F,_);c({type:"step_retry",workflowId:l,stepId:U,stepKey:w,name:y,ts:Date.now(),attempt:F+1,maxAttempts:_.attempts,delayMs:Z,error:h,...t&&{metadata:t},diagnostics:J(h,s.errorMeta,"throw",F,performance.now()-P)}),_.onRetry(h,F,Z),await Pe(Z);continue}_.attempts>1&&!Qe(h)&&c({type:"step_retries_exhausted",workflowId:l,stepId:U,stepKey:w,name:y,ts:Date.now(),durationMs:performance.now()-P,attempts:F,lastError:h,...t&&{metadata:t},diagnostics:J(h,s.errorMeta,"throw",F,performance.now()-P)});let Se=performance.now()-P,ae;try{ae=C(h)}catch(Z){throw ne(Z)}throw c({type:"step_error",workflowId:l,stepId:U,stepKey:w,name:y,description:x,ts:Date.now(),durationMs:Se,error:ae,...t&&{metadata:t},diagnostics:J(h,s.errorMeta,"throw",F,Se)}),R&&c({type:"step_complete",workflowId:l,stepKey:R,name:y,description:x,ts:Date.now(),durationMs:Se,result:O(ae,{cause:h}),meta:{origin:"throw",thrown:h},...t&&{metadata:t}}),a?.(ae,y,S),j(ae,{origin:"throw",thrown:h})}}let Q=te,ge=performance.now()-P,xe=H(Q.error,{origin:"result",resultCause:Q.cause});throw c({type:"step_error",workflowId:l,stepId:U,stepKey:w,name:y,description:x,ts:Date.now(),durationMs:ge,error:xe,...t&&{metadata:t},diagnostics:J(Q.error,s.errorMeta,"result",_.attempts,ge)}),R&&c({type:"step_complete",workflowId:l,stepKey:R,name:y,description:x,ts:Date.now(),durationMs:ge,result:Q,meta:{origin:"result",resultCause:Q.cause},...t&&{metadata:t}}),a?.(xe,y,S),j(xe,{origin:"result",resultCause:Q.cause})})();T.try=(d,k,o)=>{if(typeof d!="string"||d.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 T.retry(d,async()=>{try{return K(await k())}catch(x){return O(s(x),{cause:x})}},{attempts:o.retry?.attempts??1,...o.retry??{},key:o.key,timeout:o.timeout});let t=o.key??d,y=d,w=d,R=i;return(async()=>{let x=R?performance.now():0;i&&c({type:"step_start",workflowId:l,stepId:w,stepKey:t,name:y,ts:Date.now()});try{let b=await k(),v=performance.now()-x;return c({type:"step_success",workflowId:l,stepId:w,stepKey:t,name:y,ts:Date.now(),durationMs:v}),t&&c({type:"step_complete",workflowId:l,stepKey:t,name:y,ts:Date.now(),durationMs:v,result:K(b)}),b}catch(b){let v=s(b),U=performance.now()-x,W=H(v,{origin:"throw",thrown:b});throw c({type:"step_error",workflowId:l,stepId:w,stepKey:t,name:y,ts:Date.now(),durationMs:U,error:W}),t&&c({type:"step_complete",workflowId:l,stepKey:t,name:y,ts:Date.now(),durationMs:U,result:O(v,{cause:b}),meta:{origin:"throw",thrown:b}}),a?.(W,y,S),j(W,{origin:"throw",thrown:b})}})()},T.fromResult=(d,k,o)=>{if(typeof d!="string"||d.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??d,t=d,y=d,w="error"in o?()=>o.error:o.onError,R=i;return(async()=>{let x=R?performance.now():0;i&&c({type:"step_start",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now()});let b=await k();if(b.ok){let v=performance.now()-x;return c({type:"step_success",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:v}),s&&c({type:"step_complete",workflowId:l,stepKey:s,name:t,ts:Date.now(),durationMs:v,result:K(b.value)}),b.value}else{let v=w(b.error),U=performance.now()-x,W=H(v,{origin:"result",resultCause:b.error});throw c({type:"step_error",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:U,error:W}),s&&c({type:"step_complete",workflowId:l,stepKey:s,name:t,ts:Date.now(),durationMs:U,result:O(v,{cause:b.error}),meta:{origin:"result",resultCause:b.error}}),a?.(W,t,S),j(W,{origin:"result",resultCause:b.error})}})()},T.fromNullable=(d,k,o,s)=>{if(typeof d!="string"||d.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 T(d,async()=>{let t=await k();return t!=null?K(t):O(o())},s)},T.retry=(d,k,o)=>{if(typeof d!="string"||d.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 T(d,k,{key:o.key??d,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})},T.withTimeout=(d,k,o)=>{if(typeof d!="string"||d.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 T(d,k,{key:o.key??d,timeout:o})},T.sleep=(d,k,o)=>{if(typeof d!="string"||d.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 k=="string"?Pr(k):k;if(!s)throw new Error(`step.sleep: invalid duration '${k}'`);let t=s.millis,y=o?.signal;return T(d,async()=>{if(N?.aborted||y?.aborted){let w=new Error("Sleep aborted");throw w.name="AbortError",w}return new Promise((w,R)=>{let x={timeoutId:void 0},b=()=>{x.timeoutId&&clearTimeout(x.timeoutId);let v=new Error("Sleep aborted");v.name="AbortError",R(v)};N?.addEventListener("abort",b,{once:!0}),y?.addEventListener("abort",b,{once:!0}),x.timeoutId=setTimeout(()=>{N?.removeEventListener("abort",b),y?.removeEventListener("abort",b),w(K(void 0))},t)})},{key:o?.key??d,description:o?.description})},T.all=((...d)=>{if(typeof d[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 k=d[0],o=d[1];if(typeof o=="function")return X(k,o);if(o&&typeof o=="object"&&!Array.isArray(o)){let t=q(o);return re(t,{name:k})}throw new TypeError("step.all(name, ...): second argument must be a function (array form) or an object of operations (object form).")}),T.race=(d,k)=>{let o=`scope_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return(async()=>{let s=performance.now(),t=!1,y={scopeId:o,type:"race",winnerId:void 0};g.push(y);let w=()=>{if(t)return;t=!0;let R=g.findIndex(x=>x.scopeId===o);R!==-1&&g.splice(R,1),c({type:"scope_end",workflowId:l,scopeId:o,ts:Date.now(),durationMs:performance.now()-s,winnerId:y.winnerId})};c({type:"scope_start",workflowId:l,scopeId:o,scopeType:"race",name:d,ts:Date.now()});try{let R=await k();if(w(),!R.ok)throw a?.(R.error,d,S),j(R.error,{origin:"result",resultCause:R.cause});return R.value}catch(R){throw w(),R}})()},T.if=(d,k,o)=>o(),T.label=T.if,T.branch=async(d,k)=>{let{condition:o,then:s,else:t}=k;if(o())return await s();if(t)return await t()},T.arm=(d,k)=>({fn:d,errors:k}),T.forEach=async(d,k,o)=>{let s=[],t=o.maxIterations,y=0,w="run"in o,R=Symbol.asyncIterator in k?k:(async function*(){yield*k})();for await(let x of R){if(t!==void 0&&y>=t)break;let b;w?b=await o.run(x,y):b=await o.item.handler(x,y,T),s.push(b),y++}return s},T.item=d=>({__forEachItemHandler:!0,handler:d}),T.dep=(d,k)=>k,T.workflow=(d,k,o)=>T(d,k,o),T.map=async(d,k,o,s)=>{let t=s?.concurrency??k.length;return T(d,()=>t>=k.length?rr(k.map((y,w)=>o(y,w))):(async()=>{let y=[];for(let w=0;w<k.length;w+=t){let R=k.slice(w,w+t),x=await rr(R.map((b,v)=>o(b,w+v)));if(!x.ok)return x;y.push(...x.value)}return K(y)})(),{key:s?.key})},T.withFallback=(d,k,o)=>{if(typeof d!="string"||d.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??d,t=d,y=D(s),w=i;return(async()=>{let R=w?performance.now():0;i&&c({type:"step_start",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now()});let x;try{x=await k()}catch(P){if(V(P))throw c({type:"step_aborted",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:performance.now()-R}),P;let B;try{B=C(P)}catch(M){throw ne(M)}if(o.on!==void 0&&o.on!==B){let M=performance.now()-R;throw c({type:"step_error",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:M,error:B}),s&&c({type:"step_complete",workflowId:l,stepKey:s,name:t,ts:Date.now(),durationMs:M,result:O(B,{cause:P}),meta:{origin:"throw",thrown:P}}),a?.(B,t,S),j(B,{origin:"throw",thrown:P})}let I;try{I=await o.fallback()}catch(M){if(V(M))throw c({type:"step_aborted",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:performance.now()-R}),M;let _;try{_=C(M)}catch(Q){throw ne(Q)}let te=performance.now()-R;throw c({type:"step_error",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:te,error:_}),s&&c({type:"step_complete",workflowId:l,stepKey:s,name:t,ts:Date.now(),durationMs:te,result:O(_,{cause:M}),meta:{origin:"throw",thrown:M}}),a?.(_,t,S),j(_,{origin:"throw",thrown:M})}if(I.ok){let M=performance.now()-R;return c({type:"step_success",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:M}),s&&c({type:"step_complete",workflowId:l,stepKey:s,name:t,ts:Date.now(),durationMs:M,result:I,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(B)}}),I.value}else{let M=performance.now()-R,_=H(I.error,{origin:"result",resultCause:I.cause});throw c({type:"step_error",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:M,error:_}),s&&c({type:"step_complete",workflowId:l,stepKey:s,name:t,ts:Date.now(),durationMs:M,result:I,meta:{origin:"result",resultCause:I.cause}}),a?.(_,t,S),j(_,{origin:"result",resultCause:I.cause})}}if(x.ok){let P=performance.now()-R;return c({type:"step_success",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:P}),s&&c({type:"step_complete",workflowId:l,stepKey:s,name:t,ts:Date.now(),durationMs:P,result:x}),x.value}let b=x.error;if(o.on!==void 0&&o.on!==b){let P=performance.now()-R,B=H(b,{origin:"result",resultCause:x.cause});throw c({type:"step_error",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:P,error:B}),s&&c({type:"step_complete",workflowId:l,stepKey:s,name:t,ts:Date.now(),durationMs:P,result:x,meta:{origin:"result",resultCause:x.cause}}),a?.(B,t,S),j(B,{origin:"result",resultCause:x.cause})}let v;try{v=await o.fallback()}catch(P){if(V(P))throw c({type:"step_aborted",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:performance.now()-R}),P;let B;try{B=C(P)}catch(M){throw ne(M)}let I=performance.now()-R;throw c({type:"step_error",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:I,error:B}),s&&c({type:"step_complete",workflowId:l,stepKey:s,name:t,ts:Date.now(),durationMs:I,result:O(B,{cause:P}),meta:{origin:"throw",thrown:P}}),a?.(B,t,S),j(B,{origin:"throw",thrown:P})}if(v.ok){let P=performance.now()-R;return c({type:"step_success",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:P}),s&&c({type:"step_complete",workflowId:l,stepKey:s,name:t,ts:Date.now(),durationMs:P,result:v,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(b)}}),v.value}let U=performance.now()-R,W=H(v.error,{origin:"result",resultCause:v.cause});throw c({type:"step_error",workflowId:l,stepId:y,stepKey:s,name:t,ts:Date.now(),durationMs:U,error:W}),s&&c({type:"step_complete",workflowId:l,stepKey:s,name:t,ts:Date.now(),durationMs:U,result:v,meta:{origin:"result",resultCause:v.cause}}),a?.(W,t,S),j(W,{origin:"result",resultCause:v.cause})})()},T.withResource=(d,k)=>{if(typeof d!="string"||d.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=d,s=d,t=D(o),y=i;return(async()=>{let w=y?performance.now():0;i&&c({type:"step_start",workflowId:l,stepId:t,stepKey:o,name:s,ts:Date.now()});let R;try{R=await k.acquire()}catch(I){if(V(I))throw c({type:"step_aborted",workflowId:l,stepId:t,stepKey:o,name:s,ts:Date.now(),durationMs:performance.now()-w}),I;let M;try{M=C(I)}catch(te){throw ne(te)}let _=performance.now()-w;throw c({type:"step_error",workflowId:l,stepId:t,stepKey:o,name:s,ts:Date.now(),durationMs:_,error:M}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:s,ts:Date.now(),durationMs:_,result:O(M,{cause:I}),meta:{origin:"throw",thrown:I}}),a?.(M,s,S),j(M,{origin:"throw",thrown:I})}if(!R.ok){let I=performance.now()-w,M=H(R.error,{origin:"result",resultCause:R.cause});throw c({type:"step_error",workflowId:l,stepId:t,stepKey:o,name:s,ts:Date.now(),durationMs:I,error:M}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:s,ts:Date.now(),durationMs:I,result:R,meta:{origin:"result",resultCause:R.cause}}),a?.(M,s,S),j(M,{origin:"result",resultCause:R.cause})}let x=R.value,b,v,U=!1;try{b=await k.use(x)}catch(I){if(V(I)){try{await k.release(x)}catch(M){console.warn(`[awaitly] step.withResource("${d}"): release threw after earlyExit:`,M)}throw I}v=I,U=!0}try{await k.release(x)}catch(I){console.warn(`[awaitly] step.withResource("${d}"): release threw:`,I)}if(U){let I;try{I=C(v)}catch(_){throw ne(_)}let M=performance.now()-w;throw c({type:"step_error",workflowId:l,stepId:t,stepKey:o,name:s,ts:Date.now(),durationMs:M,error:I}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:s,ts:Date.now(),durationMs:M,result:O(I,{cause:v}),meta:{origin:"throw",thrown:v}}),a?.(I,s,S),j(I,{origin:"throw",thrown:v})}let W=b;if(W.ok){let I=performance.now()-w;return c({type:"step_success",workflowId:l,stepId:t,stepKey:o,name:s,ts:Date.now(),durationMs:I}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:s,ts:Date.now(),durationMs:I,result:W}),W.value}let P=performance.now()-w,B=H(W.error,{origin:"result",resultCause:W.cause});throw c({type:"step_error",workflowId:l,stepId:t,stepKey:o,name:s,ts:Date.now(),durationMs:P,error:B}),o&&c({type:"step_complete",workflowId:l,stepKey:o,name:s,ts:Date.now(),durationMs:P,result:W,meta:{origin:"result",resultCause:W.cause}}),a?.(B,s,S),j(B,{origin:"result",resultCause:W.cause})})()};let G=await u({step:T});if(process.env.NODE_ENV!=="production"&&G!==null&&typeof G=="object"&&"ok"in G&&typeof G.ok=="boolean"){let d=G;(d.ok===!0&&"value"in d||d.ok===!1&&"error"in d)&&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 K(G)}catch(T){if(Kr(T))throw T.thrown;if(V(T)){let X=T.meta.origin==="throw"?T.meta.thrown:T.meta.origin==="result"?T.meta.resultCause:void 0;return O(T.error,{cause:X})}let q=C(T);return a?.(q,"unexpected",S),O(q,{cause:T})}}Ie.strict=(e,r)=>Ie(e,r);async function rr(e){return e.length===0?K([]):new Promise(r=>{let n=!1,u=e.length,E=new Array(e.length);for(let a=0;a<e.length;a++){let i=a;Promise.resolve(e[i]).catch(p=>O({type:"PROMISE_REJECTED",cause:p},{cause:{type:"PROMISE_REJECTION",reason:p}})).then(p=>{if(!n){if(!p.ok){n=!0,r(p);return}E[i]=p.value,u--,u===0&&r(K(E))}})}})}function _e(e={}){let r=e.maxItemsPerStream??1/0,n=new Map;function u(a,i){return`${a}:${i}`}function E(a,i){let p=u(a,i),m=n.get(p);return m||(m={metadata:{id:p,namespace:i,workflowId:a,length:0,closed:!1,createdAt:Date.now()},items:[],subscribers:new Set},n.set(p,m)),m}return{async append(a,i,p){try{let m=E(a,i);if(m.metadata.closed)return O(L("write_error","Cannot write to closed stream"));if(m.items.length>=r)return O(L("write_error",`Stream exceeded max items limit (${r})`));m.items.push(p),m.metadata.length=m.items.length,m.metadata.lastWriteAt=Date.now();for(let f of m.subscribers)try{f(p)}catch{}return K(void 0)}catch(m){return O(L("write_error","Failed to append item",m))}},async read(a,i,p,m){try{let f=u(a,i),S=n.get(f);if(!S)return K([]);let N=m!==void 0?Math.min(p+m,S.items.length):S.items.length,l=S.items.slice(p,N);return K(l)}catch(f){return O(L("read_error","Failed to read items",f))}},async getMetadata(a,i){try{let p=u(a,i),m=n.get(p);return K(m?.metadata)}catch(p){return O(L("metadata_error","Failed to get metadata",p))}},async closeStream(a,i){try{let p=u(a,i),m=n.get(p);return m&&(m.metadata.closed=!0,m.metadata.closedAt=Date.now()),K(void 0)}catch(p){return O(L("close_error","Failed to close stream",p))}},subscribe(a,i,p){let m=E(a,i),f=p;return m.subscribers.add(f),()=>{m.subscribers.delete(f)}}}}function or(e={}){let r=new Map,n=e.maxItemsPerStream??1/0;function u(i,p){return`${i}:${p}`}function E(i,p){let m=u(i,p),f=r.get(m);return f||(f={metadata:{id:m,namespace:p,workflowId:i,length:0,closed:!1,createdAt:Date.now()},items:[],subscribers:new Set},r.set(m,f)),f}return{..._e(e),async append(i,p,m){try{let f=E(i,p);if(f.metadata.closed)return O(L("write_error","Cannot write to closed stream"));if(f.items.length>=n)return O(L("write_error",`Stream exceeded max items limit (${n})`));f.items.push(m),f.metadata.length=f.items.length,f.metadata.lastWriteAt=Date.now();for(let S of f.subscribers)try{S(m)}catch{}return K(void 0)}catch(f){return O(L("write_error","Failed to append item",f))}},async read(i,p,m,f){try{let S=u(i,p),N=r.get(S);if(!N)return K([]);let l=f!==void 0?Math.min(m+f,N.items.length):N.items.length,C=N.items.slice(m,l);return K(C)}catch(S){return O(L("read_error","Failed to read items",S))}},async getMetadata(i,p){try{let m=u(i,p),f=r.get(m);return K(f?.metadata)}catch(m){return O(L("metadata_error","Failed to get metadata",m))}},async closeStream(i,p){try{let m=u(i,p),f=r.get(m);return f&&(f.metadata.closed=!0,f.metadata.closedAt=Date.now()),K(void 0)}catch(m){return O(L("close_error","Failed to close stream",m))}},subscribe(i,p,m){let f=E(i,p),S=m;return f.subscribers.add(S),()=>{f.subscribers.delete(S)}},clear(){r.clear()},keys(){return Array.from(r.keys())},has(i,p){return r.has(u(i,p))},delete(i,p){return r.delete(u(i,p))}}}function sr(e){let{directory:r,fs:n}=e,u=new Map;function E(C,g){return`${r}/${C}/${g}`}function a(C,g){return`${E(C,g)}/metadata.json`}function i(C,g){return`${E(C,g)}/items.jsonl`}function p(C,g){return`${C}:${g}`}async function m(C,g){let A=E(C,g);await n.mkdir(A,{recursive:!0})}async function f(C,g){let A=a(C,g);if(!await n.exists(A))return;let D=await n.readFile(A);return JSON.parse(D)}async function S(C,g,A){await m(C,g);let D=a(C,g);await n.writeFile(D,JSON.stringify(A,null,2))}async function N(C,g,A){await m(C,g);let D=i(C,g),c=JSON.stringify(A)+`
7
- `,j="";await n.exists(D)&&(j=await n.readFile(D)),await n.writeFile(D,j+c)}async function l(C,g,A,D){let c=i(C,g);if(!await n.exists(c))return[];let V=(await n.readFile(c)).trim().split(`
8
- `).filter(Boolean),H=[];for(let ke of V){let Re=JSON.parse(ke);if(Re.position>=A&&(H.push(Re),D!==void 0&&H.length>=D))break}return H}return{async append(C,g,A){try{let D=await f(C,g);if(D||(D={id:`${C}:${g}`,namespace:g,workflowId:C,length:0,closed:!1,createdAt:Date.now()}),D.closed)return O(L("write_error","Cannot write to closed stream"));let c={value:A.value,position:A.position,ts:A.ts};await N(C,g,c),D.length++,D.lastWriteAt=Date.now(),await S(C,g,D);let j=p(C,g),V=u.get(j);if(V)for(let H of V)try{H(A)}catch{}return K(void 0)}catch(D){return O(L("write_error","Failed to append item",D))}},async read(C,g,A,D){try{let j=(await l(C,g,A,D)).map(V=>({value:V.value,position:V.position,ts:V.ts}));return K(j)}catch(c){return O(L("read_error","Failed to read items",c))}},async getMetadata(C,g){try{let A=await f(C,g);return A?K({id:A.id,namespace:A.namespace,workflowId:A.workflowId,length:A.length,closed:A.closed,createdAt:A.createdAt,lastWriteAt:A.lastWriteAt,closedAt:A.closedAt}):K(void 0)}catch(A){return O(L("metadata_error","Failed to get metadata",A))}},async closeStream(C,g){try{let A=await f(C,g);return A&&(A.closed=!0,A.closedAt=Date.now(),await S(C,g,A)),K(void 0)}catch(A){return O(L("close_error","Failed to close stream",A))}},subscribe(C,g,A){let D=p(C,g),c=u.get(D);c||(c=new Set,u.set(D,c));let j=A;return c.add(j),()=>{c?.delete(j),c?.size===0&&u.delete(D)}}}}async function*$(e){for(;e.readable;){let r=await e.read();if(!r.ok){if(fe(r.error))break;throw r.error}yield r.value}}async function*ar(e,r){let n=Y(e)?$(e):e,u=0;for await(let E of n)yield await r(E,u++)}async function*ir(e,r){let n=Y(e)?$(e):e,u=0;for await(let E of n)await r(E,u++)&&(yield E)}async function*ur(e,r){if(r<1)throw new Error("Chunk size must be at least 1");let n=Y(e)?$(e):e,u=[];for await(let E of n)u.push(E),u.length>=r&&(yield u,u=[]);u.length>0&&(yield u)}async function*cr(e,r){let n=Y(e)?$(e):e,u=0;for await(let E of n){let a=r(E,u++);if(Symbol.asyncIterator in a)for await(let i of a)yield i;else for(let i of a)yield i}}async function*lr(e,r){let n=Y(e)?$(e):e,u=0;for await(let E of n){let a=await r(E,u++);if(!a.ok){yield O(a.error);return}let i=a.value;if(Symbol.asyncIterator in i)for await(let p of i)yield K(p);else for(let p of i)yield K(p)}}async function*pr(e,r){let n=Y(e)?$(e):e,u=0;for await(let E of n)yield await r(E,u++)}async function*mr(e,r){if(r<=0)return;let n=Y(e)?$(e):e,u=0;for await(let E of n)if(yield E,u++,u>=r)break}async function*dr(e,r){let n=Y(e)?$(e):e,u=0;for await(let E of n){if(u<r){u++;continue}yield E}}async function*Er(e,r){let n=Y(e)?$(e):e,u=0;for await(let E of n){if(!await r(E,u++))break;yield E}}async function*yr(e,r){let n=Y(e)?$(e):e,u=!0,E=0;for await(let a of n)u&&await r(a,E++)||(u=!1,yield a)}async function fr(e){let r=[],n=Y(e)?$(e):e;for await(let u of n)r.push(u);return r}async function wr(e,r,n){let u=n,E=Y(e)?$(e):e,a=0;for await(let i of E)u=await r(u,i,a++);return u}function Y(e){return typeof e=="object"&&e!==null&&"read"in e&&typeof e.read=="function"&&"readable"in e}function Tr(e,...r){let n=Y(e)?$(e):e;for(let u of r)n=u(n);return n}function Br(e){let{store:r,workflowId:n,namespace:u="default",startIndex:E=0,pollInterval:a=100,pollTimeout:i=3e4}=e,p=E,m=!0,f=!1,S=[],N=0;return{async read(){if(f)return O(ie("closed","Reader is closed"));if(N<S.length){let g=S[N++];return p=g.position+1,K(g.value)}let C=Date.now();for(;Date.now()-C<i;){let g=await r.read(n,u,p,100);if(!g.ok)return O(ie("store_error",g.error.message,g.error));let A=g.value;if(A.length>0){S=A,N=1;let c=A[0];return p=c.position+1,K(c.value)}let D=await r.getMetadata(n,u);if(D.ok&&D.value?.closed)return m=!1,O(ue(p));await new Promise(c=>setTimeout(c,a))}return m=!1,O(ue(p))},close(){f=!0,m=!1,S=[]},get readable(){return m},get position(){return p},get namespace(){return u}}}0&&(module.exports={STREAM_BACKPRESSURE_ERROR,STREAM_CLOSE_ERROR,STREAM_ENDED,STREAM_READ_ERROR,STREAM_STORE_ERROR,STREAM_WRITE_ERROR,chunk,collect,createBackpressureController,createFileStreamStore,createMemoryStreamStore,createTestableMemoryStreamStore,filter,flatMap,flatMapAsync,getStreamReader,isStreamBackpressureError,isStreamEnded,isStreamReadError,isStreamStoreError,isStreamWriteError,map,mapAsync,pipe,reduce,shouldApplyBackpressure,skip,skipWhile,streamBackpressureError,streamCloseError,streamEnded,streamReadError,streamStoreError,streamWriteError,take,takeWhile,toAsyncIterable});
9
- //# sourceMappingURL=streaming.cjs.map