@nicolastoulemont/std 0.9.0 → 0.10.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 (205) hide show
  1. package/README.md +388 -60
  2. package/dist/brand/index.d.mts +1 -1
  3. package/dist/brand/index.mjs +1 -1
  4. package/dist/{brand-DZgGDrAe.mjs → brand-DP-C92GS.mjs} +2 -2
  5. package/dist/{brand-DZgGDrAe.mjs.map → brand-DP-C92GS.mjs.map} +1 -1
  6. package/dist/{brand.types-B3NDX1vo.d.mts → brand.types-C_7QgCA4.d.mts} +1 -1
  7. package/dist/{brand.types-B3NDX1vo.d.mts.map → brand.types-C_7QgCA4.d.mts.map} +1 -1
  8. package/dist/context/index.d.mts +1 -1
  9. package/dist/context/index.mjs +1 -1
  10. package/dist/{context-0xDbwtpx.mjs → context-7oKePrBY.mjs} +2 -2
  11. package/dist/{context-0xDbwtpx.mjs.map → context-7oKePrBY.mjs.map} +1 -1
  12. package/dist/{context-B2dWloPl.d.mts → context-B9oWzbwF.d.mts} +2 -2
  13. package/dist/{context-B2dWloPl.d.mts.map → context-B9oWzbwF.d.mts.map} +1 -1
  14. package/dist/data/index.d.mts +1 -1
  15. package/dist/data/index.mjs +1 -1
  16. package/dist/data-W10ldR5l.mjs +2 -0
  17. package/dist/data-W10ldR5l.mjs.map +1 -0
  18. package/dist/{dual-fN6OUwN_.mjs → dual-CZhzZslG.mjs} +1 -1
  19. package/dist/{dual-fN6OUwN_.mjs.map → dual-CZhzZslG.mjs.map} +1 -1
  20. package/dist/duration/index.d.mts +1 -1
  21. package/dist/duration/index.mjs +1 -1
  22. package/dist/{duration-Bas3mi1N.mjs → duration-Dwtjy95Z.mjs} +2 -2
  23. package/dist/{duration-Bas3mi1N.mjs.map → duration-Dwtjy95Z.mjs.map} +1 -1
  24. package/dist/either/index.d.mts +1 -1
  25. package/dist/either/index.mjs +1 -1
  26. package/dist/{either-G7uOu4Ar.mjs → either-B2TvVY_j.mjs} +2 -2
  27. package/dist/{either-G7uOu4Ar.mjs.map → either-B2TvVY_j.mjs.map} +1 -1
  28. package/dist/exit-DOdhmr81.d.mts +67 -0
  29. package/dist/exit-DOdhmr81.d.mts.map +1 -0
  30. package/dist/fiber/index.d.mts +2 -0
  31. package/dist/fiber/index.mjs +1 -0
  32. package/dist/fiber-CZsyrDdd.mjs +2 -0
  33. package/dist/fiber-CZsyrDdd.mjs.map +1 -0
  34. package/dist/{flow-CNyLsPGb.mjs → flow-D8_tllWl.mjs} +1 -1
  35. package/dist/{flow-CNyLsPGb.mjs.map → flow-D8_tllWl.mjs.map} +1 -1
  36. package/dist/functions/index.mjs +1 -1
  37. package/dist/functions-DmOZ7O4j.mjs +2 -0
  38. package/dist/{functions-ByAk682_.mjs.map → functions-DmOZ7O4j.mjs.map} +1 -1
  39. package/dist/fx/index.d.mts +1 -1
  40. package/dist/fx/index.mjs +1 -1
  41. package/dist/fx-DXBw4iYX.mjs +2 -0
  42. package/dist/fx-DXBw4iYX.mjs.map +1 -0
  43. package/dist/fx.runtime-B2_rL7h_.mjs +2 -0
  44. package/dist/fx.runtime-B2_rL7h_.mjs.map +1 -0
  45. package/dist/fx.runtime-BuIElLpZ.d.mts +16 -0
  46. package/dist/fx.runtime-BuIElLpZ.d.mts.map +1 -0
  47. package/dist/{fx.types-DyQVgTS8.mjs → fx.types-Bg-Mmdm5.mjs} +1 -1
  48. package/dist/{fx.types-DyQVgTS8.mjs.map → fx.types-Bg-Mmdm5.mjs.map} +1 -1
  49. package/dist/{fx.types-BdN1EWxr.d.mts → fx.types-CpFKa-Jj.d.mts} +1 -1
  50. package/dist/{fx.types-BdN1EWxr.d.mts.map → fx.types-CpFKa-Jj.d.mts.map} +1 -1
  51. package/dist/{index-DfAqfnY0.d.mts → index-5QkUtJ-4.d.mts} +4 -4
  52. package/dist/{index-DfAqfnY0.d.mts.map → index-5QkUtJ-4.d.mts.map} +1 -1
  53. package/dist/{index-BD-els5J.d.mts → index-B3xia3Jl.d.mts} +82 -58
  54. package/dist/index-B3xia3Jl.d.mts.map +1 -0
  55. package/dist/{index-CIvNgjsx.d.mts → index-B4rHoUK4.d.mts} +2 -2
  56. package/dist/{index-CIvNgjsx.d.mts.map → index-B4rHoUK4.d.mts.map} +1 -1
  57. package/dist/{index-BA0EsFxS.d.mts → index-BDUhDs4D.d.mts} +3 -3
  58. package/dist/{index-BA0EsFxS.d.mts.map → index-BDUhDs4D.d.mts.map} +1 -1
  59. package/dist/{index-CNTYbcY9.d.mts → index-BZ1-IrU_.d.mts} +1 -1
  60. package/dist/{index-CNTYbcY9.d.mts.map → index-BZ1-IrU_.d.mts.map} +1 -1
  61. package/dist/{index-uE3S3Krx.d.mts → index-BZP6t2h9.d.mts} +5 -5
  62. package/dist/{index-uE3S3Krx.d.mts.map → index-BZP6t2h9.d.mts.map} +1 -1
  63. package/dist/{index-D8rDE60Y.d.mts → index-Bu-z5Xoq.d.mts} +1 -1
  64. package/dist/index-Bu-z5Xoq.d.mts.map +1 -0
  65. package/dist/index-C8KMi_I9.d.mts +226 -0
  66. package/dist/index-C8KMi_I9.d.mts.map +1 -0
  67. package/dist/{index-dCRymj_g.d.mts → index-CfXGmPMY.d.mts} +5 -5
  68. package/dist/{index-dCRymj_g.d.mts.map → index-CfXGmPMY.d.mts.map} +1 -1
  69. package/dist/index-Cv48HmyO.d.mts +59 -0
  70. package/dist/index-Cv48HmyO.d.mts.map +1 -0
  71. package/dist/{index-D6pjHqlK.d.mts → index-D-KxgnwF.d.mts} +49 -70
  72. package/dist/index-D-KxgnwF.d.mts.map +1 -0
  73. package/dist/{index-DR7hzXU4.d.mts → index-DLkMqvw4.d.mts} +137 -29
  74. package/dist/index-DLkMqvw4.d.mts.map +1 -0
  75. package/dist/index-DlWm_PwP.d.mts +436 -0
  76. package/dist/index-DlWm_PwP.d.mts.map +1 -0
  77. package/dist/{index-CVmgBpDt.d.mts → index-DogEz6WQ.d.mts} +2 -2
  78. package/dist/{index-CVmgBpDt.d.mts.map → index-DogEz6WQ.d.mts.map} +1 -1
  79. package/dist/{index-D8gcYvR9.d.mts → index-XxPUUAGQ.d.mts} +5 -5
  80. package/dist/{index-D8gcYvR9.d.mts.map → index-XxPUUAGQ.d.mts.map} +1 -1
  81. package/dist/{index-BqJ1GWAF.d.mts → index-pC80zLHb.d.mts} +2 -2
  82. package/dist/{index-BqJ1GWAF.d.mts.map → index-pC80zLHb.d.mts.map} +1 -1
  83. package/dist/index.d.mts +23 -20
  84. package/dist/index.mjs +1 -1
  85. package/dist/layer/index.d.mts +1 -1
  86. package/dist/layer/index.mjs +1 -1
  87. package/dist/layer-BmrPWBkT.mjs +2 -0
  88. package/dist/layer-BmrPWBkT.mjs.map +1 -0
  89. package/dist/{layer.types-BB0MrvLg.d.mts → layer.types-DsCTjICW.d.mts} +4 -4
  90. package/dist/{layer.types-BB0MrvLg.d.mts.map → layer.types-DsCTjICW.d.mts.map} +1 -1
  91. package/dist/log/index.d.mts +2 -0
  92. package/dist/log/index.mjs +1 -0
  93. package/dist/log-Bh8G5umo.mjs +2 -0
  94. package/dist/log-Bh8G5umo.mjs.map +1 -0
  95. package/dist/multithread/index.d.mts +1 -1
  96. package/dist/multithread/index.mjs +1 -1
  97. package/dist/multithread-CovZ2ioL.mjs +21 -0
  98. package/dist/multithread-CovZ2ioL.mjs.map +1 -0
  99. package/dist/option/index.d.mts +1 -1
  100. package/dist/option/index.mjs +1 -1
  101. package/dist/{option-C2iCxAuJ.mjs → option-BlyP5LA2.mjs} +2 -2
  102. package/dist/{option-C2iCxAuJ.mjs.map → option-BlyP5LA2.mjs.map} +1 -1
  103. package/dist/{option.types-D9hrKcfa.d.mts → option.types-DLp3QpFE.d.mts} +3 -3
  104. package/dist/{option.types-D9hrKcfa.d.mts.map → option.types-DLp3QpFE.d.mts.map} +1 -1
  105. package/dist/{option.types-CbY_swma.mjs → option.types-bFFSErJ-.mjs} +1 -1
  106. package/dist/{option.types-CbY_swma.mjs.map → option.types-bFFSErJ-.mjs.map} +1 -1
  107. package/dist/order/index.d.mts +1 -1
  108. package/dist/order/index.mjs +1 -1
  109. package/dist/{order-BXOBEKvB.mjs → order-VTXpppmI.mjs} +2 -2
  110. package/dist/{order-BXOBEKvB.mjs.map → order-VTXpppmI.mjs.map} +1 -1
  111. package/dist/{pipeable-BIrevC0D.d.mts → pipeable-BY9yPsNK.d.mts} +1 -1
  112. package/dist/{pipeable-BIrevC0D.d.mts.map → pipeable-BY9yPsNK.d.mts.map} +1 -1
  113. package/dist/pipeable-COGyGMUV.mjs +2 -0
  114. package/dist/{pipeable-Dp1_23zH.mjs.map → pipeable-COGyGMUV.mjs.map} +1 -1
  115. package/dist/predicate/index.d.mts +1 -1
  116. package/dist/predicate/index.mjs +1 -1
  117. package/dist/{predicate-D_1SsIi4.mjs → predicate-8hY-0Ocv.mjs} +2 -2
  118. package/dist/{predicate-D_1SsIi4.mjs.map → predicate-8hY-0Ocv.mjs.map} +1 -1
  119. package/dist/provide/index.d.mts +1 -1
  120. package/dist/provide/index.mjs +1 -1
  121. package/dist/provide-K-6oXtLm.mjs +2 -0
  122. package/dist/provide-K-6oXtLm.mjs.map +1 -0
  123. package/dist/queue/index.d.mts +1 -1
  124. package/dist/queue/index.mjs +1 -1
  125. package/dist/{queue-GYVrD39q.mjs → queue-CeEIUHcY.mjs} +2 -2
  126. package/dist/{queue-GYVrD39q.mjs.map → queue-CeEIUHcY.mjs.map} +1 -1
  127. package/dist/result/index.d.mts +1 -1
  128. package/dist/result/index.mjs +1 -1
  129. package/dist/{result-D3VY0qBG.mjs → result-C74pRN2x.mjs} +2 -2
  130. package/dist/{result-D3VY0qBG.mjs.map → result-C74pRN2x.mjs.map} +1 -1
  131. package/dist/{result.types-BKzChyWY.d.mts → result.types-CnhiVFEV.d.mts} +3 -3
  132. package/dist/{result.types-BKzChyWY.d.mts.map → result.types-CnhiVFEV.d.mts.map} +1 -1
  133. package/dist/schedule/index.d.mts +1 -1
  134. package/dist/schedule/index.mjs +1 -1
  135. package/dist/{schedule-B7qV60tO.mjs → schedule-ChcIgvd5.mjs} +2 -2
  136. package/dist/{schedule-B7qV60tO.mjs.map → schedule-ChcIgvd5.mjs.map} +1 -1
  137. package/dist/{schedule-BzPjvMXc.d.mts → schedule-DiidMLcl.d.mts} +3 -3
  138. package/dist/{schedule-BzPjvMXc.d.mts.map → schedule-DiidMLcl.d.mts.map} +1 -1
  139. package/dist/schema/index.d.mts +1 -1
  140. package/dist/schema/index.mjs +1 -1
  141. package/dist/schema-CT_wO7tN.mjs +2 -0
  142. package/dist/schema-CT_wO7tN.mjs.map +1 -0
  143. package/dist/scope/index.d.mts +1 -1
  144. package/dist/scope/index.mjs +1 -1
  145. package/dist/{scope-CuM3CzwG.d.mts → scope-7bLTmdRX.d.mts} +4 -4
  146. package/dist/scope-7bLTmdRX.d.mts.map +1 -0
  147. package/dist/scope-D2AqJy7j.mjs +2 -0
  148. package/dist/scope-D2AqJy7j.mjs.map +1 -0
  149. package/dist/service/index.d.mts +1 -1
  150. package/dist/service/index.mjs +1 -1
  151. package/dist/{service-D8mr0wwg.d.mts → service-C4xUfS_M.d.mts} +2 -2
  152. package/dist/{service-D8mr0wwg.d.mts.map → service-C4xUfS_M.d.mts.map} +1 -1
  153. package/dist/{service-CWAIEH46.mjs → service-DHkeorS3.mjs} +2 -2
  154. package/dist/{service-CWAIEH46.mjs.map → service-DHkeorS3.mjs.map} +1 -1
  155. package/dist/trace/index.d.mts +2 -0
  156. package/dist/trace/index.mjs +1 -0
  157. package/dist/trace-ByjppUes.mjs +2 -0
  158. package/dist/trace-ByjppUes.mjs.map +1 -0
  159. package/dist/trace-D_7sjH22.d.mts +375 -0
  160. package/dist/trace-D_7sjH22.d.mts.map +1 -0
  161. package/package.json +13 -5
  162. package/dist/adt/index.d.mts +0 -2
  163. package/dist/adt/index.mjs +0 -1
  164. package/dist/adt-CY8wLJJI.mjs +0 -2
  165. package/dist/adt-CY8wLJJI.mjs.map +0 -1
  166. package/dist/data-DqACNS_g.mjs +0 -2
  167. package/dist/data-DqACNS_g.mjs.map +0 -1
  168. package/dist/discriminator.types-C-ygT2S1.d.mts +0 -7
  169. package/dist/discriminator.types-C-ygT2S1.d.mts.map +0 -1
  170. package/dist/functions-ByAk682_.mjs +0 -2
  171. package/dist/fx-C_RTDEpv.mjs +0 -2
  172. package/dist/fx-C_RTDEpv.mjs.map +0 -1
  173. package/dist/fx.runtime-jQxh77s3.mjs +0 -2
  174. package/dist/fx.runtime-jQxh77s3.mjs.map +0 -1
  175. package/dist/index-BD-els5J.d.mts.map +0 -1
  176. package/dist/index-BaRJVkLo.d.mts +0 -458
  177. package/dist/index-BaRJVkLo.d.mts.map +0 -1
  178. package/dist/index-BipW0MC3.d.mts +0 -64
  179. package/dist/index-BipW0MC3.d.mts.map +0 -1
  180. package/dist/index-D6pjHqlK.d.mts.map +0 -1
  181. package/dist/index-D8rDE60Y.d.mts.map +0 -1
  182. package/dist/index-DR7hzXU4.d.mts.map +0 -1
  183. package/dist/is-plain-object-BoFjRafL.mjs +0 -2
  184. package/dist/is-plain-object-BoFjRafL.mjs.map +0 -1
  185. package/dist/layer-C5A-EM0h.mjs +0 -2
  186. package/dist/layer-C5A-EM0h.mjs.map +0 -1
  187. package/dist/multithread-Cyc8Bz45.mjs +0 -19
  188. package/dist/multithread-Cyc8Bz45.mjs.map +0 -1
  189. package/dist/pipeable-Dp1_23zH.mjs +0 -2
  190. package/dist/provide-CuccogWx.mjs +0 -2
  191. package/dist/provide-CuccogWx.mjs.map +0 -1
  192. package/dist/schema-DstB1_VK.mjs +0 -2
  193. package/dist/schema-DstB1_VK.mjs.map +0 -1
  194. package/dist/schema.shared-Bjyroa6b.mjs +0 -2
  195. package/dist/schema.shared-Bjyroa6b.mjs.map +0 -1
  196. package/dist/schema.types-w1WK4kGS.d.mts +0 -62
  197. package/dist/schema.types-w1WK4kGS.d.mts.map +0 -1
  198. package/dist/scope-CuM3CzwG.d.mts.map +0 -1
  199. package/dist/scope-gVt4PESc.mjs +0 -2
  200. package/dist/scope-gVt4PESc.mjs.map +0 -1
  201. package/dist/service-resolution-BefYr4nR.mjs +0 -2
  202. package/dist/service-resolution-BefYr4nR.mjs.map +0 -1
  203. /package/dist/{chunk-oQKkju2G.mjs → chunk-6rpU2rUb.mjs} +0 -0
  204. /package/dist/{option-CXXiA1w-.mjs → option-BqAUkJ8e.mjs} +0 -0
  205. /package/dist/{result-xFLfwriM.mjs → result-B5WbPg8C.mjs} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.shared-Bjyroa6b.mjs","names":["Result.err","Result.ok"],"sources":["../src/schema/schema.shared.ts"],"sourcesContent":["import { Result } from \"../result\"\nimport type { Result as ResultType } from \"../result/result.types\"\nimport { isPromise } from \"../shared/is-promise\"\nimport type { ValidationError, ValidationIssue } from \"./schema.types\"\nimport type { StandardSchemaV1 } from \"@standard-schema/spec\"\n\nfunction normalizePathSegment(segment: PropertyKey | { readonly key: PropertyKey }): PropertyKey {\n return typeof segment === \"object\" && segment !== null && \"key\" in segment ? segment.key : segment\n}\n\nfunction normalizeIssues(\n issues: NonNullable<StandardSchemaV1.Result<unknown>[\"issues\"]>,\n): ReadonlyArray<ValidationIssue> {\n return issues.map((issue) => ({\n message: issue.message,\n path: issue.path?.map(normalizePathSegment),\n }))\n}\n\nexport function toValidationResult<T>(result: StandardSchemaV1.Result<T>): ResultType<T, ValidationError> {\n if (result.issues) {\n return Result.err({ issues: normalizeIssues(result.issues) })\n }\n\n return Result.ok(result.value)\n}\n\nfunction toErrorMessage(error: unknown): string {\n if (error instanceof Error && error.message.length > 0) {\n return error.message\n }\n\n if (typeof error === \"string\" && error.length > 0) {\n return error\n }\n\n return \"Schema validation failed.\"\n}\n\nexport function toThrownValidationError(error: unknown): ValidationError {\n return {\n issues: [{ message: toErrorMessage(error) }],\n }\n}\n\nexport function validateSync<T>(\n schema: StandardSchemaV1<unknown, T>,\n value: unknown,\n operation: string,\n): ResultType<T, ValidationError> {\n const result = schema[\"~standard\"].validate(value)\n\n if (isPromise(result)) {\n throw new TypeError(`Async validation is not supported in ${operation}.`)\n }\n\n return toValidationResult(result)\n}\n"],"mappings":"yFAMA,SAAS,EAAqB,EAAmE,CAC/F,OAAO,OAAO,GAAY,UAAY,GAAoB,QAAS,EAAU,EAAQ,IAAM,EAG7F,SAAS,EACP,EACgC,CAChC,OAAO,EAAO,IAAK,IAAW,CAC5B,QAAS,EAAM,QACf,KAAM,EAAM,MAAM,IAAI,EAAqB,CAC5C,EAAE,CAGL,SAAgB,EAAsB,EAAoE,CAKxG,OAJI,EAAO,OACFA,EAAW,CAAE,OAAQ,EAAgB,EAAO,OAAO,CAAE,CAAC,CAGxDC,EAAU,EAAO,MAAM,CAGhC,SAAS,EAAe,EAAwB,CAS9C,OARI,aAAiB,OAAS,EAAM,QAAQ,OAAS,EAC5C,EAAM,QAGX,OAAO,GAAU,UAAY,EAAM,OAAS,EACvC,EAGF,4BAGT,SAAgB,EAAwB,EAAiC,CACvE,MAAO,CACL,OAAQ,CAAC,CAAE,QAAS,EAAe,EAAM,CAAE,CAAC,CAC7C,CAGH,SAAgB,EACd,EACA,EACA,EACgC,CAChC,IAAM,EAAS,EAAO,aAAa,SAAS,EAAM,CAElD,GAAI,EAAU,EAAO,CACnB,MAAU,UAAU,wCAAwC,EAAU,GAAG,CAG3E,OAAO,EAAmB,EAAO"}
