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.d.cts DELETED
@@ -1,5 +0,0 @@
1
- export { A as AWAITLY_CANCELLED, a as AWAITLY_TIMEOUT, b as AWAITLY_UNEXPECTED, c as AsyncResult, C as CauseOf, E as EmptyInputError, d as Err, e as ErrorClassification, f as ErrorOf, g as Errors, h as ErrorsOf, i as ExtractCause, j as ExtractError, k as ExtractValue, M as MatchErrorHandlers, l as MaybeAsyncResult, O as Ok, P as PROMISE_REJECTED, m as PromiseRejectedError, n as PromiseRejectionCause, R as Result, S as SettledError, o as StepErrorDiagnostics, p as StepMetadata, U as UnwrapError, q as all, r as allAsync, s as allSettled, t as allSettledAsync, u as andThen, v as any, w as anyAsync, x as bimap, y as err, z as extractErrorTag, B as extractStepMetadata, D as from, F as fromNullable, G as fromPromise, H as hydrate, I as isErr, J as isOk, K as isSerializedResult, L as isUnexpectedError, N as lookupErrorClassification, Q as map, T as mapError, V as mapErrorTry, W as mapTry, X as match, Y as matchError, Z as ok, _ as orElse, $ as orElseAsync, a0 as partition, a1 as recover, a2 as recoverAsync, a3 as runOrNull, a4 as runOrThrow, a5 as runOrThrowAsync, a6 as runOrUndefined, a7 as tags, a8 as tap, a9 as tapError, aa as tryAsync, ab as unwrap, ac as unwrapOr, ad as unwrapOrElse } from './run-entry-D2MmJFj9.cjs';
2
- export { ErrorByTag, PropsOf, TagOf, TaggedError, TaggedErrorBase, TaggedErrorConstructor, TaggedErrorCreateOptions, TaggedErrorOptions } from './tagged-error.cjs';
3
- export { ALL_SLUGS, AWAITLY_SLUGS, AwaitlySlug, AwaitlySlugCategory, isAwaitlySlug, slugCategory, slugDocsUrl } from './slugs.cjs';
4
- export { M as Match, a as MatchTag, b as Matcher, T as Tagged, e as exhaustive, i as isOneOf, c as isTag, o as matchOrElse, t as matchTag, d as matchTags, m as matchValue, w as matchWhen, f as orElseValue } from './match-entry-DjI2bLpD.cjs';
5
- export { UnexpectedError } from './errors.cjs';
package/dist/core.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export { A as AWAITLY_CANCELLED, a as AWAITLY_TIMEOUT, b as AWAITLY_UNEXPECTED, c as AsyncResult, C as CauseOf, E as EmptyInputError, d as Err, e as ErrorClassification, f as ErrorOf, g as Errors, h as ErrorsOf, i as ExtractCause, j as ExtractError, k as ExtractValue, M as MatchErrorHandlers, l as MaybeAsyncResult, O as Ok, P as PROMISE_REJECTED, m as PromiseRejectedError, n as PromiseRejectionCause, R as Result, S as SettledError, o as StepErrorDiagnostics, p as StepMetadata, U as UnwrapError, q as all, r as allAsync, s as allSettled, t as allSettledAsync, u as andThen, v as any, w as anyAsync, x as bimap, y as err, z as extractErrorTag, B as extractStepMetadata, D as from, F as fromNullable, G as fromPromise, H as hydrate, I as isErr, J as isOk, K as isSerializedResult, L as isUnexpectedError, N as lookupErrorClassification, Q as map, T as mapError, V as mapErrorTry, W as mapTry, X as match, Y as matchError, Z as ok, _ as orElse, $ as orElseAsync, a0 as partition, a1 as recover, a2 as recoverAsync, a3 as runOrNull, a4 as runOrThrow, a5 as runOrThrowAsync, a6 as runOrUndefined, a7 as tags, a8 as tap, a9 as tapError, aa as tryAsync, ab as unwrap, ac as unwrapOr, ad as unwrapOrElse } from './run-entry-Dduz-is2.js';
2
- export { ErrorByTag, PropsOf, TagOf, TaggedError, TaggedErrorBase, TaggedErrorConstructor, TaggedErrorCreateOptions, TaggedErrorOptions } from './tagged-error.js';
3
- export { ALL_SLUGS, AWAITLY_SLUGS, AwaitlySlug, AwaitlySlugCategory, isAwaitlySlug, slugCategory, slugDocsUrl } from './slugs.js';
4
- export { M as Match, a as MatchTag, b as Matcher, T as Tagged, e as exhaustive, i as isOneOf, c as isTag, o as matchOrElse, t as matchTag, d as matchTags, m as matchValue, w as matchWhen, f as orElseValue } from './match-entry-DjI2bLpD.js';
5
- export { UnexpectedError } from './errors.js';
package/dist/core.js DELETED
@@ -1,7 +0,0 @@
1
- var pe={"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 Xe(e){return e.split("-")[0]}function de(e){return`https://jagreehal.github.io/awaitly/rules/#${e}`}function Qe(e){return Object.prototype.hasOwnProperty.call(pe,e)}var Ze=Object.keys(pe);var te=class extends Error{_tag};function N(e,t){return class extends te{_tag=e;constructor(r,i){let R=t?.message?t.message(r??{}):e;if(super(R),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:de(t.slug),enumerable:!0,writable:!1,configurable:!1})}if(Object.setPrototypeOf(this,new.target.prototype),r&&typeof r=="object"){let g;if(t?.slug!==void 0){let{_tag:u,name:K,message:D,stack:j,code:H,hint:l,docsUrl:U,...V}=r;g=V}else{let{_tag:u,name:K,message:D,stack:j,...H}=r;g=H}let C=Object.prototype.hasOwnProperty.call(g,"cause"),w=C?g.cause:void 0;C&&delete g.cause;let P=i?.cause!==void 0;if(C&&P)throw new TypeError("TaggedError: cannot provide 'cause' in props when also setting ErrorOptions.cause");Object.assign(this,g),C&&(this.cause=w),P&&(this.cause=i?.cause)}else i?.cause!==void 0&&(this.cause=i.cause)}}}Object.defineProperty(N,Symbol.hasInstance,{value:e=>e instanceof te});(R=>{function e(g){return g instanceof Error}R.isError=e;function t(g){return g instanceof te}R.isTaggedError=t;function r(g,C){let w=g._tag,P=C[w];return P(g)}R.match=r;function i(g,C,w){let P=g._tag,u=C[P];return u?u(g):w(g)}R.matchPartial=i})(N||={});var fe=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`}){},Te=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`}){},ke=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`:""}`}){},Re=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`:""}`}){},xe=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`}){},Ce=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"}){},be=class extends N("NetworkError",{message:t=>t.url?`NetworkError: ${t.reason} (${t.url})`:`NetworkError: ${t.reason}`}){},Se=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 et(e){let t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d)$/i);if(!t)return;let r=parseFloat(t[1]),i=t[2].toLowerCase();return{_tag:"Duration",millis:r*({ms:1,s:1e3,m:6e4,h:36e5,d:864e5}[i]??1)}}var tt="PROMISE_REJECTED",rt="AWAITLY_UNEXPECTED",nt="AWAITLY_CANCELLED",ot="AWAITLY_TIMEOUT",st=(...e)=>e;function at(e){return new G({cause:e})}function I(e){return{ok:!0,value:e}}function _(e,t){let r=t?.cause;return{ok:!1,error:e,...r!==void 0?{cause:r}:{}}}var it=e=>e.ok,ut=e=>!e.ok,Me=e=>e instanceof G||typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="UnexpectedError";function ve(e,t){if(t===void 0){let i=e;return R=>ve(R,i)}let r=e;return Me(r)?t.UnexpectedError(r):t[r](r)}function Pe(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 Ie(e,t){if(!(!t||!e))return t[e]}function De(e){let{intent:t,domain:r,owner:i,tags:R,stateChanges:g,emits:C,calls:w}=e;if(!t&&!r&&!i&&!R?.length&&!g?.length&&!C?.length&&!w?.length)return;let P={};return t&&(P.intent=t),r&&(P.domain=r),i&&(P.owner=i),R?.length&&(P.tags=R),g?.length&&(P.stateChanges=g),C?.length&&(P.emits=C),w?.length&&(P.calls=w),P}function F(e,t,r,i,R){let g=Pe(e),C=Ie(g,t),w={tag:g,origin:r};return C!==void 0&&(w.classification=C),i!==void 0&&(w.attempt=i),R!==void 0&&(w.cumulativeDurationMs=R),w}var Z=Symbol.for("step_timeout_marker");function Ae(e){return typeof e!="object"||e===null?!1:e.type==="STEP_TIMEOUT"?!0:Z in e}function ct(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 Ue=Symbol("early-exit");function lt(e,t){return{[Ue]:!0,error:e,meta:t}}function pt(e){return typeof e=="object"&&e!==null&&e[Ue]===!0}var Ne=Symbol("mapper-exception");function X(e){return{[Ne]:!0,thrown:e}}function dt(e){return typeof e=="object"&&e!==null&&e[Ne]===!0}function me(e,t){let{backoff:r,initialDelay:i,maxDelay:R,jitter:g}=t,C;switch(r){case"fixed":C=i;break;case"linear":C=i*e;break;case"exponential":C=i*Math.pow(2,e-1);break}if(C=Math.min(C,R),g){let w=C*.25*Math.random();C=C+w}return Math.floor(C)}function Ee(e){return new Promise(t=>setTimeout(t,e))}var Oe=Symbol("timeout"),oe=Symbol("timeout-option");function mt(e){return typeof e=="object"&&e!==null&&e[oe]===!0}async function Et(e,t,r,i){let R=new AbortController,g=t.onTimeout??"error",C=()=>typeof g=="function"?g({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;i?.aborted&&R.abort(i.reason);let P;i&&!i.aborted&&(P=()=>R.abort(i.reason),i.addEventListener("abort",P,{once:!0}));let u=new Promise((D,j)=>{w=setTimeout(()=>{if(g!=="disconnect"&&R.abort(),g==="option"){j({[oe]:!0,ms:t.ms});return}j({[Oe]:!0,error:C()})},t.ms)}),K;t.signal?K=Promise.resolve(e(R.signal)):K=Promise.resolve(e());try{return await Promise.race([K,u])}catch(D){if(typeof D=="object"&&D!==null&&D[oe]===!0)throw{[oe]:!0,ms:t.ms};if(typeof D=="object"&&D!==null&&D[Oe]===!0){g==="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),P&&i&&i.removeEventListener("abort",P)}}var Q={backoff:"exponential",initialDelay:100,maxDelay:3e4,jitter:!0,shouldRetry:()=>!0,onRetry:()=>{}};async function _e(e,t){let{onError:r,onEvent:i,catchUnexpected:R,workflowId:g,workflowName:C,context:w,_workflowSignal:P}=t&&typeof t=="object"?t:{},u=g??crypto.randomUUID(),K=R??at,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 re=q.stepId;for(let ne=D.length-1;ne>=0;ne--){let B=D[ne];if(B.type==="race"&&!B.winnerId){B.winnerId=re;break}}}i?.(q,w)},U=lt,V=d=>pt(d),W=(d,L)=>d,ze=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(a){let m={};for(let[o,s]of Object.entries(a))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(a,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:a,ts:Date.now()});try{let p=await m();if(c(),!p.ok)throw r?.(p.error,a,w),U(p.error,{origin:"result",resultCause:p.cause});return p.value}catch(p){throw c(),p}})()},re=function(a,m){let o=Object.keys(a),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(f=>f.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(k=>{if(o.length===0){k([]);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(a[h]()).catch(b=>_({type:"PROMISE_REJECTED",cause:b},{cause:{type:"PROMISE_REJECTION",reason:b}})).then(b=>{if(!A){if(!b.ok){A=!0,k([{key:h,result:b}]);return}x[S]={key:h,result:b},v--,v===0&&k(x)}})}});E();let f={};for(let{key:k,result:A}of y){if(!A.ok)throw r?.(A.error,k,w),U(A.error,{origin:"result",resultCause:A.cause});f[k]=A.value}return f}catch(y){throw E(),y}})()};var qt=L,Yt=q,zt=re;let d=(a,m,o)=>(async()=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step() requires an explicit string ID as the first argument. Example: step("fetchUser", () => fetchUser(id))');let s=o??{},n=De(s),c=a,p=s.key??a,E=s.key??a,{description:y,retry:f,timeout:k}=s,A=H(p),v=i,x=v?performance.now():0,h=ze(m)?()=>m:m,b={attempts:Math.max(1,f?.attempts??1),backoff:f?.backoff??Q.backoff,initialDelay:f?.initialDelay??Q.initialDelay,maxDelay:f?.maxDelay??Q.maxDelay,jitter:f?.jitter??Q.jitter,shouldRetry:f?.shouldRetry??Q.shouldRetry,onRetry:f?.onRetry??Q.onRetry};i&&l({type:"step_start",workflowId:u,stepId:A,stepKey:p,name:c,description:y,ts:Date.now(),...n&&{metadata:n}});let J;for(let O=1;O<=b.attempts;O++){let Je=v?performance.now():0;try{let T;if(k?T=await Et(h,k,{name:c,key:p,attempt:O},P):T=await h(),T.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:T,...n&&{metadata:n}}),T.value}if(J=T,O<b.attempts&&b.shouldRetry(T.error,O)){let z=me(O,b);l({type:"step_retry",workflowId:u,stepId:A,stepKey:p,name:c,ts:Date.now(),attempt:O+1,maxAttempts:b.attempts,delayMs:z,error:T.error,...n&&{metadata:n},diagnostics:F(T.error,s.errorMeta,"result",O,performance.now()-x)}),b.onRetry(T.error,O,z),await Ee(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:O,lastError:T.error,...n&&{metadata:n},diagnostics:F(T.error,s.errorMeta,"result",O,performance.now()-x)});break}catch(T){let z=performance.now()-Je;if(mt(T)){let $=T.ms;l({type:"step_timeout",workflowId:u,stepId:A,stepKey:p,name:c,ts:Date.now(),timeoutMs:$,attempt:O,...n&&{metadata:n},diagnostics:F(T,s.errorMeta,"timeout",O)}),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:I(void 0),...n&&{metadata:n}});return}if(V(T))throw l({type:"step_aborted",workflowId:u,stepId:A,stepKey:p,name:c,description:y,ts:Date.now(),durationMs:z,...n&&{metadata:n}}),T;if(Ae(T)){let $=ct(T),Ge=k?.ms??$?.timeoutMs??0;if(l({type:"step_timeout",workflowId:u,stepId:A,stepKey:p,name:c,ts:Date.now(),timeoutMs:Ge,attempt:O,...n&&{metadata:n},diagnostics:F(T,s.errorMeta,"timeout",O)}),O<b.attempts&&b.shouldRetry(T,O)){let le=me(O,b);l({type:"step_retry",workflowId:u,stepId:A,stepKey:p,name:c,ts:Date.now(),attempt:O+1,maxAttempts:b.attempts,delayMs:le,error:T,...n&&{metadata:n},diagnostics:F(T,s.errorMeta,"timeout",O,performance.now()-x)}),b.onRetry(T,O,le),await Ee(le);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:O,lastError:T,...n&&{metadata:n},diagnostics:F(T,s.errorMeta,"timeout",O,performance.now()-x)});let ce=performance.now()-x;throw l({type:"step_error",workflowId:u,stepId:A,stepKey:p,name:c,description:y,ts:Date.now(),durationMs:ce,error:T,...n&&{metadata:n},diagnostics:F(T,s.errorMeta,"timeout",O,ce)}),E&&l({type:"step_complete",workflowId:u,stepKey:E,name:c,description:y,ts:Date.now(),durationMs:ce,result:_(T,{cause:T}),meta:{origin:"throw",thrown:T},...n&&{metadata:n}}),r?.(T,c,w),U(T,{origin:"throw",thrown:T})}if(O<b.attempts&&b.shouldRetry(T,O)){let $=me(O,b);l({type:"step_retry",workflowId:u,stepId:A,stepKey:p,name:c,ts:Date.now(),attempt:O+1,maxAttempts:b.attempts,delayMs:$,error:T,...n&&{metadata:n},diagnostics:F(T,s.errorMeta,"throw",O,performance.now()-x)}),b.onRetry(T,O,$),await Ee($);continue}b.attempts>1&&!Ae(T)&&l({type:"step_retries_exhausted",workflowId:u,stepId:A,stepKey:p,name:c,ts:Date.now(),durationMs:performance.now()-x,attempts:O,lastError:T,...n&&{metadata:n},diagnostics:F(T,s.errorMeta,"throw",O,performance.now()-x)});let ue=performance.now()-x,ee;try{ee=K(T)}catch($){throw X($)}throw l({type:"step_error",workflowId:u,stepId:A,stepKey:p,name:c,description:y,ts:Date.now(),durationMs:ue,error:ee,...n&&{metadata:n},diagnostics:F(T,s.errorMeta,"throw",O,ue)}),E&&l({type:"step_complete",workflowId:u,stepKey:E,name:c,description:y,ts:Date.now(),durationMs:ue,result:_(ee,{cause:T}),meta:{origin:"throw",thrown:T},...n&&{metadata:n}}),r?.(ee,c,w),U(ee,{origin:"throw",thrown:T})}}let Y=J,ae=performance.now()-x,ie=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:ae,error:ie,...n&&{metadata:n},diagnostics:F(Y.error,s.errorMeta,"result",b.attempts,ae)}),E&&l({type:"step_complete",workflowId:u,stepKey:E,name:c,description:y,ts:Date.now(),durationMs:ae,result:Y,meta:{origin:"result",resultCause:Y.cause},...n&&{metadata:n}}),r?.(ie,c,w),U(ie,{origin:"result",resultCause:Y.cause})})();d.try=(a,m,o)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.try() requires an explicit string ID as the first argument. Example: step.try("parse", () => JSON.parse(str), { error: "PARSE_ERROR" })');let s="error"in o?()=>o.error:o.onError;if(o.retry||o.timeout)return d.retry(a,async()=>{try{return I(await m())}catch(y){return _(s(y),{cause:y})}},{attempts:o.retry?.attempts??1,...o.retry??{},key:o.key,timeout:o.timeout});let n=o.key??a,c=a,p=a,E=i;return(async()=>{let y=E?performance.now():0;i&&l({type:"step_start",workflowId:u,stepId:p,stepKey:n,name:c,ts:Date.now()});try{let f=await m(),k=performance.now()-y;return l({type:"step_success",workflowId:u,stepId:p,stepKey:n,name:c,ts:Date.now(),durationMs:k}),n&&l({type:"step_complete",workflowId:u,stepKey:n,name:c,ts:Date.now(),durationMs:k,result:I(f)}),f}catch(f){let k=s(f),A=performance.now()-y,v=W(k,{origin:"throw",thrown:f});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:_(k,{cause:f}),meta:{origin:"throw",thrown:f}}),r?.(v,c,w),U(v,{origin:"throw",thrown:f})}})()},d.fromResult=(a,m,o)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.fromResult() requires an explicit string ID as the first argument. Example: step.fromResult("callProvider", () => callProvider(input), { onError: (e) => ({ type: "FAILED" }) })');let s=o.key??a,n=a,c=a,p="error"in o?()=>o.error:o.onError,E=i;return(async()=>{let y=E?performance.now():0;i&&l({type:"step_start",workflowId:u,stepId:c,stepKey:s,name:n,ts:Date.now()});let f=await m();if(f.ok){let k=performance.now()-y;return l({type:"step_success",workflowId:u,stepId:c,stepKey:s,name:n,ts:Date.now(),durationMs:k}),s&&l({type:"step_complete",workflowId:u,stepKey:s,name:n,ts:Date.now(),durationMs:k,result:I(f.value)}),f.value}else{let k=p(f.error),A=performance.now()-y,v=W(k,{origin:"result",resultCause:f.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:_(k,{cause:f.error}),meta:{origin:"result",resultCause:f.error}}),r?.(v,n,w),U(v,{origin:"result",resultCause:f.error})}})()},d.fromNullable=(a,m,o,s)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.fromNullable() requires an explicit string ID as the first argument. Example: step.fromNullable("getUser", () => db.find(id), () => ({ type: "NOT_FOUND" }))');return d(a,async()=>{let n=await m();return n!=null?I(n):_(o())},s)},d.retry=(a,m,o)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.retry() requires an explicit string ID as the first argument. Example: step.retry("fetchData", () => fetchData(), { attempts: 3 })');return d(a,m,{key:o.key??a,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=(a,m,o)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.withTimeout() requires an explicit string ID as the first argument. Example: step.withTimeout("slowOp", () => slowOp(), { ms: 5000 })');return d(a,m,{key:o.key??a,timeout:o})},d.sleep=(a,m,o)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.sleep() requires an explicit string ID as the first argument. Example: step.sleep("delay", "5s")');let s=typeof m=="string"?et(m):m;if(!s)throw new Error(`step.sleep: invalid duration '${m}'`);let n=s.millis,c=o?.signal;return d(a,async()=>{if(P?.aborted||c?.aborted){let p=new Error("Sleep aborted");throw p.name="AbortError",p}return new Promise((p,E)=>{let y={timeoutId:void 0},f=()=>{y.timeoutId&&clearTimeout(y.timeoutId);let k=new Error("Sleep aborted");k.name="AbortError",E(k)};P?.addEventListener("abort",f,{once:!0}),c?.addEventListener("abort",f,{once:!0}),y.timeoutId=setTimeout(()=>{P?.removeEventListener("abort",f),c?.removeEventListener("abort",f),p(I(void 0))},n)})},{key:o?.key??a,description:o?.description})},d.all=((...a)=>{if(typeof a[0]!="string")throw new TypeError("step.all(name, ...): first argument must be a string (step name). Example: step.all('Fetch data', { user: () => fetchUser(), posts: () => fetchPosts() })");let m=a[0],o=a[1];if(typeof o=="function")return q(m,o);if(o&&typeof o=="object"&&!Array.isArray(o)){let n=L(o);return re(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=(a,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:a,ts:Date.now()});try{let E=await m();if(p(),!E.ok)throw r?.(E.error,a,w),U(E.error,{origin:"result",resultCause:E.cause});return E.value}catch(E){throw p(),E}})()},d.if=(a,m,o)=>o(),d.label=d.if,d.branch=async(a,m)=>{let{condition:o,then:s,else:n}=m;if(o())return await s();if(n)return await n()},d.arm=(a,m)=>({fn:a,errors:m}),d.forEach=async(a,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 f;p?f=await o.run(y,c):f=await o.item.handler(y,c,d),s.push(f),c++}return s},d.item=a=>({__forEachItemHandler:!0,handler:a}),d.dep=(a,m)=>m,d.workflow=(a,m,o)=>d(a,m,o),d.map=async(a,m,o,s)=>{let n=s?.concurrency??m.length;return d(a,()=>n>=m.length?ye(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 ye(E.map((f,k)=>o(f,p+k)));if(!y.ok)return y;c.push(...y.value)}return I(c)})(),{key:s?.key})},d.withFallback=(a,m,o)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.withFallback() requires an explicit string ID as the first argument. Example: step.withFallback("getUser", () => fetchUser(id), { fallback: () => fetchFromCache(id) })');let s=o.key??a,n=a,c=H(s),p=i;return(async()=>{let E=p?performance.now():0;i&&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:_(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:_(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 f=y.error;if(o.on!==void 0&&o.on!==f){let x=performance.now()-E,M=W(f,{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 k;try{k=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:_(M,{cause:x}),meta:{origin:"throw",thrown:x}}),r?.(M,n,w),U(M,{origin:"throw",thrown:x})}if(k.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:k,meta:{origin:"fallback",fallbackUsed:!0,fallbackReason:String(f)}}),k.value}let A=performance.now()-E,v=W(k.error,{origin:"result",resultCause:k.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:k,meta:{origin:"result",resultCause:k.cause}}),r?.(v,n,w),U(v,{origin:"result",resultCause:k.cause})})()},d.withResource=(a,m)=>{if(typeof a!="string"||a.length===0)throw new Error('[awaitly] step.withResource() requires an explicit string ID as the first argument. Example: step.withResource("useDb", { acquire: () => connect(), use: (db) => query(db), release: (db) => db.close() })');let o=a,s=a,n=H(o),c=i;return(async()=>{let p=c?performance.now():0;i&&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:_(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,f,k,A=!1;try{f=await m.use(y)}catch(h){if(V(h)){try{await m.release(y)}catch(S){console.warn(`[awaitly] step.withResource("${a}"): release threw after earlyExit:`,S)}throw h}k=h,A=!0}try{await m.release(y)}catch(h){console.warn(`[awaitly] step.withResource("${a}"): release threw:`,h)}if(A){let h;try{h=K(k)}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:_(h,{cause:k}),meta:{origin:"throw",thrown:k}}),r?.(h,s,w),U(h,{origin:"throw",thrown:k})}let v=f;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 a=B;(a.ok===!0&&"value"in a||a.ok===!1&&"error"in a)&&console.warn(`awaitly: Workflow executor returned a Result-like object. Return raw values, not ok() or err().
2
-
3
- Incorrect: return ok({ data });
4
- Correct: return { data };
5
-
6
- See: https://jagreehal.github.io/awaitly/guides/troubleshooting/#returning-ok-from-workflow-executor-double-wrapping`)}return I(B)}catch(d){if(dt(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 _(d.error,{cause:q})}let L=K(d);return r?.(L,"unexpected",w),_(L,{cause:d})}}_e.strict=(e,t)=>_e(e,t);var se=class extends Error{constructor(r,i){super(`Unwrap called on an error result: ${String(r)}`);this.error=r;this.cause=i;this.name="UnwrapError"}},we=e=>{if(e.ok)return e.value;throw new se(e.error,e.cause)},yt=(e,t)=>e.ok?e.value:t,wt=(e,t)=>e.ok?e.value:t(e.error,e.cause),gt=e=>we(e),ft=e=>Promise.resolve(e).then(we),Tt=e=>e.ok?e.value:null,kt=e=>e.ok?e.value:void 0;function Rt(e,t){try{return I(e())}catch(r){return t?_(t(r),{cause:r}):_(r)}}async function xt(e,t){try{return I(await e)}catch(r){return t?_(t(r),{cause:r}):_(r)}}async function ht(e,t){try{return I(await e())}catch(r){return t?_(t(r),{cause:r}):_(r)}}function Ct(e,t){return e!=null?I(e):_(t())}function bt(e,t){return e.ok?I(t(e.value)):e}function St(e,t){return e.ok?e:_(t(e.error),{cause:e.cause})}function Ke(e,t){if(t===void 0){let r=e;return i=>Ke(i,r)}return e.ok?t.ok(e.value):t.err(e.error,e.cause)}function At(e,t){return e.ok?t(e.value):e}function Ot(e,t){return e.ok&&t(e.value),e}function _t(e,t){return e.ok||t(e.error,e.cause),e}function Mt(e,t,r){if(!e.ok)return e;try{return I(t(e.value))}catch(i){return _(r(i),{cause:i})}}function vt(e,t,r){if(e.ok)return e;try{return _(t(e.error),{cause:e.cause})}catch(i){return _(r(i),{cause:i})}}function Pt(e,t,r){return e.ok?I(t(e.value)):_(r(e.error),{cause:e.cause})}function It(e,t){return e.ok?e:t(e.error,e.cause)}async function Dt(e,t){let r=await e;return r.ok?r:t(r.error,r.cause)}function Ut(e,t){return e.ok?I(e.value):I(t(e.error,e.cause))}async function Nt(e,t){let r=await e;return r.ok?I(r.value):I(await t(r.error,r.cause))}function je(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 Kt(e){return je(e)!==null}function jt(e){let t=[];for(let r of e){if(!r.ok)return r;t.push(r.value)}return I(t)}async function ye(e){return e.length===0?I([]):new Promise(t=>{let r=!1,i=e.length,R=new Array(e.length);for(let g=0;g<e.length;g++){let C=g;Promise.resolve(e[C]).catch(w=>_({type:"PROMISE_REJECTED",cause:w},{cause:{type:"PROMISE_REJECTION",reason:w}})).then(w=>{if(!r){if(!w.ok){r=!0,t(w);return}R[C]=w.value,i--,i===0&&t(I(R))}})}})}function Ft(e){let t=[],r=[];for(let i of e)i.ok?t.push(i.value):r.push({error:i.error,cause:i.cause});return r.length>0?_(r):I(t)}function Lt(e){let t=[],r=[];for(let i of e)i.ok?t.push(i.value):r.push(i.error);return{values:t,errors:r}}function Bt(e){if(e.length===0)return _({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 Ht(e){return e.length===0?_({type:"EMPTY_INPUT",message:"anyAsync() requires at least one Result"}):new Promise(t=>{let r=!1,i=e.length,R=null;for(let g of e)Promise.resolve(g).catch(C=>_({type:"PROMISE_REJECTED",cause:C},{cause:{type:"PROMISE_REJECTION",reason:C}})).then(C=>{if(!r){if(C.ok){r=!0,t(C);return}R||(R=C),i--,i===0&&t(R)}})})}async function Vt(e){let t=await Promise.all(e.map(R=>Promise.resolve(R).then(g=>({status:"result",result:g})).catch(g=>({status:"rejected",error:{type:"PROMISE_REJECTED",cause:g},cause:{type:"PROMISE_REJECTION",reason:g}})))),r=[],i=[];for(let R of t)R.status==="rejected"?i.push({error:R.error,cause:R.cause}):R.result.ok?r.push(R.result.value):i.push({error:R.result.error,cause:R.result.cause});return i.length>0?_(i):I(r)}function Fe(e,t){return r=>{let i=new Map(r.handlers);return i.set(e,t),{_tag:"Matcher",value:r.value,handlers:i,_remaining:void 0,_output:void 0}}}function Le(e){return t=>{let r=new Map(t.handlers);for(let[i,R]of Object.entries(e))R&&r.set(i,R);return{_tag:"Matcher",value:t.value,handlers:r,_remaining:void 0,_output:void 0}}}function Be(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 ge(e){return t=>{let r=t.handlers.get(t.value._tag);return r?r(t.value):e(t.value)}}function He(e){return ge(()=>e)}function Ve(e,t,r){return i=>{let R=new Map(i.handlers),g=i.handlers.get(e);return R.set(e,C=>{let w=C;if(t(w))return r(w);if(g)return g(C);throw new Error(`No handler matched for tag: ${e}`)}),{_tag:"Matcher",value:i.value,handlers:R,_remaining:i._remaining,_output:void 0}}}function $e(e){return t=>t._tag===e}function We(...e){let t=new Set(e);return r=>t.has(r._tag)}function $t(e){return typeof e=="object"&&e!==null&&"_tag"in e&&e._tag==="Matcher"}function qe(e){return{...e,pipe(t){let r=t(e);return $t(r)?qe(r):r}}}function Ye(e){return qe({_tag:"Matcher",value:e,handlers:new Map,_remaining:e,_output:void 0})}var Wt={value:Ye,tag:Fe,tags:Le,when:Ve,exhaustive:Be,orElse:ge,orElseValue:He,is:$e,isOneOf:We};export{Ze as ALL_SLUGS,nt as AWAITLY_CANCELLED,pe as AWAITLY_SLUGS,ot as AWAITLY_TIMEOUT,rt as AWAITLY_UNEXPECTED,Wt as Match,tt as PROMISE_REJECTED,N as TaggedError,G as UnexpectedError,se as UnwrapError,jt as all,ye as allAsync,Ft as allSettled,Vt as allSettledAsync,At as andThen,Bt as any,Ht as anyAsync,Pt as bimap,_ as err,Be as exhaustive,Pe as extractErrorTag,De as extractStepMetadata,Rt as from,Ct as fromNullable,xt as fromPromise,je as hydrate,Qe as isAwaitlySlug,ut as isErr,it as isOk,We as isOneOf,Kt as isSerializedResult,$e as isTag,Me as isUnexpectedError,Ie as lookupErrorClassification,bt as map,St as mapError,vt as mapErrorTry,Mt as mapTry,Ke as match,ve as matchError,ge as matchOrElse,Fe as matchTag,Le as matchTags,Ye as matchValue,Ve as matchWhen,I as ok,It as orElse,Dt as orElseAsync,He as orElseValue,Lt as partition,Ut as recover,Nt as recoverAsync,Tt as runOrNull,gt as runOrThrow,ft as runOrThrowAsync,kt as runOrUndefined,Xe as slugCategory,de as slugDocsUrl,st as tags,Ot as tap,_t as tapError,ht as tryAsync,we as unwrap,yt as unwrapOr,wt as unwrapOrElse};
7
- //# sourceMappingURL=core.js.map