@sayoriqwq/effect-harness 0.0.1

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 (2055) hide show
  1. package/HARNESS.md +34 -0
  2. package/README.md +113 -0
  3. package/dist/bin/effect-harness.d.ts +2 -0
  4. package/dist/bin/effect-harness.js +39 -0
  5. package/dist/bin/effect-harness.js.map +1 -0
  6. package/dist/src/cli/Main.d.ts +6 -0
  7. package/dist/src/cli/Main.js +141 -0
  8. package/dist/src/cli/Main.js.map +1 -0
  9. package/dist/src/harness/CraftSkills.d.ts +14 -0
  10. package/dist/src/harness/CraftSkills.js +164 -0
  11. package/dist/src/harness/CraftSkills.js.map +1 -0
  12. package/dist/src/harness/Errors.d.ts +24 -0
  13. package/dist/src/harness/Errors.js +26 -0
  14. package/dist/src/harness/Errors.js.map +1 -0
  15. package/dist/src/harness/GuardrailRules.d.ts +6 -0
  16. package/dist/src/harness/GuardrailRules.js +303 -0
  17. package/dist/src/harness/GuardrailRules.js.map +1 -0
  18. package/dist/src/harness/Guardrails.d.ts +10 -0
  19. package/dist/src/harness/Guardrails.js +69 -0
  20. package/dist/src/harness/Guardrails.js.map +1 -0
  21. package/dist/src/harness/Init.d.ts +9 -0
  22. package/dist/src/harness/Init.js +234 -0
  23. package/dist/src/harness/Init.js.map +1 -0
  24. package/dist/src/harness/Model.d.ts +44 -0
  25. package/dist/src/harness/Model.js +169 -0
  26. package/dist/src/harness/Model.js.map +1 -0
  27. package/dist/src/harness/ModuleSources.d.ts +5 -0
  28. package/dist/src/harness/ModuleSources.js +47 -0
  29. package/dist/src/harness/ModuleSources.js.map +1 -0
  30. package/dist/src/harness/PnpmWorkspace.d.ts +2 -0
  31. package/dist/src/harness/PnpmWorkspace.js +23 -0
  32. package/dist/src/harness/PnpmWorkspace.js.map +1 -0
  33. package/dist/src/harness/Publish.d.ts +53 -0
  34. package/dist/src/harness/Publish.js +282 -0
  35. package/dist/src/harness/Publish.js.map +1 -0
  36. package/dist/src/harness/SelfVerify.d.ts +4 -0
  37. package/dist/src/harness/SelfVerify.js +56 -0
  38. package/dist/src/harness/SelfVerify.js.map +1 -0
  39. package/dist/src/harness/SourcePin.d.ts +12 -0
  40. package/dist/src/harness/SourcePin.js +320 -0
  41. package/dist/src/harness/SourcePin.js.map +1 -0
  42. package/dist/src/harness/Status.d.ts +12 -0
  43. package/dist/src/harness/Status.js +88 -0
  44. package/dist/src/harness/Status.js.map +1 -0
  45. package/dist/src/harness/TargetVerify.d.ts +8 -0
  46. package/dist/src/harness/TargetVerify.js +432 -0
  47. package/dist/src/harness/TargetVerify.js.map +1 -0
  48. package/dist/src/harness/TestContract.d.ts +6 -0
  49. package/dist/src/harness/TestContract.js +45 -0
  50. package/dist/src/harness/TestContract.js.map +1 -0
  51. package/dist/src/platform/Json.d.ts +8 -0
  52. package/dist/src/platform/Json.js +35 -0
  53. package/dist/src/platform/Json.js.map +1 -0
  54. package/dist/src/platform/ManagedFiles.d.ts +8 -0
  55. package/dist/src/platform/ManagedFiles.js +59 -0
  56. package/dist/src/platform/ManagedFiles.js.map +1 -0
  57. package/dist/src/platform/Process.d.ts +8 -0
  58. package/dist/src/platform/Process.js +80 -0
  59. package/dist/src/platform/Process.js.map +1 -0
  60. package/guide/default-capabilities.md +38 -0
  61. package/guide/index.md +49 -0
  62. package/guide/setup.md +64 -0
  63. package/harness/default-capabilities.md +32 -0
  64. package/harness/exposure.md +46 -0
  65. package/harness/feedback/index.md +60 -0
  66. package/harness/index.md +22 -0
  67. package/harness/official-inventory.md +85 -0
  68. package/harness/runtime/codex/AGENTS.fragment.md +28 -0
  69. package/harness/runtime/codex/agents/effect-worker.md +26 -0
  70. package/harness/runtime/codex/skills/effect-code/SKILL.md +72 -0
  71. package/harness/runtime/codex/skills/effect-code/agents/openai.yaml +4 -0
  72. package/harness/runtime/codex/skills/effect-feedback/SKILL.md +66 -0
  73. package/harness/runtime/codex/skills/effect-feedback/agents/openai.yaml +4 -0
  74. package/harness/source.md +52 -0
  75. package/harness/target-agent-contract.md +205 -0
  76. package/package.json +68 -0
  77. package/repos/craft-skills.manifest.json +34 -0
  78. package/repos/effect/.agents/skills/grill-me/SKILL.md +43 -0
  79. package/repos/effect/.agents/skills/jsdocs/SKILL.md +203 -0
  80. package/repos/effect/.agents/skills/scratchpad/SKILL.md +44 -0
  81. package/repos/effect/.agents/skills/scratchpad/agents/openai.yaml +7 -0
  82. package/repos/effect/.agents/skills/scratchpad/scripts/extract-example.mjs +260 -0
  83. package/repos/effect/.changeset/add-bigdecimal-sumall-multiplyall.md +5 -0
  84. package/repos/effect/.changeset/add-chunk-schema.md +5 -0
  85. package/repos/effect/.changeset/add-command-hidden.md +19 -0
  86. package/repos/effect/.changeset/add-config-nested.md +5 -0
  87. package/repos/effect/.changeset/add-flag-hidden.md +15 -0
  88. package/repos/effect/.changeset/add-from-string-schemas.md +5 -0
  89. package/repos/effect/.changeset/add-headers-remove-many.md +5 -0
  90. package/repos/effect/.changeset/add-indexeddb-kvs-layer.md +5 -0
  91. package/repos/effect/.changeset/add-make-msgpack.md +5 -0
  92. package/repos/effect/.changeset/add-make-option.md +5 -0
  93. package/repos/effect/.changeset/add-missing-tx-modules.md +11 -0
  94. package/repos/effect/.changeset/add-newtype-module.md +5 -0
  95. package/repos/effect/.changeset/add-scalar-show-operation-id.md +5 -0
  96. package/repos/effect/.changeset/add-schedule-tap.md +5 -0
  97. package/repos/effect/.changeset/add-schema-annotate-encoded.md +5 -0
  98. package/repos/effect/.changeset/add-schema-array-ensure.md +5 -0
  99. package/repos/effect/.changeset/add-schema-bigdecimal.md +5 -0
  100. package/repos/effect/.changeset/add-schema-datetime.md +5 -0
  101. package/repos/effect/.changeset/add-schema-option-from-optional-nullor.md +5 -0
  102. package/repos/effect/.changeset/add-schema-option-from-undefined-nullish.md +5 -0
  103. package/repos/effect/.changeset/add-schema-string-encoding.md +5 -0
  104. package/repos/effect/.changeset/add-sql-pglite.md +5 -0
  105. package/repos/effect/.changeset/add-standard-jsdoc-rule.md +5 -0
  106. package/repos/effect/.changeset/add-stream-broadcastn.md +5 -0
  107. package/repos/effect/.changeset/add-unstable-encoding-export.md +5 -0
  108. package/repos/effect/.changeset/afraid-cobras-like.md +5 -0
  109. package/repos/effect/.changeset/ai-openai-config-field-leak.md +6 -0
  110. package/repos/effect/.changeset/ai-openai-file-nullable-fields.md +5 -0
  111. package/repos/effect/.changeset/anthropic-4-6-structured-output.md +5 -0
  112. package/repos/effect/.changeset/asyncresult-exhaustive.md +5 -0
  113. package/repos/effect/.changeset/atom-stream-error-type.md +5 -0
  114. package/repos/effect/.changeset/beige-paths-sort.md +5 -0
  115. package/repos/effect/.changeset/better-apples-nail.md +5 -0
  116. package/repos/effect/.changeset/better-rocks-arrive.md +5 -0
  117. package/repos/effect/.changeset/big-pans-look.md +5 -0
  118. package/repos/effect/.changeset/blue-dingos-greet.md +5 -0
  119. package/repos/effect/.changeset/blue-ligers-cheat.md +5 -0
  120. package/repos/effect/.changeset/blue-onions-smile.md +5 -0
  121. package/repos/effect/.changeset/blue-ravens-type.md +5 -0
  122. package/repos/effect/.changeset/blue-trams-kiss.md +7 -0
  123. package/repos/effect/.changeset/bold-chairs-yawn.md +5 -0
  124. package/repos/effect/.changeset/bold-planets-shout.md +30 -0
  125. package/repos/effect/.changeset/breezy-meals-see.md +5 -0
  126. package/repos/effect/.changeset/bright-bugs-bow.md +5 -0
  127. package/repos/effect/.changeset/bright-canyons-clean.md +5 -0
  128. package/repos/effect/.changeset/bright-dogs-fail.md +5 -0
  129. package/repos/effect/.changeset/bright-flags-stand.md +5 -0
  130. package/repos/effect/.changeset/bright-laws-teach.md +5 -0
  131. package/repos/effect/.changeset/bright-lemons-dance.md +5 -0
  132. package/repos/effect/.changeset/bright-planes-smash.md +5 -0
  133. package/repos/effect/.changeset/bright-rats-attend.md +5 -0
  134. package/repos/effect/.changeset/bright-toes-rush.md +5 -0
  135. package/repos/effect/.changeset/bumpy-boxes-teach.md +5 -0
  136. package/repos/effect/.changeset/busy-lions-sneeze.md +5 -0
  137. package/repos/effect/.changeset/busy-maps-attend.md +7 -0
  138. package/repos/effect/.changeset/calm-buckets-own.md +5 -0
  139. package/repos/effect/.changeset/calm-carrots-march.md +7 -0
  140. package/repos/effect/.changeset/calm-cars-rest.md +5 -0
  141. package/repos/effect/.changeset/calm-panthers-nail.md +5 -0
  142. package/repos/effect/.changeset/calm-seas-smile.md +5 -0
  143. package/repos/effect/.changeset/calm-squids-hug.md +5 -0
  144. package/repos/effect/.changeset/chatty-poets-type.md +5 -0
  145. package/repos/effect/.changeset/chilled-mice-wash.md +5 -0
  146. package/repos/effect/.changeset/chilly-pumas-rule.md +5 -0
  147. package/repos/effect/.changeset/chubby-buckets-feel.md +5 -0
  148. package/repos/effect/.changeset/chubby-parents-flow.md +5 -0
  149. package/repos/effect/.changeset/chubby-planets-fall.md +5 -0
  150. package/repos/effect/.changeset/clean-balloons-tan.md +5 -0
  151. package/repos/effect/.changeset/clean-bulldogs-care.md +5 -0
  152. package/repos/effect/.changeset/clean-dryers-sneeze.md +5 -0
  153. package/repos/effect/.changeset/clean-geese-work.md +5 -0
  154. package/repos/effect/.changeset/clean-goats-wave.md +5 -0
  155. package/repos/effect/.changeset/clean-needles-shake.md +23 -0
  156. package/repos/effect/.changeset/clean-tires-guess.md +5 -0
  157. package/repos/effect/.changeset/clear-spies-boil.md +5 -0
  158. package/repos/effect/.changeset/cli-help-choices.md +5 -0
  159. package/repos/effect/.changeset/cold-knives-lie.md +35 -0
  160. package/repos/effect/.changeset/cold-rooms-show.md +5 -0
  161. package/repos/effect/.changeset/cold-sloths-wave.md +5 -0
  162. package/repos/effect/.changeset/compact-json-schema-enum.md +25 -0
  163. package/repos/effect/.changeset/config-withdefault-eager.md +7 -0
  164. package/repos/effect/.changeset/config.json +24 -0
  165. package/repos/effect/.changeset/consolidate-encoding.md +5 -0
  166. package/repos/effect/.changeset/consolidate-sql-error.md +16 -0
  167. package/repos/effect/.changeset/crisp-seas-warn.md +5 -0
  168. package/repos/effect/.changeset/cuddly-rooms-bet.md +5 -0
  169. package/repos/effect/.changeset/curly-poems-talk.md +5 -0
  170. package/repos/effect/.changeset/curly-spies-relax.md +5 -0
  171. package/repos/effect/.changeset/curvy-apples-float.md +5 -0
  172. package/repos/effect/.changeset/custom-http-security-openapi-generator.md +5 -0
  173. package/repos/effect/.changeset/cute-heads-thank.md +5 -0
  174. package/repos/effect/.changeset/cyan-loops-grow.md +5 -0
  175. package/repos/effect/.changeset/cyan-radios-switch.md +5 -0
  176. package/repos/effect/.changeset/deep-rivers-spend.md +5 -0
  177. package/repos/effect/.changeset/dirty-lamps-trade.md +5 -0
  178. package/repos/effect/.changeset/dirty-laws-wear.md +5 -0
  179. package/repos/effect/.changeset/duration-temporal-object-input.md +7 -0
  180. package/repos/effect/.changeset/eager-coats-cheat.md +5 -0
  181. package/repos/effect/.changeset/early-birds-dream.md +5 -0
  182. package/repos/effect/.changeset/early-donuts-argue.md +5 -0
  183. package/repos/effect/.changeset/early-peaches-check.md +6 -0
  184. package/repos/effect/.changeset/eff-691-default-logger-ordering.md +5 -0
  185. package/repos/effect/.changeset/eff-693-rpcgroup-handler-deps.md +5 -0
  186. package/repos/effect/.changeset/eff-694-cli-completions-module.md +5 -0
  187. package/repos/effect/.changeset/eff-695-layer-mock-dual-api.md +5 -0
  188. package/repos/effect/.changeset/eff-697-rpcserialization-json-array-decode.md +5 -0
  189. package/repos/effect/.changeset/eff-698-rpcserialization-unreachable-branch.md +5 -0
  190. package/repos/effect/.changeset/eff-700-httpapi-middleware-errors.md +12 -0
  191. package/repos/effect/.changeset/eff-701-httpapierror-respondable.md +5 -0
  192. package/repos/effect/.changeset/eff-704-stream-merge-predicate.md +5 -0
  193. package/repos/effect/.changeset/eff-705-layer-tap-apis.md +5 -0
  194. package/repos/effect/.changeset/eff-706-servicemap-mutate.md +6 -0
  195. package/repos/effect/.changeset/eff-716-response-id-tracker-map.md +5 -0
  196. package/repos/effect/.changeset/eff-717-openai-socket-cancel.md +5 -0
  197. package/repos/effect/.changeset/eff-718-embedding-model-surface.md +13 -0
  198. package/repos/effect/.changeset/eff-725-fix-catch-jsdoc.md +5 -0
  199. package/repos/effect/.changeset/eff-726-model-dimensions.md +7 -0
  200. package/repos/effect/.changeset/eff-727-cli-help-alignment.md +5 -0
  201. package/repos/effect/.changeset/eff-730-language-model-incremental-fallback.md +5 -0
  202. package/repos/effect/.changeset/eff-736-cached-with-ttl.md +5 -0
  203. package/repos/effect/.changeset/eff-738-cron-prev.md +5 -0
  204. package/repos/effect/.changeset/eff-739-openai-function-call-done.md +5 -0
  205. package/repos/effect/.changeset/eff-740-missing-summary-parts.md +5 -0
  206. package/repos/effect/.changeset/eff-742-http-client-request-web.md +5 -0
  207. package/repos/effect/.changeset/eff-744-sqlite-migrator-lock.md +5 -0
  208. package/repos/effect/.changeset/eff-746-fixed-iteration-catchup.md +5 -0
  209. package/repos/effect/.changeset/eff-747-unify-effect.md +5 -0
  210. package/repos/effect/.changeset/eff-754-url-builder-any.md +6 -0
  211. package/repos/effect/.changeset/eff-755-references-core.md +5 -0
  212. package/repos/effect/.changeset/eff-769-select-text-highlight.md +5 -0
  213. package/repos/effect/.changeset/eff-774-mutable-list-append-all-empty-array.md +5 -0
  214. package/repos/effect/.changeset/eff-777-schema-make-effect.md +5 -0
  215. package/repos/effect/.changeset/eff-778-http-middleware-path-logger.md +5 -0
  216. package/repos/effect/.changeset/eff-779-keyvaluestore-layer-sql.md +5 -0
  217. package/repos/effect/.changeset/eff-780-layer-unify.md +5 -0
  218. package/repos/effect/.changeset/eff-781-fix-stream-toqueue-types.md +5 -0
  219. package/repos/effect/.changeset/eff-782-httpapi-status-literals.md +5 -0
  220. package/repos/effect/.changeset/eff-783-atom-http-api-errors.md +5 -0
  221. package/repos/effect/.changeset/eff-819-cluster-workflow-shard-groups.md +5 -0
  222. package/repos/effect/.changeset/eight-turkeys-own.md +7 -0
  223. package/repos/effect/.changeset/eighty-lies-deny.md +5 -0
  224. package/repos/effect/.changeset/eighty-poets-draw.md +9 -0
  225. package/repos/effect/.changeset/eighty-swans-scream.md +5 -0
  226. package/repos/effect/.changeset/eighty-teeth-sniff.md +5 -0
  227. package/repos/effect/.changeset/eleven-apes-share.md +5 -0
  228. package/repos/effect/.changeset/eleven-numbers-bake.md +5 -0
  229. package/repos/effect/.changeset/empty-gifts-beg.md +5 -0
  230. package/repos/effect/.changeset/empty-http-rpc-client.md +5 -0
  231. package/repos/effect/.changeset/eventlog-unencrypted.md +5 -0
  232. package/repos/effect/.changeset/expand-schema-filter-output.md +24 -0
  233. package/repos/effect/.changeset/export-schema-encode-keys-interface.md +7 -0
  234. package/repos/effect/.changeset/extract-semaphore-latch.md +10 -0
  235. package/repos/effect/.changeset/fair-bees-relax.md +5 -0
  236. package/repos/effect/.changeset/fair-buttons-share.md +7 -0
  237. package/repos/effect/.changeset/fair-cooks-stop.md +5 -0
  238. package/repos/effect/.changeset/fair-cups-train.md +5 -0
  239. package/repos/effect/.changeset/fair-dryers-speak.md +5 -0
  240. package/repos/effect/.changeset/fair-forks-shake.md +5 -0
  241. package/repos/effect/.changeset/fair-pandas-prove.md +5 -0
  242. package/repos/effect/.changeset/fair-pants-float.md +5 -0
  243. package/repos/effect/.changeset/fair-poems-visit.md +5 -0
  244. package/repos/effect/.changeset/famous-wolves-lead.md +5 -0
  245. package/repos/effect/.changeset/fancy-glasses-grow.md +5 -0
  246. package/repos/effect/.changeset/fast-times-camp.md +5 -0
  247. package/repos/effect/.changeset/few-birds-matter.md +5 -0
  248. package/repos/effect/.changeset/few-cougars-dig.md +5 -0
  249. package/repos/effect/.changeset/few-foxes-grin.md +5 -0
  250. package/repos/effect/.changeset/few-mirrors-pull.md +14 -0
  251. package/repos/effect/.changeset/few-socks-poke.md +5 -0
  252. package/repos/effect/.changeset/fiber-runtime-start-metrics.md +5 -0
  253. package/repos/effect/.changeset/fiery-jokes-care.md +5 -0
  254. package/repos/effect/.changeset/fiery-mammals-call.md +5 -0
  255. package/repos/effect/.changeset/fine-walls-decide.md +5 -0
  256. package/repos/effect/.changeset/first-success-of.md +5 -0
  257. package/repos/effect/.changeset/five-parents-relax.md +5 -0
  258. package/repos/effect/.changeset/five-worms-rhyme.md +5 -0
  259. package/repos/effect/.changeset/fix-1332.md +5 -0
  260. package/repos/effect/.changeset/fix-1917.md +11 -0
  261. package/repos/effect/.changeset/fix-1927.md +5 -0
  262. package/repos/effect/.changeset/fix-1940.md +7 -0
  263. package/repos/effect/.changeset/fix-1947.md +7 -0
  264. package/repos/effect/.changeset/fix-2002.md +5 -0
  265. package/repos/effect/.changeset/fix-2012.md +5 -0
  266. package/repos/effect/.changeset/fix-2015.md +5 -0
  267. package/repos/effect/.changeset/fix-2260.md +5 -0
  268. package/repos/effect/.changeset/fix-2268.md +5 -0
  269. package/repos/effect/.changeset/fix-2271.md +5 -0
  270. package/repos/effect/.changeset/fix-2384.md +7 -0
  271. package/repos/effect/.changeset/fix-ai-empty-params-structured-output.md +5 -0
  272. package/repos/effect/.changeset/fix-ai-text-toolkit-typing.md +5 -0
  273. package/repos/effect/.changeset/fix-catch-orelse-error-erasure.md +5 -0
  274. package/repos/effect/.changeset/fix-class-constructor-defaults.md +5 -0
  275. package/repos/effect/.changeset/fix-cli-mixed-global-flag-context.md +7 -0
  276. package/repos/effect/.changeset/fix-config-withDefault.md +5 -0
  277. package/repos/effect/.changeset/fix-config-withdefault-filter.md +7 -0
  278. package/repos/effect/.changeset/fix-datetime-gmt.md +5 -0
  279. package/repos/effect/.changeset/fix-devtools-flush-on-teardown.md +10 -0
  280. package/repos/effect/.changeset/fix-duration-symmetric-rounding.md +5 -0
  281. package/repos/effect/.changeset/fix-entity-manager-defect-replay.md +5 -0
  282. package/repos/effect/.changeset/fix-entity-proxy-rpc-handler-context.md +5 -0
  283. package/repos/effect/.changeset/fix-entity-proxy-server-path-params.md +5 -0
  284. package/repos/effect/.changeset/fix-from-readable-stream-cancel-defect.md +5 -0
  285. package/repos/effect/.changeset/fix-graph-undirected-traversal.md +5 -0
  286. package/repos/effect/.changeset/fix-has-interrupts-only-empty.md +5 -0
  287. package/repos/effect/.changeset/fix-hashmap-bit31-ordering.md +5 -0
  288. package/repos/effect/.changeset/fix-headers-proto-enumerability.md +5 -0
  289. package/repos/effect/.changeset/fix-http-incoming-message-parse-options.md +5 -0
  290. package/repos/effect/.changeset/fix-httpapi-endpoint-error-inference.md +5 -0
  291. package/repos/effect/.changeset/fix-httpapi-schema-types.md +5 -0
  292. package/repos/effect/.changeset/fix-httpapi-security-middleware-cache.md +5 -0
  293. package/repos/effect/.changeset/fix-is-json-dag.md +7 -0
  294. package/repos/effect/.changeset/fix-json-schema-anyof-oneof-siblings.md +5 -0
  295. package/repos/effect/.changeset/fix-json-schema-import-json.md +5 -0
  296. package/repos/effect/.changeset/fix-keepalive-blocked-timers.md +5 -0
  297. package/repos/effect/.changeset/fix-mcp-param-name-resolution.md +5 -0
  298. package/repos/effect/.changeset/fix-mermaid-escape-special-chars.md +5 -0
  299. package/repos/effect/.changeset/fix-mutable-list-filter-length.md +5 -0
  300. package/repos/effect/.changeset/fix-object-keyword-json-schema.md +5 -0
  301. package/repos/effect/.changeset/fix-openai-mcp-tool-names.md +5 -0
  302. package/repos/effect/.changeset/fix-openapi-generator-form-urlencoded.md +5 -0
  303. package/repos/effect/.changeset/fix-openapi-generator-swagger2openapi.md +5 -0
  304. package/repos/effect/.changeset/fix-openapi-preserve-multiple-response-content-types.md +5 -0
  305. package/repos/effect/.changeset/fix-openrouter-sparse-array.md +5 -0
  306. package/repos/effect/.changeset/fix-otel-logger-clock-skew.md +7 -0
  307. package/repos/effect/.changeset/fix-otel-logger-severity-number.md +20 -0
  308. package/repos/effect/.changeset/fix-queue-collect-duplication.md +5 -0
  309. package/repos/effect/.changeset/fix-random-string-seeds.md +5 -0
  310. package/repos/effect/.changeset/fix-ratelimiter-tokenbucket-redis-ttl.md +5 -0
  311. package/repos/effect/.changeset/fix-remainder-scientific-notation.md +5 -0
  312. package/repos/effect/.changeset/fix-request-resolver-pending-batches-leak.md +5 -0
  313. package/repos/effect/.changeset/fix-retry-transient-autocomplete.md +5 -0
  314. package/repos/effect/.changeset/fix-rpc-http-requestids-finalizer.md +5 -0
  315. package/repos/effect/.changeset/fix-rpc-json-id-edges.md +5 -0
  316. package/repos/effect/.changeset/fix-schedule-fixed-double-exec.md +9 -0
  317. package/repos/effect/.changeset/fix-schedule-reduce-sync-state.md +5 -0
  318. package/repos/effect/.changeset/fix-schema-arbitrary-exclusive-bounds.md +5 -0
  319. package/repos/effect/.changeset/fix-schema-defect-message.md +5 -0
  320. package/repos/effect/.changeset/fix-schema-encode-keys-property-keys.md +5 -0
  321. package/repos/effect/.changeset/fix-schema-encodekeys-class.md +5 -0
  322. package/repos/effect/.changeset/fix-schema-encodekeys-struct.md +5 -0
  323. package/repos/effect/.changeset/fix-schema-identifier-expected-message.md +5 -0
  324. package/repos/effect/.changeset/fix-schema-is-uuid.md +5 -0
  325. package/repos/effect/.changeset/fix-schema-option-non-schema-failures.md +17 -0
  326. package/repos/effect/.changeset/fix-schema-parser-checks.md +9 -0
  327. package/repos/effect/.changeset/fix-searchparam-initial-decode.md +5 -0
  328. package/repos/effect/.changeset/fix-serializable-wire-transfer.md +7 -0
  329. package/repos/effect/.changeset/fix-stream-grouped-within-flush.md +5 -0
  330. package/repos/effect/.changeset/fix-stream-run-for-each-while.md +5 -0
  331. package/repos/effect/.changeset/fix-stream-scan-effect.md +5 -0
  332. package/repos/effect/.changeset/fix-stream-scoped-scope.md +5 -0
  333. package/repos/effect/.changeset/fix-strip-approval-artifacts-multi-round.md +13 -0
  334. package/repos/effect/.changeset/fix-struct-utility-types-simplify.md +5 -0
  335. package/repos/effect/.changeset/fix-structwithrest-index-signatures.md +6 -0
  336. package/repos/effect/.changeset/fix-tagged-union-class-sentinels.md +5 -0
  337. package/repos/effect/.changeset/fix-tagged-union-match-unify.md +6 -0
  338. package/repos/effect/.changeset/fix-to-tagged-union-isanyof-custom-tags.md +10 -0
  339. package/repos/effect/.changeset/fix-tuple-with-rest-post-rest-index-drift.md +5 -0
  340. package/repos/effect/.changeset/fix-tuple-with-rest-post-rest-validation.md +5 -0
  341. package/repos/effect/.changeset/fix-types-voidifempty.md +5 -0
  342. package/repos/effect/.changeset/fix-void-response-encoding.md +5 -0
  343. package/repos/effect/.changeset/fix-workflow-proxy-rpc-handler-context.md +5 -0
  344. package/repos/effect/.changeset/flat-chicken-remain.md +5 -0
  345. package/repos/effect/.changeset/floppy-cows-spend.md +5 -0
  346. package/repos/effect/.changeset/floppy-items-admire.md +5 -0
  347. package/repos/effect/.changeset/floppy-pigs-kiss.md +5 -0
  348. package/repos/effect/.changeset/fluffy-meals-matter.md +5 -0
  349. package/repos/effect/.changeset/fluffy-pumas-push.md +5 -0
  350. package/repos/effect/.changeset/forked-memo-maps.md +6 -0
  351. package/repos/effect/.changeset/forty-hounds-cheer.md +5 -0
  352. package/repos/effect/.changeset/forty-otters-cry.md +5 -0
  353. package/repos/effect/.changeset/forty-rings-film.md +7 -0
  354. package/repos/effect/.changeset/forty-signs-stay.md +5 -0
  355. package/repos/effect/.changeset/forty-swans-divide.md +5 -0
  356. package/repos/effect/.changeset/forty-trees-pay.md +5 -0
  357. package/repos/effect/.changeset/four-papayas-bow.md +5 -0
  358. package/repos/effect/.changeset/four-points-repeat.md +5 -0
  359. package/repos/effect/.changeset/fresh-cats-smash.md +5 -0
  360. package/repos/effect/.changeset/fresh-emus-cheat.md +5 -0
  361. package/repos/effect/.changeset/fresh-monkeys-smoke.md +9 -0
  362. package/repos/effect/.changeset/fruity-houses-learn.md +6 -0
  363. package/repos/effect/.changeset/full-adults-double.md +5 -0
  364. package/repos/effect/.changeset/funny-crabs-hang.md +6 -0
  365. package/repos/effect/.changeset/funny-forks-move.md +5 -0
  366. package/repos/effect/.changeset/fuzzy-camels-hunt.md +5 -0
  367. package/repos/effect/.changeset/fuzzy-dodos-help.md +5 -0
  368. package/repos/effect/.changeset/fuzzy-lions-perform.md +5 -0
  369. package/repos/effect/.changeset/fuzzy-planets-sneeze.md +5 -0
  370. package/repos/effect/.changeset/gold-meteors-move.md +5 -0
  371. package/repos/effect/.changeset/gold-readers-hug.md +5 -0
  372. package/repos/effect/.changeset/gold-rings-start.md +5 -0
  373. package/repos/effect/.changeset/good-tools-work.md +7 -0
  374. package/repos/effect/.changeset/graph-algorithm-fixes.md +5 -0
  375. package/repos/effect/.changeset/great-trains-mate.md +5 -0
  376. package/repos/effect/.changeset/great-trams-report.md +5 -0
  377. package/repos/effect/.changeset/green-beds-unref.md +7 -0
  378. package/repos/effect/.changeset/green-chips-wash.md +5 -0
  379. package/repos/effect/.changeset/green-moons-smile.md +5 -0
  380. package/repos/effect/.changeset/green-pugs-play.md +5 -0
  381. package/repos/effect/.changeset/green-rings-prove.md +5 -0
  382. package/repos/effect/.changeset/happy-mirrors-dream.md +5 -0
  383. package/repos/effect/.changeset/heavy-loops-cut.md +5 -0
  384. package/repos/effect/.changeset/heavy-trams-fix.md +5 -0
  385. package/repos/effect/.changeset/hip-socks-travel.md +5 -0
  386. package/repos/effect/.changeset/honest-pens-thank.md +5 -0
  387. package/repos/effect/.changeset/honest-rivers-notice.md +5 -0
  388. package/repos/effect/.changeset/hot-taxis-fry.md +5 -0
  389. package/repos/effect/.changeset/httpapi-endpoint-relax-constraints.md +5 -0
  390. package/repos/effect/.changeset/httpapi-schema-service-types.md +6 -0
  391. package/repos/effect/.changeset/huge-moons-rhyme.md +5 -0
  392. package/repos/effect/.changeset/humble-pigs-dig.md +5 -0
  393. package/repos/effect/.changeset/icy-flies-cross.md +5 -0
  394. package/repos/effect/.changeset/itchy-radios-poke.md +5 -0
  395. package/repos/effect/.changeset/itchy-results-bet.md +5 -0
  396. package/repos/effect/.changeset/itchy-shrimps-deny.md +5 -0
  397. package/repos/effect/.changeset/itchy-toes-promise.md +5 -0
  398. package/repos/effect/.changeset/k8s-last-transition-null.md +5 -0
  399. package/repos/effect/.changeset/khaki-cats-learn.md +5 -0
  400. package/repos/effect/.changeset/khaki-melons-appear.md +5 -0
  401. package/repos/effect/.changeset/kind-hounds-float.md +5 -0
  402. package/repos/effect/.changeset/kind-windows-fall.md +5 -0
  403. package/repos/effect/.changeset/late-hotels-rule.md +5 -0
  404. package/repos/effect/.changeset/late-lamps-care.md +5 -0
  405. package/repos/effect/.changeset/late-rivers-applaud.md +5 -0
  406. package/repos/effect/.changeset/layer-map-dynamic-idle-ttl.md +5 -0
  407. package/repos/effect/.changeset/lazy-queens-rush.md +5 -0
  408. package/repos/effect/.changeset/lazy-recursive-forward-refs.md +5 -0
  409. package/repos/effect/.changeset/lazy-timers-exist.md +5 -0
  410. package/repos/effect/.changeset/legal-pants-drop.md +5 -0
  411. package/repos/effect/.changeset/lemon-taxis-sin.md +5 -0
  412. package/repos/effect/.changeset/light-kids-sneeze.md +5 -0
  413. package/repos/effect/.changeset/little-dryers-allow.md +7 -0
  414. package/repos/effect/.changeset/long-cameras-think.md +5 -0
  415. package/repos/effect/.changeset/lovely-cobras-change.md +5 -0
  416. package/repos/effect/.changeset/lovely-frogs-rescue.md +5 -0
  417. package/repos/effect/.changeset/lucky-buttons-jump.md +5 -0
  418. package/repos/effect/.changeset/lucky-phones-listen.md +5 -0
  419. package/repos/effect/.changeset/lucky-worms-type.md +5 -0
  420. package/repos/effect/.changeset/mean-dingos-share.md +5 -0
  421. package/repos/effect/.changeset/mean-trains-smash.md +5 -0
  422. package/repos/effect/.changeset/metal-parts-yell.md +5 -0
  423. package/repos/effect/.changeset/mighty-games-matter.md +5 -0
  424. package/repos/effect/.changeset/modern-uuid-guid-filter.md +5 -0
  425. package/repos/effect/.changeset/nasty-geese-grow.md +5 -0
  426. package/repos/effect/.changeset/neat-goats-wave.md +5 -0
  427. package/repos/effect/.changeset/neat-kings-chew.md +5 -0
  428. package/repos/effect/.changeset/neat-lions-rest.md +5 -0
  429. package/repos/effect/.changeset/neat-snails-wash.md +5 -0
  430. package/repos/effect/.changeset/neat-taxis-notice.md +5 -0
  431. package/repos/effect/.changeset/new-dogs-swim.md +5 -0
  432. package/repos/effect/.changeset/new-toes-stop.md +5 -0
  433. package/repos/effect/.changeset/ninety-geese-exist.md +5 -0
  434. package/repos/effect/.changeset/odd-boats-think.md +5 -0
  435. package/repos/effect/.changeset/odd-bulldogs-sleep.md +5 -0
  436. package/repos/effect/.changeset/odd-fans-glow.md +5 -0
  437. package/repos/effect/.changeset/odd-forks-talk.md +5 -0
  438. package/repos/effect/.changeset/odd-laws-draw.md +5 -0
  439. package/repos/effect/.changeset/odd-owls-smoke.md +5 -0
  440. package/repos/effect/.changeset/odd-socks-boil.md +5 -0
  441. package/repos/effect/.changeset/odd-suns-dance.md +5 -0
  442. package/repos/effect/.changeset/old-brooms-cry.md +5 -0
  443. package/repos/effect/.changeset/old-facts-stand.md +5 -0
  444. package/repos/effect/.changeset/old-mirrors-float.md +5 -0
  445. package/repos/effect/.changeset/olive-poems-visit.md +5 -0
  446. package/repos/effect/.changeset/open-hotels-remain.md +5 -0
  447. package/repos/effect/.changeset/openai-compat-nullable-tool-name.md +7 -0
  448. package/repos/effect/.changeset/openai-compat-reasoning.md +5 -0
  449. package/repos/effect/.changeset/otel-resource-env-precedence.md +5 -0
  450. package/repos/effect/.changeset/perfect-buckets-tickle.md +5 -0
  451. package/repos/effect/.changeset/petite-months-allow.md +6 -0
  452. package/repos/effect/.changeset/platform-crypto-service.md +9 -0
  453. package/repos/effect/.changeset/platform-node-shared-barrel.md +5 -0
  454. package/repos/effect/.changeset/plenty-moons-pull.md +5 -0
  455. package/repos/effect/.changeset/polite-brooms-tickle.md +5 -0
  456. package/repos/effect/.changeset/polite-pigs-speak.md +5 -0
  457. package/repos/effect/.changeset/polite-tables-kneel.md +5 -0
  458. package/repos/effect/.changeset/port-react-hydration.md +8 -0
  459. package/repos/effect/.changeset/pre.json +588 -0
  460. package/repos/effect/.changeset/public-deer-ring.md +5 -0
  461. package/repos/effect/.changeset/public-jeans-stop.md +5 -0
  462. package/repos/effect/.changeset/pubsub-publish-false.md +5 -0
  463. package/repos/effect/.changeset/puny-pens-clap.md +6 -0
  464. package/repos/effect/.changeset/purple-bars-prove.md +5 -0
  465. package/repos/effect/.changeset/purple-schools-float.md +5 -0
  466. package/repos/effect/.changeset/purple-turtles-draw.md +5 -0
  467. package/repos/effect/.changeset/quick-dragons-fix.md +5 -0
  468. package/repos/effect/.changeset/quick-falcons-travel.md +5 -0
  469. package/repos/effect/.changeset/quick-geese-relax.md +5 -0
  470. package/repos/effect/.changeset/quick-lamps-dig.md +5 -0
  471. package/repos/effect/.changeset/quick-lizards-fall.md +5 -0
  472. package/repos/effect/.changeset/quick-trees-join.md +5 -0
  473. package/repos/effect/.changeset/quiet-carpets-grin.md +5 -0
  474. package/repos/effect/.changeset/quiet-files-hunt.md +5 -0
  475. package/repos/effect/.changeset/quiet-lamps-jam.md +5 -0
  476. package/repos/effect/.changeset/quiet-radios-wave.md +5 -0
  477. package/repos/effect/.changeset/quiet-redis-scripts.md +5 -0
  478. package/repos/effect/.changeset/ready-olives-divide.md +5 -0
  479. package/repos/effect/.changeset/real-trains-ring.md +5 -0
  480. package/repos/effect/.changeset/red-pigs-repair.md +5 -0
  481. package/repos/effect/.changeset/redacted-representation-options.md +7 -0
  482. package/repos/effect/.changeset/refactor-cli-global-flags.md +27 -0
  483. package/repos/effect/.changeset/refactor-config-provider.md +23 -0
  484. package/repos/effect/.changeset/refactor-representation-references.md +5 -0
  485. package/repos/effect/.changeset/remove-effect-transactionwith.md +5 -0
  486. package/repos/effect/.changeset/remove-http-span-counter.md +5 -0
  487. package/repos/effect/.changeset/remove-nullor.md +5 -0
  488. package/repos/effect/.changeset/remove-openapi-fromapi-options.md +7 -0
  489. package/repos/effect/.changeset/remove-types-mergerecord.md +5 -0
  490. package/repos/effect/.changeset/remove-unused-utils-apis.md +5 -0
  491. package/repos/effect/.changeset/rename-rebuild-out.md +5 -0
  492. package/repos/effect/.changeset/restore-schema-parse-options.md +5 -0
  493. package/repos/effect/.changeset/rich-dots-push.md +5 -0
  494. package/repos/effect/.changeset/rich-hoops-nail.md +5 -0
  495. package/repos/effect/.changeset/rich-sloths-draw.md +5 -0
  496. package/repos/effect/.changeset/ripe-lies-battle.md +5 -0
  497. package/repos/effect/.changeset/rpc-middleware-provides-fix.md +5 -0
  498. package/repos/effect/.changeset/scalar-custom-fetch.md +5 -0
  499. package/repos/effect/.changeset/schema-as-class.md +17 -0
  500. package/repos/effect/.changeset/schema-asserts-signature.md +5 -0
  501. package/repos/effect/.changeset/schema-clean-up-additionalProperties.md +7 -0
  502. package/repos/effect/.changeset/schema-datetime-utc-from-string.md +5 -0
  503. package/repos/effect/.changeset/schema-decoding-defaults-services.md +7 -0
  504. package/repos/effect/.changeset/schema-defaults-issue-channel.md +7 -0
  505. package/repos/effect/.changeset/schema-dollar-prefix.md +5 -0
  506. package/repos/effect/.changeset/schema-missing-self-generic.md +5 -0
  507. package/repos/effect/.changeset/schema-ordered-arbitrary-constraints.md +12 -0
  508. package/repos/effect/.changeset/schema-parser-adapter-errors.md +5 -0
  509. package/repos/effect/.changeset/schema-refactor-toCodecJson.md +5 -0
  510. package/repos/effect/.changeset/schema-remove-annotate-in.md +5 -0
  511. package/repos/effect/.changeset/schema-rename-makeUnsafe-to-make.md +7 -0
  512. package/repos/effect/.changeset/schema-rename-parser-makeUnsafe.md +5 -0
  513. package/repos/effect/.changeset/schema-result-combinators.md +5 -0
  514. package/repos/effect/.changeset/schema-struct-simplify.md +5 -0
  515. package/repos/effect/.changeset/seven-mugs-marry.md +5 -0
  516. package/repos/effect/.changeset/shaggy-birds-stay.md +5 -0
  517. package/repos/effect/.changeset/shaggy-cities-push.md +5 -0
  518. package/repos/effect/.changeset/shaggy-numbers-accept.md +5 -0
  519. package/repos/effect/.changeset/sharp-emus-applaud.md +5 -0
  520. package/repos/effect/.changeset/sharp-goats-wink.md +5 -0
  521. package/repos/effect/.changeset/sharp-pandas-care.md +5 -0
  522. package/repos/effect/.changeset/sharp-peas-march.md +5 -0
  523. package/repos/effect/.changeset/sharp-rules-draw.md +5 -0
  524. package/repos/effect/.changeset/sharp-singers-sort.md +5 -0
  525. package/repos/effect/.changeset/shiny-trains-hug.md +5 -0
  526. package/repos/effect/.changeset/short-cows-relate.md +5 -0
  527. package/repos/effect/.changeset/short-foxes-admire.md +5 -0
  528. package/repos/effect/.changeset/shy-cycles-flow.md +5 -0
  529. package/repos/effect/.changeset/shy-geckos-sniff.md +30 -0
  530. package/repos/effect/.changeset/silent-geckos-matter.md +5 -0
  531. package/repos/effect/.changeset/silent-needles-design.md +6 -0
  532. package/repos/effect/.changeset/silent-plants-matter.md +8 -0
  533. package/repos/effect/.changeset/silent-spoons-stare.md +5 -0
  534. package/repos/effect/.changeset/silly-loops-tickle.md +5 -0
  535. package/repos/effect/.changeset/silver-bulk-indexeddb.md +5 -0
  536. package/repos/effect/.changeset/silver-emus-smoke.md +5 -0
  537. package/repos/effect/.changeset/silver-kings-poke.md +5 -0
  538. package/repos/effect/.changeset/silver-snails-sqlite.md +17 -0
  539. package/repos/effect/.changeset/silver-wings-watch.md +5 -0
  540. package/repos/effect/.changeset/six-cups-taste.md +5 -0
  541. package/repos/effect/.changeset/sixty-mails-shout.md +5 -0
  542. package/repos/effect/.changeset/sixty-socks-yell.md +5 -0
  543. package/repos/effect/.changeset/slimy-planets-divide.md +5 -0
  544. package/repos/effect/.changeset/slimy-turtles-juggle.md +5 -0
  545. package/repos/effect/.changeset/slow-beans-battle.md +28 -0
  546. package/repos/effect/.changeset/slow-berries-enjoy.md +5 -0
  547. package/repos/effect/.changeset/small-bugs-hunt.md +5 -0
  548. package/repos/effect/.changeset/small-crabs-care.md +9 -0
  549. package/repos/effect/.changeset/small-pets-sit.md +6 -0
  550. package/repos/effect/.changeset/smart-ducks-jump.md +6 -0
  551. package/repos/effect/.changeset/smart-pillows-buy.md +6 -0
  552. package/repos/effect/.changeset/smart-timers-fly.md +5 -0
  553. package/repos/effect/.changeset/smart-tips-sort.md +5 -0
  554. package/repos/effect/.changeset/social-pumas-prove.md +5 -0
  555. package/repos/effect/.changeset/soft-comics-wink.md +5 -0
  556. package/repos/effect/.changeset/soft-delete-sqlmodel.md +5 -0
  557. package/repos/effect/.changeset/soft-seals-allow.md +5 -0
  558. package/repos/effect/.changeset/solid-cougars-attack.md +5 -0
  559. package/repos/effect/.changeset/solid-doors-ring.md +5 -0
  560. package/repos/effect/.changeset/solid-items-tease.md +5 -0
  561. package/repos/effect/.changeset/solid-towns-smoke.md +5 -0
  562. package/repos/effect/.changeset/sour-canyons-rescue.md +5 -0
  563. package/repos/effect/.changeset/sparkly-bears-act.md +5 -0
  564. package/repos/effect/.changeset/sparkly-coins-sit.md +5 -0
  565. package/repos/effect/.changeset/spotty-comics-fry.md +5 -0
  566. package/repos/effect/.changeset/sql-migrator-mjs-mts.md +5 -0
  567. package/repos/effect/.changeset/stale-dots-tell.md +5 -0
  568. package/repos/effect/.changeset/stale-snakes-know.md +5 -0
  569. package/repos/effect/.changeset/strict-areas-end.md +5 -0
  570. package/repos/effect/.changeset/strict-buckets-hug.md +8 -0
  571. package/repos/effect/.changeset/strip-resolved-approvals.md +5 -0
  572. package/repos/effect/.changeset/strong-balloons-tickle.md +5 -0
  573. package/repos/effect/.changeset/strong-bees-queue.md +5 -0
  574. package/repos/effect/.changeset/struct-record.md +5 -0
  575. package/repos/effect/.changeset/sunny-ads-hang.md +5 -0
  576. package/repos/effect/.changeset/sunny-bikes-sleep.md +5 -0
  577. package/repos/effect/.changeset/sunny-rooms-invent.md +5 -0
  578. package/repos/effect/.changeset/sweet-donuts-bet.md +5 -0
  579. package/repos/effect/.changeset/sweet-hotels-give.md +5 -0
  580. package/repos/effect/.changeset/sweet-views-learn.md +5 -0
  581. package/repos/effect/.changeset/swift-spiders-unpack.md +5 -0
  582. package/repos/effect/.changeset/swift-symbols-stand.md +5 -0
  583. package/repos/effect/.changeset/tagged-error-class-optional-empty-props.md +5 -0
  584. package/repos/effect/.changeset/tall-hairs-return.md +5 -0
  585. package/repos/effect/.changeset/tall-mails-listen.md +5 -0
  586. package/repos/effect/.changeset/tall-queens-cheer.md +5 -0
  587. package/repos/effect/.changeset/tall-wombats-wave.md +5 -0
  588. package/repos/effect/.changeset/tangy-colts-lose.md +5 -0
  589. package/repos/effect/.changeset/tasty-comics-send.md +5 -0
  590. package/repos/effect/.changeset/ten-kings-fry.md +5 -0
  591. package/repos/effect/.changeset/thick-pandas-wait.md +5 -0
  592. package/repos/effect/.changeset/thin-ducks-wonder.md +5 -0
  593. package/repos/effect/.changeset/thirty-ducks-go.md +5 -0
  594. package/repos/effect/.changeset/thirty-pans-love.md +5 -0
  595. package/repos/effect/.changeset/three-corners-sort.md +5 -0
  596. package/repos/effect/.changeset/three-ravens-jam.md +5 -0
  597. package/repos/effect/.changeset/three-tomatoes-wave.md +5 -0
  598. package/repos/effect/.changeset/tidy-foxes-own.md +5 -0
  599. package/repos/effect/.changeset/tidy-icons-glow.md +5 -0
  600. package/repos/effect/.changeset/tidy-stacks-encode.md +5 -0
  601. package/repos/effect/.changeset/tidy-stars-drive.md +5 -0
  602. package/repos/effect/.changeset/tiny-buckets-wave.md +5 -0
  603. package/repos/effect/.changeset/tiny-lilies-flash.md +5 -0
  604. package/repos/effect/.changeset/tiny-rabbits-smile.md +5 -0
  605. package/repos/effect/.changeset/tocodecjson-return-json-type.md +10 -0
  606. package/repos/effect/.changeset/tool-get-json-schema-tests.md +5 -0
  607. package/repos/effect/.changeset/true-actors-battle.md +5 -0
  608. package/repos/effect/.changeset/twenty-buttons-cheer.md +5 -0
  609. package/repos/effect/.changeset/two-roses-double.md +5 -0
  610. package/repos/effect/.changeset/unify-error-defect-stack-options.md +23 -0
  611. package/repos/effect/.changeset/update-schema-arbitrary-report.md +22 -0
  612. package/repos/effect/.changeset/upset-colts-stick.md +5 -0
  613. package/repos/effect/.changeset/vast-bananas-send.md +5 -0
  614. package/repos/effect/.changeset/vast-deserts-travel.md +5 -0
  615. package/repos/effect/.changeset/violet-peaches-feel.md +5 -0
  616. package/repos/effect/.changeset/vitest-layer-top-level-options.md +5 -0
  617. package/repos/effect/.changeset/wacky-grapes-poke.md +5 -0
  618. package/repos/effect/.changeset/wacky-rice-add.md +5 -0
  619. package/repos/effect/.changeset/warm-dolls-brake.md +5 -0
  620. package/repos/effect/.changeset/warm-friends-tie.md +5 -0
  621. package/repos/effect/.changeset/warm-snails-shop.md +7 -0
  622. package/repos/effect/.changeset/wet-news-invent.md +5 -0
  623. package/repos/effect/.changeset/wild-readers-clean.md +5 -0
  624. package/repos/effect/.changeset/wild-suns-bearer-space.md +5 -0
  625. package/repos/effect/.changeset/wise-ants-wave.md +6 -0
  626. package/repos/effect/.changeset/wise-flags-shift.md +22 -0
  627. package/repos/effect/.changeset/wise-oranges-stay.md +5 -0
  628. package/repos/effect/.changeset/witty-lobsters-share.md +5 -0
  629. package/repos/effect/.changeset/yellow-adults-study.md +5 -0
  630. package/repos/effect/.changeset/yellow-clocks-dance.md +5 -0
  631. package/repos/effect/.changeset/yellow-dingos-jump.md +5 -0
  632. package/repos/effect/.changeset/young-doors-change.md +5 -0
  633. package/repos/effect/.envrc +1 -0
  634. package/repos/effect/.github/actions/setup/action.yaml +33 -0
  635. package/repos/effect/.github/workflows/ai-codegen.yml +66 -0
  636. package/repos/effect/.github/workflows/bundle-comment.yml +72 -0
  637. package/repos/effect/.github/workflows/check.yml +195 -0
  638. package/repos/effect/.github/workflows/release.yml +47 -0
  639. package/repos/effect/.github/workflows/snapshot.yml +34 -0
  640. package/repos/effect/.oxlintrc.json +25 -0
  641. package/repos/effect/.patterns/effect.md +102 -0
  642. package/repos/effect/.patterns/jsdoc.md +53 -0
  643. package/repos/effect/.patterns/testing.md +44 -0
  644. package/repos/effect/.specs/README.md +2 -0
  645. package/repos/effect/.vscode/extensions.json +6 -0
  646. package/repos/effect/.vscode/settings.json +44 -0
  647. package/repos/effect/AGENTS.md +139 -0
  648. package/repos/effect/LICENSE +21 -0
  649. package/repos/effect/LLMS.md +343 -0
  650. package/repos/effect/MIGRATION.md +83 -0
  651. package/repos/effect/README.md +3 -0
  652. package/repos/effect/TODOS.md +28 -0
  653. package/repos/effect/ai-docs/README.md +44 -0
  654. package/repos/effect/ai-docs/package.json +36 -0
  655. package/repos/effect/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
  656. package/repos/effect/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +39 -0
  657. package/repos/effect/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
  658. package/repos/effect/ai-docs/src/01_effect/01_basics/index.md +5 -0
  659. package/repos/effect/ai-docs/src/01_effect/02_services/01_service.ts +45 -0
  660. package/repos/effect/ai-docs/src/01_effect/02_services/10_reference.ts +10 -0
  661. package/repos/effect/ai-docs/src/01_effect/02_services/20_layer-composition.ts +70 -0
  662. package/repos/effect/ai-docs/src/01_effect/02_services/20_layer-unwrap.ts +66 -0
  663. package/repos/effect/ai-docs/src/01_effect/02_services/index.md +5 -0
  664. package/repos/effect/ai-docs/src/01_effect/03_errors/01_error-handling.ts +30 -0
  665. package/repos/effect/ai-docs/src/01_effect/03_errors/10_catch-tags.ts +24 -0
  666. package/repos/effect/ai-docs/src/01_effect/03_errors/20_reason-errors.ts +64 -0
  667. package/repos/effect/ai-docs/src/01_effect/03_errors/index.md +1 -0
  668. package/repos/effect/ai-docs/src/01_effect/04_resources/10_acquire-release.ts +105 -0
  669. package/repos/effect/ai-docs/src/01_effect/04_resources/20_layer-side-effects.ts +31 -0
  670. package/repos/effect/ai-docs/src/01_effect/04_resources/30_layer-map.ts +86 -0
  671. package/repos/effect/ai-docs/src/01_effect/04_resources/index.md +3 -0
  672. package/repos/effect/ai-docs/src/01_effect/05_running/10_run-main.ts +30 -0
  673. package/repos/effect/ai-docs/src/01_effect/05_running/20_layer-launch.ts +27 -0
  674. package/repos/effect/ai-docs/src/01_effect/05_running/index.md +1 -0
  675. package/repos/effect/ai-docs/src/01_effect/06_pubsub/10_pubsub.ts +56 -0
  676. package/repos/effect/ai-docs/src/01_effect/06_pubsub/index.md +3 -0
  677. package/repos/effect/ai-docs/src/02_stream/10_creating-streams.ts +103 -0
  678. package/repos/effect/ai-docs/src/02_stream/20_consuming-streams.ts +137 -0
  679. package/repos/effect/ai-docs/src/02_stream/30_encoding.ts +165 -0
  680. package/repos/effect/ai-docs/src/02_stream/index.md +4 -0
  681. package/repos/effect/ai-docs/src/03_integration/10_managed-runtime.ts +129 -0
  682. package/repos/effect/ai-docs/src/03_integration/index.md +5 -0
  683. package/repos/effect/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
  684. package/repos/effect/ai-docs/src/05_batching/index.md +3 -0
  685. package/repos/effect/ai-docs/src/06_schedule/10_schedules.ts +102 -0
  686. package/repos/effect/ai-docs/src/06_schedule/index.md +3 -0
  687. package/repos/effect/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
  688. package/repos/effect/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
  689. package/repos/effect/ai-docs/src/07_datetime/index.md +5 -0
  690. package/repos/effect/ai-docs/src/08_observability/10_logging.ts +66 -0
  691. package/repos/effect/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
  692. package/repos/effect/ai-docs/src/08_observability/index.md +7 -0
  693. package/repos/effect/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
  694. package/repos/effect/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
  695. package/repos/effect/ai-docs/src/09_testing/index.md +1 -0
  696. package/repos/effect/ai-docs/src/50_http-client/10_basics.ts +102 -0
  697. package/repos/effect/ai-docs/src/50_http-client/index.md +3 -0
  698. package/repos/effect/ai-docs/src/51_http-server/10_basics.ts +116 -0
  699. package/repos/effect/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
  700. package/repos/effect/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
  701. package/repos/effect/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
  702. package/repos/effect/ai-docs/src/51_http-server/fixtures/api/Users.ts +91 -0
  703. package/repos/effect/ai-docs/src/51_http-server/fixtures/domain/User.ts +12 -0
  704. package/repos/effect/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
  705. package/repos/effect/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +36 -0
  706. package/repos/effect/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +71 -0
  707. package/repos/effect/ai-docs/src/51_http-server/fixtures/server/Users.ts +62 -0
  708. package/repos/effect/ai-docs/src/51_http-server/index.md +3 -0
  709. package/repos/effect/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
  710. package/repos/effect/ai-docs/src/60_child-process/index.md +3 -0
  711. package/repos/effect/ai-docs/src/70_cli/10_basics.ts +136 -0
  712. package/repos/effect/ai-docs/src/70_cli/index.md +5 -0
  713. package/repos/effect/ai-docs/src/71_ai/10_language-model.ts +156 -0
  714. package/repos/effect/ai-docs/src/71_ai/20_tools.ts +226 -0
  715. package/repos/effect/ai-docs/src/71_ai/30_chat.ts +158 -0
  716. package/repos/effect/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
  717. package/repos/effect/ai-docs/src/71_ai/index.md +5 -0
  718. package/repos/effect/ai-docs/src/80_cluster/10_entities.ts +97 -0
  719. package/repos/effect/ai-docs/src/80_cluster/index.md +4 -0
  720. package/repos/effect/ai-docs/src/index.md +12 -0
  721. package/repos/effect/ai-docs/tsconfig.json +24 -0
  722. package/repos/effect/cookbooks/schedule.md +3507 -0
  723. package/repos/effect/deno.json +33 -0
  724. package/repos/effect/docker-compose.yaml +18 -0
  725. package/repos/effect/dprint.json +32 -0
  726. package/repos/effect/flake.lock +27 -0
  727. package/repos/effect/flake.nix +24 -0
  728. package/repos/effect/jsdocs.config.json +16 -0
  729. package/repos/effect/migration/cause.md +163 -0
  730. package/repos/effect/migration/equality.md +72 -0
  731. package/repos/effect/migration/error-handling.md +106 -0
  732. package/repos/effect/migration/fiber-keep-alive.md +74 -0
  733. package/repos/effect/migration/fiberref.md +109 -0
  734. package/repos/effect/migration/forking.md +94 -0
  735. package/repos/effect/migration/generators.md +32 -0
  736. package/repos/effect/migration/layer-memoization.md +98 -0
  737. package/repos/effect/migration/runtime.md +88 -0
  738. package/repos/effect/migration/schema.md +1032 -0
  739. package/repos/effect/migration/scope.md +50 -0
  740. package/repos/effect/migration/services.md +235 -0
  741. package/repos/effect/migration/v3-to-v4.md +421 -0
  742. package/repos/effect/migration/yieldable.md +173 -0
  743. package/repos/effect/package.json +104 -0
  744. package/repos/effect/packages/ai/anthropic/CHANGELOG.md +611 -0
  745. package/repos/effect/packages/ai/anthropic/codegen.yml +63 -0
  746. package/repos/effect/packages/ai/anthropic/docgen.json +26 -0
  747. package/repos/effect/packages/ai/anthropic/package.json +67 -0
  748. package/repos/effect/packages/ai/anthropic/src/AnthropicClient.ts +432 -0
  749. package/repos/effect/packages/ai/anthropic/src/AnthropicConfig.ts +84 -0
  750. package/repos/effect/packages/ai/anthropic/src/AnthropicError.ts +212 -0
  751. package/repos/effect/packages/ai/anthropic/src/AnthropicLanguageModel.ts +3098 -0
  752. package/repos/effect/packages/ai/anthropic/src/AnthropicTelemetry.ts +132 -0
  753. package/repos/effect/packages/ai/anthropic/src/AnthropicTool.ts +2512 -0
  754. package/repos/effect/packages/ai/anthropic/src/Generated.ts +12600 -0
  755. package/repos/effect/packages/ai/anthropic/src/index.ts +40 -0
  756. package/repos/effect/packages/ai/anthropic/src/internal/errors.ts +370 -0
  757. package/repos/effect/packages/ai/anthropic/src/internal/utilities.ts +26 -0
  758. package/repos/effect/packages/ai/anthropic/test/AnthropicLanguageModel.test.ts +300 -0
  759. package/repos/effect/packages/ai/anthropic/tsconfig.json +8 -0
  760. package/repos/effect/packages/ai/anthropic/vitest.config.ts +6 -0
  761. package/repos/effect/packages/ai/openai/CHANGELOG.md +668 -0
  762. package/repos/effect/packages/ai/openai/codegen.yaml +41 -0
  763. package/repos/effect/packages/ai/openai/docgen.json +24 -0
  764. package/repos/effect/packages/ai/openai/package.json +67 -0
  765. package/repos/effect/packages/ai/openai/src/Generated.ts +35774 -0
  766. package/repos/effect/packages/ai/openai/src/OpenAiClient.ts +730 -0
  767. package/repos/effect/packages/ai/openai/src/OpenAiClientGenerated.ts +202 -0
  768. package/repos/effect/packages/ai/openai/src/OpenAiConfig.ts +93 -0
  769. package/repos/effect/packages/ai/openai/src/OpenAiEmbeddingModel.ts +258 -0
  770. package/repos/effect/packages/ai/openai/src/OpenAiError.ts +242 -0
  771. package/repos/effect/packages/ai/openai/src/OpenAiLanguageModel.ts +3133 -0
  772. package/repos/effect/packages/ai/openai/src/OpenAiSchema.ts +1286 -0
  773. package/repos/effect/packages/ai/openai/src/OpenAiTelemetry.ts +162 -0
  774. package/repos/effect/packages/ai/openai/src/OpenAiTool.ts +342 -0
  775. package/repos/effect/packages/ai/openai/src/index.ts +55 -0
  776. package/repos/effect/packages/ai/openai/src/internal/errors.ts +349 -0
  777. package/repos/effect/packages/ai/openai/src/internal/utilities.ts +33 -0
  778. package/repos/effect/packages/ai/openai/test/OpenAiClient.test.ts +798 -0
  779. package/repos/effect/packages/ai/openai/test/OpenAiEmbeddingModel.test.ts +289 -0
  780. package/repos/effect/packages/ai/openai/test/OpenAiLanguageModel.test.ts +1528 -0
  781. package/repos/effect/packages/ai/openai/test/OpenAiSchema.test.ts +273 -0
  782. package/repos/effect/packages/ai/openai/tsconfig.json +8 -0
  783. package/repos/effect/packages/ai/openai/vitest.config.ts +6 -0
  784. package/repos/effect/packages/ai/openai-compat/CHANGELOG.md +626 -0
  785. package/repos/effect/packages/ai/openai-compat/docgen.json +24 -0
  786. package/repos/effect/packages/ai/openai-compat/package.json +69 -0
  787. package/repos/effect/packages/ai/openai-compat/src/OpenAiClient.ts +1221 -0
  788. package/repos/effect/packages/ai/openai-compat/src/OpenAiConfig.ts +87 -0
  789. package/repos/effect/packages/ai/openai-compat/src/OpenAiEmbeddingModel.ts +254 -0
  790. package/repos/effect/packages/ai/openai-compat/src/OpenAiError.ts +178 -0
  791. package/repos/effect/packages/ai/openai-compat/src/OpenAiLanguageModel.ts +1951 -0
  792. package/repos/effect/packages/ai/openai-compat/src/OpenAiTelemetry.ts +164 -0
  793. package/repos/effect/packages/ai/openai-compat/src/index.ts +35 -0
  794. package/repos/effect/packages/ai/openai-compat/src/internal/errors.ts +327 -0
  795. package/repos/effect/packages/ai/openai-compat/src/internal/utilities.ts +33 -0
  796. package/repos/effect/packages/ai/openai-compat/test/OpenAiClient.test.ts +474 -0
  797. package/repos/effect/packages/ai/openai-compat/test/OpenAiEmbeddingModel.test.ts +216 -0
  798. package/repos/effect/packages/ai/openai-compat/test/OpenAiLanguageModel.test.ts +1505 -0
  799. package/repos/effect/packages/ai/openai-compat/tsconfig.json +8 -0
  800. package/repos/effect/packages/ai/openai-compat/vitest.config.ts +6 -0
  801. package/repos/effect/packages/ai/openrouter/CHANGELOG.md +607 -0
  802. package/repos/effect/packages/ai/openrouter/codegen.yml +35 -0
  803. package/repos/effect/packages/ai/openrouter/docgen.json +24 -0
  804. package/repos/effect/packages/ai/openrouter/package.json +67 -0
  805. package/repos/effect/packages/ai/openrouter/src/Generated.ts +10028 -0
  806. package/repos/effect/packages/ai/openrouter/src/OpenRouterClient.ts +357 -0
  807. package/repos/effect/packages/ai/openrouter/src/OpenRouterConfig.ts +99 -0
  808. package/repos/effect/packages/ai/openrouter/src/OpenRouterError.ts +225 -0
  809. package/repos/effect/packages/ai/openrouter/src/OpenRouterLanguageModel.ts +1796 -0
  810. package/repos/effect/packages/ai/openrouter/src/index.ts +30 -0
  811. package/repos/effect/packages/ai/openrouter/src/internal/errors.ts +375 -0
  812. package/repos/effect/packages/ai/openrouter/src/internal/utilities.ts +92 -0
  813. package/repos/effect/packages/ai/openrouter/tsconfig.json +10 -0
  814. package/repos/effect/packages/ai/openrouter/vitest.config.ts +6 -0
  815. package/repos/effect/packages/atom/react/CHANGELOG.md +599 -0
  816. package/repos/effect/packages/atom/react/LICENSE +21 -0
  817. package/repos/effect/packages/atom/react/README.md +7 -0
  818. package/repos/effect/packages/atom/react/docgen.json +25 -0
  819. package/repos/effect/packages/atom/react/package.json +79 -0
  820. package/repos/effect/packages/atom/react/src/Hooks.ts +476 -0
  821. package/repos/effect/packages/atom/react/src/ReactHydration.ts +109 -0
  822. package/repos/effect/packages/atom/react/src/RegistryContext.ts +108 -0
  823. package/repos/effect/packages/atom/react/src/ScopedAtom.ts +151 -0
  824. package/repos/effect/packages/atom/react/src/index.ts +23 -0
  825. package/repos/effect/packages/atom/react/test/index.test.tsx +650 -0
  826. package/repos/effect/packages/atom/react/tsconfig.json +8 -0
  827. package/repos/effect/packages/atom/react/vitest.config.ts +9 -0
  828. package/repos/effect/packages/atom/react/vitest.setup.ts +8 -0
  829. package/repos/effect/packages/atom/solid/CHANGELOG.md +595 -0
  830. package/repos/effect/packages/atom/solid/LICENSE +21 -0
  831. package/repos/effect/packages/atom/solid/README.md +7 -0
  832. package/repos/effect/packages/atom/solid/docgen.json +26 -0
  833. package/repos/effect/packages/atom/solid/package.json +72 -0
  834. package/repos/effect/packages/atom/solid/src/Hooks.ts +359 -0
  835. package/repos/effect/packages/atom/solid/src/RegistryContext.ts +80 -0
  836. package/repos/effect/packages/atom/solid/src/index.ts +13 -0
  837. package/repos/effect/packages/atom/solid/test/index.test.tsx +296 -0
  838. package/repos/effect/packages/atom/solid/tsconfig.json +8 -0
  839. package/repos/effect/packages/atom/solid/vitest.config.ts +15 -0
  840. package/repos/effect/packages/atom/solid/vitest.setup.ts +8 -0
  841. package/repos/effect/packages/atom/vue/CHANGELOG.md +593 -0
  842. package/repos/effect/packages/atom/vue/LICENSE +21 -0
  843. package/repos/effect/packages/atom/vue/README.md +7 -0
  844. package/repos/effect/packages/atom/vue/docgen.json +24 -0
  845. package/repos/effect/packages/atom/vue/package.json +68 -0
  846. package/repos/effect/packages/atom/vue/src/index.ts +211 -0
  847. package/repos/effect/packages/atom/vue/test/index.test.ts +5 -0
  848. package/repos/effect/packages/atom/vue/tsconfig.json +14 -0
  849. package/repos/effect/packages/atom/vue/vitest.config.ts +8 -0
  850. package/repos/effect/packages/effect/CHANGELOG.md +1607 -0
  851. package/repos/effect/packages/effect/CONFIG.md +690 -0
  852. package/repos/effect/packages/effect/HTTPAPI.md +3213 -0
  853. package/repos/effect/packages/effect/LICENSE +21 -0
  854. package/repos/effect/packages/effect/MCP.md +369 -0
  855. package/repos/effect/packages/effect/OPTIC.md +620 -0
  856. package/repos/effect/packages/effect/README.md +53 -0
  857. package/repos/effect/packages/effect/SCHEMA.md +7284 -0
  858. package/repos/effect/packages/effect/benchmark/schema/Enums.ts +40 -0
  859. package/repos/effect/packages/effect/benchmark/schema/Optic.ts +79 -0
  860. package/repos/effect/packages/effect/benchmark/schema/array.ts +74 -0
  861. package/repos/effect/packages/effect/benchmark/schema/filter.ts +74 -0
  862. package/repos/effect/packages/effect/benchmark/schema/object.ts +82 -0
  863. package/repos/effect/packages/effect/benchmark/schema/tagged-union.ts +69 -0
  864. package/repos/effect/packages/effect/benchmark/schema/transformation.ts +91 -0
  865. package/repos/effect/packages/effect/benchmark/stream/splitLines.ts +46 -0
  866. package/repos/effect/packages/effect/docgen.json +38 -0
  867. package/repos/effect/packages/effect/package.json +127 -0
  868. package/repos/effect/packages/effect/src/Array.ts +4908 -0
  869. package/repos/effect/packages/effect/src/BigDecimal.ts +1943 -0
  870. package/repos/effect/packages/effect/src/BigInt.ts +1029 -0
  871. package/repos/effect/packages/effect/src/Boolean.ts +481 -0
  872. package/repos/effect/packages/effect/src/Brand.ts +318 -0
  873. package/repos/effect/packages/effect/src/Cache.ts +1295 -0
  874. package/repos/effect/packages/effect/src/Cause.ts +1939 -0
  875. package/repos/effect/packages/effect/src/Channel.ts +8615 -0
  876. package/repos/effect/packages/effect/src/ChannelSchema.ts +308 -0
  877. package/repos/effect/packages/effect/src/Chunk.ts +2976 -0
  878. package/repos/effect/packages/effect/src/Clock.ts +194 -0
  879. package/repos/effect/packages/effect/src/Combiner.ts +316 -0
  880. package/repos/effect/packages/effect/src/Config.ts +1416 -0
  881. package/repos/effect/packages/effect/src/ConfigProvider.ts +1159 -0
  882. package/repos/effect/packages/effect/src/Console.ts +653 -0
  883. package/repos/effect/packages/effect/src/Context.ts +1339 -0
  884. package/repos/effect/packages/effect/src/Cron.ts +1212 -0
  885. package/repos/effect/packages/effect/src/Crypto.ts +318 -0
  886. package/repos/effect/packages/effect/src/Data.ts +774 -0
  887. package/repos/effect/packages/effect/src/DateTime.ts +2922 -0
  888. package/repos/effect/packages/effect/src/Deferred.ts +917 -0
  889. package/repos/effect/packages/effect/src/Differ.ts +32 -0
  890. package/repos/effect/packages/effect/src/Duration.ts +1827 -0
  891. package/repos/effect/packages/effect/src/Effect.ts +15347 -0
  892. package/repos/effect/packages/effect/src/Effectable.ts +68 -0
  893. package/repos/effect/packages/effect/src/Encoding.ts +1046 -0
  894. package/repos/effect/packages/effect/src/Equal.ts +550 -0
  895. package/repos/effect/packages/effect/src/Equivalence.ts +870 -0
  896. package/repos/effect/packages/effect/src/ErrorReporter.ts +543 -0
  897. package/repos/effect/packages/effect/src/ExecutionPlan.ts +416 -0
  898. package/repos/effect/packages/effect/src/Exit.ts +1085 -0
  899. package/repos/effect/packages/effect/src/Fiber.ts +632 -0
  900. package/repos/effect/packages/effect/src/FiberHandle.ts +815 -0
  901. package/repos/effect/packages/effect/src/FiberMap.ts +1030 -0
  902. package/repos/effect/packages/effect/src/FiberSet.ts +713 -0
  903. package/repos/effect/packages/effect/src/FileSystem.ts +1394 -0
  904. package/repos/effect/packages/effect/src/Filter.ts +827 -0
  905. package/repos/effect/packages/effect/src/Formatter.ts +319 -0
  906. package/repos/effect/packages/effect/src/Function.ts +1415 -0
  907. package/repos/effect/packages/effect/src/Graph.ts +4892 -0
  908. package/repos/effect/packages/effect/src/HKT.ts +213 -0
  909. package/repos/effect/packages/effect/src/Hash.ts +539 -0
  910. package/repos/effect/packages/effect/src/HashMap.ts +1236 -0
  911. package/repos/effect/packages/effect/src/HashRing.ts +426 -0
  912. package/repos/effect/packages/effect/src/HashSet.ts +605 -0
  913. package/repos/effect/packages/effect/src/Inspectable.ts +329 -0
  914. package/repos/effect/packages/effect/src/Iterable.ts +2483 -0
  915. package/repos/effect/packages/effect/src/JsonPatch.ts +469 -0
  916. package/repos/effect/packages/effect/src/JsonPointer.ts +80 -0
  917. package/repos/effect/packages/effect/src/JsonSchema.ts +948 -0
  918. package/repos/effect/packages/effect/src/Latch.ts +373 -0
  919. package/repos/effect/packages/effect/src/Layer.ts +2773 -0
  920. package/repos/effect/packages/effect/src/LayerMap.ts +468 -0
  921. package/repos/effect/packages/effect/src/LogLevel.ts +412 -0
  922. package/repos/effect/packages/effect/src/Logger.ts +1284 -0
  923. package/repos/effect/packages/effect/src/ManagedRuntime.ts +381 -0
  924. package/repos/effect/packages/effect/src/Match.ts +2606 -0
  925. package/repos/effect/packages/effect/src/Metric.ts +4058 -0
  926. package/repos/effect/packages/effect/src/MutableHashMap.ts +845 -0
  927. package/repos/effect/packages/effect/src/MutableHashSet.ts +422 -0
  928. package/repos/effect/packages/effect/src/MutableList.ts +967 -0
  929. package/repos/effect/packages/effect/src/MutableRef.ts +822 -0
  930. package/repos/effect/packages/effect/src/Newtype.ts +319 -0
  931. package/repos/effect/packages/effect/src/NonEmptyIterable.ts +221 -0
  932. package/repos/effect/packages/effect/src/Number.ts +860 -0
  933. package/repos/effect/packages/effect/src/Optic.ts +1701 -0
  934. package/repos/effect/packages/effect/src/Option.ts +2664 -0
  935. package/repos/effect/packages/effect/src/Order.ts +982 -0
  936. package/repos/effect/packages/effect/src/Ordering.ts +182 -0
  937. package/repos/effect/packages/effect/src/PartitionedSemaphore.ts +561 -0
  938. package/repos/effect/packages/effect/src/Path.ts +870 -0
  939. package/repos/effect/packages/effect/src/Pipeable.ts +674 -0
  940. package/repos/effect/packages/effect/src/PlatformError.ts +221 -0
  941. package/repos/effect/packages/effect/src/Pool.ts +699 -0
  942. package/repos/effect/packages/effect/src/Predicate.ts +1872 -0
  943. package/repos/effect/packages/effect/src/PrimaryKey.ts +123 -0
  944. package/repos/effect/packages/effect/src/PubSub.ts +2797 -0
  945. package/repos/effect/packages/effect/src/Pull.ts +376 -0
  946. package/repos/effect/packages/effect/src/Queue.ts +1962 -0
  947. package/repos/effect/packages/effect/src/Random.ts +549 -0
  948. package/repos/effect/packages/effect/src/RcMap.ts +612 -0
  949. package/repos/effect/packages/effect/src/RcRef.ts +225 -0
  950. package/repos/effect/packages/effect/src/Record.ts +1563 -0
  951. package/repos/effect/packages/effect/src/Redactable.ts +168 -0
  952. package/repos/effect/packages/effect/src/Redacted.ts +314 -0
  953. package/repos/effect/packages/effect/src/Reducer.ts +178 -0
  954. package/repos/effect/packages/effect/src/Ref.ts +801 -0
  955. package/repos/effect/packages/effect/src/References.ts +786 -0
  956. package/repos/effect/packages/effect/src/RegExp.ts +82 -0
  957. package/repos/effect/packages/effect/src/Request.ts +598 -0
  958. package/repos/effect/packages/effect/src/RequestResolver.ts +1249 -0
  959. package/repos/effect/packages/effect/src/Resource.ts +184 -0
  960. package/repos/effect/packages/effect/src/Result.ts +1939 -0
  961. package/repos/effect/packages/effect/src/Runtime.ts +432 -0
  962. package/repos/effect/packages/effect/src/Schedule.ts +3564 -0
  963. package/repos/effect/packages/effect/src/Scheduler.ts +285 -0
  964. package/repos/effect/packages/effect/src/Schema.ts +14653 -0
  965. package/repos/effect/packages/effect/src/SchemaAST.ts +3903 -0
  966. package/repos/effect/packages/effect/src/SchemaGetter.ts +1870 -0
  967. package/repos/effect/packages/effect/src/SchemaIssue.ts +1176 -0
  968. package/repos/effect/packages/effect/src/SchemaParser.ts +1105 -0
  969. package/repos/effect/packages/effect/src/SchemaRepresentation.ts +3944 -0
  970. package/repos/effect/packages/effect/src/SchemaTransformation.ts +1818 -0
  971. package/repos/effect/packages/effect/src/SchemaUtils.ts +51 -0
  972. package/repos/effect/packages/effect/src/Scope.ts +572 -0
  973. package/repos/effect/packages/effect/src/ScopedCache.ts +820 -0
  974. package/repos/effect/packages/effect/src/ScopedRef.ts +192 -0
  975. package/repos/effect/packages/effect/src/Semaphore.ts +517 -0
  976. package/repos/effect/packages/effect/src/Sink.ts +2174 -0
  977. package/repos/effect/packages/effect/src/Stdio.ts +143 -0
  978. package/repos/effect/packages/effect/src/Stream.ts +11722 -0
  979. package/repos/effect/packages/effect/src/String.ts +1427 -0
  980. package/repos/effect/packages/effect/src/Struct.ts +979 -0
  981. package/repos/effect/packages/effect/src/SubscriptionRef.ts +1021 -0
  982. package/repos/effect/packages/effect/src/Symbol.ts +31 -0
  983. package/repos/effect/packages/effect/src/SynchronizedRef.ts +668 -0
  984. package/repos/effect/packages/effect/src/Take.ts +46 -0
  985. package/repos/effect/packages/effect/src/Terminal.ts +188 -0
  986. package/repos/effect/packages/effect/src/Tracer.ts +683 -0
  987. package/repos/effect/packages/effect/src/Trie.ts +953 -0
  988. package/repos/effect/packages/effect/src/Tuple.ts +737 -0
  989. package/repos/effect/packages/effect/src/TxChunk.ts +822 -0
  990. package/repos/effect/packages/effect/src/TxDeferred.ts +319 -0
  991. package/repos/effect/packages/effect/src/TxHashMap.ts +2165 -0
  992. package/repos/effect/packages/effect/src/TxHashSet.ts +908 -0
  993. package/repos/effect/packages/effect/src/TxPriorityQueue.ts +567 -0
  994. package/repos/effect/packages/effect/src/TxPubSub.ts +684 -0
  995. package/repos/effect/packages/effect/src/TxQueue.ts +1488 -0
  996. package/repos/effect/packages/effect/src/TxReentrantLock.ts +655 -0
  997. package/repos/effect/packages/effect/src/TxRef.ts +282 -0
  998. package/repos/effect/packages/effect/src/TxSemaphore.ts +707 -0
  999. package/repos/effect/packages/effect/src/TxSubscriptionRef.ts +518 -0
  1000. package/repos/effect/packages/effect/src/Types.ts +1121 -0
  1001. package/repos/effect/packages/effect/src/UndefinedOr.ts +239 -0
  1002. package/repos/effect/packages/effect/src/Unify.ts +314 -0
  1003. package/repos/effect/packages/effect/src/Utils.ts +221 -0
  1004. package/repos/effect/packages/effect/src/index.ts +712 -0
  1005. package/repos/effect/packages/effect/src/internal/array.ts +8 -0
  1006. package/repos/effect/packages/effect/src/internal/concurrency.ts +52 -0
  1007. package/repos/effect/packages/effect/src/internal/core.ts +666 -0
  1008. package/repos/effect/packages/effect/src/internal/dateTime.ts +1264 -0
  1009. package/repos/effect/packages/effect/src/internal/doNotation.ts +117 -0
  1010. package/repos/effect/packages/effect/src/internal/effect.ts +6427 -0
  1011. package/repos/effect/packages/effect/src/internal/equal.ts +28 -0
  1012. package/repos/effect/packages/effect/src/internal/errors.ts +9 -0
  1013. package/repos/effect/packages/effect/src/internal/executionPlan.ts +120 -0
  1014. package/repos/effect/packages/effect/src/internal/hashMap.ts +1309 -0
  1015. package/repos/effect/packages/effect/src/internal/hashSet.ts +190 -0
  1016. package/repos/effect/packages/effect/src/internal/layer.ts +88 -0
  1017. package/repos/effect/packages/effect/src/internal/matcher.ts +637 -0
  1018. package/repos/effect/packages/effect/src/internal/metric.ts +2 -0
  1019. package/repos/effect/packages/effect/src/internal/option.ts +98 -0
  1020. package/repos/effect/packages/effect/src/internal/random.ts +20 -0
  1021. package/repos/effect/packages/effect/src/internal/rcRef.ts +189 -0
  1022. package/repos/effect/packages/effect/src/internal/record.ts +18 -0
  1023. package/repos/effect/packages/effect/src/internal/redacted.ts +19 -0
  1024. package/repos/effect/packages/effect/src/internal/references.ts +72 -0
  1025. package/repos/effect/packages/effect/src/internal/request.ts +205 -0
  1026. package/repos/effect/packages/effect/src/internal/result.ts +112 -0
  1027. package/repos/effect/packages/effect/src/internal/schedule.ts +248 -0
  1028. package/repos/effect/packages/effect/src/internal/schema/annotations.ts +37 -0
  1029. package/repos/effect/packages/effect/src/internal/schema/arbitrary.ts +894 -0
  1030. package/repos/effect/packages/effect/src/internal/schema/cause.ts +26 -0
  1031. package/repos/effect/packages/effect/src/internal/schema/equivalence.ts +154 -0
  1032. package/repos/effect/packages/effect/src/internal/schema/representation.ts +799 -0
  1033. package/repos/effect/packages/effect/src/internal/schema/schema.ts +128 -0
  1034. package/repos/effect/packages/effect/src/internal/stream.ts +28 -0
  1035. package/repos/effect/packages/effect/src/internal/tracer.ts +41 -0
  1036. package/repos/effect/packages/effect/src/internal/trie.ts +733 -0
  1037. package/repos/effect/packages/effect/src/internal/version.ts +2 -0
  1038. package/repos/effect/packages/effect/src/testing/FastCheck.ts +89 -0
  1039. package/repos/effect/packages/effect/src/testing/TestClock.ts +547 -0
  1040. package/repos/effect/packages/effect/src/testing/TestConsole.ts +369 -0
  1041. package/repos/effect/packages/effect/src/testing/TestSchema.ts +567 -0
  1042. package/repos/effect/packages/effect/src/testing/index.ts +25 -0
  1043. package/repos/effect/packages/effect/src/unstable/ai/AiError.ts +1629 -0
  1044. package/repos/effect/packages/effect/src/unstable/ai/AnthropicStructuredOutput.ts +407 -0
  1045. package/repos/effect/packages/effect/src/unstable/ai/Chat.ts +931 -0
  1046. package/repos/effect/packages/effect/src/unstable/ai/EmbeddingModel.ts +269 -0
  1047. package/repos/effect/packages/effect/src/unstable/ai/IdGenerator.ts +300 -0
  1048. package/repos/effect/packages/effect/src/unstable/ai/LanguageModel.ts +2221 -0
  1049. package/repos/effect/packages/effect/src/unstable/ai/McpSchema.ts +2527 -0
  1050. package/repos/effect/packages/effect/src/unstable/ai/McpServer.ts +1468 -0
  1051. package/repos/effect/packages/effect/src/unstable/ai/Model.ts +166 -0
  1052. package/repos/effect/packages/effect/src/unstable/ai/OpenAiStructuredOutput.ts +476 -0
  1053. package/repos/effect/packages/effect/src/unstable/ai/Prompt.ts +2234 -0
  1054. package/repos/effect/packages/effect/src/unstable/ai/Response.ts +2582 -0
  1055. package/repos/effect/packages/effect/src/unstable/ai/ResponseIdTracker.ts +139 -0
  1056. package/repos/effect/packages/effect/src/unstable/ai/Telemetry.ts +515 -0
  1057. package/repos/effect/packages/effect/src/unstable/ai/Tokenizer.ts +176 -0
  1058. package/repos/effect/packages/effect/src/unstable/ai/Tool.ts +2003 -0
  1059. package/repos/effect/packages/effect/src/unstable/ai/Toolkit.ts +554 -0
  1060. package/repos/effect/packages/effect/src/unstable/ai/index.ts +90 -0
  1061. package/repos/effect/packages/effect/src/unstable/ai/internal/codec-transformer.ts +13 -0
  1062. package/repos/effect/packages/effect/src/unstable/cli/Argument.ts +749 -0
  1063. package/repos/effect/packages/effect/src/unstable/cli/CliError.ts +549 -0
  1064. package/repos/effect/packages/effect/src/unstable/cli/CliOutput.ts +607 -0
  1065. package/repos/effect/packages/effect/src/unstable/cli/Command.ts +1610 -0
  1066. package/repos/effect/packages/effect/src/unstable/cli/Completions.ts +123 -0
  1067. package/repos/effect/packages/effect/src/unstable/cli/Flag.ts +986 -0
  1068. package/repos/effect/packages/effect/src/unstable/cli/GlobalFlag.ts +295 -0
  1069. package/repos/effect/packages/effect/src/unstable/cli/HelpDoc.ts +323 -0
  1070. package/repos/effect/packages/effect/src/unstable/cli/Param.ts +2193 -0
  1071. package/repos/effect/packages/effect/src/unstable/cli/Primitive.ts +766 -0
  1072. package/repos/effect/packages/effect/src/unstable/cli/Prompt.ts +3852 -0
  1073. package/repos/effect/packages/effect/src/unstable/cli/SEMANTICS.md +157 -0
  1074. package/repos/effect/packages/effect/src/unstable/cli/index.ts +60 -0
  1075. package/repos/effect/packages/effect/src/unstable/cli/internal/ansi.ts +152 -0
  1076. package/repos/effect/packages/effect/src/unstable/cli/internal/auto-suggest.ts +41 -0
  1077. package/repos/effect/packages/effect/src/unstable/cli/internal/command.ts +340 -0
  1078. package/repos/effect/packages/effect/src/unstable/cli/internal/completions/bash.ts +222 -0
  1079. package/repos/effect/packages/effect/src/unstable/cli/internal/completions/descriptor.ts +133 -0
  1080. package/repos/effect/packages/effect/src/unstable/cli/internal/completions/fish.ts +253 -0
  1081. package/repos/effect/packages/effect/src/unstable/cli/internal/completions/zsh.ts +220 -0
  1082. package/repos/effect/packages/effect/src/unstable/cli/internal/config.ts +272 -0
  1083. package/repos/effect/packages/effect/src/unstable/cli/internal/help.ts +181 -0
  1084. package/repos/effect/packages/effect/src/unstable/cli/internal/lexer.ts +70 -0
  1085. package/repos/effect/packages/effect/src/unstable/cli/internal/parser.ts +932 -0
  1086. package/repos/effect/packages/effect/src/unstable/cluster/ClusterCron.ts +163 -0
  1087. package/repos/effect/packages/effect/src/unstable/cluster/ClusterError.ts +238 -0
  1088. package/repos/effect/packages/effect/src/unstable/cluster/ClusterMetrics.ts +112 -0
  1089. package/repos/effect/packages/effect/src/unstable/cluster/ClusterSchema.ts +170 -0
  1090. package/repos/effect/packages/effect/src/unstable/cluster/ClusterWorkflowEngine.ts +778 -0
  1091. package/repos/effect/packages/effect/src/unstable/cluster/DeliverAt.ts +58 -0
  1092. package/repos/effect/packages/effect/src/unstable/cluster/Entity.ts +779 -0
  1093. package/repos/effect/packages/effect/src/unstable/cluster/EntityAddress.ts +93 -0
  1094. package/repos/effect/packages/effect/src/unstable/cluster/EntityId.ts +50 -0
  1095. package/repos/effect/packages/effect/src/unstable/cluster/EntityProxy.ts +263 -0
  1096. package/repos/effect/packages/effect/src/unstable/cluster/EntityProxyServer.ts +149 -0
  1097. package/repos/effect/packages/effect/src/unstable/cluster/EntityResource.ts +184 -0
  1098. package/repos/effect/packages/effect/src/unstable/cluster/EntityType.ts +52 -0
  1099. package/repos/effect/packages/effect/src/unstable/cluster/Envelope.ts +433 -0
  1100. package/repos/effect/packages/effect/src/unstable/cluster/HttpRunner.ts +345 -0
  1101. package/repos/effect/packages/effect/src/unstable/cluster/K8sHttpClient.ts +297 -0
  1102. package/repos/effect/packages/effect/src/unstable/cluster/MachineId.ts +54 -0
  1103. package/repos/effect/packages/effect/src/unstable/cluster/Message.ts +314 -0
  1104. package/repos/effect/packages/effect/src/unstable/cluster/MessageStorage.ts +1072 -0
  1105. package/repos/effect/packages/effect/src/unstable/cluster/Reply.ts +455 -0
  1106. package/repos/effect/packages/effect/src/unstable/cluster/Runner.ts +129 -0
  1107. package/repos/effect/packages/effect/src/unstable/cluster/RunnerAddress.ts +112 -0
  1108. package/repos/effect/packages/effect/src/unstable/cluster/RunnerHealth.ts +145 -0
  1109. package/repos/effect/packages/effect/src/unstable/cluster/RunnerServer.ts +220 -0
  1110. package/repos/effect/packages/effect/src/unstable/cluster/RunnerStorage.ts +243 -0
  1111. package/repos/effect/packages/effect/src/unstable/cluster/Runners.ts +690 -0
  1112. package/repos/effect/packages/effect/src/unstable/cluster/ShardId.ts +178 -0
  1113. package/repos/effect/packages/effect/src/unstable/cluster/Sharding.ts +1488 -0
  1114. package/repos/effect/packages/effect/src/unstable/cluster/ShardingConfig.ts +367 -0
  1115. package/repos/effect/packages/effect/src/unstable/cluster/ShardingRegistrationEvent.ts +76 -0
  1116. package/repos/effect/packages/effect/src/unstable/cluster/SingleRunner.ts +75 -0
  1117. package/repos/effect/packages/effect/src/unstable/cluster/Singleton.ts +56 -0
  1118. package/repos/effect/packages/effect/src/unstable/cluster/SingletonAddress.ts +49 -0
  1119. package/repos/effect/packages/effect/src/unstable/cluster/Snowflake.ts +282 -0
  1120. package/repos/effect/packages/effect/src/unstable/cluster/SocketRunner.ts +96 -0
  1121. package/repos/effect/packages/effect/src/unstable/cluster/SqlMessageStorage.ts +1045 -0
  1122. package/repos/effect/packages/effect/src/unstable/cluster/SqlRunnerStorage.ts +700 -0
  1123. package/repos/effect/packages/effect/src/unstable/cluster/TestRunner.ts +36 -0
  1124. package/repos/effect/packages/effect/src/unstable/cluster/index.ts +195 -0
  1125. package/repos/effect/packages/effect/src/unstable/cluster/internal/entityManager.ts +678 -0
  1126. package/repos/effect/packages/effect/src/unstable/cluster/internal/entityReaper.ts +58 -0
  1127. package/repos/effect/packages/effect/src/unstable/cluster/internal/hash.ts +23 -0
  1128. package/repos/effect/packages/effect/src/unstable/cluster/internal/interruptors.ts +2 -0
  1129. package/repos/effect/packages/effect/src/unstable/cluster/internal/resourceMap.ts +100 -0
  1130. package/repos/effect/packages/effect/src/unstable/cluster/internal/resourceRef.ts +99 -0
  1131. package/repos/effect/packages/effect/src/unstable/devtools/DevTools.ts +68 -0
  1132. package/repos/effect/packages/effect/src/unstable/devtools/DevToolsClient.ts +236 -0
  1133. package/repos/effect/packages/effect/src/unstable/devtools/DevToolsSchema.ts +558 -0
  1134. package/repos/effect/packages/effect/src/unstable/devtools/DevToolsServer.ts +94 -0
  1135. package/repos/effect/packages/effect/src/unstable/devtools/index.ts +25 -0
  1136. package/repos/effect/packages/effect/src/unstable/encoding/Msgpack.ts +383 -0
  1137. package/repos/effect/packages/effect/src/unstable/encoding/Ndjson.ts +602 -0
  1138. package/repos/effect/packages/effect/src/unstable/encoding/Sse.ts +593 -0
  1139. package/repos/effect/packages/effect/src/unstable/encoding/index.ts +20 -0
  1140. package/repos/effect/packages/effect/src/unstable/eventlog/Event.ts +447 -0
  1141. package/repos/effect/packages/effect/src/unstable/eventlog/EventGroup.ts +193 -0
  1142. package/repos/effect/packages/effect/src/unstable/eventlog/EventJournal.ts +795 -0
  1143. package/repos/effect/packages/effect/src/unstable/eventlog/EventLog.ts +1030 -0
  1144. package/repos/effect/packages/effect/src/unstable/eventlog/EventLogEncryption.ts +169 -0
  1145. package/repos/effect/packages/effect/src/unstable/eventlog/EventLogMessage.ts +354 -0
  1146. package/repos/effect/packages/effect/src/unstable/eventlog/EventLogRemote.ts +377 -0
  1147. package/repos/effect/packages/effect/src/unstable/eventlog/EventLogServer.ts +242 -0
  1148. package/repos/effect/packages/effect/src/unstable/eventlog/EventLogServerEncrypted.ts +268 -0
  1149. package/repos/effect/packages/effect/src/unstable/eventlog/EventLogServerUnencrypted.ts +898 -0
  1150. package/repos/effect/packages/effect/src/unstable/eventlog/EventLogSessionAuth.ts +524 -0
  1151. package/repos/effect/packages/effect/src/unstable/eventlog/SqlEventJournal.ts +353 -0
  1152. package/repos/effect/packages/effect/src/unstable/eventlog/SqlEventLogServerEncrypted.ts +343 -0
  1153. package/repos/effect/packages/effect/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +527 -0
  1154. package/repos/effect/packages/effect/src/unstable/eventlog/index.ts +75 -0
  1155. package/repos/effect/packages/effect/src/unstable/eventlog/internal/identityRootSecretDerivation.ts +153 -0
  1156. package/repos/effect/packages/effect/src/unstable/http/Cookies.ts +952 -0
  1157. package/repos/effect/packages/effect/src/unstable/http/Etag.ts +141 -0
  1158. package/repos/effect/packages/effect/src/unstable/http/FetchHttpClient.ts +123 -0
  1159. package/repos/effect/packages/effect/src/unstable/http/FindMyWay.ts +15 -0
  1160. package/repos/effect/packages/effect/src/unstable/http/Headers.ts +438 -0
  1161. package/repos/effect/packages/effect/src/unstable/http/HttpBody.ts +545 -0
  1162. package/repos/effect/packages/effect/src/unstable/http/HttpClient.ts +1630 -0
  1163. package/repos/effect/packages/effect/src/unstable/http/HttpClientError.ts +328 -0
  1164. package/repos/effect/packages/effect/src/unstable/http/HttpClientRequest.ts +968 -0
  1165. package/repos/effect/packages/effect/src/unstable/http/HttpClientResponse.ts +408 -0
  1166. package/repos/effect/packages/effect/src/unstable/http/HttpEffect.ts +400 -0
  1167. package/repos/effect/packages/effect/src/unstable/http/HttpIncomingMessage.ts +153 -0
  1168. package/repos/effect/packages/effect/src/unstable/http/HttpMethod.ts +124 -0
  1169. package/repos/effect/packages/effect/src/unstable/http/HttpMiddleware.ts +394 -0
  1170. package/repos/effect/packages/effect/src/unstable/http/HttpPlatform.ts +165 -0
  1171. package/repos/effect/packages/effect/src/unstable/http/HttpRouter.ts +1341 -0
  1172. package/repos/effect/packages/effect/src/unstable/http/HttpServer.ts +329 -0
  1173. package/repos/effect/packages/effect/src/unstable/http/HttpServerError.ts +374 -0
  1174. package/repos/effect/packages/effect/src/unstable/http/HttpServerRequest.ts +1081 -0
  1175. package/repos/effect/packages/effect/src/unstable/http/HttpServerRespondable.ts +115 -0
  1176. package/repos/effect/packages/effect/src/unstable/http/HttpServerResponse.ts +1381 -0
  1177. package/repos/effect/packages/effect/src/unstable/http/HttpStaticServer.ts +464 -0
  1178. package/repos/effect/packages/effect/src/unstable/http/HttpTraceContext.ts +160 -0
  1179. package/repos/effect/packages/effect/src/unstable/http/Multipart.ts +830 -0
  1180. package/repos/effect/packages/effect/src/unstable/http/Multipasta/HeadersParser.ts +14 -0
  1181. package/repos/effect/packages/effect/src/unstable/http/Multipasta/Node.ts +14 -0
  1182. package/repos/effect/packages/effect/src/unstable/http/Multipasta/Search.ts +14 -0
  1183. package/repos/effect/packages/effect/src/unstable/http/Multipasta/Web.ts +14 -0
  1184. package/repos/effect/packages/effect/src/unstable/http/Multipasta.ts +15 -0
  1185. package/repos/effect/packages/effect/src/unstable/http/Template.ts +262 -0
  1186. package/repos/effect/packages/effect/src/unstable/http/Url.ts +330 -0
  1187. package/repos/effect/packages/effect/src/unstable/http/UrlParams.ts +678 -0
  1188. package/repos/effect/packages/effect/src/unstable/http/index.ts +145 -0
  1189. package/repos/effect/packages/effect/src/unstable/http/internal/preResponseHandler.ts +15 -0
  1190. package/repos/effect/packages/effect/src/unstable/httpapi/HttpApi.ts +316 -0
  1191. package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiBuilder.ts +1015 -0
  1192. package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiClient.ts +1005 -0
  1193. package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiEndpoint.ts +1545 -0
  1194. package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiError.ts +443 -0
  1195. package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiGroup.ts +381 -0
  1196. package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiMiddleware.ts +478 -0
  1197. package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiScalar.ts +267 -0
  1198. package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiSchema.ts +733 -0
  1199. package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiSecurity.ts +244 -0
  1200. package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiSwagger.ts +68 -0
  1201. package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiTest.ts +112 -0
  1202. package/repos/effect/packages/effect/src/unstable/httpapi/OpenApi.ts +1098 -0
  1203. package/repos/effect/packages/effect/src/unstable/httpapi/index.ts +70 -0
  1204. package/repos/effect/packages/effect/src/unstable/httpapi/internal/html.ts +18 -0
  1205. package/repos/effect/packages/effect/src/unstable/httpapi/internal/httpApiScalar.ts +5 -0
  1206. package/repos/effect/packages/effect/src/unstable/httpapi/internal/httpApiSwagger.ts +9 -0
  1207. package/repos/effect/packages/effect/src/unstable/observability/Otlp.ts +172 -0
  1208. package/repos/effect/packages/effect/src/unstable/observability/OtlpExporter.ts +149 -0
  1209. package/repos/effect/packages/effect/src/unstable/observability/OtlpLogger.ts +340 -0
  1210. package/repos/effect/packages/effect/src/unstable/observability/OtlpMetrics.ts +826 -0
  1211. package/repos/effect/packages/effect/src/unstable/observability/OtlpResource.ts +288 -0
  1212. package/repos/effect/packages/effect/src/unstable/observability/OtlpSerialization.ts +66 -0
  1213. package/repos/effect/packages/effect/src/unstable/observability/OtlpTracer.ts +442 -0
  1214. package/repos/effect/packages/effect/src/unstable/observability/PrometheusMetrics.ts +468 -0
  1215. package/repos/effect/packages/effect/src/unstable/observability/index.ts +45 -0
  1216. package/repos/effect/packages/effect/src/unstable/observability/internal/otlpEnv.ts +39 -0
  1217. package/repos/effect/packages/effect/src/unstable/observability/internal/otlpProtobuf.ts +779 -0
  1218. package/repos/effect/packages/effect/src/unstable/observability/internal/protobuf.ts +262 -0
  1219. package/repos/effect/packages/effect/src/unstable/persistence/KeyValueStore.ts +864 -0
  1220. package/repos/effect/packages/effect/src/unstable/persistence/Persistable.ts +252 -0
  1221. package/repos/effect/packages/effect/src/unstable/persistence/PersistedCache.ts +111 -0
  1222. package/repos/effect/packages/effect/src/unstable/persistence/PersistedQueue.ts +1196 -0
  1223. package/repos/effect/packages/effect/src/unstable/persistence/Persistence.ts +1071 -0
  1224. package/repos/effect/packages/effect/src/unstable/persistence/RateLimiter.ts +748 -0
  1225. package/repos/effect/packages/effect/src/unstable/persistence/Redis.ts +188 -0
  1226. package/repos/effect/packages/effect/src/unstable/persistence/index.ts +40 -0
  1227. package/repos/effect/packages/effect/src/unstable/process/ChildProcess.ts +1036 -0
  1228. package/repos/effect/packages/effect/src/unstable/process/ChildProcessSpawner.ts +285 -0
  1229. package/repos/effect/packages/effect/src/unstable/process/index.ts +15 -0
  1230. package/repos/effect/packages/effect/src/unstable/reactivity/AsyncResult.ts +1081 -0
  1231. package/repos/effect/packages/effect/src/unstable/reactivity/Atom.ts +2520 -0
  1232. package/repos/effect/packages/effect/src/unstable/reactivity/AtomHttpApi.ts +352 -0
  1233. package/repos/effect/packages/effect/src/unstable/reactivity/AtomRef.ts +352 -0
  1234. package/repos/effect/packages/effect/src/unstable/reactivity/AtomRegistry.ts +1127 -0
  1235. package/repos/effect/packages/effect/src/unstable/reactivity/AtomRpc.ts +305 -0
  1236. package/repos/effect/packages/effect/src/unstable/reactivity/Hydration.ts +155 -0
  1237. package/repos/effect/packages/effect/src/unstable/reactivity/Reactivity.ts +348 -0
  1238. package/repos/effect/packages/effect/src/unstable/reactivity/index.ts +45 -0
  1239. package/repos/effect/packages/effect/src/unstable/rpc/Rpc.ts +1255 -0
  1240. package/repos/effect/packages/effect/src/unstable/rpc/RpcClient.ts +1370 -0
  1241. package/repos/effect/packages/effect/src/unstable/rpc/RpcClientError.ts +57 -0
  1242. package/repos/effect/packages/effect/src/unstable/rpc/RpcGroup.ts +409 -0
  1243. package/repos/effect/packages/effect/src/unstable/rpc/RpcMessage.ts +402 -0
  1244. package/repos/effect/packages/effect/src/unstable/rpc/RpcMiddleware.ts +344 -0
  1245. package/repos/effect/packages/effect/src/unstable/rpc/RpcSchema.ts +97 -0
  1246. package/repos/effect/packages/effect/src/unstable/rpc/RpcSerialization.ts +546 -0
  1247. package/repos/effect/packages/effect/src/unstable/rpc/RpcServer.ts +1492 -0
  1248. package/repos/effect/packages/effect/src/unstable/rpc/RpcTest.ts +56 -0
  1249. package/repos/effect/packages/effect/src/unstable/rpc/RpcWorker.ts +118 -0
  1250. package/repos/effect/packages/effect/src/unstable/rpc/Utils.ts +120 -0
  1251. package/repos/effect/packages/effect/src/unstable/rpc/index.ts +65 -0
  1252. package/repos/effect/packages/effect/src/unstable/schema/Model.ts +862 -0
  1253. package/repos/effect/packages/effect/src/unstable/schema/VariantSchema.ts +604 -0
  1254. package/repos/effect/packages/effect/src/unstable/schema/index.ts +15 -0
  1255. package/repos/effect/packages/effect/src/unstable/socket/Socket.ts +911 -0
  1256. package/repos/effect/packages/effect/src/unstable/socket/SocketServer.ts +147 -0
  1257. package/repos/effect/packages/effect/src/unstable/socket/index.ts +15 -0
  1258. package/repos/effect/packages/effect/src/unstable/sql/Migrator.ts +440 -0
  1259. package/repos/effect/packages/effect/src/unstable/sql/SqlClient.ts +342 -0
  1260. package/repos/effect/packages/effect/src/unstable/sql/SqlConnection.ts +83 -0
  1261. package/repos/effect/packages/effect/src/unstable/sql/SqlError.ts +590 -0
  1262. package/repos/effect/packages/effect/src/unstable/sql/SqlModel.ts +359 -0
  1263. package/repos/effect/packages/effect/src/unstable/sql/SqlResolver.ts +380 -0
  1264. package/repos/effect/packages/effect/src/unstable/sql/SqlSchema.ts +172 -0
  1265. package/repos/effect/packages/effect/src/unstable/sql/SqlStream.ts +81 -0
  1266. package/repos/effect/packages/effect/src/unstable/sql/Statement.ts +1500 -0
  1267. package/repos/effect/packages/effect/src/unstable/sql/index.ts +50 -0
  1268. package/repos/effect/packages/effect/src/unstable/workers/Transferable.ts +191 -0
  1269. package/repos/effect/packages/effect/src/unstable/workers/Worker.ts +245 -0
  1270. package/repos/effect/packages/effect/src/unstable/workers/WorkerError.ts +148 -0
  1271. package/repos/effect/packages/effect/src/unstable/workers/WorkerRunner.ts +57 -0
  1272. package/repos/effect/packages/effect/src/unstable/workers/index.ts +25 -0
  1273. package/repos/effect/packages/effect/src/unstable/workflow/Activity.ts +322 -0
  1274. package/repos/effect/packages/effect/src/unstable/workflow/DurableClock.ts +117 -0
  1275. package/repos/effect/packages/effect/src/unstable/workflow/DurableDeferred.ts +653 -0
  1276. package/repos/effect/packages/effect/src/unstable/workflow/DurableQueue.ts +360 -0
  1277. package/repos/effect/packages/effect/src/unstable/workflow/Workflow.ts +898 -0
  1278. package/repos/effect/packages/effect/src/unstable/workflow/WorkflowEngine.ts +759 -0
  1279. package/repos/effect/packages/effect/src/unstable/workflow/WorkflowProxy.ts +212 -0
  1280. package/repos/effect/packages/effect/src/unstable/workflow/WorkflowProxyServer.ts +151 -0
  1281. package/repos/effect/packages/effect/src/unstable/workflow/index.ts +45 -0
  1282. package/repos/effect/packages/effect/src/unstable/workflow/internal/crypto.ts +15 -0
  1283. package/repos/effect/packages/effect/test/Array.test.ts +1579 -0
  1284. package/repos/effect/packages/effect/test/AtomRef.test.ts +27 -0
  1285. package/repos/effect/packages/effect/test/BigDecimal.test.ts +525 -0
  1286. package/repos/effect/packages/effect/test/BigInt.test.ts +57 -0
  1287. package/repos/effect/packages/effect/test/Boolean.test.ts +289 -0
  1288. package/repos/effect/packages/effect/test/Brand.test.ts +160 -0
  1289. package/repos/effect/packages/effect/test/Cache.test.ts +1423 -0
  1290. package/repos/effect/packages/effect/test/Cause.test.ts +834 -0
  1291. package/repos/effect/packages/effect/test/Channel.test.ts +556 -0
  1292. package/repos/effect/packages/effect/test/Chunk.test.ts +874 -0
  1293. package/repos/effect/packages/effect/test/Combiner.test.ts +42 -0
  1294. package/repos/effect/packages/effect/test/Config.test.ts +1416 -0
  1295. package/repos/effect/packages/effect/test/ConfigProvider.test.ts +726 -0
  1296. package/repos/effect/packages/effect/test/Cron.test.ts +401 -0
  1297. package/repos/effect/packages/effect/test/Crypto.test.ts +86 -0
  1298. package/repos/effect/packages/effect/test/Data.test.ts +269 -0
  1299. package/repos/effect/packages/effect/test/DateTime.test.ts +953 -0
  1300. package/repos/effect/packages/effect/test/Deferred.test.ts +165 -0
  1301. package/repos/effect/packages/effect/test/Duration.test.ts +679 -0
  1302. package/repos/effect/packages/effect/test/Effect.test.ts +2658 -0
  1303. package/repos/effect/packages/effect/test/EffectEager.test.ts +678 -0
  1304. package/repos/effect/packages/effect/test/EffectKeepAlive.test.ts +71 -0
  1305. package/repos/effect/packages/effect/test/Equal.test.ts +1278 -0
  1306. package/repos/effect/packages/effect/test/Equivalence.test.ts +170 -0
  1307. package/repos/effect/packages/effect/test/ExecutionPlan.test.ts +117 -0
  1308. package/repos/effect/packages/effect/test/Exit.test.ts +12 -0
  1309. package/repos/effect/packages/effect/test/Fiber.test.ts +9 -0
  1310. package/repos/effect/packages/effect/test/FiberHandle.test.ts +146 -0
  1311. package/repos/effect/packages/effect/test/FiberMap.test.ts +171 -0
  1312. package/repos/effect/packages/effect/test/FiberSet.test.ts +119 -0
  1313. package/repos/effect/packages/effect/test/Formatter.test.ts +247 -0
  1314. package/repos/effect/packages/effect/test/Function.test.ts +333 -0
  1315. package/repos/effect/packages/effect/test/Graph.test.ts +3505 -0
  1316. package/repos/effect/packages/effect/test/HashMap.test.ts +618 -0
  1317. package/repos/effect/packages/effect/test/HashSet.test.ts +298 -0
  1318. package/repos/effect/packages/effect/test/HttpClient.test.ts +131 -0
  1319. package/repos/effect/packages/effect/test/Iterable.test.ts +486 -0
  1320. package/repos/effect/packages/effect/test/JsonPatch.test.ts +948 -0
  1321. package/repos/effect/packages/effect/test/JsonPointer.test.ts +353 -0
  1322. package/repos/effect/packages/effect/test/JsonSchema.test.ts +1253 -0
  1323. package/repos/effect/packages/effect/test/Latch.test.ts +21 -0
  1324. package/repos/effect/packages/effect/test/Layer.test.ts +648 -0
  1325. package/repos/effect/packages/effect/test/LayerMap.test.ts +98 -0
  1326. package/repos/effect/packages/effect/test/LogLevel.test.ts +28 -0
  1327. package/repos/effect/packages/effect/test/Logger.test.ts +154 -0
  1328. package/repos/effect/packages/effect/test/ManagedRuntime.test.ts +58 -0
  1329. package/repos/effect/packages/effect/test/Match.test.ts +27 -0
  1330. package/repos/effect/packages/effect/test/Metric.test.ts +682 -0
  1331. package/repos/effect/packages/effect/test/Migrator.test.ts +69 -0
  1332. package/repos/effect/packages/effect/test/MutableHashMap.test.ts +309 -0
  1333. package/repos/effect/packages/effect/test/MutableHashSet.test.ts +10 -0
  1334. package/repos/effect/packages/effect/test/MutableList.test.ts +58 -0
  1335. package/repos/effect/packages/effect/test/Newtype.test.ts +90 -0
  1336. package/repos/effect/packages/effect/test/Number.test.ts +422 -0
  1337. package/repos/effect/packages/effect/test/Optic.test.ts +452 -0
  1338. package/repos/effect/packages/effect/test/Option.test.ts +564 -0
  1339. package/repos/effect/packages/effect/test/Order.test.ts +163 -0
  1340. package/repos/effect/packages/effect/test/Ordering.test.ts +18 -0
  1341. package/repos/effect/packages/effect/test/PartitionedSemaphore.test.ts +74 -0
  1342. package/repos/effect/packages/effect/test/Pathfinding.test.ts +426 -0
  1343. package/repos/effect/packages/effect/test/Pool.test.ts +422 -0
  1344. package/repos/effect/packages/effect/test/Predicate.test.ts +555 -0
  1345. package/repos/effect/packages/effect/test/PubSub.test.ts +538 -0
  1346. package/repos/effect/packages/effect/test/Queue.test.ts +317 -0
  1347. package/repos/effect/packages/effect/test/Random.test.ts +238 -0
  1348. package/repos/effect/packages/effect/test/RcMap.test.ts +237 -0
  1349. package/repos/effect/packages/effect/test/RcRef.test.ts +97 -0
  1350. package/repos/effect/packages/effect/test/Record.test.ts +395 -0
  1351. package/repos/effect/packages/effect/test/Redacted.test.ts +59 -0
  1352. package/repos/effect/packages/effect/test/Reducer.test.ts +12 -0
  1353. package/repos/effect/packages/effect/test/Ref.test.ts +187 -0
  1354. package/repos/effect/packages/effect/test/Request.test.ts +305 -0
  1355. package/repos/effect/packages/effect/test/Resource.test.ts +59 -0
  1356. package/repos/effect/packages/effect/test/Result.test.ts +517 -0
  1357. package/repos/effect/packages/effect/test/Schedule.test.ts +395 -0
  1358. package/repos/effect/packages/effect/test/Scheduler.test.ts +70 -0
  1359. package/repos/effect/packages/effect/test/Scope.test.ts +19 -0
  1360. package/repos/effect/packages/effect/test/ScopedCache.test.ts +2316 -0
  1361. package/repos/effect/packages/effect/test/ScopedRef.test.ts +80 -0
  1362. package/repos/effect/packages/effect/test/Semaphore.test.ts +469 -0
  1363. package/repos/effect/packages/effect/test/Sink.test.ts +230 -0
  1364. package/repos/effect/packages/effect/test/Stream.test.ts +4712 -0
  1365. package/repos/effect/packages/effect/test/String.test.ts +690 -0
  1366. package/repos/effect/packages/effect/test/Struct.test.ts +216 -0
  1367. package/repos/effect/packages/effect/test/SubscriptionRef.test.ts +90 -0
  1368. package/repos/effect/packages/effect/test/Symbol.test.ts +50 -0
  1369. package/repos/effect/packages/effect/test/SynchronizedRef.test.ts +105 -0
  1370. package/repos/effect/packages/effect/test/TestClock.test.ts +71 -0
  1371. package/repos/effect/packages/effect/test/Tracer.test.ts +410 -0
  1372. package/repos/effect/packages/effect/test/Trie.test.ts +531 -0
  1373. package/repos/effect/packages/effect/test/Tuple.test.ts +127 -0
  1374. package/repos/effect/packages/effect/test/TxChunk.test.ts +342 -0
  1375. package/repos/effect/packages/effect/test/TxDeferred.test.ts +197 -0
  1376. package/repos/effect/packages/effect/test/TxHashMap.test.ts +963 -0
  1377. package/repos/effect/packages/effect/test/TxHashSet.test.ts +442 -0
  1378. package/repos/effect/packages/effect/test/TxPriorityQueue.test.ts +187 -0
  1379. package/repos/effect/packages/effect/test/TxPubSub.test.ts +391 -0
  1380. package/repos/effect/packages/effect/test/TxQueue.test.ts +1260 -0
  1381. package/repos/effect/packages/effect/test/TxReentrantLock.test.ts +413 -0
  1382. package/repos/effect/packages/effect/test/TxSemaphore.test.ts +283 -0
  1383. package/repos/effect/packages/effect/test/TxSubscriptionRef.test.ts +197 -0
  1384. package/repos/effect/packages/effect/test/UndefinedOr.test.ts +65 -0
  1385. package/repos/effect/packages/effect/test/cluster/ClusterWorkflowEngine.test.ts +652 -0
  1386. package/repos/effect/packages/effect/test/cluster/Entity.test.ts +81 -0
  1387. package/repos/effect/packages/effect/test/cluster/K8sHttpClient.test.ts +34 -0
  1388. package/repos/effect/packages/effect/test/cluster/MessageStorage.test.ts +196 -0
  1389. package/repos/effect/packages/effect/test/cluster/Sharding.test.ts +578 -0
  1390. package/repos/effect/packages/effect/test/cluster/TestEntity.ts +132 -0
  1391. package/repos/effect/packages/effect/test/reactivity/AsyncResult.test.ts +41 -0
  1392. package/repos/effect/packages/effect/test/reactivity/Atom.test.ts +2551 -0
  1393. package/repos/effect/packages/effect/test/reactivity/AtomHttpApi.test.ts +86 -0
  1394. package/repos/effect/packages/effect/test/reactivity/AtomRpc.test.ts +70 -0
  1395. package/repos/effect/packages/effect/test/rpc/Rpc.test.ts +73 -0
  1396. package/repos/effect/packages/effect/test/rpc/RpcClient.test.ts +58 -0
  1397. package/repos/effect/packages/effect/test/rpc/RpcSerialization.test.ts +171 -0
  1398. package/repos/effect/packages/effect/test/schema/HMR.test.ts +72 -0
  1399. package/repos/effect/packages/effect/test/schema/Schema.test.ts +9133 -0
  1400. package/repos/effect/packages/effect/test/schema/SchemaAST.test.ts +280 -0
  1401. package/repos/effect/packages/effect/test/schema/SchemaGetter.test.ts +383 -0
  1402. package/repos/effect/packages/effect/test/schema/SchemaIssue.test.ts +9 -0
  1403. package/repos/effect/packages/effect/test/schema/SchemaParser.test.ts +323 -0
  1404. package/repos/effect/packages/effect/test/schema/fixtures/HMR-Class.ts +5 -0
  1405. package/repos/effect/packages/effect/test/schema/fixtures/HMR-sanity-check.ts +3 -0
  1406. package/repos/effect/packages/effect/test/schema/representation/fromASTs.test.ts +820 -0
  1407. package/repos/effect/packages/effect/test/schema/representation/fromJsonSchemaDocument.test.ts +2137 -0
  1408. package/repos/effect/packages/effect/test/schema/representation/toCodeDocument.test.ts +2089 -0
  1409. package/repos/effect/packages/effect/test/schema/representation/toJsonSchemaMultiDocument.test.ts +39 -0
  1410. package/repos/effect/packages/effect/test/schema/representation/toSchema.test.ts +506 -0
  1411. package/repos/effect/packages/effect/test/schema/toArbitrary.test.ts +1693 -0
  1412. package/repos/effect/packages/effect/test/schema/toCodec.test.ts +3149 -0
  1413. package/repos/effect/packages/effect/test/schema/toDifferJsonPatch.test.ts +239 -0
  1414. package/repos/effect/packages/effect/test/schema/toEquivalence.test.ts +519 -0
  1415. package/repos/effect/packages/effect/test/schema/toFormatter.test.ts +565 -0
  1416. package/repos/effect/packages/effect/test/schema/toIso.test.ts +394 -0
  1417. package/repos/effect/packages/effect/test/schema/toJsonSchemaDocument.test.ts +3630 -0
  1418. package/repos/effect/packages/effect/test/schema/toStandardJSONSchemaV1.test.ts +126 -0
  1419. package/repos/effect/packages/effect/test/schema/toStandardSchemaV1.test.ts +495 -0
  1420. package/repos/effect/packages/effect/test/schema/v3-v4.test.ts +250 -0
  1421. package/repos/effect/packages/effect/test/testing/TestSchema.test.ts +78 -0
  1422. package/repos/effect/packages/effect/test/unstable/ai/AiError.test.ts +823 -0
  1423. package/repos/effect/packages/effect/test/unstable/ai/AnthropicStructuredOutput.test.ts +593 -0
  1424. package/repos/effect/packages/effect/test/unstable/ai/Chat.test.ts +147 -0
  1425. package/repos/effect/packages/effect/test/unstable/ai/EmbeddingModel.test.ts +185 -0
  1426. package/repos/effect/packages/effect/test/unstable/ai/LanguageModel.test.ts +1714 -0
  1427. package/repos/effect/packages/effect/test/unstable/ai/LanguageModelTrackerLifecycle.test.ts +413 -0
  1428. package/repos/effect/packages/effect/test/unstable/ai/McpServer.test.ts +82 -0
  1429. package/repos/effect/packages/effect/test/unstable/ai/Model.test.ts +16 -0
  1430. package/repos/effect/packages/effect/test/unstable/ai/OpenAiStructuredOutput.test.ts +723 -0
  1431. package/repos/effect/packages/effect/test/unstable/ai/Prompt.test.ts +346 -0
  1432. package/repos/effect/packages/effect/test/unstable/ai/ResponseIdTracker.test.ts +424 -0
  1433. package/repos/effect/packages/effect/test/unstable/ai/Tool.test.ts +1264 -0
  1434. package/repos/effect/packages/effect/test/unstable/ai/utils.ts +68 -0
  1435. package/repos/effect/packages/effect/test/unstable/cli/Arguments.test.ts +390 -0
  1436. package/repos/effect/packages/effect/test/unstable/cli/Command.test.ts +1801 -0
  1437. package/repos/effect/packages/effect/test/unstable/cli/Errors.test.ts +150 -0
  1438. package/repos/effect/packages/effect/test/unstable/cli/Help.test.ts +572 -0
  1439. package/repos/effect/packages/effect/test/unstable/cli/LogLevel.test.ts +202 -0
  1440. package/repos/effect/packages/effect/test/unstable/cli/Param.test.ts +391 -0
  1441. package/repos/effect/packages/effect/test/unstable/cli/Primitive.test.ts +321 -0
  1442. package/repos/effect/packages/effect/test/unstable/cli/Prompt.test.ts +597 -0
  1443. package/repos/effect/packages/effect/test/unstable/cli/completions/completions.test.ts +656 -0
  1444. package/repos/effect/packages/effect/test/unstable/cli/completions/descriptor.test.ts +245 -0
  1445. package/repos/effect/packages/effect/test/unstable/cli/fixtures/ComprehensiveCli.ts +422 -0
  1446. package/repos/effect/packages/effect/test/unstable/cli/services/MockTerminal.ts +135 -0
  1447. package/repos/effect/packages/effect/test/unstable/cli/services/TestActions.ts +36 -0
  1448. package/repos/effect/packages/effect/test/unstable/encoding/Ndjson.test.ts +18 -0
  1449. package/repos/effect/packages/effect/test/unstable/encoding/Sse.test.ts +62 -0
  1450. package/repos/effect/packages/effect/test/unstable/eventlog/EventJournal.test.ts +25 -0
  1451. package/repos/effect/packages/effect/test/unstable/eventlog/EventLog.test.ts +104 -0
  1452. package/repos/effect/packages/effect/test/unstable/eventlog/EventLogIdentityDerivation.test.ts +85 -0
  1453. package/repos/effect/packages/effect/test/unstable/eventlog/EventLogRemote.test.ts +176 -0
  1454. package/repos/effect/packages/effect/test/unstable/eventlog/EventLogSessionAuth.test.ts +130 -0
  1455. package/repos/effect/packages/effect/test/unstable/eventlog/SqlEventLogServerUnencryptedStorageTest.ts +169 -0
  1456. package/repos/effect/packages/effect/test/unstable/http/Cookies.test.ts +80 -0
  1457. package/repos/effect/packages/effect/test/unstable/http/Headers.test.ts +73 -0
  1458. package/repos/effect/packages/effect/test/unstable/http/HttpClient.test.ts +306 -0
  1459. package/repos/effect/packages/effect/test/unstable/http/HttpClientRequest.test.ts +164 -0
  1460. package/repos/effect/packages/effect/test/unstable/http/HttpEffect.test.ts +254 -0
  1461. package/repos/effect/packages/effect/test/unstable/http/HttpMiddleware.test.ts +57 -0
  1462. package/repos/effect/packages/effect/test/unstable/http/HttpServerError.test.ts +121 -0
  1463. package/repos/effect/packages/effect/test/unstable/http/HttpServerRequest.test.ts +157 -0
  1464. package/repos/effect/packages/effect/test/unstable/http/HttpServerResponse.test.ts +76 -0
  1465. package/repos/effect/packages/effect/test/unstable/http/Multipart.test.ts +69 -0
  1466. package/repos/effect/packages/effect/test/unstable/http/Url.test.ts +98 -0
  1467. package/repos/effect/packages/effect/test/unstable/http/UrlParams.test.ts +30 -0
  1468. package/repos/effect/packages/effect/test/unstable/httpapi/HttpApiBuilder.test.ts +186 -0
  1469. package/repos/effect/packages/effect/test/unstable/httpapi/HttpApiClient.test.ts +446 -0
  1470. package/repos/effect/packages/effect/test/unstable/httpapi/HttpApiEndpoint.test.ts +160 -0
  1471. package/repos/effect/packages/effect/test/unstable/httpapi/HttpApiSchema.test.ts +108 -0
  1472. package/repos/effect/packages/effect/test/unstable/httpapi/HttpApiSecurity.test.ts +41 -0
  1473. package/repos/effect/packages/effect/test/unstable/httpapi/OpenApi.test.ts +39 -0
  1474. package/repos/effect/packages/effect/test/unstable/observability/OtlpConfig.test.ts +151 -0
  1475. package/repos/effect/packages/effect/test/unstable/observability/OtlpExporter.test.ts +108 -0
  1476. package/repos/effect/packages/effect/test/unstable/observability/OtlpMetrics.test.ts +518 -0
  1477. package/repos/effect/packages/effect/test/unstable/observability/OtlpResource.test.ts +84 -0
  1478. package/repos/effect/packages/effect/test/unstable/observability/PrometheusMetrics.test.ts +417 -0
  1479. package/repos/effect/packages/effect/test/unstable/persistence/KeyValueStore.test.ts +164 -0
  1480. package/repos/effect/packages/effect/test/unstable/persistence/KeyValueStoreTest.ts +85 -0
  1481. package/repos/effect/packages/effect/test/unstable/persistence/PersistedCache.test.ts +4 -0
  1482. package/repos/effect/packages/effect/test/unstable/persistence/PersistedCacheTest.ts +111 -0
  1483. package/repos/effect/packages/effect/test/unstable/persistence/PersistedQueue.test.ts +4 -0
  1484. package/repos/effect/packages/effect/test/unstable/persistence/PersistedQueueTest.ts +106 -0
  1485. package/repos/effect/packages/effect/test/unstable/persistence/RateLimiter.test.ts +145 -0
  1486. package/repos/effect/packages/effect/test/unstable/persistence/Redis.test.ts +43 -0
  1487. package/repos/effect/packages/effect/test/unstable/process/ChildProcess.test.ts +352 -0
  1488. package/repos/effect/packages/effect/test/unstable/schema/VariantSchema.test.ts +72 -0
  1489. package/repos/effect/packages/effect/test/unstable/sql/SqlError.test.ts +228 -0
  1490. package/repos/effect/packages/effect/test/unstable/sql/SqlSchema.test.ts +168 -0
  1491. package/repos/effect/packages/effect/test/unstable/workers/WorkerError.test.ts +90 -0
  1492. package/repos/effect/packages/effect/test/unstable/workflow/DurableQueue.test.ts +105 -0
  1493. package/repos/effect/packages/effect/test/unstable/workflow/WorkflowEngine.test.ts +60 -0
  1494. package/repos/effect/packages/effect/test/utils/assert.ts +182 -0
  1495. package/repos/effect/packages/effect/test/utils/chunkCoordination.ts +36 -0
  1496. package/repos/effect/packages/effect/test/utils/counter.ts +54 -0
  1497. package/repos/effect/packages/effect/tsconfig.json +8 -0
  1498. package/repos/effect/packages/effect/typetest/AiError.tst.ts +49 -0
  1499. package/repos/effect/packages/effect/typetest/Array.tst.ts +1289 -0
  1500. package/repos/effect/packages/effect/typetest/Brand.tst.ts +51 -0
  1501. package/repos/effect/packages/effect/typetest/Channel.tst.ts +112 -0
  1502. package/repos/effect/packages/effect/typetest/Config.tst.ts +31 -0
  1503. package/repos/effect/packages/effect/typetest/Data.tst.ts +121 -0
  1504. package/repos/effect/packages/effect/typetest/Effect.tst.ts +976 -0
  1505. package/repos/effect/packages/effect/typetest/Equivalence.tst.ts +19 -0
  1506. package/repos/effect/packages/effect/typetest/Newtype.tst.ts +72 -0
  1507. package/repos/effect/packages/effect/typetest/Optic.tst.ts +130 -0
  1508. package/repos/effect/packages/effect/typetest/Option.tst.ts +72 -0
  1509. package/repos/effect/packages/effect/typetest/Order.tst.ts +19 -0
  1510. package/repos/effect/packages/effect/typetest/Predicate.tst.ts +251 -0
  1511. package/repos/effect/packages/effect/typetest/Result.tst.ts +353 -0
  1512. package/repos/effect/packages/effect/typetest/Schedule.tst.ts +21 -0
  1513. package/repos/effect/packages/effect/typetest/Stream.tst.ts +197 -0
  1514. package/repos/effect/packages/effect/typetest/Struct.tst.ts +422 -0
  1515. package/repos/effect/packages/effect/typetest/Tuple.tst.ts +177 -0
  1516. package/repos/effect/packages/effect/typetest/Types.tst.ts +364 -0
  1517. package/repos/effect/packages/effect/typetest/VariantSchema.tst.ts +76 -0
  1518. package/repos/effect/packages/effect/typetest/schema/Array.tst.ts +46 -0
  1519. package/repos/effect/packages/effect/typetest/schema/Literals.tst.ts +58 -0
  1520. package/repos/effect/packages/effect/typetest/schema/Record.tst.ts +145 -0
  1521. package/repos/effect/packages/effect/typetest/schema/Schema.tst.ts +1854 -0
  1522. package/repos/effect/packages/effect/typetest/schema/Struct.tst.ts +745 -0
  1523. package/repos/effect/packages/effect/typetest/schema/Tuple.tst.ts +199 -0
  1524. package/repos/effect/packages/effect/typetest/schema/Union.tst.ts +198 -0
  1525. package/repos/effect/packages/effect/typetest/schema/api.tst.ts +276 -0
  1526. package/repos/effect/packages/effect/typetest/schema/toArbitrary.tst.ts +65 -0
  1527. package/repos/effect/packages/effect/typetest/schema/toIso.tst.ts +282 -0
  1528. package/repos/effect/packages/effect/typetest/unstable/ai/LanguageModel.tst.ts +191 -0
  1529. package/repos/effect/packages/effect/typetest/unstable/ai/Tool.tst.ts +33 -0
  1530. package/repos/effect/packages/effect/typetest/unstable/cli/Command.tst.ts +124 -0
  1531. package/repos/effect/packages/effect/typetest/unstable/cli/Param.tst.ts +20 -0
  1532. package/repos/effect/packages/effect/typetest/unstable/cli/Prompt.tst.ts +97 -0
  1533. package/repos/effect/packages/effect/typetest/unstable/encoding/Ndjson.tst.ts +24 -0
  1534. package/repos/effect/packages/effect/typetest/unstable/http/HttpClient.tst.ts +143 -0
  1535. package/repos/effect/packages/effect/typetest/unstable/httpapi/HttpApiBuilder.tst.ts +98 -0
  1536. package/repos/effect/packages/effect/typetest/unstable/httpapi/HttpApiClient.tst.ts +677 -0
  1537. package/repos/effect/packages/effect/typetest/unstable/httpapi/HttpApiEndpoint.tst.ts +466 -0
  1538. package/repos/effect/packages/effect/typetest/unstable/httpapi/HttpApiMiddleware.tst.ts +90 -0
  1539. package/repos/effect/packages/effect/typetest/unstable/httpapi/HttpApiSchema.tst.ts +135 -0
  1540. package/repos/effect/packages/effect/typetest/unstable/reactivity/AsyncResult.tst.ts +65 -0
  1541. package/repos/effect/packages/effect/typetest/unstable/reactivity/AtomHttpApi.tst.ts +63 -0
  1542. package/repos/effect/packages/effect/typetest/unstable/rpc/Rpc.tst.ts +74 -0
  1543. package/repos/effect/packages/effect/typetest/unstable/rpc/RpcGroup.tst.ts +61 -0
  1544. package/repos/effect/packages/effect/typetest/unstable/rpc/RpcMiddleware.tst.ts +41 -0
  1545. package/repos/effect/packages/effect/typetest/unstable/rpc/RpcServer.tst.ts +26 -0
  1546. package/repos/effect/packages/effect/typetest/unstable/sql/SqlSchema.tst.ts +75 -0
  1547. package/repos/effect/packages/effect/typetest/unstable/workflow/Workflow.tst.ts +16 -0
  1548. package/repos/effect/packages/effect/vitest.config.ts +11 -0
  1549. package/repos/effect/packages/opentelemetry/CHANGELOG.md +620 -0
  1550. package/repos/effect/packages/opentelemetry/LICENSE +21 -0
  1551. package/repos/effect/packages/opentelemetry/README.md +5 -0
  1552. package/repos/effect/packages/opentelemetry/docgen.json +30 -0
  1553. package/repos/effect/packages/opentelemetry/package.json +126 -0
  1554. package/repos/effect/packages/opentelemetry/src/Logger.ts +193 -0
  1555. package/repos/effect/packages/opentelemetry/src/Metrics.ts +138 -0
  1556. package/repos/effect/packages/opentelemetry/src/NodeSdk.ts +162 -0
  1557. package/repos/effect/packages/opentelemetry/src/Resource.ts +147 -0
  1558. package/repos/effect/packages/opentelemetry/src/Tracer.ts +594 -0
  1559. package/repos/effect/packages/opentelemetry/src/WebSdk.ts +140 -0
  1560. package/repos/effect/packages/opentelemetry/src/index.ts +35 -0
  1561. package/repos/effect/packages/opentelemetry/src/internal/attributes.ts +28 -0
  1562. package/repos/effect/packages/opentelemetry/src/internal/metrics.ts +463 -0
  1563. package/repos/effect/packages/opentelemetry/src/internal/utilities.ts +5 -0
  1564. package/repos/effect/packages/opentelemetry/test/Logger.test.ts +122 -0
  1565. package/repos/effect/packages/opentelemetry/test/Metrics.test.ts +339 -0
  1566. package/repos/effect/packages/opentelemetry/test/Tracer.test.ts +167 -0
  1567. package/repos/effect/packages/opentelemetry/tsconfig.json +8 -0
  1568. package/repos/effect/packages/opentelemetry/vitest.config.ts +6 -0
  1569. package/repos/effect/packages/platform-browser/CHANGELOG.md +637 -0
  1570. package/repos/effect/packages/platform-browser/LICENSE +21 -0
  1571. package/repos/effect/packages/platform-browser/README.md +1 -0
  1572. package/repos/effect/packages/platform-browser/docgen.json +21 -0
  1573. package/repos/effect/packages/platform-browser/package.json +74 -0
  1574. package/repos/effect/packages/platform-browser/src/BrowserCrypto.ts +97 -0
  1575. package/repos/effect/packages/platform-browser/src/BrowserHttpClient.ts +430 -0
  1576. package/repos/effect/packages/platform-browser/src/BrowserKeyValueStore.ts +177 -0
  1577. package/repos/effect/packages/platform-browser/src/BrowserPersistence.ts +334 -0
  1578. package/repos/effect/packages/platform-browser/src/BrowserRuntime.ts +53 -0
  1579. package/repos/effect/packages/platform-browser/src/BrowserSocket.ts +52 -0
  1580. package/repos/effect/packages/platform-browser/src/BrowserStream.ts +56 -0
  1581. package/repos/effect/packages/platform-browser/src/BrowserWorker.ts +98 -0
  1582. package/repos/effect/packages/platform-browser/src/BrowserWorkerRunner.ts +199 -0
  1583. package/repos/effect/packages/platform-browser/src/Clipboard.ts +143 -0
  1584. package/repos/effect/packages/platform-browser/src/Geolocation.ts +233 -0
  1585. package/repos/effect/packages/platform-browser/src/IndexedDb.ts +113 -0
  1586. package/repos/effect/packages/platform-browser/src/IndexedDbDatabase.ts +648 -0
  1587. package/repos/effect/packages/platform-browser/src/IndexedDbQueryBuilder.ts +2032 -0
  1588. package/repos/effect/packages/platform-browser/src/IndexedDbTable.ts +260 -0
  1589. package/repos/effect/packages/platform-browser/src/IndexedDbVersion.ts +138 -0
  1590. package/repos/effect/packages/platform-browser/src/Permissions.ts +146 -0
  1591. package/repos/effect/packages/platform-browser/src/index.ts +90 -0
  1592. package/repos/effect/packages/platform-browser/test/BrowserCrypto.test.ts +74 -0
  1593. package/repos/effect/packages/platform-browser/test/BrowserHttpClient.test.ts +91 -0
  1594. package/repos/effect/packages/platform-browser/test/BrowserKeyValueStore.test.ts +23 -0
  1595. package/repos/effect/packages/platform-browser/test/BrowserPersistence.test.ts +209 -0
  1596. package/repos/effect/packages/platform-browser/test/BrowserPersistencePersistedCache.test.ts +29 -0
  1597. package/repos/effect/packages/platform-browser/test/IndexedDbDatabase.test.ts +253 -0
  1598. package/repos/effect/packages/platform-browser/test/IndexedDbQueryBuilder.test.ts +1459 -0
  1599. package/repos/effect/packages/platform-browser/test/IndexedDbTable.test.ts +101 -0
  1600. package/repos/effect/packages/platform-browser/test/IndexedDbVersion.test.ts +50 -0
  1601. package/repos/effect/packages/platform-browser/test/Permissions.test.ts +12 -0
  1602. package/repos/effect/packages/platform-browser/test/RpcWorker.test.ts +19 -0
  1603. package/repos/effect/packages/platform-browser/test/fixtures/rpc-e2e.ts +141 -0
  1604. package/repos/effect/packages/platform-browser/test/fixtures/rpc-schemas.ts +157 -0
  1605. package/repos/effect/packages/platform-browser/test/fixtures/rpc-worker.ts +12 -0
  1606. package/repos/effect/packages/platform-browser/tsconfig.json +8 -0
  1607. package/repos/effect/packages/platform-browser/vitest.config.ts +17 -0
  1608. package/repos/effect/packages/platform-browser/vitest.setup.ts +5 -0
  1609. package/repos/effect/packages/platform-bun/CHANGELOG.md +691 -0
  1610. package/repos/effect/packages/platform-bun/LICENSE +21 -0
  1611. package/repos/effect/packages/platform-bun/README.md +7 -0
  1612. package/repos/effect/packages/platform-bun/docgen.json +20 -0
  1613. package/repos/effect/packages/platform-bun/package.json +73 -0
  1614. package/repos/effect/packages/platform-bun/src/BunChildProcessSpawner.ts +6 -0
  1615. package/repos/effect/packages/platform-bun/src/BunClusterHttp.ts +174 -0
  1616. package/repos/effect/packages/platform-bun/src/BunClusterSocket.ts +153 -0
  1617. package/repos/effect/packages/platform-bun/src/BunCrypto.ts +24 -0
  1618. package/repos/effect/packages/platform-bun/src/BunFileSystem.ts +20 -0
  1619. package/repos/effect/packages/platform-bun/src/BunHttpClient.ts +9 -0
  1620. package/repos/effect/packages/platform-bun/src/BunHttpPlatform.ts +50 -0
  1621. package/repos/effect/packages/platform-bun/src/BunHttpServer.ts +600 -0
  1622. package/repos/effect/packages/platform-bun/src/BunHttpServerRequest.ts +19 -0
  1623. package/repos/effect/packages/platform-bun/src/BunMultipart.ts +54 -0
  1624. package/repos/effect/packages/platform-bun/src/BunPath.ts +37 -0
  1625. package/repos/effect/packages/platform-bun/src/BunRedis.ts +88 -0
  1626. package/repos/effect/packages/platform-bun/src/BunRuntime.ts +52 -0
  1627. package/repos/effect/packages/platform-bun/src/BunServices.ts +49 -0
  1628. package/repos/effect/packages/platform-bun/src/BunSink.ts +8 -0
  1629. package/repos/effect/packages/platform-bun/src/BunSocket.ts +54 -0
  1630. package/repos/effect/packages/platform-bun/src/BunSocketServer.ts +8 -0
  1631. package/repos/effect/packages/platform-bun/src/BunStdio.ts +22 -0
  1632. package/repos/effect/packages/platform-bun/src/BunStream.ts +68 -0
  1633. package/repos/effect/packages/platform-bun/src/BunTerminal.ts +32 -0
  1634. package/repos/effect/packages/platform-bun/src/BunWorker.ts +92 -0
  1635. package/repos/effect/packages/platform-bun/src/BunWorkerRunner.ts +113 -0
  1636. package/repos/effect/packages/platform-bun/src/index.ts +115 -0
  1637. package/repos/effect/packages/platform-bun/tsconfig.json +12 -0
  1638. package/repos/effect/packages/platform-node/CHANGELOG.md +695 -0
  1639. package/repos/effect/packages/platform-node/LICENSE +21 -0
  1640. package/repos/effect/packages/platform-node/README.md +7 -0
  1641. package/repos/effect/packages/platform-node/docgen.json +24 -0
  1642. package/repos/effect/packages/platform-node/package.json +82 -0
  1643. package/repos/effect/packages/platform-node/src/Mime.ts +25 -0
  1644. package/repos/effect/packages/platform-node/src/NodeChildProcessSpawner.ts +6 -0
  1645. package/repos/effect/packages/platform-node/src/NodeClusterHttp.ts +155 -0
  1646. package/repos/effect/packages/platform-node/src/NodeClusterSocket.ts +176 -0
  1647. package/repos/effect/packages/platform-node/src/NodeCrypto.ts +24 -0
  1648. package/repos/effect/packages/platform-node/src/NodeFileSystem.ts +21 -0
  1649. package/repos/effect/packages/platform-node/src/NodeHttpClient.ts +664 -0
  1650. package/repos/effect/packages/platform-node/src/NodeHttpIncomingMessage.ts +141 -0
  1651. package/repos/effect/packages/platform-node/src/NodeHttpPlatform.ts +70 -0
  1652. package/repos/effect/packages/platform-node/src/NodeHttpServer.ts +646 -0
  1653. package/repos/effect/packages/platform-node/src/NodeHttpServerRequest.ts +33 -0
  1654. package/repos/effect/packages/platform-node/src/NodeMultipart.ts +183 -0
  1655. package/repos/effect/packages/platform-node/src/NodePath.ts +40 -0
  1656. package/repos/effect/packages/platform-node/src/NodeRedis.ts +92 -0
  1657. package/repos/effect/packages/platform-node/src/NodeRuntime.ts +53 -0
  1658. package/repos/effect/packages/platform-node/src/NodeServices.ts +50 -0
  1659. package/repos/effect/packages/platform-node/src/NodeSink.ts +8 -0
  1660. package/repos/effect/packages/platform-node/src/NodeSocket.ts +72 -0
  1661. package/repos/effect/packages/platform-node/src/NodeSocketServer.ts +8 -0
  1662. package/repos/effect/packages/platform-node/src/NodeStdio.ts +22 -0
  1663. package/repos/effect/packages/platform-node/src/NodeStream.ts +8 -0
  1664. package/repos/effect/packages/platform-node/src/NodeTerminal.ts +32 -0
  1665. package/repos/effect/packages/platform-node/src/NodeWorker.ts +121 -0
  1666. package/repos/effect/packages/platform-node/src/NodeWorkerRunner.ts +110 -0
  1667. package/repos/effect/packages/platform-node/src/Undici.ts +29 -0
  1668. package/repos/effect/packages/platform-node/src/index.ts +130 -0
  1669. package/repos/effect/packages/platform-node/test/HttpApi.test.ts +1831 -0
  1670. package/repos/effect/packages/platform-node/test/HttpStaticServer.test.ts +253 -0
  1671. package/repos/effect/packages/platform-node/test/HttpStaticServerConditional.test.ts +296 -0
  1672. package/repos/effect/packages/platform-node/test/NodeCrypto.test.ts +59 -0
  1673. package/repos/effect/packages/platform-node/test/NodeHttpClient.test.ts +157 -0
  1674. package/repos/effect/packages/platform-node/test/NodeHttpPlatform.test.ts +51 -0
  1675. package/repos/effect/packages/platform-node/test/NodeHttpServer.test.ts +598 -0
  1676. package/repos/effect/packages/platform-node/test/NodeRedis.test.ts +31 -0
  1677. package/repos/effect/packages/platform-node/test/NodeSocket.test.ts +153 -0
  1678. package/repos/effect/packages/platform-node/test/OpenApi.test.ts +1573 -0
  1679. package/repos/effect/packages/platform-node/test/RpcServer.test.ts +213 -0
  1680. package/repos/effect/packages/platform-node/test/__snapshots__/HttpApi.test.ts.snap +715 -0
  1681. package/repos/effect/packages/platform-node/test/cluster/MessageStorageTest.ts +196 -0
  1682. package/repos/effect/packages/platform-node/test/cluster/SocketRunner.test.ts +120 -0
  1683. package/repos/effect/packages/platform-node/test/cluster/SqlMessageStorage.test.ts +222 -0
  1684. package/repos/effect/packages/platform-node/test/cluster/SqlRunnerStorage.test.ts +101 -0
  1685. package/repos/effect/packages/platform-node/test/fixtures/http-static-server/conditional.txt +1 -0
  1686. package/repos/effect/packages/platform-node/test/fixtures/http-static-server/custom/home.html +1 -0
  1687. package/repos/effect/packages/platform-node/test/fixtures/http-static-server/file.binx +1 -0
  1688. package/repos/effect/packages/platform-node/test/fixtures/http-static-server/guide/index.html +1 -0
  1689. package/repos/effect/packages/platform-node/test/fixtures/http-static-server/hello.txt +1 -0
  1690. package/repos/effect/packages/platform-node/test/fixtures/http-static-server/index.html +1 -0
  1691. package/repos/effect/packages/platform-node/test/fixtures/http-static-server/range.txt +1 -0
  1692. package/repos/effect/packages/platform-node/test/fixtures/http-static-server-outside.txt +1 -0
  1693. package/repos/effect/packages/platform-node/test/fixtures/mysql2-utils.ts +64 -0
  1694. package/repos/effect/packages/platform-node/test/fixtures/pg-utils.ts +39 -0
  1695. package/repos/effect/packages/platform-node/test/fixtures/rpc-e2e.ts +149 -0
  1696. package/repos/effect/packages/platform-node/test/fixtures/rpc-schemas.ts +175 -0
  1697. package/repos/effect/packages/platform-node/test/fixtures/text.txt +1 -0
  1698. package/repos/effect/packages/platform-node/tsconfig.json +12 -0
  1699. package/repos/effect/packages/platform-node/vitest.config.ts +6 -0
  1700. package/repos/effect/packages/platform-node-shared/CHANGELOG.md +617 -0
  1701. package/repos/effect/packages/platform-node-shared/LICENSE +21 -0
  1702. package/repos/effect/packages/platform-node-shared/README.md +7 -0
  1703. package/repos/effect/packages/platform-node-shared/docgen.json +38 -0
  1704. package/repos/effect/packages/platform-node-shared/package.json +76 -0
  1705. package/repos/effect/packages/platform-node-shared/src/NodeChildProcessSpawner.ts +713 -0
  1706. package/repos/effect/packages/platform-node-shared/src/NodeClusterSocket.ts +70 -0
  1707. package/repos/effect/packages/platform-node-shared/src/NodeCrypto.ts +60 -0
  1708. package/repos/effect/packages/platform-node-shared/src/NodeFileSystem.ts +652 -0
  1709. package/repos/effect/packages/platform-node-shared/src/NodePath.ts +80 -0
  1710. package/repos/effect/packages/platform-node-shared/src/NodeRuntime.ts +59 -0
  1711. package/repos/effect/packages/platform-node-shared/src/NodeSink.ts +116 -0
  1712. package/repos/effect/packages/platform-node-shared/src/NodeSocket.ts +269 -0
  1713. package/repos/effect/packages/platform-node-shared/src/NodeSocketServer.ts +301 -0
  1714. package/repos/effect/packages/platform-node-shared/src/NodeStdio.ts +67 -0
  1715. package/repos/effect/packages/platform-node-shared/src/NodeStream.ts +445 -0
  1716. package/repos/effect/packages/platform-node-shared/src/NodeTerminal.ts +129 -0
  1717. package/repos/effect/packages/platform-node-shared/src/index.ts +65 -0
  1718. package/repos/effect/packages/platform-node-shared/src/internal/utils.ts +51 -0
  1719. package/repos/effect/packages/platform-node-shared/test/NodeChildProcessSpawner.test.ts +1069 -0
  1720. package/repos/effect/packages/platform-node-shared/test/NodeFileSystem.test.ts +214 -0
  1721. package/repos/effect/packages/platform-node-shared/test/NodeSink.test.ts +153 -0
  1722. package/repos/effect/packages/platform-node-shared/test/NodeStream.test.ts +173 -0
  1723. package/repos/effect/packages/platform-node-shared/test/fixtures/bash/no-permissions.sh +3 -0
  1724. package/repos/effect/packages/platform-node-shared/test/fixtures/bash/parent-exits-early.sh +31 -0
  1725. package/repos/effect/packages/platform-node-shared/test/fixtures/bash/spawn-children.sh +32 -0
  1726. package/repos/effect/packages/platform-node-shared/test/fixtures/config/SHOUTING +1 -0
  1727. package/repos/effect/packages/platform-node-shared/test/fixtures/config/integer +1 -0
  1728. package/repos/effect/packages/platform-node-shared/test/fixtures/config/nested/config +1 -0
  1729. package/repos/effect/packages/platform-node-shared/test/fixtures/config/secret +1 -0
  1730. package/repos/effect/packages/platform-node-shared/test/fixtures/helloworld.tar.gz +0 -0
  1731. package/repos/effect/packages/platform-node-shared/test/fixtures/text.txt +1 -0
  1732. package/repos/effect/packages/platform-node-shared/tsconfig.json +11 -0
  1733. package/repos/effect/packages/platform-node-shared/vitest.config.ts +6 -0
  1734. package/repos/effect/packages/sql/clickhouse/CHANGELOG.md +681 -0
  1735. package/repos/effect/packages/sql/clickhouse/LICENSE +21 -0
  1736. package/repos/effect/packages/sql/clickhouse/README.md +7 -0
  1737. package/repos/effect/packages/sql/clickhouse/docgen.json +24 -0
  1738. package/repos/effect/packages/sql/clickhouse/package.json +72 -0
  1739. package/repos/effect/packages/sql/clickhouse/src/ClickhouseClient.ts +546 -0
  1740. package/repos/effect/packages/sql/clickhouse/src/ClickhouseMigrator.ts +51 -0
  1741. package/repos/effect/packages/sql/clickhouse/src/index.ts +15 -0
  1742. package/repos/effect/packages/sql/clickhouse/test/Client.test.ts +6 -0
  1743. package/repos/effect/packages/sql/clickhouse/test/SqlErrorClassification.test.ts +75 -0
  1744. package/repos/effect/packages/sql/clickhouse/tsconfig.json +12 -0
  1745. package/repos/effect/packages/sql/clickhouse/vitest.config.ts +6 -0
  1746. package/repos/effect/packages/sql/d1/CHANGELOG.md +597 -0
  1747. package/repos/effect/packages/sql/d1/LICENSE +21 -0
  1748. package/repos/effect/packages/sql/d1/README.md +7 -0
  1749. package/repos/effect/packages/sql/d1/docgen.json +24 -0
  1750. package/repos/effect/packages/sql/d1/package.json +75 -0
  1751. package/repos/effect/packages/sql/d1/src/D1Client.ts +249 -0
  1752. package/repos/effect/packages/sql/d1/src/index.ts +10 -0
  1753. package/repos/effect/packages/sql/d1/test/Client.test.ts +65 -0
  1754. package/repos/effect/packages/sql/d1/test/Resolver.test.ts +176 -0
  1755. package/repos/effect/packages/sql/d1/test/utils.ts +38 -0
  1756. package/repos/effect/packages/sql/d1/tsconfig.json +8 -0
  1757. package/repos/effect/packages/sql/d1/vitest.config.ts +6 -0
  1758. package/repos/effect/packages/sql/libsql/CHANGELOG.md +601 -0
  1759. package/repos/effect/packages/sql/libsql/LICENSE +21 -0
  1760. package/repos/effect/packages/sql/libsql/README.md +7 -0
  1761. package/repos/effect/packages/sql/libsql/docgen.json +24 -0
  1762. package/repos/effect/packages/sql/libsql/package.json +73 -0
  1763. package/repos/effect/packages/sql/libsql/src/LibsqlClient.ts +381 -0
  1764. package/repos/effect/packages/sql/libsql/src/LibsqlMigrator.ts +46 -0
  1765. package/repos/effect/packages/sql/libsql/src/index.ts +15 -0
  1766. package/repos/effect/packages/sql/libsql/test/Client.test.ts +106 -0
  1767. package/repos/effect/packages/sql/libsql/test/Resolver.test.ts +177 -0
  1768. package/repos/effect/packages/sql/libsql/test/util.ts +54 -0
  1769. package/repos/effect/packages/sql/libsql/tsconfig.json +9 -0
  1770. package/repos/effect/packages/sql/libsql/vitest.config.ts +6 -0
  1771. package/repos/effect/packages/sql/mssql/CHANGELOG.md +601 -0
  1772. package/repos/effect/packages/sql/mssql/LICENSE +21 -0
  1773. package/repos/effect/packages/sql/mssql/README.md +7 -0
  1774. package/repos/effect/packages/sql/mssql/docgen.json +24 -0
  1775. package/repos/effect/packages/sql/mssql/package.json +70 -0
  1776. package/repos/effect/packages/sql/mssql/src/MssqlClient.ts +732 -0
  1777. package/repos/effect/packages/sql/mssql/src/MssqlMigrator.ts +45 -0
  1778. package/repos/effect/packages/sql/mssql/src/Parameter.ts +64 -0
  1779. package/repos/effect/packages/sql/mssql/src/Procedure.ts +213 -0
  1780. package/repos/effect/packages/sql/mssql/src/index.ts +32 -0
  1781. package/repos/effect/packages/sql/mssql/test/Client.test.ts +91 -0
  1782. package/repos/effect/packages/sql/mssql/test/SqlErrorClassification.test.ts +206 -0
  1783. package/repos/effect/packages/sql/mssql/tsconfig.json +8 -0
  1784. package/repos/effect/packages/sql/mssql/vitest.config.ts +6 -0
  1785. package/repos/effect/packages/sql/mysql2/CHANGELOG.md +603 -0
  1786. package/repos/effect/packages/sql/mysql2/LICENSE +21 -0
  1787. package/repos/effect/packages/sql/mysql2/README.md +7 -0
  1788. package/repos/effect/packages/sql/mysql2/docgen.json +24 -0
  1789. package/repos/effect/packages/sql/mysql2/package.json +71 -0
  1790. package/repos/effect/packages/sql/mysql2/src/MysqlClient.ts +517 -0
  1791. package/repos/effect/packages/sql/mysql2/src/MysqlMigrator.ts +102 -0
  1792. package/repos/effect/packages/sql/mysql2/src/index.ts +15 -0
  1793. package/repos/effect/packages/sql/mysql2/test/Client.test.ts +34 -0
  1794. package/repos/effect/packages/sql/mysql2/test/KeyValueStore.test.ts +16 -0
  1795. package/repos/effect/packages/sql/mysql2/test/Model.test.ts +227 -0
  1796. package/repos/effect/packages/sql/mysql2/test/MysqlClient.test.ts +35 -0
  1797. package/repos/effect/packages/sql/mysql2/test/Persistence.test.ts +22 -0
  1798. package/repos/effect/packages/sql/mysql2/test/SqlErrorClassification.test.ts +133 -0
  1799. package/repos/effect/packages/sql/mysql2/test/SqlEventLogServerUnencrypted.test.ts +7 -0
  1800. package/repos/effect/packages/sql/mysql2/test/utils.ts +64 -0
  1801. package/repos/effect/packages/sql/mysql2/tsconfig.json +9 -0
  1802. package/repos/effect/packages/sql/mysql2/vitest.config.ts +6 -0
  1803. package/repos/effect/packages/sql/pg/CHANGELOG.md +3432 -0
  1804. package/repos/effect/packages/sql/pg/LICENSE +21 -0
  1805. package/repos/effect/packages/sql/pg/README.md +7 -0
  1806. package/repos/effect/packages/sql/pg/docgen.json +24 -0
  1807. package/repos/effect/packages/sql/pg/package.json +77 -0
  1808. package/repos/effect/packages/sql/pg/src/PgClient.ts +947 -0
  1809. package/repos/effect/packages/sql/pg/src/PgMigrator.ts +120 -0
  1810. package/repos/effect/packages/sql/pg/src/index.ts +15 -0
  1811. package/repos/effect/packages/sql/pg/test/Client.test.ts +373 -0
  1812. package/repos/effect/packages/sql/pg/test/KeyValueStore.test.ts +16 -0
  1813. package/repos/effect/packages/sql/pg/test/Persistence.test.ts +20 -0
  1814. package/repos/effect/packages/sql/pg/test/SqlErrorClassification.test.ts +81 -0
  1815. package/repos/effect/packages/sql/pg/test/SqlEventLogServerUnencrypted.test.ts +7 -0
  1816. package/repos/effect/packages/sql/pg/test/TransactionAcquire.test.ts +52 -0
  1817. package/repos/effect/packages/sql/pg/test/utils.ts +49 -0
  1818. package/repos/effect/packages/sql/pg/tsconfig.json +9 -0
  1819. package/repos/effect/packages/sql/pg/vitest.config.ts +6 -0
  1820. package/repos/effect/packages/sql/pglite/CHANGELOG.md +198 -0
  1821. package/repos/effect/packages/sql/pglite/LICENSE +21 -0
  1822. package/repos/effect/packages/sql/pglite/README.md +7 -0
  1823. package/repos/effect/packages/sql/pglite/docgen.json +24 -0
  1824. package/repos/effect/packages/sql/pglite/package.json +74 -0
  1825. package/repos/effect/packages/sql/pglite/src/PgliteClient.ts +503 -0
  1826. package/repos/effect/packages/sql/pglite/src/PgliteMigrator.ts +44 -0
  1827. package/repos/effect/packages/sql/pglite/src/index.ts +15 -0
  1828. package/repos/effect/packages/sql/pglite/test/Client.test.ts +149 -0
  1829. package/repos/effect/packages/sql/pglite/test/Migrator.test.ts +45 -0
  1830. package/repos/effect/packages/sql/pglite/test/SqlErrorClassification.test.ts +56 -0
  1831. package/repos/effect/packages/sql/pglite/test/Transaction.test.ts +62 -0
  1832. package/repos/effect/packages/sql/pglite/tsconfig.json +8 -0
  1833. package/repos/effect/packages/sql/pglite/vitest.config.ts +6 -0
  1834. package/repos/effect/packages/sql/sqlite-bun/CHANGELOG.md +601 -0
  1835. package/repos/effect/packages/sql/sqlite-bun/LICENSE +21 -0
  1836. package/repos/effect/packages/sql/sqlite-bun/README.md +7 -0
  1837. package/repos/effect/packages/sql/sqlite-bun/docgen.json +24 -0
  1838. package/repos/effect/packages/sql/sqlite-bun/package.json +69 -0
  1839. package/repos/effect/packages/sql/sqlite-bun/src/SqliteClient.ts +262 -0
  1840. package/repos/effect/packages/sql/sqlite-bun/src/SqliteMigrator.ts +90 -0
  1841. package/repos/effect/packages/sql/sqlite-bun/src/index.ts +15 -0
  1842. package/repos/effect/packages/sql/sqlite-bun/test/Client.test.ts +6 -0
  1843. package/repos/effect/packages/sql/sqlite-bun/tsconfig.json +11 -0
  1844. package/repos/effect/packages/sql/sqlite-bun/vitest.config.ts +6 -0
  1845. package/repos/effect/packages/sql/sqlite-do/CHANGELOG.md +601 -0
  1846. package/repos/effect/packages/sql/sqlite-do/LICENSE +21 -0
  1847. package/repos/effect/packages/sql/sqlite-do/README.md +7 -0
  1848. package/repos/effect/packages/sql/sqlite-do/docgen.json +24 -0
  1849. package/repos/effect/packages/sql/sqlite-do/package.json +68 -0
  1850. package/repos/effect/packages/sql/sqlite-do/src/SqliteClient.ts +249 -0
  1851. package/repos/effect/packages/sql/sqlite-do/src/SqliteMigrator.ts +45 -0
  1852. package/repos/effect/packages/sql/sqlite-do/src/index.ts +15 -0
  1853. package/repos/effect/packages/sql/sqlite-do/test/Client.test.ts +24 -0
  1854. package/repos/effect/packages/sql/sqlite-do/tsconfig.json +8 -0
  1855. package/repos/effect/packages/sql/sqlite-do/vitest.config.ts +6 -0
  1856. package/repos/effect/packages/sql/sqlite-node/CHANGELOG.md +3415 -0
  1857. package/repos/effect/packages/sql/sqlite-node/LICENSE +21 -0
  1858. package/repos/effect/packages/sql/sqlite-node/README.md +7 -0
  1859. package/repos/effect/packages/sql/sqlite-node/docgen.json +24 -0
  1860. package/repos/effect/packages/sql/sqlite-node/package.json +72 -0
  1861. package/repos/effect/packages/sql/sqlite-node/src/SqliteClient.ts +312 -0
  1862. package/repos/effect/packages/sql/sqlite-node/src/SqliteMigrator.ts +90 -0
  1863. package/repos/effect/packages/sql/sqlite-node/src/index.ts +15 -0
  1864. package/repos/effect/packages/sql/sqlite-node/test/Client.test.ts +75 -0
  1865. package/repos/effect/packages/sql/sqlite-node/test/KeyValueStore.test.ts +29 -0
  1866. package/repos/effect/packages/sql/sqlite-node/test/Persistence.test.ts +109 -0
  1867. package/repos/effect/packages/sql/sqlite-node/test/Resolver.test.ts +183 -0
  1868. package/repos/effect/packages/sql/sqlite-node/test/SqlEventJournal.test.ts +84 -0
  1869. package/repos/effect/packages/sql/sqlite-node/test/SqlEventLogServerEncrypted.test.ts +249 -0
  1870. package/repos/effect/packages/sql/sqlite-node/test/SqlEventLogServerUnencrypted.test.ts +110 -0
  1871. package/repos/effect/packages/sql/sqlite-node/test/SqliteMigrator.test.ts +48 -0
  1872. package/repos/effect/packages/sql/sqlite-node/tsconfig.json +8 -0
  1873. package/repos/effect/packages/sql/sqlite-node/vitest.config.ts +6 -0
  1874. package/repos/effect/packages/sql/sqlite-react-native/CHANGELOG.md +601 -0
  1875. package/repos/effect/packages/sql/sqlite-react-native/LICENSE +21 -0
  1876. package/repos/effect/packages/sql/sqlite-react-native/README.md +7 -0
  1877. package/repos/effect/packages/sql/sqlite-react-native/docgen.json +24 -0
  1878. package/repos/effect/packages/sql/sqlite-react-native/package.json +69 -0
  1879. package/repos/effect/packages/sql/sqlite-react-native/src/SqliteClient.ts +354 -0
  1880. package/repos/effect/packages/sql/sqlite-react-native/src/SqliteMigrator.ts +55 -0
  1881. package/repos/effect/packages/sql/sqlite-react-native/src/index.ts +15 -0
  1882. package/repos/effect/packages/sql/sqlite-react-native/test/Client.test.ts +6 -0
  1883. package/repos/effect/packages/sql/sqlite-react-native/tsconfig.json +8 -0
  1884. package/repos/effect/packages/sql/sqlite-react-native/vitest.config.ts +6 -0
  1885. package/repos/effect/packages/sql/sqlite-wasm/CHANGELOG.md +601 -0
  1886. package/repos/effect/packages/sql/sqlite-wasm/LICENSE +21 -0
  1887. package/repos/effect/packages/sql/sqlite-wasm/README.md +7 -0
  1888. package/repos/effect/packages/sql/sqlite-wasm/docgen.json +24 -0
  1889. package/repos/effect/packages/sql/sqlite-wasm/package.json +69 -0
  1890. package/repos/effect/packages/sql/sqlite-wasm/src/OpfsWorker.ts +118 -0
  1891. package/repos/effect/packages/sql/sqlite-wasm/src/SqliteClient.ts +551 -0
  1892. package/repos/effect/packages/sql/sqlite-wasm/src/SqliteMigrator.ts +55 -0
  1893. package/repos/effect/packages/sql/sqlite-wasm/src/index.ts +14 -0
  1894. package/repos/effect/packages/sql/sqlite-wasm/src/internal/opfsWorker.ts +7 -0
  1895. package/repos/effect/packages/sql/sqlite-wasm/src/sqlite-wasm.d.ts +47 -0
  1896. package/repos/effect/packages/sql/sqlite-wasm/test/Client.test.ts +6 -0
  1897. package/repos/effect/packages/sql/sqlite-wasm/tsconfig.json +8 -0
  1898. package/repos/effect/packages/sql/sqlite-wasm/vitest.config.ts +6 -0
  1899. package/repos/effect/packages/tools/ai-codegen/codegen.schema.json +92 -0
  1900. package/repos/effect/packages/tools/ai-codegen/docgen.json +4 -0
  1901. package/repos/effect/packages/tools/ai-codegen/package.json +61 -0
  1902. package/repos/effect/packages/tools/ai-codegen/src/Config.ts +292 -0
  1903. package/repos/effect/packages/tools/ai-codegen/src/Discovery.ts +197 -0
  1904. package/repos/effect/packages/tools/ai-codegen/src/Generator.ts +183 -0
  1905. package/repos/effect/packages/tools/ai-codegen/src/Glob.ts +56 -0
  1906. package/repos/effect/packages/tools/ai-codegen/src/PostProcess.ts +157 -0
  1907. package/repos/effect/packages/tools/ai-codegen/src/SpecFetcher.ts +154 -0
  1908. package/repos/effect/packages/tools/ai-codegen/src/bin.ts +10 -0
  1909. package/repos/effect/packages/tools/ai-codegen/src/main.ts +237 -0
  1910. package/repos/effect/packages/tools/ai-codegen/tsconfig.json +15 -0
  1911. package/repos/effect/packages/tools/ai-docgen/docgen.json +4 -0
  1912. package/repos/effect/packages/tools/ai-docgen/package.json +60 -0
  1913. package/repos/effect/packages/tools/ai-docgen/src/Glob.ts +48 -0
  1914. package/repos/effect/packages/tools/ai-docgen/src/main.ts +186 -0
  1915. package/repos/effect/packages/tools/ai-docgen/tsconfig.json +14 -0
  1916. package/repos/effect/packages/tools/bundle/docgen.json +4 -0
  1917. package/repos/effect/packages/tools/bundle/fixtures/basic.ts +3 -0
  1918. package/repos/effect/packages/tools/bundle/fixtures/batching.ts +25 -0
  1919. package/repos/effect/packages/tools/bundle/fixtures/brand.ts +5 -0
  1920. package/repos/effect/packages/tools/bundle/fixtures/cache.ts +10 -0
  1921. package/repos/effect/packages/tools/bundle/fixtures/config.ts +13 -0
  1922. package/repos/effect/packages/tools/bundle/fixtures/differ.ts +9 -0
  1923. package/repos/effect/packages/tools/bundle/fixtures/http-client.ts +12 -0
  1924. package/repos/effect/packages/tools/bundle/fixtures/logger.ts +5 -0
  1925. package/repos/effect/packages/tools/bundle/fixtures/metric.ts +13 -0
  1926. package/repos/effect/packages/tools/bundle/fixtures/optic.ts +6 -0
  1927. package/repos/effect/packages/tools/bundle/fixtures/pubsub.ts +22 -0
  1928. package/repos/effect/packages/tools/bundle/fixtures/queue.ts +18 -0
  1929. package/repos/effect/packages/tools/bundle/fixtures/schedule.ts +9 -0
  1930. package/repos/effect/packages/tools/bundle/fixtures/schema-fromJsonSchemaDocument.ts +16 -0
  1931. package/repos/effect/packages/tools/bundle/fixtures/schema-representation-roundtrip.ts +16 -0
  1932. package/repos/effect/packages/tools/bundle/fixtures/schema-string-transformation.ts +20 -0
  1933. package/repos/effect/packages/tools/bundle/fixtures/schema-string.ts +8 -0
  1934. package/repos/effect/packages/tools/bundle/fixtures/schema-template-literal.ts +8 -0
  1935. package/repos/effect/packages/tools/bundle/fixtures/schema-toArbitraryLazy.ts +9 -0
  1936. package/repos/effect/packages/tools/bundle/fixtures/schema-toCodeDocument.ts +12 -0
  1937. package/repos/effect/packages/tools/bundle/fixtures/schema-toCodecJson.ts +9 -0
  1938. package/repos/effect/packages/tools/bundle/fixtures/schema-toEquivalence.ts +9 -0
  1939. package/repos/effect/packages/tools/bundle/fixtures/schema-toFormatter.ts +9 -0
  1940. package/repos/effect/packages/tools/bundle/fixtures/schema-toJsonSchemaDocument.ts +9 -0
  1941. package/repos/effect/packages/tools/bundle/fixtures/schema-toRepresentation.ts +9 -0
  1942. package/repos/effect/packages/tools/bundle/fixtures/schema.ts +12 -0
  1943. package/repos/effect/packages/tools/bundle/fixtures/stm.ts +21 -0
  1944. package/repos/effect/packages/tools/bundle/fixtures/stream.ts +7 -0
  1945. package/repos/effect/packages/tools/bundle/package.json +52 -0
  1946. package/repos/effect/packages/tools/bundle/src/Cli.ts +104 -0
  1947. package/repos/effect/packages/tools/bundle/src/Fixtures.ts +51 -0
  1948. package/repos/effect/packages/tools/bundle/src/Plugins.ts +131 -0
  1949. package/repos/effect/packages/tools/bundle/src/Reporter.ts +200 -0
  1950. package/repos/effect/packages/tools/bundle/src/Rollup.ts +179 -0
  1951. package/repos/effect/packages/tools/bundle/src/bin.ts +23 -0
  1952. package/repos/effect/packages/tools/bundle/tsconfig.fixtures.json +13 -0
  1953. package/repos/effect/packages/tools/bundle/tsconfig.json +9 -0
  1954. package/repos/effect/packages/tools/bundle/tsconfig.src.json +13 -0
  1955. package/repos/effect/packages/tools/jsdocs/docgen.json +4 -0
  1956. package/repos/effect/packages/tools/jsdocs/package.json +64 -0
  1957. package/repos/effect/packages/tools/jsdocs/src/Jsdocs.ts +3303 -0
  1958. package/repos/effect/packages/tools/jsdocs/src/bin.ts +23 -0
  1959. package/repos/effect/packages/tools/jsdocs/test/jsdocs.test.ts +979 -0
  1960. package/repos/effect/packages/tools/jsdocs/tsconfig.json +8 -0
  1961. package/repos/effect/packages/tools/jsdocs/vitest.config.ts +6 -0
  1962. package/repos/effect/packages/tools/openapi-generator/CHANGELOG.md +691 -0
  1963. package/repos/effect/packages/tools/openapi-generator/LICENSE +21 -0
  1964. package/repos/effect/packages/tools/openapi-generator/docgen.json +4 -0
  1965. package/repos/effect/packages/tools/openapi-generator/package.json +78 -0
  1966. package/repos/effect/packages/tools/openapi-generator/src/HttpApiTransformer.ts +552 -0
  1967. package/repos/effect/packages/tools/openapi-generator/src/JsonSchemaGenerator.ts +319 -0
  1968. package/repos/effect/packages/tools/openapi-generator/src/OpenApiGenerator.ts +1201 -0
  1969. package/repos/effect/packages/tools/openapi-generator/src/OpenApiPatch.ts +539 -0
  1970. package/repos/effect/packages/tools/openapi-generator/src/OpenApiTransformer.ts +1019 -0
  1971. package/repos/effect/packages/tools/openapi-generator/src/ParsedOperation.ts +277 -0
  1972. package/repos/effect/packages/tools/openapi-generator/src/Utils.ts +111 -0
  1973. package/repos/effect/packages/tools/openapi-generator/src/bin.ts +10 -0
  1974. package/repos/effect/packages/tools/openapi-generator/src/main.ts +116 -0
  1975. package/repos/effect/packages/tools/openapi-generator/test/JsonSchemaGenerator.test.ts +173 -0
  1976. package/repos/effect/packages/tools/openapi-generator/test/OpenApiGenerator.test.ts +2130 -0
  1977. package/repos/effect/packages/tools/openapi-generator/test/OpenApiGeneratorCli.test.ts +147 -0
  1978. package/repos/effect/packages/tools/openapi-generator/test/OpenApiPatch.test.ts +380 -0
  1979. package/repos/effect/packages/tools/openapi-generator/test/Utils.test.ts +33 -0
  1980. package/repos/effect/packages/tools/openapi-generator/test/fixtures/cli-basic-spec.json +35 -0
  1981. package/repos/effect/packages/tools/openapi-generator/test/fixtures/cli-warning-spec.json +57 -0
  1982. package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/invalid-op.json +7 -0
  1983. package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/missing-path.json +6 -0
  1984. package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/missing-value.json +6 -0
  1985. package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/valid-add.json +8 -0
  1986. package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/valid-multiple.json +17 -0
  1987. package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/valid-patch.yaml +6 -0
  1988. package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/valid-remove.json +6 -0
  1989. package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/valid-replace.json +7 -0
  1990. package/repos/effect/packages/tools/openapi-generator/tsconfig.json +9 -0
  1991. package/repos/effect/packages/tools/openapi-generator/vitest.config.ts +6 -0
  1992. package/repos/effect/packages/tools/oxc/docgen.json +4 -0
  1993. package/repos/effect/packages/tools/oxc/oxlintrc.json +83 -0
  1994. package/repos/effect/packages/tools/oxc/package.json +72 -0
  1995. package/repos/effect/packages/tools/oxc/src/oxlint/index.ts +18 -0
  1996. package/repos/effect/packages/tools/oxc/src/oxlint/rules/jsdocs.ts +108 -0
  1997. package/repos/effect/packages/tools/oxc/src/oxlint/rules/no-bigint-literals.ts +25 -0
  1998. package/repos/effect/packages/tools/oxc/src/oxlint/rules/no-import-from-barrel-package.ts +144 -0
  1999. package/repos/effect/packages/tools/oxc/src/oxlint/rules/no-js-extension-imports.ts +73 -0
  2000. package/repos/effect/packages/tools/oxc/src/oxlint/rules/no-opaque-instance-fields.ts +92 -0
  2001. package/repos/effect/packages/tools/oxc/test/jsdocs.test.ts +75 -0
  2002. package/repos/effect/packages/tools/oxc/test/no-import-from-barrel-package.test.ts +182 -0
  2003. package/repos/effect/packages/tools/oxc/test/no-js-extension-imports.test.ts +120 -0
  2004. package/repos/effect/packages/tools/oxc/test/no-opaque-instance-fields.test.ts +276 -0
  2005. package/repos/effect/packages/tools/oxc/test/utils.ts +61 -0
  2006. package/repos/effect/packages/tools/oxc/tsconfig.json +8 -0
  2007. package/repos/effect/packages/tools/oxc/vitest.config.ts +6 -0
  2008. package/repos/effect/packages/tools/utils/docgen.json +4 -0
  2009. package/repos/effect/packages/tools/utils/package.json +59 -0
  2010. package/repos/effect/packages/tools/utils/src/Codegen.ts +214 -0
  2011. package/repos/effect/packages/tools/utils/src/Glob.ts +61 -0
  2012. package/repos/effect/packages/tools/utils/src/bin.ts +16 -0
  2013. package/repos/effect/packages/tools/utils/src/commands/codegen.ts +44 -0
  2014. package/repos/effect/packages/tools/utils/tsconfig.json +9 -0
  2015. package/repos/effect/packages/vitest/CHANGELOG.md +601 -0
  2016. package/repos/effect/packages/vitest/LICENSE +21 -0
  2017. package/repos/effect/packages/vitest/README.md +320 -0
  2018. package/repos/effect/packages/vitest/docgen.json +24 -0
  2019. package/repos/effect/packages/vitest/package.json +60 -0
  2020. package/repos/effect/packages/vitest/src/index.ts +259 -0
  2021. package/repos/effect/packages/vitest/src/internal/internal.ts +374 -0
  2022. package/repos/effect/packages/vitest/src/utils.ts +321 -0
  2023. package/repos/effect/packages/vitest/test/index.test.ts +222 -0
  2024. package/repos/effect/packages/vitest/test/isolation.test.ts +105 -0
  2025. package/repos/effect/packages/vitest/test/nested-isolation.test.ts +212 -0
  2026. package/repos/effect/packages/vitest/tsconfig.json +11 -0
  2027. package/repos/effect/packages/vitest/typetest/index.tst.ts +56 -0
  2028. package/repos/effect/packages/vitest/vitest.config.ts +6 -0
  2029. package/repos/effect/patches/@changesets__assemble-release-plan.patch +26 -0
  2030. package/repos/effect/patches/@changesets__get-github-info.patch +44 -0
  2031. package/repos/effect/pnpm-lock.yaml +13483 -0
  2032. package/repos/effect/pnpm-workspace.yaml +10 -0
  2033. package/repos/effect/scripts/bundle-compare.sh +42 -0
  2034. package/repos/effect/scripts/check-cookbook-schedule.ts +390 -0
  2035. package/repos/effect/scripts/circular.mjs +26 -0
  2036. package/repos/effect/scripts/clean.mjs +19 -0
  2037. package/repos/effect/scripts/codemod.mjs +22 -0
  2038. package/repos/effect/scripts/codemods/jsdoc.ts +79 -0
  2039. package/repos/effect/scripts/docs.mjs +64 -0
  2040. package/repos/effect/scripts/package-scalar.mjs +14 -0
  2041. package/repos/effect/scripts/package-swagger.mjs +23 -0
  2042. package/repos/effect/scripts/package.json +22 -0
  2043. package/repos/effect/scripts/tsconfig.json +18 -0
  2044. package/repos/effect/scripts/version.mjs +9 -0
  2045. package/repos/effect/scripts/version.template.txt +2 -0
  2046. package/repos/effect/scripts/worktree-setup.sh +27 -0
  2047. package/repos/effect/stats.txt +30 -0
  2048. package/repos/effect/tsconfig.base.json +46 -0
  2049. package/repos/effect/tsconfig.json +128 -0
  2050. package/repos/effect/tsconfig.packages.json +39 -0
  2051. package/repos/effect/tstyche.json +7 -0
  2052. package/repos/effect/vitest.config.ts +31 -0
  2053. package/repos/effect/vitest.setup.ts +4 -0
  2054. package/repos/effect/vitest.shared.ts +61 -0
  2055. package/repos/effect.subtree.json +16 -0