@@ -1,62 +0,0 @@
1
- import { h as Prettify } from "./result.types-BKzChyWY.mjs";
2
- import { StandardSchemaV1 } from "@standard-schema/spec";
3
-
4
- //#region src/schema/schema.types.d.ts
5
-
6
- /**
7
- * Infer the input type from a Standard Schema.
8
- */
9
- type Input<S extends StandardSchemaV1> = NonNullable<S["~standard"]["types"]>["input"];
10
- /**
11
- * Infer the output type from a Standard Schema.
12
- */
13
- type Output<S extends StandardSchemaV1> = NonNullable<S["~standard"]["types"]>["output"];
14
- /**
15
- * Infer the validated output type from a Standard Schema.
16
- *
17
- * This matches the exact schema output used by `Schema.parse()` and by
18
- * `Schema.is()` when the starting value is `unknown`.
19
- */
20
- type Infer<S extends StandardSchemaV1> = Output<S>;
21
- /**
22
- * Compute the base-shape-preserving narrowed type used by `Schema.refine()`.
23
- *
24
- * This preserves fields already present on the base value while intersecting in
25
- * the schema-proven output fields. This is also the shape TypeScript derives in
26
- * direct control-flow checks when `Schema.is()` is used on an already-typed
27
- * value.
28
- */
29
- type Refine<Base, S extends StandardSchemaV1> = Base extends Input<S> ? (Base extends unknown ? Prettify<Base & Output<S>> : never) : never;
30
- /**
31
- * Normalized validation issue shape used across std modules.
32
- */
33
- type ValidationIssue = {
34
- readonly message: string;
35
- readonly path?: ReadonlyArray<PropertyKey> | undefined;
36
- };
37
- /**
38
- * Validation error containing normalized schema issues.
39
- */
40
- type ValidationError = {
41
- readonly issues: ReadonlyArray<ValidationIssue>;
42
- };
43
- /**
44
- * Standard Schema subtype with sync-only validation.
45
- * Callers can preserve sync parse inference by annotating schemas with this type.
46
- */
47
- type SyncSchema<TInput = unknown, TOutput = TInput> = Omit<StandardSchemaV1<TInput, TOutput>, "~standard"> & {
48
- readonly "~standard": Omit<StandardSchemaV1<TInput, TOutput>["~standard"], "validate"> & {
49
- validate: (value: unknown) => StandardSchemaV1.Result<TOutput>;
50
- };
51
- };
52
- /**
53
- * Schema whose validated output is a refinement of a broader base type.
54
- */
55
- type RefinementSchema<Base, Sub extends Base> = StandardSchemaV1<Base, Sub>;
56
- /**
57
- * Sync-only refinement schema for building type guards.
58
- */
59
- type SyncRefinementSchema<Base, Sub extends Base> = SyncSchema<Base, Sub>;
60
- //#endregion
61
- export { RefinementSchema as a, ValidationError as c, Refine as i, ValidationIssue as l, Input as n, SyncRefinementSchema as o, Output as r, SyncSchema as s, Infer as t };
62
- //# sourceMappingURL=schema.types-w1WK4kGS.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.types-w1WK4kGS.d.mts","names":[],"sources":["../src/schema/schema.types.ts"],"sourcesContent":[],"mappings":";;;;;;;AAMA;AAA4B,KAAhB,KAAgB,CAAA,UAAA,gBAAA,CAAA,GAAoB,WAApB,CAAgC,CAAhC,CAAA,WAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,OAAA,CAAA;;;;AAKhB,KAAA,MAAM,CAAA,UAAW,gBAAX,CAAA,GAA+B,WAA/B,CAA2C,CAA3C,CAAA,WAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,QAAA,CAAA;;;;;AAQlB;;AAAuD,KAA3C,KAA2C,CAAA,UAA3B,gBAA2B,CAAA,GAAP,MAAO,CAAA,CAAA,CAAA;;;AAUvD;;;;;;AAC2D,KAD/C,MAC+C,CAAA,IAAA,EAAA,UADxB,gBACwB,CAAA,GAAzD,IAAyD,SAA5C,KAA4C,CAAtC,CAAsC,CAAA,GAAA,CAAhC,IAAgC,SAAA,OAAA,GAAT,QAAS,CAAA,IAAA,GAAO,MAAP,CAAc,CAAd,CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAA;;;;AAAD,KAK9C,eAAA,GAL8C;EAK9C,SAAA,OAAA,EAAe,MAAA;EAQf,SAAA,IAAA,CAAA,EANM,aAMS,CANK,WAOC,CAAA,GAAA,SAAd;AAOnB,CAAA;;;;AAAkE,KARtD,eAAA,GAQsD;EAAL,SAAA,MAAA,EAP1C,aAO0C,CAP5B,eAO4B,CAAA;CACf;;;;;AACZ,KAFtB,UAEuC,CAAA,SAAA,OAAA,EAAA,UAFA,MAEA,CAAA,GAFU,IAEV,CAFe,gBAEf,CAFgC,MAEhC,EAFwC,OAExC,CAAA,EAAA,WAAA,CAAA,GAAA;EAAM,SAAA,WAAA,EADjC,IACiC,CAD5B,gBAC4B,CADX,MACW,EADH,OACG,CAAA,CAAA,WAAA,CAAA,EAAA,UAAA,CAAA,GAAA;IAO7C,QAAA,EAAA,CAAA,KAAgB,EAAA,OAAA,EAAA,GAPM,gBAAA,CAAiB,MAOvB,CAP8B,OAO9B,CAAA;EAAmB,CAAA;CAAyB;;;;AAK5D,KALA,gBAKoB,CAAA,IAAA,EAAA,YALe,IAKf,CAAA,GALuB,gBAKvB,CALwC,IAKxC,EAL8C,GAK9C,CAAA;;;;AAA2B,KAA/C,oBAA+C,CAAA,IAAA,EAAA,YAAR,IAAQ,CAAA,GAAA,UAAA,CAAW,IAAX,EAAiB,GAAjB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope-CuM3CzwG.d.mts","names":[],"sources":["../src/scope/scope.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;AAqDA;;;AAQ+D,KARnD,YAAA,GAQmD;EAQjD;;;;;AA0Bd;AA4HA;EAAsC,YAAA,CAAA,SAAA,EAAA,GAAA,GA9JN,MA8JM,CAAA,IAAA,CAAA,GA9JS,OA8JT,CAAA,IAAA,CAAA,CAAA,EA9JyB,MA8JzB,CAAA,IAAA,CAAA;EAAG;;;;;;cAtJ3B,2BAA2B,eAAe;;;;;;;UAQ9C;;;;;;;;;;;;;;;;;iBAkBM,IAAA,CAAA,GAAQ;;;;;;;;;;;;KA4HZ,kBAAkB,QAAQ,GAAG"}
@@ -1,2 +0,0 @@
1
- import{t as e}from"./chunk-oQKkju2G.mjs";import{t}from"./fx.types-DyQVgTS8.mjs";import{n,t as r}from"./fx.runtime-jQxh77s3.mjs";var i=e({make:()=>a});function a(){let e=[],i=!1,o=[];return{addFinalizer(n){return{_tag:`SyncFx`,[t]:{_A:()=>void 0,_E:()=>void 0,_R:()=>void 0},*[Symbol.iterator](){i||e.push(n)}}},close(a){return e.some(e=>e()._tag===`AsyncFx`)?{_tag:`AsyncFx`,[t]:{_A:()=>void 0,_E:()=>void 0,_R:()=>void 0},async*[Symbol.asyncIterator](){if(i)return;i=!0;for(let e of[...o].toReversed()){let t=e.close(a);t._tag===`AsyncFx`?await r(t):n(t)}let t=[...e].toReversed();for(let e of t){let t=e();t._tag===`AsyncFx`?await r(t):n(t)}}}:{_tag:`SyncFx`,[t]:{_A:()=>void 0,_E:()=>void 0,_R:()=>void 0},*[Symbol.iterator](){if(i)return;i=!0;for(let e of[...o].toReversed())n(e.close(a));let t=[...e].toReversed();for(let e of t)n(e())}}},fork(){let e=a();return o.push(e),e}}}export{i as n,a as t};
2
- //# sourceMappingURL=scope-gVt4PESc.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope-gVt4PESc.mjs","names":[],"sources":["../src/scope/scope.ts"],"sourcesContent":["/**\n * Scope lifecycle management for registering and running finalizers.\n *\n * **Mental model**\n * - A scope tracks cleanup actions and executes them in LIFO order.\n * - `Layer.scoped` and `Provide.layer` rely on scope semantics.\n *\n * **Common tasks**\n * - Create scopes with `Scope.make`.\n * - Register cleanup with `scope.addFinalizer`.\n * - Close scopes with `scope.close`.\n *\n * **Gotchas**\n * - Child scopes close before parent finalizers.\n * - Async finalizers force async scope close.\n *\n * **Quickstart**\n *\n * @example\n * ```ts\n * import { Scope } from \"@nicolastoulemont/std\"\n *\n * import { Result } from \"@nicolastoulemont/std\"\n *\n * const scope = Scope.make()\n * const closeFx = scope.close(Result.ok(undefined))\n * // => SyncFx<void> | AsyncFx<void>\n * ```\n *\n * @module\n */\nimport { runSync, runAsync } from \"../fx/fx.runtime\"\nimport { FxTypeId } from \"../fx/fx.types\"\nimport type { SyncFx, AsyncFx, FxYield } from \"../fx/fx.types\"\nimport type { Result } from \"../result/result.types\"\n\n/* oxlint-disable no-unsafe-type-assertion -- Scope encodes Fx phantom type slots and sync/async branch narrowing via assertions. */\n\n// ============================================================================\n// Scope Service\n// ============================================================================\n\n/**\n * Scope manages resource lifecycles with finalizers.\n * Finalizers run in LIFO (Last In, First Out) order when the scope closes.\n *\n * @example\n * ```ts\n * import { Scope } from \"@nicolastoulemont/std\"\n *\n * type Example = typeof Scope\n * ```\n */\nexport type ScopeService = {\n /**\n * Add a finalizer to be run when the scope closes.\n * Finalizers are run in LIFO order.\n *\n * @param finalizer - A function that returns an Fx to run on cleanup\n * @returns An Fx that completes when the finalizer is registered\n */\n addFinalizer(finalizer: () => SyncFx<void> | AsyncFx<void>): SyncFx<void>\n\n /**\n * Close the scope, running all finalizers in LIFO order.\n *\n * @param exit - The exit status of the computation\n * @returns An Fx that completes when all finalizers have run\n */\n close(exit: Result<unknown, unknown>): SyncFx<void> | AsyncFx<void>\n\n /**\n * Fork a child scope.\n * The child scope will be closed when the parent scope closes.\n *\n * @returns A new child scope\n */\n fork(): ScopeService\n}\n\n/**\n * Create a new Scope instance.\n * This is the concrete implementation of the ScopeService interface.\n *\n * @example\n * ```ts\n * import { Scope } from \"@nicolastoulemont/std\"\n *\n * import { Result } from \"@nicolastoulemont/std\"\n *\n * const scope = Scope.make()\n * const closeFx = scope.close(Result.ok(undefined))\n * // => SyncFx<void> | AsyncFx<void>\n * ```\n */\nexport function make(): ScopeService {\n type Finalizer = () => SyncFx<void> | AsyncFx<void>\n const finalizers: Finalizer[] = []\n let closed = false\n const children: ScopeService[] = []\n\n const scope: ScopeService = {\n addFinalizer(finalizer: Finalizer): SyncFx<void> {\n return {\n _tag: \"SyncFx\",\n [FxTypeId]: {\n _A: () => undefined as void,\n _E: () => undefined as never,\n _R: () => undefined as never,\n },\n // oxlint-disable-next-line require-yield\n *[Symbol.iterator](): Generator<FxYield<never, never>, void, unknown> {\n if (!closed) {\n finalizers.push(finalizer)\n }\n },\n } as SyncFx<void>\n },\n\n close(exit: Result<unknown, unknown>): SyncFx<void> | AsyncFx<void> {\n // Check if any finalizer is async\n const hasAsyncFinalizer = finalizers.some((f) => {\n const fx = f()\n return fx._tag === \"AsyncFx\"\n })\n\n if (hasAsyncFinalizer) {\n return {\n _tag: \"AsyncFx\",\n [FxTypeId]: {\n _A: () => undefined as void,\n _E: () => undefined as never,\n _R: () => undefined as never,\n },\n // oxlint-disable-next-line require-yield\n async *[Symbol.asyncIterator](): AsyncGenerator<FxYield<never, never>, void, unknown> {\n if (closed) return\n closed = true\n\n // Close children first\n for (const child of [...children].toReversed()) {\n const childClose = child.close(exit)\n if (childClose._tag === \"AsyncFx\") {\n // oxlint-disable-next-line no-await-in-loop\n await runAsync(childClose)\n } else {\n runSync(childClose)\n }\n }\n\n // Run finalizers in LIFO order\n const reversed = [...finalizers].toReversed()\n for (const finalizer of reversed) {\n const fx = finalizer()\n if (fx._tag === \"AsyncFx\") {\n // oxlint-disable-next-line no-await-in-loop\n await runAsync(fx)\n } else {\n runSync(fx)\n }\n }\n },\n } as AsyncFx<void>\n }\n\n // Sync version\n return {\n _tag: \"SyncFx\",\n [FxTypeId]: {\n _A: () => undefined as void,\n _E: () => undefined as never,\n _R: () => undefined as never,\n },\n // oxlint-disable-next-line require-yield\n *[Symbol.iterator](): Generator<FxYield<never, never>, void, unknown> {\n if (closed) return\n closed = true\n\n // Close children first\n for (const child of [...children].toReversed()) {\n const childClose = child.close(exit)\n runSync(childClose as SyncFx<void>)\n }\n\n // Run finalizers in LIFO order\n const reversed = [...finalizers].toReversed()\n for (const finalizer of reversed) {\n const fx = finalizer()\n runSync(fx as SyncFx<void>)\n }\n },\n } as SyncFx<void>\n },\n\n fork(): ScopeService {\n const child = make()\n children.push(child)\n return child\n },\n }\n\n return scope\n}\n\n// ============================================================================\n// Helper Types\n// ============================================================================\n\n/**\n * Type utility to exclude Scope from requirements.\n * Used by Layer.scoped to auto-provide Scope.\n *\n * @example\n * ```ts\n * import { Scope } from \"@nicolastoulemont/std\"\n *\n * type Example = typeof Scope\n * ```\n */\nexport type ExcludeScope<R> = Exclude<R, ScopeService>\n\n/* oxlint-enable no-unsafe-type-assertion */\n"],"mappings":"sJA+FA,SAAgB,GAAqB,CAEnC,IAAM,EAA0B,EAAE,CAC9B,EAAS,GACP,EAA2B,EAAE,CAsGnC,MApG4B,CAC1B,aAAa,EAAoC,CAC/C,MAAO,CACL,KAAM,UACL,GAAW,CACV,OAAU,IAAA,GACV,OAAU,IAAA,GACV,OAAU,IAAA,GACX,CAED,EAAE,OAAO,WAA6D,CAC/D,GACH,EAAW,KAAK,EAAU,EAG/B,EAGH,MAAM,EAA8D,CA+ClE,OA7C0B,EAAW,KAAM,GAC9B,GAAG,CACJ,OAAS,UACnB,CAGO,CACL,KAAM,WACL,GAAW,CACV,OAAU,IAAA,GACV,OAAU,IAAA,GACV,OAAU,IAAA,GACX,CAED,OAAQ,OAAO,gBAAuE,CACpF,GAAI,EAAQ,OACZ,EAAS,GAGT,IAAK,IAAM,IAAS,CAAC,GAAG,EAAS,CAAC,YAAY,CAAE,CAC9C,IAAM,EAAa,EAAM,MAAM,EAAK,CAChC,EAAW,OAAS,UAEtB,MAAM,EAAS,EAAW,CAE1B,EAAQ,EAAW,CAKvB,IAAM,EAAW,CAAC,GAAG,EAAW,CAAC,YAAY,CAC7C,IAAK,IAAM,KAAa,EAAU,CAChC,IAAM,EAAK,GAAW,CAClB,EAAG,OAAS,UAEd,MAAM,EAAS,EAAG,CAElB,EAAQ,EAAG,GAIlB,CAII,CACL,KAAM,UACL,GAAW,CACV,OAAU,IAAA,GACV,OAAU,IAAA,GACV,OAAU,IAAA,GACX,CAED,EAAE,OAAO,WAA6D,CACpE,GAAI,EAAQ,OACZ,EAAS,GAGT,IAAK,IAAM,IAAS,CAAC,GAAG,EAAS,CAAC,YAAY,CAE5C,EADmB,EAAM,MAAM,EAAK,CACD,CAIrC,IAAM,EAAW,CAAC,GAAG,EAAW,CAAC,YAAY,CAC7C,IAAK,IAAM,KAAa,EAEtB,EADW,GAAW,CACK,EAGhC,EAGH,MAAqB,CACnB,IAAM,EAAQ,GAAM,CAEpB,OADA,EAAS,KAAK,EAAM,CACb,GAEV"}
@@ -1,2 +0,0 @@
1
- function e(e){return typeof e==`object`&&!!e&&`_tag`in e&&e._tag===`Service`&&`key`in e&&typeof e.key==`string`}function t(t){return e(t)?t:void 0}function n(e,n){let r=t(n);if(r!==void 0)return e._services.get(r.key)}export{n,t};
2
- //# sourceMappingURL=service-resolution-BefYr4nR.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-resolution-BefYr4nR.mjs","names":[],"sources":["../src/service/service-resolution.ts"],"sourcesContent":["import type { Context } from \"../context/context\"\n\ntype ServiceRequest = {\n _tag: \"Service\"\n key: string\n}\n\n/**\n * Narrow an unknown yielded value to a service request.\n */\nfunction isServiceRequest(value: unknown): value is ServiceRequest {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"_tag\" in value &&\n value._tag === \"Service\" &&\n \"key\" in value &&\n typeof value.key === \"string\"\n )\n}\n\nexport function asServiceRequest(value: unknown) {\n return isServiceRequest(value) ? value : undefined\n}\n\n/**\n * Resolve a yielded service request from a context.\n */\nexport function resolveService<R>(ctx: Context<R>, value: unknown) {\n const request = asServiceRequest(value)\n if (request === undefined) return undefined\n return ctx._services.get(request.key)\n}\n"],"mappings":"AAUA,SAAS,EAAiB,EAAyC,CACjE,OACE,OAAO,GAAU,YACjB,GACA,SAAU,GACV,EAAM,OAAS,WACf,QAAS,GACT,OAAO,EAAM,KAAQ,SAIzB,SAAgB,EAAiB,EAAgB,CAC/C,OAAO,EAAiB,EAAM,CAAG,EAAQ,IAAA,GAM3C,SAAgB,EAAkB,EAAiB,EAAgB,CACjE,IAAM,EAAU,EAAiB,EAAM,CACnC,OAAY,IAAA,GAChB,OAAO,EAAI,UAAU,IAAI,EAAQ,IAAI"}
File without changes