@@ -0,0 +1,2664 @@
1
+ /**
2
+ * Models a value that may be present or absent.
3
+ *
4
+ * An `Option<A>` is `Some<A>` when a value is available and `None` when it is
5
+ * not. This lets code handle missing values explicitly instead of relying on
6
+ * `null` or `undefined`. The module includes helpers for creating, checking,
7
+ * transforming, combining, and extracting optional values, plus conversions to
8
+ * and from common nullable or result-like shapes. It also includes `Option.gen`
9
+ * for writing small generator-based computations that stop at the first `None`.
10
+ *
11
+ * @since 2.0.0
12
+ */
13
+ import * as Combiner from "./Combiner.ts"
14
+ import * as Equal from "./Equal.ts"
15
+ import * as Equivalence from "./Equivalence.ts"
16
+ import type * as Filter from "./Filter.ts"
17
+ import type { LazyArg } from "./Function.ts"
18
+ import { constNull, constUndefined, dual, identity } from "./Function.ts"
19
+ import type { TypeLambda } from "./HKT.ts"
20
+ import type { Inspectable } from "./Inspectable.ts"
21
+ import * as doNotation from "./internal/doNotation.ts"
22
+ import * as option from "./internal/option.ts"
23
+ import * as result from "./internal/result.ts"
24
+ import type { Order } from "./Order.ts"
25
+ import * as order from "./Order.ts"
26
+ import type { Pipeable } from "./Pipeable.ts"
27
+ import type { Predicate, Refinement } from "./Predicate.ts"
28
+ import { isFunction } from "./Predicate.ts"
29
+ import * as Reducer from "./Reducer.ts"
30
+ import type { Result } from "./Result.ts"
31
+ import type { Covariant, NoInfer, NotFunction } from "./Types.ts"
32
+ import type * as Unify from "./Unify.ts"
33
+ import type * as Gen from "./Utils.ts"
34
+
35
+ const TypeId = "~effect/data/Option"
36
+
37
+ /**
38
+ * The `Option` data type represents optional values. An `Option<A>` is either
39
+ * `Some<A>`, containing a value of type `A`, or `None`, representing absence.
40
+ *
41
+ * **When to use**
42
+ *
43
+ * Use to represent initial values that may not yet exist
44
+ * - Returning from partial functions (not defined for all inputs)
45
+ * - Managing optional fields in data structures
46
+ *
47
+ * @see {@link some} for creating a `Some`
48
+ * @see {@link none} for creating a `None`
49
+ * @see {@link match} for pattern matching
50
+ *
51
+ * @category models
52
+ * @since 2.0.0
53
+ */
54
+ export type Option<A> = None<A> | Some<A>
55
+
56
+ /**
57
+ * Represents the absence of a value within an {@link Option}.
58
+ *
59
+ * **When to use**
60
+ *
61
+ * Use as a type guard target when narrowing via {@link isNone}
62
+ *
63
+ * **Details**
64
+ *
65
+ * - `_tag` is always `"None"`
66
+ * - Implements `Pipeable`, `Inspectable`, and structural equality
67
+ *
68
+ * @see {@link isNone} to check if an `Option` is `None`
69
+ * @see {@link none} to construct a `None`
70
+ *
71
+ * @category models
72
+ * @since 2.0.0
73
+ */
74
+ export interface None<out A> extends Pipeable, Inspectable {
75
+ readonly _tag: "None"
76
+ readonly _op: "None"
77
+ readonly valueOrUndefined: undefined
78
+ readonly [TypeId]: {
79
+ readonly _A: Covariant<A>
80
+ }
81
+ [Symbol.iterator](): OptionIterator<Option<A>>
82
+ [Unify.typeSymbol]?: unknown
83
+ [Unify.unifySymbol]?: OptionUnify<this>
84
+ [Unify.ignoreSymbol]?: OptionUnifyIgnore
85
+ }
86
+
87
+ /**
88
+ * Iterator protocol used to yield an `Option` inside {@link gen}, returning the
89
+ * contained value type back to the generator.
90
+ *
91
+ * **When to use**
92
+ *
93
+ * Use when defining or typing `[Symbol.iterator]()` for `Option` values so
94
+ * `yield*` can pass the contained value type back into `Option.gen`.
95
+ *
96
+ * @see {@link gen} for writing generator-based `Option` code that consumes this iterator protocol
97
+ *
98
+ * @category generators
99
+ * @since 4.0.0
100
+ */
101
+ export interface OptionIterator<T extends Option<any>> {
102
+ next(
103
+ ...args: ReadonlyArray<any>
104
+ ): IteratorResult<T, Option.Value<T>>
105
+ }
106
+
107
+ /**
108
+ * Represents the presence of a value within an {@link Option}.
109
+ *
110
+ * **When to use**
111
+ *
112
+ * Use as a type guard target when narrowing via {@link isSome}
113
+ * - Access the inner value via `.value`
114
+ *
115
+ * **Details**
116
+ *
117
+ * - `_tag` is always `"Some"`
118
+ * - `.value` holds the contained value of type `A`
119
+ * - Implements `Pipeable`, `Inspectable`, and structural equality
120
+ *
121
+ * @see {@link isSome} to check if an `Option` is `Some`
122
+ * @see {@link some} to construct a `Some`
123
+ *
124
+ * @category models
125
+ * @since 2.0.0
126
+ */
127
+ export interface Some<out A> extends Pipeable, Inspectable {
128
+ readonly _tag: "Some"
129
+ readonly _op: "Some"
130
+ readonly value: A
131
+ readonly valueOrUndefined: A
132
+ readonly [TypeId]: {
133
+ readonly _A: Covariant<A>
134
+ }
135
+ [Symbol.iterator](): OptionIterator<Option<A>>
136
+ [Unify.typeSymbol]?: unknown
137
+ [Unify.unifySymbol]?: OptionUnify<this>
138
+ [Unify.ignoreSymbol]?: OptionUnifyIgnore
139
+ }
140
+
141
+ /**
142
+ * Type-level unification support for `Option` values.
143
+ *
144
+ * **When to use**
145
+ *
146
+ * Use when extending Effect's type-level unification support for `Option`.
147
+ *
148
+ * **Details**
149
+ *
150
+ * This is used by Effect's `Unify` machinery to preserve the contained value
151
+ * type when generic code returns or combines `Option` values. Users normally
152
+ * do not need to reference this interface directly.
153
+ *
154
+ * @category models
155
+ * @since 2.0.0
156
+ */
157
+ export interface OptionUnify<A extends { [Unify.typeSymbol]?: any }> {
158
+ Option?: () => A[Unify.typeSymbol] extends Option<infer A0> | infer _ ? Option<A0> : never
159
+ }
160
+
161
+ /**
162
+ * Namespace containing utility types for `Option`.
163
+ *
164
+ * **When to use**
165
+ *
166
+ * Use to access type-level helpers associated with `Option`.
167
+ *
168
+ * @since 2.0.0
169
+ */
170
+ export declare namespace Option {
171
+ /**
172
+ * Extracts the type of the value contained in an `Option`.
173
+ *
174
+ * **When to use**
175
+ *
176
+ * Use to infer the inner value type from an existing `Option` type.
177
+ *
178
+ * **Example** (Extracting the value type)
179
+ *
180
+ * ```ts
181
+ * import type { Option } from "effect"
182
+ *
183
+ * declare const myOption: Option.Option<string>
184
+ *
185
+ * // ┌─── string
186
+ * // ▼
187
+ * type MyType = Option.Option.Value<typeof myOption>
188
+ * ```
189
+ *
190
+ * @category Type-level Utils
191
+ * @since 2.0.0
192
+ */
193
+ export type Value<T extends Option<any>> = [T] extends [Option<infer _A>] ? _A : never
194
+ }
195
+
196
+ /**
197
+ * Marker interface used by Effect's `Unify` machinery for `Option` values.
198
+ *
199
+ * **When to use**
200
+ *
201
+ * Use when marking generic code so `Option` unification should be ignored.
202
+ *
203
+ * **Details**
204
+ *
205
+ * This supports type-level unification behavior for `Option`. Users normally
206
+ * do not need to reference this interface directly.
207
+ *
208
+ * @category models
209
+ * @since 2.0.0
210
+ */
211
+ export interface OptionUnifyIgnore {}
212
+
213
+ /**
214
+ * Type lambda interface for higher-kinded type encodings with `Option`.
215
+ *
216
+ * **When to use**
217
+ *
218
+ * Use when defining higher-kinded abstractions that must accept optional-value
219
+ * types as one of their type-lambda inputs.
220
+ *
221
+ * @category type lambdas
222
+ * @since 2.0.0
223
+ */
224
+ export interface OptionTypeLambda extends TypeLambda {
225
+ readonly type: Option<this["Target"]>
226
+ }
227
+
228
+ /**
229
+ * Creates an `Option` representing the absence of a value.
230
+ *
231
+ * **When to use**
232
+ *
233
+ * Use to represent a missing or uninitialized value, such as returning "no
234
+ * result" from a function.
235
+ *
236
+ * **Details**
237
+ *
238
+ * - Returns `Option<never>`, which is a subtype of `Option<A>` for any `A`
239
+ * - Always returns the same singleton instance
240
+ *
241
+ * **Example** (Creating an empty Option)
242
+ *
243
+ * ```ts
244
+ * import { Option } from "effect"
245
+ *
246
+ * // ┌─── Option<never>
247
+ * // ▼
248
+ * const noValue = Option.none()
249
+ *
250
+ * console.log(noValue)
251
+ * // Output: { _id: 'Option', _tag: 'None' }
252
+ * ```
253
+ *
254
+ * @see {@link some} for the opposite operation.
255
+ *
256
+ * @category constructors
257
+ * @since 2.0.0
258
+ */
259
+ export const none = <A = never>(): Option<A> => option.none
260
+
261
+ /**
262
+ * Wraps the given value into an `Option` to represent its presence.
263
+ *
264
+ * **When to use**
265
+ *
266
+ * Use to wrap a known present value as `Option`
267
+ * - Returning a successful result from a partial function
268
+ *
269
+ * **Details**
270
+ *
271
+ * - Always returns `Some<A>`
272
+ * - Does not filter `null` or `undefined`; use {@link fromNullishOr} for that
273
+ *
274
+ * **Example** (Wrapping a value)
275
+ *
276
+ * ```ts
277
+ * import { Option } from "effect"
278
+ *
279
+ * // ┌─── Option<number>
280
+ * // ▼
281
+ * const value = Option.some(1)
282
+ *
283
+ * console.log(value)
284
+ * // Output: { _id: 'Option', _tag: 'Some', value: 1 }
285
+ * ```
286
+ *
287
+ * @see {@link none} for the opposite operation.
288
+ *
289
+ * @category constructors
290
+ * @since 2.0.0
291
+ */
292
+ export const some: <A>(value: A) => Option<A> = option.some
293
+
294
+ /**
295
+ * Determines whether the given value is an `Option`.
296
+ *
297
+ * **When to use**
298
+ *
299
+ * Use to validate unknown values at runtime boundaries, such as type-narrowing
300
+ * in union types.
301
+ *
302
+ * **Details**
303
+ *
304
+ * - Returns `true` for both `Some` and `None` instances
305
+ * - Acts as a type guard, narrowing the input to `Option<unknown>`
306
+ *
307
+ * **Example** (Checking if a value is an Option)
308
+ *
309
+ * ```ts
310
+ * import { Option } from "effect"
311
+ *
312
+ * console.log(Option.isOption(Option.some(1)))
313
+ * // Output: true
314
+ *
315
+ * console.log(Option.isOption(Option.none()))
316
+ * // Output: true
317
+ *
318
+ * console.log(Option.isOption({}))
319
+ * // Output: false
320
+ * ```
321
+ *
322
+ * @see {@link isNone} to check for `None` specifically
323
+ * @see {@link isSome} to check for `Some` specifically
324
+ *
325
+ * @category guards
326
+ * @since 2.0.0
327
+ */
328
+ export const isOption: (input: unknown) => input is Option<unknown> = option.isOption
329
+
330
+ /**
331
+ * Checks whether an `Option` is `None` (absent).
332
+ *
333
+ * **When to use**
334
+ *
335
+ * Use when you need to branch on an absent `Option` before accessing `.value`.
336
+ *
337
+ * **Details**
338
+ *
339
+ * - Acts as a type guard, narrowing to `None<A>`
340
+ *
341
+ * **Example** (Checking for None)
342
+ *
343
+ * ```ts
344
+ * import { Option } from "effect"
345
+ *
346
+ * console.log(Option.isNone(Option.some(1)))
347
+ * // Output: false
348
+ *
349
+ * console.log(Option.isNone(Option.none()))
350
+ * // Output: true
351
+ * ```
352
+ *
353
+ * @see {@link isSome} for the opposite check.
354
+ *
355
+ * @category guards
356
+ * @since 2.0.0
357
+ */
358
+ export const isNone: <A>(self: Option<A>) => self is None<A> = option.isNone
359
+
360
+ /**
361
+ * Checks whether an `Option` contains a value (`Some`).
362
+ *
363
+ * **When to use**
364
+ *
365
+ * Use when you need to branch on a present `Option` before accessing `.value`.
366
+ *
367
+ * **Details**
368
+ *
369
+ * - Acts as a type guard, narrowing to `Some<A>`
370
+ *
371
+ * **Example** (Checking for Some)
372
+ *
373
+ * ```ts
374
+ * import { Option } from "effect"
375
+ *
376
+ * console.log(Option.isSome(Option.some(1)))
377
+ * // Output: true
378
+ *
379
+ * console.log(Option.isSome(Option.none()))
380
+ * // Output: false
381
+ * ```
382
+ *
383
+ * @see {@link isNone} for the opposite check.
384
+ *
385
+ * @category guards
386
+ * @since 2.0.0
387
+ */
388
+ export const isSome: <A>(self: Option<A>) => self is Some<A> = option.isSome
389
+
390
+ /**
391
+ * Pattern-matches on an `Option`, handling both `None` and `Some` cases.
392
+ *
393
+ * **When to use**
394
+ *
395
+ * Use when you need to handle both `Some` and `None` in one expression and
396
+ * transform an `Option` into a plain value.
397
+ *
398
+ * **Details**
399
+ *
400
+ * - If `None`, calls `onNone` and returns its result
401
+ * - If `Some`, calls `onSome` with the value and returns its result
402
+ * - Supports the `dual` API (data-last and data-first)
403
+ *
404
+ * **Example** (Matching on an Option)
405
+ *
406
+ * ```ts
407
+ * import { Option } from "effect"
408
+ *
409
+ * const message = Option.match(Option.some(1), {
410
+ * onNone: () => "Option is empty",
411
+ * onSome: (value) => `Option has a value: ${value}`
412
+ * })
413
+ *
414
+ * console.log(message)
415
+ * // Output: "Option has a value: 1"
416
+ * ```
417
+ *
418
+ * @see {@link getOrElse} for unwrapping with a default
419
+ *
420
+ * @category pattern matching
421
+ * @since 2.0.0
422
+ */
423
+ export const match: {
424
+ <B, A, C = B>(options: {
425
+ readonly onNone: LazyArg<B>
426
+ readonly onSome: (a: A) => C
427
+ }): (self: Option<A>) => B | C
428
+ <A, B, C = B>(self: Option<A>, options: {
429
+ readonly onNone: LazyArg<B>
430
+ readonly onSome: (a: A) => C
431
+ }): B | C
432
+ } = dual(
433
+ 2,
434
+ <A, B, C = B>(self: Option<A>, { onNone, onSome }: {
435
+ readonly onNone: LazyArg<B>
436
+ readonly onSome: (a: A) => C
437
+ }): B | C => isNone(self) ? onNone() : onSome(self.value)
438
+ )
439
+
440
+ /**
441
+ * Converts an `Option`-returning function into a type guard (refinement).
442
+ *
443
+ * **When to use**
444
+ *
445
+ * Use when you need to turn an `Option`-returning parser into a type-narrowing
446
+ * predicate, such as for `Array.prototype.filter`.
447
+ *
448
+ * **Details**
449
+ *
450
+ * - Returns `true` when the original function returns `Some`
451
+ * - Returns `false` when the original function returns `None`
452
+ * - Narrows the input type to `B` on success
453
+ *
454
+ * **Example** (Converting a parser to a type guard)
455
+ *
456
+ * ```ts
457
+ * import { Option } from "effect"
458
+ *
459
+ * type MyData = string | number
460
+ *
461
+ * const parseString = (data: MyData): Option.Option<string> =>
462
+ * typeof data === "string" ? Option.some(data) : Option.none()
463
+ *
464
+ * // ┌─── (a: MyData) => a is string
465
+ * // ▼
466
+ * const isString = Option.toRefinement(parseString)
467
+ *
468
+ * console.log(isString("a"))
469
+ * // Output: true
470
+ *
471
+ * console.log(isString(1))
472
+ * // Output: false
473
+ * ```
474
+ *
475
+ * @see {@link liftPredicate} for the reverse direction
476
+ *
477
+ * @category converting
478
+ * @since 2.0.0
479
+ */
480
+ export const toRefinement = <A, B extends A>(f: (a: A) => Option<B>): (a: A) => a is B => (a: A): a is B => isSome(f(a))
481
+
482
+ /**
483
+ * Wraps the first element of an `Iterable` in a `Some`, or returns `None` if
484
+ * the iterable is empty.
485
+ *
486
+ * **When to use**
487
+ *
488
+ * Use when you need to safely extract the head of a collection, including
489
+ * generators or lazy iterables.
490
+ *
491
+ * **Details**
492
+ *
493
+ * - Only consumes the first element; does not iterate the rest
494
+ * - Returns `None` for empty iterables
495
+ *
496
+ * **Example** (Getting the first element)
497
+ *
498
+ * ```ts
499
+ * import { Option } from "effect"
500
+ *
501
+ * console.log(Option.fromIterable([1, 2, 3]))
502
+ * // Output: { _id: 'Option', _tag: 'Some', value: 1 }
503
+ *
504
+ * console.log(Option.fromIterable([]))
505
+ * // Output: { _id: 'Option', _tag: 'None' }
506
+ * ```
507
+ *
508
+ * @see {@link toArray} for the inverse direction
509
+ *
510
+ * @category constructors
511
+ * @since 2.0.0
512
+ */
513
+ export const fromIterable = <A>(collection: Iterable<A>): Option<A> => {
514
+ for (const a of collection) {
515
+ return some(a)
516
+ }
517
+ return none()
518
+ }
519
+
520
+ /**
521
+ * Converts a `Result` into an `Option`, keeping only the success value.
522
+ *
523
+ * **When to use**
524
+ *
525
+ * Use when you need to discard a `Result` failure and keep only the success
526
+ * value as an `Option`.
527
+ *
528
+ * **Details**
529
+ *
530
+ * - `Success` becomes `Some` with the success value
531
+ * - `Failure` becomes `None` and the failure value is discarded
532
+ *
533
+ * **Example** (Extracting the success side)
534
+ *
535
+ * ```ts
536
+ * import { Option, Result } from "effect"
537
+ *
538
+ * console.log(Option.getSuccess(Result.succeed("ok")))
539
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'ok' }
540
+ *
541
+ * console.log(Option.getSuccess(Result.fail("err")))
542
+ * // Output: { _id: 'Option', _tag: 'None' }
543
+ * ```
544
+ *
545
+ * @see {@link getFailure} for the opposite operation.
546
+ *
547
+ * @category converting
548
+ * @since 4.0.0
549
+ */
550
+ export const getSuccess: <A, E>(self: Result<A, E>) => Option<A> = result.getSuccess
551
+
552
+ /**
553
+ * Converts a `Result` into an `Option`, keeping only the failure value.
554
+ *
555
+ * **When to use**
556
+ *
557
+ * Use when you need to discard a `Result` success and keep only the failure
558
+ * value as an `Option`.
559
+ *
560
+ * **Details**
561
+ *
562
+ * - `Failure` becomes `Some` with the failure value
563
+ * - `Success` becomes `None` and the success value is discarded
564
+ *
565
+ * **Example** (Extracting the failure side)
566
+ *
567
+ * ```ts
568
+ * import { Option, Result } from "effect"
569
+ *
570
+ * console.log(Option.getFailure(Result.succeed("ok")))
571
+ * // Output: { _id: 'Option', _tag: 'None' }
572
+ *
573
+ * console.log(Option.getFailure(Result.fail("err")))
574
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'err' }
575
+ * ```
576
+ *
577
+ * @see {@link getSuccess} for the opposite operation.
578
+ *
579
+ * @category converting
580
+ * @since 4.0.0
581
+ */
582
+ export const getFailure: <A, E>(self: Result<A, E>) => Option<E> = result.getFailure
583
+
584
+ /**
585
+ * Extracts the value from a `Some`, or evaluates a fallback thunk on `None`.
586
+ *
587
+ * **When to use**
588
+ *
589
+ * Use when providing a default value for an absent `Option`
590
+ * - Unwrapping with lazy evaluation of the fallback
591
+ *
592
+ * **Details**
593
+ *
594
+ * - `Some` → returns the inner value
595
+ * - `None` → calls `onNone()` and returns its result
596
+ * - `onNone` is only called when needed (lazy)
597
+ *
598
+ * **Example** (Unwrapping with a fallback)
599
+ *
600
+ * ```ts
601
+ * import { Option } from "effect"
602
+ *
603
+ * console.log(Option.some(1).pipe(Option.getOrElse(() => 0)))
604
+ * // Output: 1
605
+ *
606
+ * console.log(Option.none().pipe(Option.getOrElse(() => 0)))
607
+ * // Output: 0
608
+ * ```
609
+ *
610
+ * @see {@link getOrNull} to fall back to `null`
611
+ * @see {@link getOrUndefined} to fall back to `undefined`
612
+ * @see {@link getOrThrow} to throw on `None`
613
+ *
614
+ * @category getters
615
+ * @since 2.0.0
616
+ */
617
+ export const getOrElse: {
618
+ <B>(onNone: LazyArg<B>): <A>(self: Option<A>) => B | A
619
+ <A, B>(self: Option<A>, onNone: LazyArg<B>): A | B
620
+ } = dual(
621
+ 2,
622
+ <A, B>(self: Option<A>, onNone: LazyArg<B>): A | B => isNone(self) ? onNone() : self.value
623
+ )
624
+
625
+ /**
626
+ * Returns the fallback `Option` if `self` is `None`; otherwise returns `self`.
627
+ *
628
+ * **When to use**
629
+ *
630
+ * Use when you need a lazy fallback `Option`, such as when building priority
631
+ * chains of optional values.
632
+ *
633
+ * **Details**
634
+ *
635
+ * - `Some` → returns `self` unchanged
636
+ * - `None` → evaluates and returns `that()`
637
+ * - `that` is lazily evaluated
638
+ *
639
+ * **Example** (Providing a fallback Option)
640
+ *
641
+ * ```ts
642
+ * import { Option } from "effect"
643
+ *
644
+ * console.log(Option.none().pipe(Option.orElse(() => Option.some("b"))))
645
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'b' }
646
+ *
647
+ * console.log(Option.some("a").pipe(Option.orElse(() => Option.some("b"))))
648
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'a' }
649
+ * ```
650
+ *
651
+ * @see {@link orElseSome} to wrap the fallback value in `Some` automatically
652
+ * @see {@link firstSomeOf} to pick the first `Some` from a collection
653
+ *
654
+ * @category error handling
655
+ * @since 2.0.0
656
+ */
657
+ export const orElse: {
658
+ <B>(that: LazyArg<Option<B>>): <A>(self: Option<A>) => Option<B | A>
659
+ <A, B>(self: Option<A>, that: LazyArg<Option<B>>): Option<A | B>
660
+ } = dual(
661
+ 2,
662
+ <A, B>(self: Option<A>, that: LazyArg<Option<B>>): Option<A | B> => isNone(self) ? that() : self
663
+ )
664
+
665
+ /**
666
+ * Returns `Some` of the fallback value if `self` is `None`; otherwise returns
667
+ * `self`.
668
+ *
669
+ * **When to use**
670
+ *
671
+ * Use when providing a default plain value (not an `Option`) as fallback
672
+ *
673
+ * **Details**
674
+ *
675
+ * - `Some` → returns `self` unchanged
676
+ * - `None` → calls `onNone()`, wraps result in `Some`, and returns it
677
+ *
678
+ * **Example** (Providing a fallback value)
679
+ *
680
+ * ```ts
681
+ * import { Option } from "effect"
682
+ *
683
+ * console.log(Option.none().pipe(Option.orElseSome(() => "b")))
684
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'b' }
685
+ *
686
+ * console.log(Option.some("a").pipe(Option.orElseSome(() => "b")))
687
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'a' }
688
+ * ```
689
+ *
690
+ * @see {@link orElse} when the fallback is itself an `Option`
691
+ *
692
+ * @category error handling
693
+ * @since 2.0.0
694
+ */
695
+ export const orElseSome: {
696
+ <B>(onNone: LazyArg<B>): <A>(self: Option<A>) => Option<B | A>
697
+ <A, B>(self: Option<A>, onNone: LazyArg<B>): Option<A | B>
698
+ } = dual(
699
+ 2,
700
+ <A, B>(self: Option<A>, onNone: LazyArg<B>): Option<A | B> => isNone(self) ? some(onNone()) : self
701
+ )
702
+
703
+ /**
704
+ * Returns the first available value and marks whether it came from the fallback.
705
+ *
706
+ * **When to use**
707
+ *
708
+ * Use when you need to know whether a present value came from the primary or
709
+ * fallback `Option`.
710
+ *
711
+ * **Details**
712
+ *
713
+ * - `self` is `Some` → `Some(Result.fail(value))` (value from primary)
714
+ * - `self` is `None`, `that()` is `Some` → `Some(Result.succeed(value))` (value from fallback)
715
+ * - Both `None` → `None`
716
+ *
717
+ * **Example** (Tracking value source)
718
+ *
719
+ * ```ts
720
+ * import { Option } from "effect"
721
+ *
722
+ * console.log(Option.orElseResult(Option.some("primary"), () => Option.some("fallback")))
723
+ * // Output: { _id: 'Option', _tag: 'Some', value: { _tag: 'Failure', value: 'primary' } }
724
+ *
725
+ * console.log(Option.orElseResult(Option.none(), () => Option.some("fallback")))
726
+ * // Output: { _id: 'Option', _tag: 'Some', value: { _tag: 'Success', value: 'fallback' } }
727
+ * ```
728
+ *
729
+ * @see {@link orElse} for the simpler variant without source tracking
730
+ *
731
+ * @category error handling
732
+ * @since 4.0.0
733
+ */
734
+ export const orElseResult: {
735
+ <B>(that: LazyArg<Option<B>>): <A>(self: Option<A>) => Option<Result<B, A>>
736
+ <A, B>(self: Option<A>, that: LazyArg<Option<B>>): Option<Result<B, A>>
737
+ } = dual(
738
+ 2,
739
+ <A, B>(self: Option<A>, that: LazyArg<Option<B>>): Option<Result<B, A>> =>
740
+ isNone(self) ? map(that(), result.succeed) : map(self, result.fail)
741
+ )
742
+
743
+ /**
744
+ * Returns the first `Some` found in an iterable of `Option`s, or `None` if
745
+ * all are `None`.
746
+ *
747
+ * **When to use**
748
+ *
749
+ * Use when you need the first available `Some` value from a priority list.
750
+ *
751
+ * **Details**
752
+ *
753
+ * - Short-circuits on the first `Some`
754
+ * - Returns `None` only when every element is `None`
755
+ *
756
+ * **Example** (Finding the first Some)
757
+ *
758
+ * ```ts
759
+ * import { Option } from "effect"
760
+ *
761
+ * console.log(Option.firstSomeOf([
762
+ * Option.none(),
763
+ * Option.some(1),
764
+ * Option.some(2)
765
+ * ]))
766
+ * // Output: { _id: 'Option', _tag: 'Some', value: 1 }
767
+ * ```
768
+ *
769
+ * @see {@link orElse} for a two-option fallback
770
+ *
771
+ * @category error handling
772
+ * @since 2.0.0
773
+ */
774
+ export const firstSomeOf = <T, C extends Iterable<Option<T>> = Iterable<Option<T>>>(
775
+ collection: C
776
+ ): [C] extends [Iterable<Option<infer A>>] ? Option<A> : never => {
777
+ let out: Option<unknown> = none()
778
+ for (out of collection) {
779
+ if (isSome(out)) {
780
+ return out as any
781
+ }
782
+ }
783
+ return out as any
784
+ }
785
+
786
+ /**
787
+ * Converts a nullable value (`null` or `undefined`) into an `Option`.
788
+ *
789
+ * **When to use**
790
+ *
791
+ * Use when you need JavaScript nullish values to become absence at an API
792
+ * boundary while all other values, including falsy ones, remain present.
793
+ *
794
+ * **Details**
795
+ *
796
+ * - `null` or `undefined` → `None`
797
+ * - Any other value → `Some` (typed as `NonNullable<A>`)
798
+ *
799
+ * **Example** (Converting nullable values to an Option)
800
+ *
801
+ * ```ts
802
+ * import { Option } from "effect"
803
+ *
804
+ * console.log(Option.fromNullishOr(undefined))
805
+ * // Output: { _id: 'Option', _tag: 'None' }
806
+ *
807
+ * console.log(Option.fromNullishOr(null))
808
+ * // Output: { _id: 'Option', _tag: 'None' }
809
+ *
810
+ * console.log(Option.fromNullishOr(1))
811
+ * // Output: { _id: 'Option', _tag: 'Some', value: 1 }
812
+ * ```
813
+ *
814
+ * @see {@link fromNullOr} to only treat `null` as absent
815
+ * @see {@link fromUndefinedOr} to only treat `undefined` as absent
816
+ * @see {@link liftNullishOr} to lift a nullable-returning function
817
+ *
818
+ * @category converting
819
+ * @since 4.0.0
820
+ */
821
+ export const fromNullishOr = <A>(
822
+ a: A
823
+ ): Option<NonNullable<A>> => (a == null ? none() : some(a as NonNullable<A>))
824
+
825
+ /**
826
+ * Converts a possibly `undefined` value into an `Option`, leaving `null`
827
+ * as a valid `Some`.
828
+ *
829
+ * **When to use**
830
+ *
831
+ * Use when you want to treat only `undefined` as absent while preserving `null`
832
+ * as a meaningful value.
833
+ *
834
+ * **Details**
835
+ *
836
+ * - `undefined` → `None`
837
+ * - Any other value (including `null`) → `Some`
838
+ *
839
+ * **Example** (Converting possibly undefined values to an Option)
840
+ *
841
+ * ```ts
842
+ * import { Option } from "effect"
843
+ *
844
+ * console.log(Option.fromUndefinedOr(undefined))
845
+ * // Output: { _id: 'Option', _tag: 'None' }
846
+ *
847
+ * console.log(Option.fromUndefinedOr(null))
848
+ * // Output: { _id: 'Option', _tag: 'Some', value: null }
849
+ *
850
+ * console.log(Option.fromUndefinedOr(42))
851
+ * // Output: { _id: 'Option', _tag: 'Some', value: 42 }
852
+ * ```
853
+ *
854
+ * @see {@link fromNullishOr} to treat both `null` and `undefined` as absent
855
+ * @see {@link fromNullOr} to only treat `null` as absent
856
+ *
857
+ * @category converting
858
+ * @since 4.0.0
859
+ */
860
+ export const fromUndefinedOr = <A>(
861
+ a: A
862
+ ): Option<Exclude<A, undefined>> => (a === undefined ? none() : some(a as Exclude<A, undefined>))
863
+
864
+ /**
865
+ * Converts a possibly `null` value into an `Option`, leaving `undefined`
866
+ * as a valid `Some`.
867
+ *
868
+ * **When to use**
869
+ *
870
+ * Use when you want to treat only `null` as absent while preserving
871
+ * `undefined` as a meaningful value.
872
+ *
873
+ * **Details**
874
+ *
875
+ * - `null` → `None`
876
+ * - Any other value (including `undefined`) → `Some`
877
+ *
878
+ * **Example** (Converting possibly null values to an Option)
879
+ *
880
+ * ```ts
881
+ * import { Option } from "effect"
882
+ *
883
+ * console.log(Option.fromNullOr(null))
884
+ * // Output: { _id: 'Option', _tag: 'None' }
885
+ *
886
+ * console.log(Option.fromNullOr(undefined))
887
+ * // Output: { _id: 'Option', _tag: 'Some', value: undefined }
888
+ *
889
+ * console.log(Option.fromNullOr(42))
890
+ * // Output: { _id: 'Option', _tag: 'Some', value: 42 }
891
+ * ```
892
+ *
893
+ * @see {@link fromNullishOr} to treat both `null` and `undefined` as absent
894
+ * @see {@link fromUndefinedOr} to only treat `undefined` as absent
895
+ *
896
+ * @category converting
897
+ * @since 4.0.0
898
+ */
899
+ export const fromNullOr = <A>(
900
+ a: A
901
+ ): Option<Exclude<A, null>> => (a === null ? none() : some(a as Exclude<A, null>))
902
+
903
+ /**
904
+ * Lifts a function that may return `null` or `undefined` into one that returns
905
+ * an `Option`.
906
+ *
907
+ * **When to use**
908
+ *
909
+ * Use to wrap existing nullable-returning functions for use in `Option` pipelines
910
+ *
911
+ * **Details**
912
+ *
913
+ * - Calls the original function with the given arguments
914
+ * - Wraps the result via {@link fromNullishOr}
915
+ *
916
+ * **Example** (Lifting a parser)
917
+ *
918
+ * ```ts
919
+ * import { Option } from "effect"
920
+ *
921
+ * const parse = (s: string): number | undefined => {
922
+ * const n = parseFloat(s)
923
+ * return isNaN(n) ? undefined : n
924
+ * }
925
+ *
926
+ * const parseOption = Option.liftNullishOr(parse)
927
+ *
928
+ * console.log(parseOption("1"))
929
+ * // Output: { _id: 'Option', _tag: 'Some', value: 1 }
930
+ *
931
+ * console.log(parseOption("not a number"))
932
+ * // Output: { _id: 'Option', _tag: 'None' }
933
+ * ```
934
+ *
935
+ * @see {@link fromNullishOr} for converting a single value
936
+ * @see {@link liftThrowable} for functions that throw instead
937
+ *
938
+ * @category converting
939
+ * @since 4.0.0
940
+ */
941
+ export const liftNullishOr = <A extends ReadonlyArray<unknown>, B>(
942
+ f: (...a: A) => B
943
+ ): (...a: A) => Option<NonNullable<B>> =>
944
+ (...a) => fromNullishOr(f(...a))
945
+
946
+ /**
947
+ * Extracts the value from a `Some`, or returns `null` for `None`.
948
+ *
949
+ * **When to use**
950
+ *
951
+ * Use when you need to pass absent `Option` values to APIs that expect `null`.
952
+ *
953
+ * **Details**
954
+ *
955
+ * - `Some` → the inner value
956
+ * - `None` → `null`
957
+ *
958
+ * **Example** (Unwrapping to null)
959
+ *
960
+ * ```ts
961
+ * import { Option } from "effect"
962
+ *
963
+ * console.log(Option.getOrNull(Option.some(1)))
964
+ * // Output: 1
965
+ *
966
+ * console.log(Option.getOrNull(Option.none()))
967
+ * // Output: null
968
+ * ```
969
+ *
970
+ * @see {@link getOrUndefined} to return `undefined` instead
971
+ * @see {@link getOrElse} for a custom fallback
972
+ *
973
+ * @category getters
974
+ * @since 2.0.0
975
+ */
976
+ export const getOrNull: <A>(self: Option<A>) => A | null = getOrElse(constNull)
977
+
978
+ /**
979
+ * Extracts the value from a `Some`, or returns `undefined` for `None`.
980
+ *
981
+ * **When to use**
982
+ *
983
+ * Use when you need to pass absent `Option` values to APIs that expect
984
+ * `undefined`.
985
+ *
986
+ * **Details**
987
+ *
988
+ * - `Some` → the inner value
989
+ * - `None` → `undefined`
990
+ *
991
+ * **Example** (Unwrapping to undefined)
992
+ *
993
+ * ```ts
994
+ * import { Option } from "effect"
995
+ *
996
+ * console.log(Option.getOrUndefined(Option.some(1)))
997
+ * // Output: 1
998
+ *
999
+ * console.log(Option.getOrUndefined(Option.none()))
1000
+ * // Output: undefined
1001
+ * ```
1002
+ *
1003
+ * @see {@link getOrNull} to return `null` instead
1004
+ * @see {@link getOrElse} for a custom fallback
1005
+ *
1006
+ * @category getters
1007
+ * @since 2.0.0
1008
+ */
1009
+ export const getOrUndefined: <A>(self: Option<A>) => A | undefined = getOrElse(constUndefined)
1010
+
1011
+ /**
1012
+ * Lifts a function that may throw into one that returns an `Option`.
1013
+ *
1014
+ * **When to use**
1015
+ *
1016
+ * Use to wrap exception-throwing APIs (e.g. `JSON.parse`) for safe usage
1017
+ *
1018
+ * **Details**
1019
+ *
1020
+ * - If the function returns normally → `Some` with the result
1021
+ * - If the function throws → `None` (exception is swallowed)
1022
+ *
1023
+ * **Example** (Lifting JSON.parse)
1024
+ *
1025
+ * ```ts
1026
+ * import { Option } from "effect"
1027
+ *
1028
+ * const parse = Option.liftThrowable(JSON.parse)
1029
+ *
1030
+ * console.log(parse("1"))
1031
+ * // Output: { _id: 'Option', _tag: 'Some', value: 1 }
1032
+ *
1033
+ * console.log(parse(""))
1034
+ * // Output: { _id: 'Option', _tag: 'None' }
1035
+ * ```
1036
+ *
1037
+ * @see {@link liftNullishOr} for nullable-returning functions
1038
+ *
1039
+ * @category converting
1040
+ * @since 2.0.0
1041
+ */
1042
+ export const liftThrowable = <A extends ReadonlyArray<unknown>, B>(
1043
+ f: (...a: A) => B
1044
+ ): (...a: A) => Option<B> =>
1045
+ (...a) => {
1046
+ try {
1047
+ return some(f(...a))
1048
+ } catch {
1049
+ return none()
1050
+ }
1051
+ }
1052
+
1053
+ /**
1054
+ * Extracts the value from a `Some`, or throws a custom error for `None`.
1055
+ *
1056
+ * **When to use**
1057
+ *
1058
+ * Use when you need fail-fast unwrapping of an `Option` for unexpected absence
1059
+ * and want to provide a descriptive debugging error.
1060
+ *
1061
+ * **Details**
1062
+ *
1063
+ * - `Some` → returns the inner value
1064
+ * - `None` → throws the value returned by `onNone()`
1065
+ *
1066
+ * **Example** (Throwing a custom error)
1067
+ *
1068
+ * ```ts
1069
+ * import { Option } from "effect"
1070
+ *
1071
+ * console.log(Option.getOrThrowWith(Option.some(1), () => new Error("missing")))
1072
+ * // Output: 1
1073
+ *
1074
+ * Option.getOrThrowWith(Option.none(), () => new Error("missing"))
1075
+ * // throws Error: missing
1076
+ * ```
1077
+ *
1078
+ * @see {@link getOrThrow} for a version with a default error
1079
+ * @see {@link getOrElse} for a non-throwing alternative
1080
+ *
1081
+ * @category converting
1082
+ * @since 2.0.0
1083
+ */
1084
+ export const getOrThrowWith: {
1085
+ (onNone: () => unknown): <A>(self: Option<A>) => A
1086
+ <A>(self: Option<A>, onNone: () => unknown): A
1087
+ } = dual(2, <A>(self: Option<A>, onNone: () => unknown): A => {
1088
+ if (isSome(self)) {
1089
+ return self.value
1090
+ }
1091
+ throw onNone()
1092
+ })
1093
+
1094
+ /**
1095
+ * Extracts the value from a `Some`, or throws a default `Error` for `None`.
1096
+ *
1097
+ * **When to use**
1098
+ *
1099
+ * Use when you need quick fail-fast unwrapping of an `Option` and a generic
1100
+ * error is acceptable.
1101
+ *
1102
+ * **Details**
1103
+ *
1104
+ * - `Some` → returns the inner value
1105
+ * - `None` → throws `new Error("getOrThrow called on a None")`
1106
+ *
1107
+ * **Example** (Throwing a default error)
1108
+ *
1109
+ * ```ts
1110
+ * import { Option } from "effect"
1111
+ *
1112
+ * console.log(Option.getOrThrow(Option.some(1)))
1113
+ * // Output: 1
1114
+ *
1115
+ * Option.getOrThrow(Option.none())
1116
+ * // throws Error: getOrThrow called on a None
1117
+ * ```
1118
+ *
1119
+ * @see {@link getOrThrowWith} for a custom error
1120
+ * @see {@link getOrElse} for a non-throwing alternative
1121
+ *
1122
+ * @category converting
1123
+ * @since 2.0.0
1124
+ */
1125
+ export const getOrThrow: <A>(self: Option<A>) => A = getOrThrowWith(() => new Error("getOrThrow called on a None"))
1126
+
1127
+ /**
1128
+ * Transforms the value inside a `Some` using the provided function, leaving
1129
+ * `None` unchanged.
1130
+ *
1131
+ * **When to use**
1132
+ *
1133
+ * Use to apply a pure transformation to an `Option`'s present value, especially
1134
+ * when chaining transformations in a pipeline.
1135
+ *
1136
+ * **Details**
1137
+ *
1138
+ * - `Some` → applies `f` and wraps the result in a new `Some`
1139
+ * - `None` → returns `None` unchanged
1140
+ *
1141
+ * **Example** (Mapping over an Option)
1142
+ *
1143
+ * ```ts
1144
+ * import { Option } from "effect"
1145
+ *
1146
+ * console.log(Option.map(Option.some(2), (n) => n * 2))
1147
+ * // Output: { _id: 'Option', _tag: 'Some', value: 4 }
1148
+ *
1149
+ * console.log(Option.map(Option.none(), (n: number) => n * 2))
1150
+ * // Output: { _id: 'Option', _tag: 'None' }
1151
+ * ```
1152
+ *
1153
+ * @see {@link flatMap} when `f` returns an `Option`
1154
+ * @see {@link as} to replace the value with a constant
1155
+ *
1156
+ * @category mapping
1157
+ * @since 2.0.0
1158
+ */
1159
+ export const map: {
1160
+ <A, B>(f: (a: A) => B): (self: Option<A>) => Option<B>
1161
+ <A, B>(self: Option<A>, f: (a: A) => B): Option<B>
1162
+ } = dual(
1163
+ 2,
1164
+ <A, B>(self: Option<A>, f: (a: A) => B): Option<B> => isNone(self) ? none() : some(f(self.value))
1165
+ )
1166
+
1167
+ /**
1168
+ * Replaces the value inside a `Some` with a constant, leaving `None` unchanged.
1169
+ *
1170
+ * **When to use**
1171
+ *
1172
+ * Use when you need to replace a present `Option` value while preserving
1173
+ * whether it was `Some` or `None`.
1174
+ *
1175
+ * **Example** (Replacing a value)
1176
+ *
1177
+ * ```ts
1178
+ * import { Option } from "effect"
1179
+ *
1180
+ * console.log(Option.as(Option.some(42), "new value"))
1181
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'new value' }
1182
+ *
1183
+ * console.log(Option.as(Option.none(), "new value"))
1184
+ * // Output: { _id: 'Option', _tag: 'None' }
1185
+ * ```
1186
+ *
1187
+ * @see {@link asVoid} to replace with `undefined`
1188
+ * @see {@link map} for a general transformation
1189
+ *
1190
+ * @category mapping
1191
+ * @since 2.0.0
1192
+ */
1193
+ export const as: {
1194
+ <B>(b: B): <X>(self: Option<X>) => Option<B>
1195
+ <X, B>(self: Option<X>, b: B): Option<B>
1196
+ } = dual(2, <X, B>(self: Option<X>, b: B): Option<B> => map(self, () => b))
1197
+
1198
+ /**
1199
+ * Replaces the value inside a `Some` with `void` (`undefined`), leaving `None`
1200
+ * unchanged.
1201
+ *
1202
+ * **When to use**
1203
+ *
1204
+ * Use when you need to discard a present `Option` value while preserving
1205
+ * whether it was `Some` or `None`.
1206
+ *
1207
+ * **Example** (Voiding the value)
1208
+ *
1209
+ * ```ts
1210
+ * import { Option } from "effect"
1211
+ *
1212
+ * console.log(Option.asVoid(Option.some(42)))
1213
+ * // Output: { _id: 'Option', _tag: 'Some', value: undefined }
1214
+ *
1215
+ * console.log(Option.asVoid(Option.none()))
1216
+ * // Output: { _id: 'Option', _tag: 'None' }
1217
+ * ```
1218
+ *
1219
+ * @see {@link as} to replace with a specific constant
1220
+ *
1221
+ * @category mapping
1222
+ * @since 2.0.0
1223
+ */
1224
+ export const asVoid: <_>(self: Option<_>) => Option<void> = as(undefined)
1225
+
1226
+ const void_: Option<void> = some(undefined)
1227
+ export {
1228
+ /**
1229
+ * Provides a pre-built `Some(undefined)` constant.
1230
+ *
1231
+ * **When to use**
1232
+ *
1233
+ * Use to return a "success with no meaningful value" from an `Option`-returning function
1234
+ *
1235
+ * **Example** (Referencing Option.void)
1236
+ *
1237
+ * ```ts
1238
+ * import { Option } from "effect"
1239
+ *
1240
+ * console.log(Option.void)
1241
+ * // Output: { _id: 'Option', _tag: 'Some', value: undefined }
1242
+ * ```
1243
+ *
1244
+ * @see {@link asVoid} to convert an existing `Option` to `Option<void>`
1245
+ *
1246
+ * @category constructors
1247
+ * @since 2.0.0
1248
+ */
1249
+ void_ as void
1250
+ }
1251
+
1252
+ /**
1253
+ * Applies a function that returns an `Option` to the value of a `Some`,
1254
+ * flattening the result. Returns `None` if the input is `None`.
1255
+ *
1256
+ * **When to use**
1257
+ *
1258
+ * Use when you need to chain dependent `Option` computations where each step
1259
+ * may return `None`.
1260
+ *
1261
+ * **Details**
1262
+ *
1263
+ * - `Some` → applies `f` to the value and returns its `Option` result
1264
+ * - `None` → returns `None` without calling `f`
1265
+ * - Equivalent to `map` followed by {@link flatten}
1266
+ *
1267
+ * **Example** (Chaining optional lookups)
1268
+ *
1269
+ * ```ts
1270
+ * import { Option } from "effect"
1271
+ *
1272
+ * interface User {
1273
+ * readonly name: string
1274
+ * readonly address: Option.Option<{ readonly street: Option.Option<string> }>
1275
+ * }
1276
+ *
1277
+ * const user: User = {
1278
+ * name: "John",
1279
+ * address: Option.some({ street: Option.some("123 Main St") })
1280
+ * }
1281
+ *
1282
+ * const street = user.address.pipe(
1283
+ * Option.flatMap((addr) => addr.street)
1284
+ * )
1285
+ *
1286
+ * console.log(street)
1287
+ * // Output: { _id: 'Option', _tag: 'Some', value: '123 Main St' }
1288
+ * ```
1289
+ *
1290
+ * @see {@link map} when `f` returns a plain value
1291
+ * @see {@link andThen} for a more flexible variant
1292
+ * @see {@link flatten} to unwrap a nested `Option<Option<A>>`
1293
+ *
1294
+ * @category sequencing
1295
+ * @since 2.0.0
1296
+ */
1297
+ export const flatMap: {
1298
+ <A, B>(f: (a: A) => Option<B>): (self: Option<A>) => Option<B>
1299
+ <A, B>(self: Option<A>, f: (a: A) => Option<B>): Option<B>
1300
+ } = dual(
1301
+ 2,
1302
+ <A, B>(self: Option<A>, f: (a: A) => Option<B>): Option<B> => isNone(self) ? none() : f(self.value)
1303
+ )
1304
+
1305
+ /**
1306
+ * Chains a second computation onto an `Option`. The second value can be a
1307
+ * plain value, an `Option`, or a function returning either.
1308
+ *
1309
+ * **When to use**
1310
+ *
1311
+ * Use when you need to chain an `Option` with a next step that may be another
1312
+ * `Option`, a plain value, or a function.
1313
+ *
1314
+ * **Details**
1315
+ *
1316
+ * - If `self` is `None`, returns `None` immediately
1317
+ * - If `f` is a function, calls it with the `Some` value
1318
+ * - If `f` returns an `Option`, returns it as-is; if a plain value, wraps in `Some`
1319
+ * - If `f` is not a function, uses it directly (same wrapping rules)
1320
+ *
1321
+ * **Example** (Chaining with andThen)
1322
+ *
1323
+ * ```ts
1324
+ * import { Option } from "effect"
1325
+ *
1326
+ * // Chain with a function returning Option
1327
+ * console.log(Option.andThen(Option.some(5), (x) => Option.some(x * 2)))
1328
+ * // Output: { _id: 'Option', _tag: 'Some', value: 10 }
1329
+ *
1330
+ * // Chain with a static value
1331
+ * console.log(Option.andThen(Option.some(5), "hello"))
1332
+ * // Output: { _id: 'Option', _tag: 'Some', value: "hello" }
1333
+ *
1334
+ * // Chain with None - skips
1335
+ * console.log(Option.andThen(Option.none(), (x) => Option.some(x * 2)))
1336
+ * // Output: { _id: 'Option', _tag: 'None' }
1337
+ * ```
1338
+ *
1339
+ * @see {@link flatMap} for the standard monadic bind
1340
+ * @see {@link map} when you always return a plain value
1341
+ *
1342
+ * @category sequencing
1343
+ * @since 2.0.0
1344
+ */
1345
+ export const andThen: {
1346
+ <A, B>(f: (a: A) => Option<B>): (self: Option<A>) => Option<B>
1347
+ <B>(f: Option<B>): <A>(self: Option<A>) => Option<B>
1348
+ <A, B>(f: (a: A) => B): (self: Option<A>) => Option<B>
1349
+ <B>(f: NotFunction<B>): <A>(self: Option<A>) => Option<B>
1350
+ <A, B>(self: Option<A>, f: (a: A) => Option<B>): Option<B>
1351
+ <A, B>(self: Option<A>, f: Option<B>): Option<B>
1352
+ <A, B>(self: Option<A>, f: (a: A) => B): Option<B>
1353
+ <A, B>(self: Option<A>, f: NotFunction<B>): Option<B>
1354
+ } = dual(
1355
+ 2,
1356
+ <A, B>(self: Option<A>, f: (a: A) => Option<B> | Option<B>): Option<B> =>
1357
+ flatMap(self, (a) => {
1358
+ const b = isFunction(f) ? f(a) : f
1359
+ return isOption(b) ? b : some(b)
1360
+ })
1361
+ )
1362
+
1363
+ /**
1364
+ * Combines {@link flatMap} with {@link fromNullishOr}: applies a function that
1365
+ * may return `null`/`undefined` to the value of a `Some`.
1366
+ *
1367
+ * **When to use**
1368
+ *
1369
+ * Use when you need to chain optional computations that use `null` or
1370
+ * `undefined` instead of `Option`, such as nested property access.
1371
+ *
1372
+ * **Details**
1373
+ *
1374
+ * - `None` → `None`
1375
+ * - `Some` → applies `f`, then wraps via {@link fromNullishOr}
1376
+ *
1377
+ * **Example** (Navigating optional properties)
1378
+ *
1379
+ * ```ts
1380
+ * import { Option } from "effect"
1381
+ *
1382
+ * interface Employee {
1383
+ * company?: { address?: { street?: { name?: string } } }
1384
+ * }
1385
+ *
1386
+ * const emp: Employee = {
1387
+ * company: { address: { street: { name: "high street" } } }
1388
+ * }
1389
+ *
1390
+ * console.log(
1391
+ * Option.some(emp).pipe(
1392
+ * Option.flatMapNullishOr((e) => e.company?.address?.street?.name)
1393
+ * )
1394
+ * )
1395
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'high street' }
1396
+ * ```
1397
+ *
1398
+ * @see {@link flatMap} when the function already returns `Option`
1399
+ * @see {@link fromNullishOr} for single-value conversion
1400
+ *
1401
+ * @category sequencing
1402
+ * @since 4.0.0
1403
+ */
1404
+ export const flatMapNullishOr: {
1405
+ <A, B>(f: (a: A) => B): (self: Option<A>) => Option<NonNullable<B>>
1406
+ <A, B>(self: Option<A>, f: (a: A) => B): Option<NonNullable<B>>
1407
+ } = dual(
1408
+ 2,
1409
+ <A, B>(self: Option<A>, f: (a: A) => B): Option<NonNullable<B>> =>
1410
+ isNone(self) ? none() : fromNullishOr(f(self.value))
1411
+ )
1412
+
1413
+ /**
1414
+ * Flattens a nested `Option<Option<A>>` into `Option<A>`.
1415
+ *
1416
+ * **When to use**
1417
+ *
1418
+ * Use when you need to remove one layer of nested `Option`.
1419
+ *
1420
+ * **Details**
1421
+ *
1422
+ * - `Some(Some(value))` → `Some(value)`
1423
+ * - `Some(None)` → `None`
1424
+ * - `None` → `None`
1425
+ *
1426
+ * **Example** (Flattening nested Options)
1427
+ *
1428
+ * ```ts
1429
+ * import { Option } from "effect"
1430
+ *
1431
+ * console.log(Option.flatten(Option.some(Option.some("value"))))
1432
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'value' }
1433
+ *
1434
+ * console.log(Option.flatten(Option.some(Option.none())))
1435
+ * // Output: { _id: 'Option', _tag: 'None' }
1436
+ * ```
1437
+ *
1438
+ * @see {@link flatMap} which is `map` + `flatten`
1439
+ *
1440
+ * @category sequencing
1441
+ * @since 2.0.0
1442
+ */
1443
+ export const flatten: <A>(self: Option<Option<A>>) => Option<A> = flatMap(identity)
1444
+
1445
+ /**
1446
+ * Sequences two `Option`s, keeping the value from the second if both are `Some`.
1447
+ *
1448
+ * **When to use**
1449
+ *
1450
+ * Use when you need two `Option` values to both be `Some`, then keep only the
1451
+ * second value.
1452
+ *
1453
+ * **Details**
1454
+ *
1455
+ * - Both `Some` → returns `that`
1456
+ * - Either `None` → returns `None`
1457
+ *
1458
+ * **Example** (Keeping the second value)
1459
+ *
1460
+ * ```ts
1461
+ * import { Option } from "effect"
1462
+ *
1463
+ * console.log(Option.zipRight(Option.some(1), Option.some("hello")))
1464
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'hello' }
1465
+ *
1466
+ * console.log(Option.zipRight(Option.none(), Option.some("hello")))
1467
+ * // Output: { _id: 'Option', _tag: 'None' }
1468
+ * ```
1469
+ *
1470
+ * @see {@link zipLeft} to keep the first value instead
1471
+ * @see {@link zipWith} to combine both values
1472
+ *
1473
+ * @category zipping
1474
+ * @since 2.0.0
1475
+ */
1476
+ export const zipRight: {
1477
+ <B>(that: Option<B>): <_>(self: Option<_>) => Option<B>
1478
+ <X, B>(self: Option<X>, that: Option<B>): Option<B>
1479
+ } = dual(2, <X, B>(self: Option<X>, that: Option<B>): Option<B> => flatMap(self, () => that))
1480
+
1481
+ /**
1482
+ * Sequences two `Option`s, keeping the value from the first if both are `Some`.
1483
+ *
1484
+ * **When to use**
1485
+ *
1486
+ * Use when you need two `Option` values to both be `Some`, then keep only the
1487
+ * first value.
1488
+ *
1489
+ * **Details**
1490
+ *
1491
+ * - Both `Some` → returns `self`
1492
+ * - Either `None` → returns `None`
1493
+ *
1494
+ * **Example** (Keeping the first value)
1495
+ *
1496
+ * ```ts
1497
+ * import { Option } from "effect"
1498
+ *
1499
+ * console.log(Option.zipLeft(Option.some("hello"), Option.some(1)))
1500
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'hello' }
1501
+ *
1502
+ * console.log(Option.zipLeft(Option.some("hello"), Option.none()))
1503
+ * // Output: { _id: 'Option', _tag: 'None' }
1504
+ * ```
1505
+ *
1506
+ * @see {@link zipRight} to keep the second value instead
1507
+ * @see {@link zipWith} to combine both values
1508
+ *
1509
+ * @category zipping
1510
+ * @since 2.0.0
1511
+ */
1512
+ export const zipLeft: {
1513
+ <_>(that: Option<_>): <A>(self: Option<A>) => Option<A>
1514
+ <A, X>(self: Option<A>, that: Option<X>): Option<A>
1515
+ } = dual(2, <A, X>(self: Option<A>, that: Option<X>): Option<A> => tap(self, () => that))
1516
+
1517
+ /**
1518
+ * Composes two `Option`-returning functions into a single function that chains
1519
+ * them together.
1520
+ *
1521
+ * **When to use**
1522
+ *
1523
+ * Use when you need to compose two functions that each return an `Option`, so
1524
+ * `None` short-circuits without calling the next function.
1525
+ *
1526
+ * **Details**
1527
+ *
1528
+ * - Calls `afb(a)`, then if `Some`, calls `bfc` with its value
1529
+ * - Short-circuits to `None` if either function returns `None`
1530
+ *
1531
+ * **Example** (Composing parsers)
1532
+ *
1533
+ * ```ts
1534
+ * import { Option } from "effect"
1535
+ *
1536
+ * const parse = (s: string): Option.Option<number> =>
1537
+ * isNaN(Number(s)) ? Option.none() : Option.some(Number(s))
1538
+ *
1539
+ * const double = (n: number): Option.Option<number> =>
1540
+ * n > 0 ? Option.some(n * 2) : Option.none()
1541
+ *
1542
+ * const parseAndDouble = Option.composeK(parse, double)
1543
+ *
1544
+ * console.log(parseAndDouble("42"))
1545
+ * // Output: { _id: 'Option', _tag: 'Some', value: 84 }
1546
+ *
1547
+ * console.log(parseAndDouble("not a number"))
1548
+ * // Output: { _id: 'Option', _tag: 'None' }
1549
+ * ```
1550
+ *
1551
+ * @see {@link flatMap} for single-step chaining
1552
+ *
1553
+ * @category sequencing
1554
+ * @since 2.0.0
1555
+ */
1556
+ export const composeK: {
1557
+ <B, C>(bfc: (b: B) => Option<C>): <A>(afb: (a: A) => Option<B>) => (a: A) => Option<C>
1558
+ <A, B, C>(afb: (a: A) => Option<B>, bfc: (b: B) => Option<C>): (a: A) => Option<C>
1559
+ } = dual(2, <A, B, C>(afb: (a: A) => Option<B>, bfc: (b: B) => Option<C>) => (a: A): Option<C> => flatMap(afb(a), bfc))
1560
+
1561
+ /**
1562
+ * Runs a side-effecting `Option`-returning function on the value of a `Some`,
1563
+ * returning the original `Option` if the function returns `Some`, or `None`
1564
+ * if it returns `None`.
1565
+ *
1566
+ * **When to use**
1567
+ *
1568
+ * Use to validate an `Option`'s present value without transforming it, such as
1569
+ * adding a side-condition check in a pipeline.
1570
+ *
1571
+ * **Details**
1572
+ *
1573
+ * - `None` → `None`
1574
+ * - `Some` → calls `f(value)`; if result is `Some`, returns original `self`; if `None`, returns `None`
1575
+ *
1576
+ * **Example** (Validating without transforming)
1577
+ *
1578
+ * ```ts
1579
+ * import { Option } from "effect"
1580
+ *
1581
+ * const getInteger = (n: number) =>
1582
+ * Number.isInteger(n) ? Option.some(n) : Option.none()
1583
+ *
1584
+ * console.log(Option.tap(Option.some(1), getInteger))
1585
+ * // Output: { _id: 'Option', _tag: 'Some', value: 1 }
1586
+ *
1587
+ * console.log(Option.tap(Option.some(1.14), getInteger))
1588
+ * // Output: { _id: 'Option', _tag: 'None' }
1589
+ * ```
1590
+ *
1591
+ * @see {@link flatMap} when you want to transform the value
1592
+ * @see {@link filter} for predicate-based filtering
1593
+ *
1594
+ * @category sequencing
1595
+ * @since 2.0.0
1596
+ */
1597
+ export const tap: {
1598
+ <A, X>(f: (a: A) => Option<X>): (self: Option<A>) => Option<A>
1599
+ <A, X>(self: Option<A>, f: (a: A) => Option<X>): Option<A>
1600
+ } = dual(2, <A, X>(self: Option<A>, f: (a: A) => Option<X>): Option<A> => flatMap(self, (a) => map(f(a), () => a)))
1601
+
1602
+ /**
1603
+ * Combines two `Option`s into a `Some` containing a tuple `[A, B]` if both
1604
+ * are `Some`.
1605
+ *
1606
+ * **When to use**
1607
+ *
1608
+ * Use when you need to require two `Option` values to both be `Some` and keep
1609
+ * both values as a tuple.
1610
+ *
1611
+ * **Details**
1612
+ *
1613
+ * - Both `Some` → `Some([a, b])`
1614
+ * - Either `None` → `None`
1615
+ *
1616
+ * **Example** (Pairing two Options)
1617
+ *
1618
+ * ```ts
1619
+ * import { Option } from "effect"
1620
+ *
1621
+ * console.log(Option.product(Option.some("hello"), Option.some(42)))
1622
+ * // Output: { _id: 'Option', _tag: 'Some', value: ['hello', 42] }
1623
+ *
1624
+ * console.log(Option.product(Option.none(), Option.some(42)))
1625
+ * // Output: { _id: 'Option', _tag: 'None' }
1626
+ * ```
1627
+ *
1628
+ * @see {@link zipWith} to combine with a function instead of a tuple
1629
+ * @see {@link all} to combine many `Option`s
1630
+ *
1631
+ * @category combining
1632
+ * @since 2.0.0
1633
+ */
1634
+ export const product = <A, B>(self: Option<A>, that: Option<B>): Option<[A, B]> =>
1635
+ isSome(self) && isSome(that) ? some([self.value, that.value]) : none()
1636
+
1637
+ /**
1638
+ * Combines a primary `Option` with an iterable of `Option`s into a tuple if
1639
+ * all are `Some`.
1640
+ *
1641
+ * **When to use**
1642
+ *
1643
+ * Use when you need several `Option` values of the same type to all be `Some`
1644
+ * and return them as a non-empty tuple.
1645
+ *
1646
+ * **Details**
1647
+ *
1648
+ * - All `Some` → `Some([self.value, ...rest])`
1649
+ * - Any `None` → `None`
1650
+ *
1651
+ * **Example** (Combining many Options)
1652
+ *
1653
+ * ```ts
1654
+ * import { Option } from "effect"
1655
+ *
1656
+ * const first = Option.some(1)
1657
+ * const rest = [Option.some(2), Option.some(3)]
1658
+ *
1659
+ * console.log(Option.productMany(first, rest))
1660
+ * // Output: { _id: 'Option', _tag: 'Some', value: [1, 2, 3] }
1661
+ *
1662
+ * console.log(Option.productMany(first, [Option.some(2), Option.none()]))
1663
+ * // Output: { _id: 'Option', _tag: 'None' }
1664
+ * ```
1665
+ *
1666
+ * @see {@link product} for combining exactly two
1667
+ * @see {@link all} for tuples, structs, and iterables
1668
+ *
1669
+ * @category combining
1670
+ * @since 2.0.0
1671
+ */
1672
+ export const productMany = <A>(
1673
+ self: Option<A>,
1674
+ collection: Iterable<Option<A>>
1675
+ ): Option<[A, ...Array<A>]> => {
1676
+ if (isNone(self)) {
1677
+ return none()
1678
+ }
1679
+ const out: [A, ...Array<A>] = [self.value]
1680
+ for (const o of collection) {
1681
+ if (isNone(o)) {
1682
+ return none()
1683
+ }
1684
+ out.push(o.value)
1685
+ }
1686
+ return some(out)
1687
+ }
1688
+
1689
+ /**
1690
+ * Combines a structure of `Option`s (tuple, struct, or iterable) into a single
1691
+ * `Option` containing the unwrapped structure.
1692
+ *
1693
+ * **When to use**
1694
+ *
1695
+ * Use when you need to combine multiple `Option` values into one while
1696
+ * preserving the input shape, with any `None` making the result `None`.
1697
+ *
1698
+ * **Details**
1699
+ *
1700
+ * - Tuple input → `Option` of a tuple with the same length
1701
+ * - Struct input → `Option` of a struct with the same keys
1702
+ * - Iterable input → `Option` of an `Array`
1703
+ * - Any `None` in the input → entire result is `None`
1704
+ *
1705
+ * **Example** (Combining a tuple and a struct)
1706
+ *
1707
+ * ```ts
1708
+ * import { Option } from "effect"
1709
+ *
1710
+ * const maybeName: Option.Option<string> = Option.some("John")
1711
+ * const maybeAge: Option.Option<number> = Option.some(25)
1712
+ *
1713
+ * // ┌─── Option<[string, number]>
1714
+ * // ▼
1715
+ * const tuple = Option.all([maybeName, maybeAge])
1716
+ * console.log(tuple)
1717
+ * // Output:
1718
+ * // { _id: 'Option', _tag: 'Some', value: [ 'John', 25 ] }
1719
+ *
1720
+ * // ┌─── Option<{ name: string; age: number; }>
1721
+ * // ▼
1722
+ * const struct = Option.all({ name: maybeName, age: maybeAge })
1723
+ * console.log(struct)
1724
+ * // Output:
1725
+ * // { _id: 'Option', _tag: 'Some', value: { name: 'John', age: 25 } }
1726
+ * ```
1727
+ *
1728
+ * @see {@link product} for combining exactly two
1729
+ * @see {@link productMany} for a homogeneous collection
1730
+ *
1731
+ * @category combining
1732
+ * @since 2.0.0
1733
+ */
1734
+ // @ts-expect-error
1735
+ export const all: <const I extends Iterable<Option<any>> | Record<string, Option<any>>>(
1736
+ input: I
1737
+ ) => [I] extends [ReadonlyArray<Option<any>>] ? Option<
1738
+ { -readonly [K in keyof I]: [I[K]] extends [Option<infer A>] ? A : never }
1739
+ >
1740
+ : [I] extends [Iterable<Option<infer A>>] ? Option<Array<A>>
1741
+ : Option<{ -readonly [K in keyof I]: [I[K]] extends [Option<infer A>] ? A : never }> = (
1742
+ input: Iterable<Option<any>> | Record<string, Option<any>>
1743
+ ): Option<any> => {
1744
+ if (Symbol.iterator in input) {
1745
+ const out: Array<Option<any>> = []
1746
+ for (const o of (input as Iterable<Option<any>>)) {
1747
+ if (isNone(o)) {
1748
+ return none()
1749
+ }
1750
+ out.push(o.value)
1751
+ }
1752
+ return some(out)
1753
+ }
1754
+
1755
+ const out: Record<string, any> = {}
1756
+ for (const key of Object.keys(input)) {
1757
+ const o = input[key]
1758
+ if (isNone(o)) {
1759
+ return none()
1760
+ }
1761
+ out[key] = o.value
1762
+ }
1763
+ return some(out)
1764
+ }
1765
+
1766
+ /**
1767
+ * Combines two `Option`s using a provided function.
1768
+ *
1769
+ * **When to use**
1770
+ *
1771
+ * Use when you need to combine two present `Option` values into a computed
1772
+ * result.
1773
+ *
1774
+ * **Details**
1775
+ *
1776
+ * - Both `Some` → applies `f(a, b)` and wraps in `Some`
1777
+ * - Either `None` → `None`
1778
+ *
1779
+ * **Example** (Combining with a function)
1780
+ *
1781
+ * ```ts
1782
+ * import { Option } from "effect"
1783
+ *
1784
+ * const person = Option.zipWith(
1785
+ * Option.some("John"),
1786
+ * Option.some(25),
1787
+ * (name, age) => ({ name: name.toUpperCase(), age })
1788
+ * )
1789
+ *
1790
+ * console.log(person)
1791
+ * // Output:
1792
+ * // { _id: 'Option', _tag: 'Some', value: { name: 'JOHN', age: 25 } }
1793
+ * ```
1794
+ *
1795
+ * @see {@link product} to combine into a tuple instead
1796
+ * @see {@link lift2} to lift a binary function
1797
+ *
1798
+ * @category zipping
1799
+ * @since 2.0.0
1800
+ */
1801
+ export const zipWith: {
1802
+ <B, A, C>(that: Option<B>, f: (a: A, b: B) => C): (self: Option<A>) => Option<C>
1803
+ <A, B, C>(self: Option<A>, that: Option<B>, f: (a: A, b: B) => C): Option<C>
1804
+ } = dual(
1805
+ 3,
1806
+ <A, B, C>(self: Option<A>, that: Option<B>, f: (a: A, b: B) => C): Option<C> =>
1807
+ map(product(self, that), ([a, b]) => f(a, b))
1808
+ )
1809
+
1810
+ /**
1811
+ * Reduces an iterable of `Option`s to a single value, skipping `None` entries.
1812
+ *
1813
+ * **When to use**
1814
+ *
1815
+ * Use when you need to aggregate values from a collection where some may be
1816
+ * absent.
1817
+ *
1818
+ * **Details**
1819
+ *
1820
+ * - Iterates through the collection, applying `f` only to `Some` values
1821
+ * - `None` values are skipped entirely
1822
+ * - Returns the accumulated result
1823
+ *
1824
+ * **Example** (Summing present values)
1825
+ *
1826
+ * ```ts
1827
+ * import { Option, pipe } from "effect"
1828
+ *
1829
+ * const items = [Option.some(1), Option.none(), Option.some(2), Option.none()]
1830
+ *
1831
+ * console.log(pipe(items, Option.reduceCompact(0, (b, a) => b + a)))
1832
+ * // Output: 3
1833
+ * ```
1834
+ *
1835
+ * @category reducing
1836
+ * @since 2.0.0
1837
+ */
1838
+ export const reduceCompact: {
1839
+ <B, A>(b: B, f: (b: B, a: A) => B): (self: Iterable<Option<A>>) => B
1840
+ <A, B>(self: Iterable<Option<A>>, b: B, f: (b: B, a: A) => B): B
1841
+ } = dual(
1842
+ 3,
1843
+ <A, B>(self: Iterable<Option<A>>, b: B, f: (b: B, a: A) => B): B => {
1844
+ let out: B = b
1845
+ for (const oa of self) {
1846
+ if (isSome(oa)) {
1847
+ out = f(out, oa.value)
1848
+ }
1849
+ }
1850
+ return out
1851
+ }
1852
+ )
1853
+
1854
+ /**
1855
+ * Converts an `Option` into an `Array`.
1856
+ *
1857
+ * **When to use**
1858
+ *
1859
+ * Use when you need to pass an `Option` to array-based APIs or spread optional
1860
+ * values into collections.
1861
+ *
1862
+ * **Details**
1863
+ *
1864
+ * - `Some` → single-element array `[value]`
1865
+ * - `None` → empty array `[]`
1866
+ *
1867
+ * **Example** (Converting to an array)
1868
+ *
1869
+ * ```ts
1870
+ * import { Option } from "effect"
1871
+ *
1872
+ * console.log(Option.toArray(Option.some(1)))
1873
+ * // Output: [1]
1874
+ *
1875
+ * console.log(Option.toArray(Option.none()))
1876
+ * // Output: []
1877
+ * ```
1878
+ *
1879
+ * @see {@link fromIterable} for the inverse direction
1880
+ *
1881
+ * @category converting
1882
+ * @since 2.0.0
1883
+ */
1884
+ export const toArray = <A>(self: Option<A>): Array<A> => isNone(self) ? [] : [self.value]
1885
+
1886
+ /**
1887
+ * Splits an `Option` into two `Option`s using a function that returns a `Result`.
1888
+ *
1889
+ * **When to use**
1890
+ *
1891
+ * Use when you need to split an optional value into "left" and "right"
1892
+ * channels using a `Result`-returning function.
1893
+ *
1894
+ * **Details**
1895
+ *
1896
+ * - `None` → `[None, None]`
1897
+ * - `Some` where `f` returns `Err` → `[Some(error), None]`
1898
+ * - `Some` where `f` returns `Ok` → `[None, Some(value)]`
1899
+ *
1900
+ * **Example** (Partitioning by Result)
1901
+ *
1902
+ * ```ts
1903
+ * import { Option, Result } from "effect"
1904
+ *
1905
+ * const parseNumber = (s: string): Result.Result<number, string> => {
1906
+ * const n = Number(s)
1907
+ * return isNaN(n) ? Result.fail("Not a number") : Result.succeed(n)
1908
+ * }
1909
+ *
1910
+ * console.log(Option.partitionMap(Option.some("42"), parseNumber))
1911
+ * // Output: [{ _id: 'Option', _tag: 'None' }, { _id: 'Option', _tag: 'Some', value: 42 }]
1912
+ *
1913
+ * console.log(Option.partitionMap(Option.some("abc"), parseNumber))
1914
+ * // Output: [{ _id: 'Option', _tag: 'Some', value: 'Not a number' }, { _id: 'Option', _tag: 'None' }]
1915
+ *
1916
+ * console.log(Option.partitionMap(Option.none(), parseNumber))
1917
+ * // Output: [{ _id: 'Option', _tag: 'None' }, { _id: 'Option', _tag: 'None' }]
1918
+ * ```
1919
+ *
1920
+ * @see {@link filter} for simple predicate-based filtering
1921
+ *
1922
+ * @category filtering
1923
+ * @since 2.0.0
1924
+ */
1925
+ export const partitionMap: {
1926
+ <A, B, C>(f: (a: A) => Result<C, B>): (self: Option<A>) => [left: Option<B>, right: Option<C>]
1927
+ <A, B, C>(self: Option<A>, f: (a: A) => Result<C, B>): [left: Option<B>, right: Option<C>]
1928
+ } = dual(2, <A, B, C>(
1929
+ self: Option<A>,
1930
+ f: (a: A) => Result<C, B>
1931
+ ): [excluded: Option<B>, satisfying: Option<C>] => {
1932
+ if (isNone(self)) {
1933
+ return [none(), none()]
1934
+ }
1935
+ const e = f(self.value)
1936
+ return result.isFailure(e) ? [some(e.failure), none()] : [none(), some(e.success)]
1937
+ })
1938
+
1939
+ /**
1940
+ * Transforms and filters an `Option` using a `Filter` callback.
1941
+ *
1942
+ * **When to use**
1943
+ *
1944
+ * Use to transform an `Option`'s present value and discard it when the `Filter`
1945
+ * fails.
1946
+ *
1947
+ * **Details**
1948
+ *
1949
+ * The callback returns a `Result`: `Result.succeed` keeps and transforms the
1950
+ * value, while `Result.fail` discards it.
1951
+ *
1952
+ * **Example** (Filtering and transforming)
1953
+ *
1954
+ * ```ts
1955
+ * import { Option, Result } from "effect"
1956
+ *
1957
+ * console.log(Option.filterMap(
1958
+ * Option.some(2),
1959
+ * (n) => (n % 2 === 0 ? Result.succeed(`Even: ${n}`) : Result.failVoid)
1960
+ * ))
1961
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'Even: 2' }
1962
+ * ```
1963
+ *
1964
+ * @see {@link filter} for predicate-based filtering
1965
+ *
1966
+ * @category filtering
1967
+ * @since 2.0.0
1968
+ */
1969
+ export const filterMap: {
1970
+ <A, B, X>(f: Filter.Filter<A, B, X>): (self: Option<A>) => Option<B>
1971
+ <A, B, X>(self: Option<A>, f: Filter.Filter<A, B, X>): Option<B>
1972
+ } = dual(2, <A, B, X>(self: Option<A>, f: Filter.Filter<A, B, X>): Option<B> => {
1973
+ if (isNone(self)) {
1974
+ return none()
1975
+ }
1976
+ const next = f(self.value)
1977
+ return result.isSuccess(next) ? some(next.success) : none()
1978
+ })
1979
+
1980
+ /**
1981
+ * Filters an `Option` using a predicate. Returns `None` if the predicate is
1982
+ * not satisfied or the input is `None`.
1983
+ *
1984
+ * **When to use**
1985
+ *
1986
+ * Use when you need to discard an `Option`'s present value when it does not
1987
+ * meet a condition, while narrowing the type via a refinement predicate.
1988
+ *
1989
+ * **Details**
1990
+ *
1991
+ * - `None` → `None`
1992
+ * - `Some` where `predicate(value)` is `true` → `Some(value)`
1993
+ * - `Some` where `predicate(value)` is `false` → `None`
1994
+ * - Supports refinements for type narrowing
1995
+ *
1996
+ * **Example** (Filtering with a predicate)
1997
+ *
1998
+ * ```ts
1999
+ * import { Option } from "effect"
2000
+ *
2001
+ * const removeEmpty = (input: Option.Option<string>) =>
2002
+ * Option.filter(input, (value) => value !== "")
2003
+ *
2004
+ * console.log(removeEmpty(Option.some("hello")))
2005
+ * // Output: { _id: 'Option', _tag: 'Some', value: 'hello' }
2006
+ *
2007
+ * console.log(removeEmpty(Option.some("")))
2008
+ * // Output: { _id: 'Option', _tag: 'None' }
2009
+ *
2010
+ * console.log(removeEmpty(Option.none()))
2011
+ * // Output: { _id: 'Option', _tag: 'None' }
2012
+ * ```
2013
+ *
2014
+ * @see {@link filterMap} to transform and filter simultaneously
2015
+ * @see {@link exists} to test without filtering
2016
+ *
2017
+ * @category filtering
2018
+ * @since 2.0.0
2019
+ */
2020
+ export const filter: {
2021
+ <A, B extends A>(refinement: Refinement<A, B>): (self: Option<A>) => Option<B>
2022
+ <A>(predicate: Predicate<A>): <B extends A>(self: Option<B>) => Option<B>
2023
+ <A, B extends A>(self: Option<A>, refinement: Refinement<A, B>): Option<B>
2024
+ <A>(self: Option<A>, predicate: Predicate<A>): Option<A>
2025
+ } = dual(
2026
+ 2,
2027
+ <A>(self: Option<A>, predicate: Predicate<A>): Option<A> =>
2028
+ isNone(self) ? none() : predicate(self.value) ? some(self.value) : none()
2029
+ )
2030
+
2031
+ /**
2032
+ * Creates an `Equivalence` for `Option<A>` from an `Equivalence` for `A`.
2033
+ *
2034
+ * **When to use**
2035
+ *
2036
+ * Use when you need equality to treat two `None` values as equal and compare
2037
+ * two `Some` values with a supplied equality rule.
2038
+ *
2039
+ * **Details**
2040
+ *
2041
+ * - `None` vs `None` → `true`
2042
+ * - `Some` vs `None` (or vice versa) → `false`
2043
+ * - `Some(a)` vs `Some(b)` → delegates to the provided `Equivalence`
2044
+ *
2045
+ * **Example** (Comparing Options)
2046
+ *
2047
+ * ```ts
2048
+ * import { Equivalence, Option } from "effect"
2049
+ *
2050
+ * const eq = Option.makeEquivalence(Equivalence.strictEqual<number>())
2051
+ *
2052
+ * console.log(eq(Option.some(1), Option.some(1)))
2053
+ * // Output: true
2054
+ *
2055
+ * console.log(eq(Option.some(1), Option.some(2)))
2056
+ * // Output: false
2057
+ *
2058
+ * console.log(eq(Option.none(), Option.none()))
2059
+ * // Output: true
2060
+ * ```
2061
+ *
2062
+ * @category instances
2063
+ * @since 4.0.0
2064
+ */
2065
+ export const makeEquivalence = <A>(isEquivalent: Equivalence.Equivalence<A>): Equivalence.Equivalence<Option<A>> =>
2066
+ Equivalence.make((x, y) => isNone(x) ? isNone(y) : isNone(y) ? false : isEquivalent(x.value, y.value))
2067
+
2068
+ /**
2069
+ * Creates an `Order` for `Option<A>` from an `Order` for `A`.
2070
+ *
2071
+ * **When to use**
2072
+ *
2073
+ * Use when you need to sort `Some` and `None` values, with `None` ordered
2074
+ * before present values and present values compared by a supplied ordering
2075
+ * rule.
2076
+ *
2077
+ * **Details**
2078
+ *
2079
+ * - `None` is considered less than any `Some`
2080
+ * - Two `Some` values are compared using the provided `Order`
2081
+ * - Two `None` values are equal (returns `0`)
2082
+ *
2083
+ * **Example** (Ordering Options)
2084
+ *
2085
+ * ```ts
2086
+ * import { Number as N, Option } from "effect"
2087
+ *
2088
+ * const ord = Option.makeOrder(N.Order)
2089
+ *
2090
+ * console.log(ord(Option.none(), Option.some(1)))
2091
+ * // Output: -1
2092
+ *
2093
+ * console.log(ord(Option.some(1), Option.none()))
2094
+ * // Output: 1
2095
+ *
2096
+ * console.log(ord(Option.some(1), Option.some(2)))
2097
+ * // Output: -1
2098
+ * ```
2099
+ *
2100
+ * @category sorting
2101
+ * @since 4.0.0
2102
+ */
2103
+ export const makeOrder = <A>(O: Order<A>): Order<Option<A>> =>
2104
+ order.make((self, that) => isSome(self) ? (isSome(that) ? O(self.value, that.value) : 1) : -1)
2105
+
2106
+ /**
2107
+ * Lifts a binary function to operate on two `Option` values.
2108
+ *
2109
+ * **When to use**
2110
+ *
2111
+ * Use when you need to reuse an existing binary function with two `Option`
2112
+ * values.
2113
+ *
2114
+ * **Details**
2115
+ *
2116
+ * - Both `Some` → applies `f` and wraps in `Some`
2117
+ * - Either `None` → `None`
2118
+ *
2119
+ * **Example** (Lifting addition)
2120
+ *
2121
+ * ```ts
2122
+ * import { Option } from "effect"
2123
+ *
2124
+ * const addOptions = Option.lift2((a: number, b: number) => a + b)
2125
+ *
2126
+ * console.log(addOptions(Option.some(2), Option.some(3)))
2127
+ * // Output: { _id: 'Option', _tag: 'Some', value: 5 }
2128
+ *
2129
+ * console.log(addOptions(Option.some(2), Option.none()))
2130
+ * // Output: { _id: 'Option', _tag: 'None' }
2131
+ * ```
2132
+ *
2133
+ * @see {@link zipWith} for a non-lifted variant
2134
+ *
2135
+ * @category lifting
2136
+ * @since 2.0.0
2137
+ */
2138
+ export const lift2 = <A, B, C>(f: (a: A, b: B) => C): {
2139
+ (that: Option<B>): (self: Option<A>) => Option<C>
2140
+ (self: Option<A>, that: Option<B>): Option<C>
2141
+ } => dual(2, (self: Option<A>, that: Option<B>): Option<C> => zipWith(self, that, f))
2142
+
2143
+ /**
2144
+ * Lifts a `Predicate` or `Refinement` into the `Option` context: returns
2145
+ * `Some(value)` when the predicate holds, `None` otherwise.
2146
+ *
2147
+ * **When to use**
2148
+ *
2149
+ * Use to convert a boolean check into an `Option`-returning function
2150
+ * - Validating input and wrapping it in `Option`
2151
+ *
2152
+ * **Details**
2153
+ *
2154
+ * - `predicate(value)` is `true` → `Some(value)`
2155
+ * - `predicate(value)` is `false` → `None`
2156
+ * - Supports refinements for type narrowing
2157
+ *
2158
+ * **Example** (Validating positive numbers)
2159
+ *
2160
+ * ```ts
2161
+ * import { Option } from "effect"
2162
+ *
2163
+ * const parsePositive = Option.liftPredicate((n: number) => n > 0)
2164
+ *
2165
+ * console.log(parsePositive(1))
2166
+ * // Output: { _id: 'Option', _tag: 'Some', value: 1 }
2167
+ *
2168
+ * console.log(parsePositive(-1))
2169
+ * // Output: { _id: 'Option', _tag: 'None' }
2170
+ * ```
2171
+ *
2172
+ * @see {@link filter} to apply a predicate to an existing `Option`
2173
+ * @see {@link toRefinement} for the inverse direction
2174
+ *
2175
+ * @category lifting
2176
+ * @since 2.0.0
2177
+ */
2178
+ export const liftPredicate: { // Note: I intentionally avoid using the NoInfer pattern here.
2179
+ <A, B extends A>(refinement: Refinement<A, B>): (a: A) => Option<B>
2180
+ <B extends A, A = B>(predicate: Predicate<A>): (b: B) => Option<B>
2181
+ <A, B extends A>(
2182
+ self: A,
2183
+ refinement: Refinement<A, B>
2184
+ ): Option<B>
2185
+ <B extends A, A = B>(
2186
+ self: B,
2187
+ predicate: Predicate<A>
2188
+ ): Option<B>
2189
+ } = dual(
2190
+ 2,
2191
+ <B extends A, A = B>(b: B, predicate: Predicate<A>): Option<B> => predicate(b) ? some(b) : none()
2192
+ )
2193
+
2194
+ /**
2195
+ * Checks whether an `Option` contains a value equivalent to the given one, using a
2196
+ * custom `Equivalence`.
2197
+ *
2198
+ * **When to use**
2199
+ *
2200
+ * Use when you need to test whether an `Option` contains a value using a
2201
+ * custom equality check.
2202
+ *
2203
+ * **Details**
2204
+ *
2205
+ * - `Some` where `isEquivalent(value, a)` is `true` → `true`
2206
+ * - `Some` where not equivalent, or `None` → `false`
2207
+ *
2208
+ * **Example** (Checking with custom equivalence)
2209
+ *
2210
+ * ```ts
2211
+ * import { Equivalence, Option } from "effect"
2212
+ *
2213
+ * const check = Option.containsWith(Equivalence.strictEqual<number>())
2214
+ *
2215
+ * console.log(Option.some(2).pipe(check(2)))
2216
+ * // Output: true
2217
+ *
2218
+ * console.log(Option.some(1).pipe(check(2)))
2219
+ * // Output: false
2220
+ *
2221
+ * console.log(Option.none().pipe(check(2)))
2222
+ * // Output: false
2223
+ * ```
2224
+ *
2225
+ * @see {@link contains} for a version using default equality
2226
+ *
2227
+ * @category elements
2228
+ * @since 2.0.0
2229
+ */
2230
+ export const containsWith = <A>(isEquivalent: (self: A, that: A) => boolean): {
2231
+ (a: A): (self: Option<A>) => boolean
2232
+ (self: Option<A>, a: A): boolean
2233
+ } => dual(2, (self: Option<A>, a: A): boolean => isNone(self) ? false : isEquivalent(self.value, a))
2234
+
2235
+ /**
2236
+ * Checks whether an `Option` contains a value equal to the given one, using default
2237
+ * structural equality.
2238
+ *
2239
+ * **When to use**
2240
+ *
2241
+ * Use when you need a quick membership test for an `Option` value using
2242
+ * standard equality.
2243
+ *
2244
+ * **Details**
2245
+ *
2246
+ * - `Some` where `Equal.equals(value, a)` is `true` → `true`
2247
+ * - `Some` where not equal, or `None` → `false`
2248
+ *
2249
+ * **Example** (Checking containment)
2250
+ *
2251
+ * ```ts
2252
+ * import { Option } from "effect"
2253
+ *
2254
+ * console.log(Option.some(2).pipe(Option.contains(2)))
2255
+ * // Output: true
2256
+ *
2257
+ * console.log(Option.some(1).pipe(Option.contains(2)))
2258
+ * // Output: false
2259
+ *
2260
+ * console.log(Option.none().pipe(Option.contains(2)))
2261
+ * // Output: false
2262
+ * ```
2263
+ *
2264
+ * @see {@link containsWith} for custom equality
2265
+ * @see {@link exists} to test with a predicate
2266
+ *
2267
+ * @category elements
2268
+ * @since 2.0.0
2269
+ */
2270
+ export const contains: {
2271
+ <A>(a: A): (self: Option<A>) => boolean
2272
+ <A>(self: Option<A>, a: A): boolean
2273
+ } = containsWith(Equal.asEquivalence())
2274
+
2275
+ /**
2276
+ * Checks whether the value in a `Some` satisfies a predicate or refinement.
2277
+ *
2278
+ * **When to use**
2279
+ *
2280
+ * Use to check a condition on an optional value without unwrapping
2281
+ *
2282
+ * **Details**
2283
+ *
2284
+ * - `None` → `false`
2285
+ * - `Some` where `predicate(value)` is `true` → `true`
2286
+ * - `Some` where `predicate(value)` is `false` → `false`
2287
+ * - With a refinement, narrows the `Option` type on `true`
2288
+ *
2289
+ * **Example** (Testing a condition)
2290
+ *
2291
+ * ```ts
2292
+ * import { Option } from "effect"
2293
+ *
2294
+ * const isEven = (n: number) => n % 2 === 0
2295
+ *
2296
+ * console.log(Option.some(2).pipe(Option.exists(isEven)))
2297
+ * // Output: true
2298
+ *
2299
+ * console.log(Option.some(1).pipe(Option.exists(isEven)))
2300
+ * // Output: false
2301
+ *
2302
+ * console.log(Option.none().pipe(Option.exists(isEven)))
2303
+ * // Output: false
2304
+ * ```
2305
+ *
2306
+ * @see {@link filter} to keep or discard based on a predicate
2307
+ * @see {@link contains} to test for a specific value
2308
+ *
2309
+ * @category elements
2310
+ * @since 2.0.0
2311
+ */
2312
+ export const exists: {
2313
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>): (self: Option<A>) => self is Option<B>
2314
+ <A>(predicate: Predicate<NoInfer<A>>): (self: Option<A>) => boolean
2315
+ <A, B extends A>(self: Option<A>, refinement: Refinement<A, B>): self is Option<B>
2316
+ <A>(self: Option<A>, predicate: Predicate<A>): boolean
2317
+ } = dual(
2318
+ 2,
2319
+ <A, B extends A>(self: Option<A>, refinement: Refinement<A, B>): self is Option<B> =>
2320
+ isNone(self) ? false : refinement(self.value)
2321
+ )
2322
+
2323
+ // -------------------------------------------------------------------------------------
2324
+ // do notation
2325
+ // -------------------------------------------------------------------------------------
2326
+
2327
+ /**
2328
+ * Gives a name to the value of an `Option`, creating a single-key record
2329
+ * inside `Some`. Starting point for the do notation pipeline.
2330
+ *
2331
+ * **When to use**
2332
+ *
2333
+ * Use when you need to start an `Option` do notation chain by naming the first
2334
+ * value.
2335
+ *
2336
+ * **Example** (Starting do notation)
2337
+ *
2338
+ * ```ts
2339
+ * import { Option, pipe } from "effect"
2340
+ * import * as assert from "node:assert"
2341
+ *
2342
+ * const result = pipe(
2343
+ * Option.some(2),
2344
+ * Option.bindTo("x"),
2345
+ * Option.bind("y", () => Option.some(3)),
2346
+ * Option.let("sum", ({ x, y }) => x + y)
2347
+ * )
2348
+ * assert.deepStrictEqual(result, Option.some({ x: 2, y: 3, sum: 5 }))
2349
+ * ```
2350
+ *
2351
+ * @see {@link Do} for starting with an empty record
2352
+ * @see {@link bind} to add `Option` values
2353
+ * @see {@link let_ let} to add plain values
2354
+ *
2355
+ * @category do notation
2356
+ * @since 2.0.0
2357
+ */
2358
+ export const bindTo: {
2359
+ <N extends string>(name: N): <A>(self: Option<A>) => Option<{ [K in N]: A }>
2360
+ <A, N extends string>(self: Option<A>, name: N): Option<{ [K in N]: A }>
2361
+ } = doNotation.bindTo<OptionTypeLambda>(map)
2362
+
2363
+ const let_: {
2364
+ <N extends string, A extends object, B>(
2365
+ name: Exclude<N, keyof A>,
2366
+ f: (a: NoInfer<A>) => B
2367
+ ): (self: Option<A>) => Option<{ [K in N | keyof A]: K extends keyof A ? A[K] : B }>
2368
+ <A extends object, N extends string, B>(
2369
+ self: Option<A>,
2370
+ name: Exclude<N, keyof A>,
2371
+ f: (a: NoInfer<A>) => B
2372
+ ): Option<{ [K in N | keyof A]: K extends keyof A ? A[K] : B }>
2373
+ } = doNotation.let_<OptionTypeLambda>(map)
2374
+
2375
+ export {
2376
+ /**
2377
+ * Adds a computed plain value to the do notation record.
2378
+ *
2379
+ * **When to use**
2380
+ *
2381
+ * Use when you need to bind a derived non-`Option` value in an `Option` do
2382
+ * notation pipeline.
2383
+ *
2384
+ * **Example** (Adding a computed value)
2385
+ *
2386
+ * ```ts
2387
+ * import { Option, pipe } from "effect"
2388
+ * import * as assert from "node:assert"
2389
+ *
2390
+ * const result = pipe(
2391
+ * Option.Do,
2392
+ * Option.bind("x", () => Option.some(2)),
2393
+ * Option.bind("y", () => Option.some(3)),
2394
+ * Option.let("sum", ({ x, y }) => x + y)
2395
+ * )
2396
+ * assert.deepStrictEqual(result, Option.some({ x: 2, y: 3, sum: 5 }))
2397
+ * ```
2398
+ *
2399
+ * @see {@link Do} for starting the chain
2400
+ * @see {@link bind} to add `Option` values
2401
+ * @see {@link bindTo} to start by naming an existing `Option`
2402
+ *
2403
+ * @category do notation
2404
+ * @since 2.0.0
2405
+ */
2406
+ let_ as let
2407
+ }
2408
+
2409
+ /**
2410
+ * Adds an `Option` value to the do notation record under a given name. If the
2411
+ * `Option` is `None`, the whole pipeline short-circuits to `None`.
2412
+ *
2413
+ * **When to use**
2414
+ *
2415
+ * Use when you need to sequence `Option` computations in do notation.
2416
+ *
2417
+ * **Example** (Binding Option values)
2418
+ *
2419
+ * ```ts
2420
+ * import { Option, pipe } from "effect"
2421
+ * import * as assert from "node:assert"
2422
+ *
2423
+ * const result = pipe(
2424
+ * Option.Do,
2425
+ * Option.bind("x", () => Option.some(2)),
2426
+ * Option.bind("y", () => Option.some(3)),
2427
+ * Option.let("sum", ({ x, y }) => x + y),
2428
+ * Option.filter(({ x, y }) => x * y > 5)
2429
+ * )
2430
+ * assert.deepStrictEqual(result, Option.some({ x: 2, y: 3, sum: 5 }))
2431
+ * ```
2432
+ *
2433
+ * @see {@link Do} for starting the chain
2434
+ * @see {@link let_ let} to add plain values
2435
+ * @see {@link bindTo} to start by naming an existing `Option`
2436
+ *
2437
+ * @category do notation
2438
+ * @since 2.0.0
2439
+ */
2440
+ export const bind: {
2441
+ <N extends string, A extends object, B>(
2442
+ name: Exclude<N, keyof A>,
2443
+ f: (a: NoInfer<A>) => Option<B>
2444
+ ): (self: Option<A>) => Option<{ [K in N | keyof A]: K extends keyof A ? A[K] : B }>
2445
+ <A extends object, N extends string, B>(
2446
+ self: Option<A>,
2447
+ name: Exclude<N, keyof A>,
2448
+ f: (a: NoInfer<A>) => Option<B>
2449
+ ): Option<{ [K in N | keyof A]: K extends keyof A ? A[K] : B }>
2450
+ } = doNotation.bind<OptionTypeLambda>(map, flatMap)
2451
+
2452
+ /**
2453
+ * Provides an `Option` containing an empty record `{}`, used as the starting point for
2454
+ * do notation chains.
2455
+ *
2456
+ * **When to use**
2457
+ *
2458
+ * Use when you need to start an `Option` do notation pipeline before adding
2459
+ * bindings.
2460
+ *
2461
+ * **Example** (Building Option pipelines with do notation)
2462
+ *
2463
+ * ```ts
2464
+ * import { Option, pipe } from "effect"
2465
+ * import * as assert from "node:assert"
2466
+ *
2467
+ * const result = pipe(
2468
+ * Option.Do,
2469
+ * Option.bind("x", () => Option.some(2)),
2470
+ * Option.bind("y", () => Option.some(3)),
2471
+ * Option.let("sum", ({ x, y }) => x + y),
2472
+ * Option.filter(({ x, y }) => x * y > 5)
2473
+ * )
2474
+ * assert.deepStrictEqual(result, Option.some({ x: 2, y: 3, sum: 5 }))
2475
+ * ```
2476
+ *
2477
+ * @see {@link bind} to add `Option` values
2478
+ * @see {@link let_ let} to add plain values
2479
+ * @see {@link bindTo} to start by naming an existing `Option`
2480
+ *
2481
+ * @category do notation
2482
+ * @since 2.0.0
2483
+ */
2484
+ export const Do: Option<{}> = some({})
2485
+
2486
+ /**
2487
+ * Provides generator-based syntax for `Option`, similar to `async`/`await` but for
2488
+ * optional values. Yielding a `None` short-circuits the generator to `None`.
2489
+ *
2490
+ * **When to use**
2491
+ *
2492
+ * Use when you need generator syntax for a sequence of `Option` steps that
2493
+ * should short-circuit on `None`.
2494
+ *
2495
+ * **Details**
2496
+ *
2497
+ * - Each `yield*` unwraps a `Some` value or short-circuits to `None`
2498
+ * - The return value is wrapped in `Some`
2499
+ * - No `Effect` runtime is needed
2500
+ *
2501
+ * **Example** (Sequencing Option computations with generator syntax)
2502
+ *
2503
+ * ```ts
2504
+ * import { Option } from "effect"
2505
+ *
2506
+ * const maybeName: Option.Option<string> = Option.some("John")
2507
+ * const maybeAge: Option.Option<number> = Option.some(25)
2508
+ *
2509
+ * const person = Option.gen(function*() {
2510
+ * const name = (yield* maybeName).toUpperCase()
2511
+ * const age = yield* maybeAge
2512
+ * return { name, age }
2513
+ * })
2514
+ *
2515
+ * console.log(person)
2516
+ * // Output:
2517
+ * // { _id: 'Option', _tag: 'Some', value: { name: 'JOHN', age: 25 } }
2518
+ * ```
2519
+ *
2520
+ * @see {@link Do} / {@link bind} for the do notation alternative
2521
+ *
2522
+ * @category generators
2523
+ * @since 2.0.0
2524
+ */
2525
+ export const gen: Gen.Gen<OptionTypeLambda> = (...args) => {
2526
+ const f = args.length === 1 ? args[0] : args[1].bind(args[0])
2527
+ const iterator = f()
2528
+ let state: IteratorResult<any> = iterator.next()
2529
+ while (!state.done) {
2530
+ const current = state.value
2531
+ if (isNone(current)) {
2532
+ return current
2533
+ }
2534
+ state = iterator.next(current.value as never)
2535
+ }
2536
+ return some(state.value)
2537
+ }
2538
+
2539
+ /**
2540
+ * Creates a `Reducer` for `Option<A>` that prioritizes the first non-`None`
2541
+ * value and combines values when both are `Some`.
2542
+ *
2543
+ * **When to use**
2544
+ *
2545
+ * Use to build an `Option` reducer that falls back to the first available value
2546
+ * when either side may be absent.
2547
+ *
2548
+ * **Details**
2549
+ *
2550
+ * - `None` + `None` → `None`
2551
+ * - `Some(a)` + `None` → `Some(a)`
2552
+ * - `None` + `Some(b)` → `Some(b)`
2553
+ * - `Some(a)` + `Some(b)` → `Some(combine(a, b))`
2554
+ * - Initial value is `None`
2555
+ *
2556
+ * **Example** (Reducing with first-wins semantics)
2557
+ *
2558
+ * ```ts
2559
+ * import { Number, Option } from "effect"
2560
+ *
2561
+ * const reducer = Option.makeReducer(Number.ReducerSum)
2562
+ * console.log(reducer.combineAll([Option.some(1), Option.none(), Option.some(2)]))
2563
+ * // Output: { _id: 'Option', _tag: 'Some', value: 3 }
2564
+ * ```
2565
+ *
2566
+ * @see {@link makeReducerFailFast} for fail-fast semantics
2567
+ *
2568
+ * @category Reducer
2569
+ * @since 4.0.0
2570
+ */
2571
+ export function makeReducer<A>(combiner: Combiner.Combiner<A>): Reducer.Reducer<Option<A>> {
2572
+ return Reducer.make((self, that) => {
2573
+ if (isNone(self)) return that
2574
+ if (isNone(that)) return self
2575
+ return some(combiner.combine(self.value, that.value))
2576
+ }, none())
2577
+ }
2578
+
2579
+ /**
2580
+ * Creates a `Combiner` for `Option<A>` with fail-fast semantics: returns `None`
2581
+ * if either operand is `None`.
2582
+ *
2583
+ * **When to use**
2584
+ *
2585
+ * Use when you need an `Option` combiner that returns `None` unless both
2586
+ * operands are `Some`.
2587
+ *
2588
+ * **Details**
2589
+ *
2590
+ * - `None` + anything → `None`
2591
+ * - anything + `None` → `None`
2592
+ * - `Some(a)` + `Some(b)` → `Some(combine(a, b))`
2593
+ *
2594
+ * **Example** (Fail-fast combining)
2595
+ *
2596
+ * ```ts
2597
+ * import { Number, Option } from "effect"
2598
+ *
2599
+ * const combiner = Option.makeCombinerFailFast(Number.ReducerSum)
2600
+ * console.log(combiner.combine(Option.some(1), Option.some(2)))
2601
+ * // Output: { _id: 'Option', _tag: 'Some', value: 3 }
2602
+ *
2603
+ * console.log(combiner.combine(Option.some(1), Option.none()))
2604
+ * // Output: { _id: 'Option', _tag: 'None' }
2605
+ * ```
2606
+ *
2607
+ * @see {@link makeReducerFailFast} to get a full `Reducer`
2608
+ *
2609
+ * @category Combiner
2610
+ * @since 4.0.0
2611
+ */
2612
+ export function makeCombinerFailFast<A>(combiner: Combiner.Combiner<A>): Combiner.Combiner<Option<A>> {
2613
+ return Combiner.make((self, that) => {
2614
+ if (isNone(self) || isNone(that)) return none()
2615
+ return some(combiner.combine(self.value, that.value))
2616
+ })
2617
+ }
2618
+
2619
+ /**
2620
+ * Creates a `Reducer` for `Option<A>` by lifting an existing `Reducer` with
2621
+ * fail-fast semantics.
2622
+ *
2623
+ * **When to use**
2624
+ *
2625
+ * Use when you need to reduce `Option` values with fail-fast semantics, where
2626
+ * any `None` aborts the entire result instead of being skipped.
2627
+ *
2628
+ * **Details**
2629
+ *
2630
+ * - Initial value is `Some(reducer.initialValue)`
2631
+ * - Combines only when both operands are `Some`
2632
+ * - Any `None` causes the result to become `None` immediately
2633
+ *
2634
+ * **Example** (Fail-fast reducing)
2635
+ *
2636
+ * ```ts
2637
+ * import { Number, Option } from "effect"
2638
+ *
2639
+ * const reducer = Option.makeReducerFailFast(Number.ReducerSum)
2640
+ * console.log(reducer.combineAll([Option.some(1), Option.some(2)]))
2641
+ * // Output: { _id: 'Option', _tag: 'Some', value: 3 }
2642
+ *
2643
+ * console.log(reducer.combineAll([Option.some(1), Option.none()]))
2644
+ * // Output: { _id: 'Option', _tag: 'None' }
2645
+ * ```
2646
+ *
2647
+ * @see {@link makeCombinerFailFast} for just the combiner
2648
+ * @see {@link makeReducer} for non-fail-fast semantics
2649
+ *
2650
+ * @category Reducer
2651
+ * @since 4.0.0
2652
+ */
2653
+ export function makeReducerFailFast<A>(reducer: Reducer.Reducer<A>): Reducer.Reducer<Option<A>> {
2654
+ const combine = makeCombinerFailFast(reducer).combine
2655
+ const initialValue = some(reducer.initialValue)
2656
+ return Reducer.make(combine, initialValue, (collection) => {
2657
+ let out = initialValue
2658
+ for (const value of collection) {
2659
+ out = combine(out, value)
2660
+ if (isNone(out)) return out
2661
+ }
2662
+ return out
2663
+ })
2664
+ }