@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,2520 @@
1
+ /**
2
+ * Reactive state primitives for values managed by an `AtomRegistry`.
3
+ *
4
+ * An `Atom` describes how to produce or update one piece of reactive state. The
5
+ * registry runs atom reads, remembers current values, tracks dependencies
6
+ * between atoms, starts effects and streams, and cleans up atoms that are no
7
+ * longer used. This module includes the atom constructors and update helpers
8
+ * used for cached values, effect-backed values, streams, browser state, stored
9
+ * values, and server-rendered values.
10
+ *
11
+ * @since 4.0.0
12
+ */
13
+ import * as Arr from "../../Array.ts"
14
+ import * as Cause from "../../Cause.ts"
15
+ import * as Channel from "../../Channel.ts"
16
+ import * as Context from "../../Context.ts"
17
+ import * as Duration from "../../Duration.ts"
18
+ import * as Effect from "../../Effect.ts"
19
+ import * as Exit from "../../Exit.ts"
20
+ import * as Fiber from "../../Fiber.ts"
21
+ import type { LazyArg } from "../../Function.ts"
22
+ import { constant, constTrue, constVoid, dual, pipe } from "../../Function.ts"
23
+ import type * as Inspectable from "../../Inspectable.ts"
24
+ import { PipeInspectableProto } from "../../internal/core.ts"
25
+ import * as Layer from "../../Layer.ts"
26
+ import * as MutableHashMap from "../../MutableHashMap.ts"
27
+ import * as Option from "../../Option.ts"
28
+ import type { Pipeable } from "../../Pipeable.ts"
29
+ import { hasProperty } from "../../Predicate.ts"
30
+ import * as Pull from "../../Pull.ts"
31
+ import type { ReadonlyRecord } from "../../Record.ts"
32
+ import * as Scheduler from "../../Scheduler.ts"
33
+ import * as Schema from "../../Schema.ts"
34
+ import * as Scope from "../../Scope.ts"
35
+ import * as Stream from "../../Stream.ts"
36
+ import * as SubscriptionRef from "../../SubscriptionRef.ts"
37
+ import type { Mutable, NoInfer } from "../../Types.ts"
38
+ import * as KeyValueStore from "../persistence/KeyValueStore.ts"
39
+ import * as AsyncResult from "./AsyncResult.ts"
40
+ import { AtomRegistry } from "./AtomRegistry.ts"
41
+ import * as Registry from "./AtomRegistry.ts"
42
+ import * as Reactivity from "./Reactivity.ts"
43
+
44
+ /**
45
+ * Type-level identifier used to recognize `Atom` values.
46
+ *
47
+ * @category type IDs
48
+ * @since 4.0.0
49
+ */
50
+ export type TypeId = "~effect/reactivity/Atom"
51
+
52
+ /**
53
+ * Runtime identifier attached to `Atom` values and used by `isAtom`.
54
+ *
55
+ * @category type IDs
56
+ * @since 4.0.0
57
+ */
58
+ export const TypeId: TypeId = "~effect/reactivity/Atom"
59
+
60
+ /**
61
+ * Reactive value read by an `AtomRegistry`, with metadata controlling caching, laziness, refresh behavior, and initial value targeting.
62
+ *
63
+ * @category models
64
+ * @since 4.0.0
65
+ */
66
+ export interface Atom<A> extends Pipeable, Inspectable.Inspectable {
67
+ readonly [TypeId]: TypeId
68
+ readonly keepAlive: boolean
69
+ readonly lazy: boolean
70
+ readonly read: (get: AtomContext) => A
71
+ readonly refresh?: (f: <A>(atom: Atom<A>) => void) => void
72
+ readonly label?: readonly [name: string, stack: string]
73
+ readonly idleTTL?: number
74
+ readonly initialValueTarget?: Atom<A>
75
+ }
76
+
77
+ /**
78
+ * Returns `true` when a value is an `Atom`.
79
+ *
80
+ * @category guards
81
+ * @since 4.0.0
82
+ */
83
+ export const isAtom = (u: unknown): u is Atom<any> => hasProperty(u, TypeId)
84
+
85
+ /**
86
+ * Extracts the value type produced by an `Atom`.
87
+ *
88
+ * @category utility types
89
+ * @since 4.0.0
90
+ */
91
+ export type Type<T extends Atom<any>> = T extends Atom<infer A> ? A : never
92
+
93
+ /**
94
+ * Extracts the success value type from an atom whose value is an `AsyncResult`.
95
+ *
96
+ * @category utility types
97
+ * @since 4.0.0
98
+ */
99
+ export type Success<T extends Atom<any>> = T extends Atom<AsyncResult.AsyncResult<infer A, infer _>> ? A : never
100
+
101
+ /**
102
+ * Extracts the item type from an atom whose value is a `PullResult`.
103
+ *
104
+ * @category utility types
105
+ * @since 4.0.0
106
+ */
107
+ export type PullSuccess<T extends Atom<any>> = T extends Atom<PullResult<infer A, infer _>> ? A : never
108
+
109
+ /**
110
+ * Extracts the failure error type from an atom whose value is an `AsyncResult`.
111
+ *
112
+ * @category utility types
113
+ * @since 4.0.0
114
+ */
115
+ export type Failure<T extends Atom<any>> = T extends Atom<AsyncResult.AsyncResult<infer _, infer E>> ? E : never
116
+
117
+ /**
118
+ * Returns an atom type without serializable metadata, preserving `Writable` read and write types when the input atom is writable.
119
+ *
120
+ * @category utility types
121
+ * @since 4.0.0
122
+ */
123
+ export type WithoutSerializable<T extends Atom<any>> = T extends Writable<infer R, infer W> ? Writable<R, W>
124
+ : Atom<Type<T>>
125
+
126
+ /**
127
+ * Runtime identifier attached to writable atoms and used by `isWritable`.
128
+ *
129
+ * @category type IDs
130
+ * @since 4.0.0
131
+ */
132
+ export const WritableTypeId: WritableTypeId = "~effect/reactivity/Atom/Writable"
133
+
134
+ /**
135
+ * Type-level identifier used to recognize writable atoms.
136
+ *
137
+ * @category type IDs
138
+ * @since 4.0.0
139
+ */
140
+ export type WritableTypeId = "~effect/reactivity/Atom/Writable"
141
+
142
+ /**
143
+ * Atom that can also be written to, using a `WriteContext` and an input value to update reactive state.
144
+ *
145
+ * @category models
146
+ * @since 4.0.0
147
+ */
148
+ export interface Writable<R, W = R> extends Atom<R> {
149
+ readonly [WritableTypeId]: WritableTypeId
150
+ readonly write: (ctx: WriteContext<R>, value: W) => void
151
+ }
152
+
153
+ /**
154
+ * Context passed to atom read functions for reading dependencies, awaiting `AsyncResult` or `Option` values, managing subscriptions and finalizers, refreshing atoms, and updating writable atoms.
155
+ *
156
+ * @category context
157
+ * @since 4.0.0
158
+ */
159
+ export interface AtomContext {
160
+ <A>(atom: Atom<A>): A
161
+ get<A>(this: AtomContext, atom: Atom<A>): A
162
+ result<A, E>(this: AtomContext, atom: Atom<AsyncResult.AsyncResult<A, E>>, options?: {
163
+ readonly suspendOnWaiting?: boolean | undefined
164
+ }): Effect.Effect<A, E>
165
+ resultOnce<A, E>(this: AtomContext, atom: Atom<AsyncResult.AsyncResult<A, E>>, options?: {
166
+ readonly suspendOnWaiting?: boolean | undefined
167
+ }): Effect.Effect<A, E>
168
+ once<A>(this: AtomContext, atom: Atom<A>): A
169
+ addFinalizer(this: AtomContext, f: () => void): void
170
+ mount<A>(this: AtomContext, atom: Atom<A>): void
171
+ refresh<A>(this: AtomContext, atom: Atom<A>): void
172
+ refreshSelf(this: AtomContext): void
173
+ self<A>(this: AtomContext): Option.Option<A>
174
+ setSelf<A>(this: AtomContext, a: A): void
175
+ set<R, W>(this: AtomContext, atom: Writable<R, W>, value: W): void
176
+ setResult<A, E, W>(this: AtomContext, atom: Writable<AsyncResult.AsyncResult<A, E>, W>, value: W): Effect.Effect<A, E>
177
+ some<A>(this: AtomContext, atom: Atom<Option.Option<A>>): Effect.Effect<A>
178
+ someOnce<A>(this: AtomContext, atom: Atom<Option.Option<A>>): Effect.Effect<A>
179
+ stream<A>(this: AtomContext, atom: Atom<A>, options?: {
180
+ readonly withoutInitialValue?: boolean
181
+ readonly bufferSize?: number
182
+ }): Stream.Stream<A>
183
+ streamResult<A, E>(this: AtomContext, atom: Atom<AsyncResult.AsyncResult<A, E>>, options?: {
184
+ readonly withoutInitialValue?: boolean
185
+ readonly bufferSize?: number
186
+ }): Stream.Stream<A, E>
187
+ subscribe<A>(this: AtomContext, atom: Atom<A>, f: (_: A) => void, options?: {
188
+ readonly immediate?: boolean
189
+ }): void
190
+ readonly registry: Registry.AtomRegistry
191
+ }
192
+
193
+ /**
194
+ * Context passed to writable atom write functions for reading atoms, refreshing or setting the current atom, and writing to other writable atoms.
195
+ *
196
+ * @category context
197
+ * @since 4.0.0
198
+ */
199
+ export interface WriteContext<A> {
200
+ get<T>(this: WriteContext<A>, atom: Atom<T>): T
201
+ refreshSelf(this: WriteContext<A>): void
202
+ setSelf(this: WriteContext<A>, a: A): void
203
+ set<R, W>(this: WriteContext<A>, atom: Writable<R, W>, value: W): void
204
+ }
205
+
206
+ /**
207
+ * Returns a copy of an atom with an idle time-to-live: finite durations dispose it after inactivity, while an infinite duration keeps it alive.
208
+ *
209
+ * @category combinators
210
+ * @since 4.0.0
211
+ */
212
+ export const setIdleTTL: {
213
+ (duration: Duration.Input): <A extends Atom<any>>(self: A) => A
214
+ <A extends Atom<any>>(self: A, duration: Duration.Input): A
215
+ } = dual<
216
+ (duration: Duration.Input) => <A extends Atom<any>>(self: A) => A,
217
+ <A extends Atom<any>>(self: A, duration: Duration.Input) => A
218
+ >(2, (self, durationInput) => {
219
+ const duration = Duration.fromInputUnsafe(durationInput)
220
+ const isFinite = Duration.isFinite(duration)
221
+ return Object.assign(Object.create(Object.getPrototypeOf(self)), {
222
+ ...self,
223
+ keepAlive: !isFinite,
224
+ idleTTL: isFinite ? Duration.toMillis(duration) : undefined
225
+ })
226
+ })
227
+
228
+ const removeTtl = setIdleTTL(0)
229
+
230
+ const AtomProto = {
231
+ [TypeId]: TypeId,
232
+ ...PipeInspectableProto,
233
+ toJSON(this: Atom<any>) {
234
+ return {
235
+ _id: "Atom",
236
+ keepAlive: this.keepAlive,
237
+ lazy: this.lazy,
238
+ label: this.label
239
+ }
240
+ }
241
+ } as const
242
+
243
+ const RuntimeProto = {
244
+ ...AtomProto,
245
+ atom(this: AtomRuntime<any, any>, arg: any, options?: {
246
+ readonly initialValue?: unknown
247
+ readonly uninterruptible?: boolean | undefined
248
+ }) {
249
+ const read = makeRead(arg, options)
250
+ return readable((get) => {
251
+ const previous = get.self<AsyncResult.AsyncResult<any, any>>()
252
+ const runtimeResult = get(this)
253
+ if (runtimeResult._tag !== "Success") {
254
+ return AsyncResult.replacePrevious(runtimeResult, previous)
255
+ }
256
+ return read(get, runtimeResult.value)
257
+ })
258
+ },
259
+
260
+ fn(this: AtomRuntime<any, any>, arg: any, options?: {
261
+ readonly initialValue?: unknown
262
+ readonly reactivityKeys?: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>> | undefined
263
+ readonly concurrent?: boolean | undefined
264
+ }) {
265
+ if (arguments.length === 0) {
266
+ return (arg: any, options?: {}) => makeFnRuntime(this, arg, options)
267
+ }
268
+ return makeFnRuntime(this, arg, options)
269
+ },
270
+
271
+ pull(this: AtomRuntime<any, any>, arg: any, options?: {
272
+ readonly disableAccumulation?: boolean
273
+ readonly initialValue?: ReadonlyArray<any>
274
+ }) {
275
+ const pullSignal = removeTtl(state(0))
276
+ const pullAtom = readable((get) => {
277
+ const previous = get.self<AsyncResult.AsyncResult<any, any>>()
278
+ const runtimeResult = get(this)
279
+ if (runtimeResult._tag !== "Success") {
280
+ return AsyncResult.replacePrevious(runtimeResult, previous)
281
+ }
282
+ return makeEffect(
283
+ get,
284
+ makeStreamPullEffect(get, pullSignal, arg, options),
285
+ AsyncResult.initial(true),
286
+ runtimeResult.value
287
+ )
288
+ })
289
+ return makeStreamPull(pullSignal, pullAtom)
290
+ },
291
+
292
+ subscriptionRef(this: AtomRuntime<any, any>, ref: any) {
293
+ return makeSubRef(
294
+ removeTtl(readable((get) => {
295
+ const previous = get.self<AsyncResult.AsyncResult<any, any>>()
296
+ const runtimeResult = get(this)
297
+ if (runtimeResult._tag !== "Success") {
298
+ return AsyncResult.replacePrevious(runtimeResult, previous)
299
+ }
300
+ const value = typeof ref === "function" ? ref(get) : ref
301
+ return SubscriptionRef.isSubscriptionRef(value)
302
+ ? value
303
+ : makeEffect(get, value, AsyncResult.initial(true), runtimeResult.value)
304
+ })),
305
+ (get, ref) => {
306
+ const runtime = AsyncResult.getOrThrow(get(this))
307
+ return readSubscriptionRef(get, ref, runtime)
308
+ }
309
+ )
310
+ }
311
+ }
312
+
313
+ const makeFnRuntime = (
314
+ self: AtomRuntime<any, any>,
315
+ arg: (
316
+ arg: any,
317
+ get: FnContext
318
+ ) =>
319
+ | Effect.Effect<any, any, Scope.Scope | AtomRegistry>
320
+ | Stream.Stream<any, any, AtomRegistry>,
321
+ options?: {
322
+ readonly initialValue?: unknown
323
+ readonly reactivityKeys?: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>> | undefined
324
+ }
325
+ ) => {
326
+ const [read, write, argAtom] = makeResultFn(
327
+ options?.reactivityKeys ?
328
+ ((a: any, get: FnContext) => {
329
+ const effect = arg(a, get)
330
+ return Effect.isEffect(effect)
331
+ ? Reactivity.mutation(effect, options.reactivityKeys!)
332
+ : Stream.ensuring(effect, Reactivity.invalidate(options.reactivityKeys!))
333
+ }) as any :
334
+ arg,
335
+ options
336
+ )
337
+ return writable((get) => {
338
+ get.get(argAtom)
339
+ const previous = get.self<AsyncResult.AsyncResult<any, any>>()
340
+ const runtimeResult = get.get(self)
341
+ if (runtimeResult._tag !== "Success") {
342
+ return AsyncResult.replacePrevious(runtimeResult, previous)
343
+ }
344
+ return read(get, runtimeResult.value)
345
+ }, write)
346
+ }
347
+
348
+ const WritableProto = {
349
+ ...AtomProto,
350
+ [WritableTypeId]: WritableTypeId
351
+ } as const
352
+
353
+ /**
354
+ * Returns `true` when an atom is writable.
355
+ *
356
+ * @category refinements
357
+ * @since 4.0.0
358
+ */
359
+ export const isWritable = <R, W>(atom: Atom<R>): atom is Writable<R, W> => WritableTypeId in atom
360
+
361
+ /**
362
+ * Creates a read-only atom from a read function and an optional custom refresh registration callback.
363
+ *
364
+ * @category constructors
365
+ * @since 4.0.0
366
+ */
367
+ export const readable = <A>(
368
+ read: (get: AtomContext) => A,
369
+ refresh?: (f: <A>(atom: Atom<A>) => void) => void
370
+ ): Atom<A> => {
371
+ const self = Object.create(AtomProto)
372
+ self.keepAlive = false
373
+ self.lazy = true
374
+ self.read = read
375
+ self.refresh = refresh
376
+ return self
377
+ }
378
+
379
+ /**
380
+ * Creates a writable atom from read and write functions, with an optional custom refresh registration callback.
381
+ *
382
+ * @category constructors
383
+ * @since 4.0.0
384
+ */
385
+ export const writable = <R, W>(
386
+ read: (get: AtomContext) => R,
387
+ write: (ctx: WriteContext<R>, value: W) => void,
388
+ refresh?: (f: <A>(atom: Atom<A>) => void) => void
389
+ ): Writable<R, W> => {
390
+ const self = Object.create(WritableProto)
391
+ self.keepAlive = false
392
+ self.lazy = true
393
+ self.read = read
394
+ self.write = write
395
+ self.refresh = refresh
396
+ return self
397
+ }
398
+
399
+ function constSetSelf<A>(ctx: WriteContext<A>, value: A) {
400
+ ctx.setSelf(value)
401
+ }
402
+
403
+ // -----------------------------------------------------------------------------
404
+ // constructors
405
+ // -----------------------------------------------------------------------------
406
+
407
+ /**
408
+ * Creates an atom from a synchronous value or read function, or from an `Effect` or `Stream` whose state is exposed as an `AsyncResult`; plain values create writable state atoms.
409
+ *
410
+ * @category constructors
411
+ * @since 4.0.0
412
+ */
413
+ export const make: {
414
+ <A, E>(create: (get: AtomContext) => Effect.Effect<A, E, Scope.Scope | AtomRegistry>, options?: {
415
+ readonly initialValue?: A | undefined
416
+ readonly uninterruptible?: boolean | undefined
417
+ }): Atom<AsyncResult.AsyncResult<A, E>>
418
+ <A, E>(effect: Effect.Effect<A, E, Scope.Scope | AtomRegistry>, options?: {
419
+ readonly initialValue?: A
420
+ readonly uninterruptible?: boolean | undefined
421
+ }): Atom<AsyncResult.AsyncResult<A, E>>
422
+ <A, E>(create: (get: AtomContext) => Stream.Stream<A, E, AtomRegistry>, options?: {
423
+ readonly initialValue?: A
424
+ }): Atom<AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError>>
425
+ <A, E>(stream: Stream.Stream<A, E, AtomRegistry>, options?: {
426
+ readonly initialValue?: A
427
+ }): Atom<AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError>>
428
+ <A>(create: (get: AtomContext) => A): Atom<A>
429
+ <A>(initialValue: A): Writable<A>
430
+ } = (arg: any, options?: {
431
+ readonly initialValue?: unknown
432
+ readonly uninterruptible?: boolean | undefined
433
+ }) => {
434
+ const readOrAtom = makeRead(arg, options)
435
+ if (TypeId in readOrAtom) {
436
+ return readOrAtom as any
437
+ }
438
+ return readable(readOrAtom)
439
+ }
440
+
441
+ // -----------------------------------------------------------------------------
442
+ // constructors - effect
443
+ // -----------------------------------------------------------------------------
444
+
445
+ const makeRead: {
446
+ <A, E>(effect: Effect.Effect<A, E, Scope.Scope | AtomRegistry>, options?: {
447
+ readonly initialValue?: A
448
+ readonly uninterruptible?: boolean | undefined
449
+ }): (get: AtomContext, services?: Context.Context<any>) => AsyncResult.AsyncResult<A, E>
450
+ <A, E>(create: (get: AtomContext) => Effect.Effect<A, E, Scope.Scope | AtomRegistry>, options?: {
451
+ readonly initialValue?: A
452
+ readonly uninterruptible?: boolean | undefined
453
+ }): (get: AtomContext, services?: Context.Context<any>) => AsyncResult.AsyncResult<A, E>
454
+ <A, E>(stream: Stream.Stream<A, E, AtomRegistry>, options?: {
455
+ readonly initialValue?: A
456
+ readonly uninterruptible?: boolean | undefined
457
+ }): (get: AtomContext, services?: Context.Context<any>) => AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError>
458
+ <A, E>(create: (get: AtomContext) => Stream.Stream<A, E, AtomRegistry>, options?: {
459
+ readonly initialValue?: A
460
+ readonly uninterruptible?: boolean | undefined
461
+ }): (get: AtomContext, services?: Context.Context<any>) => AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError>
462
+ <A>(create: (get: AtomContext) => A): (get: AtomContext, services?: Context.Context<any>) => A
463
+ <A>(initialValue: A): Writable<A>
464
+ } = <A, E>(
465
+ arg:
466
+ | Effect.Effect<A, E, Scope.Scope | AtomRegistry>
467
+ | ((get: AtomContext) => Effect.Effect<A, E, Scope.Scope | AtomRegistry>)
468
+ | Stream.Stream<A, E, AtomRegistry>
469
+ | ((get: AtomContext) => Stream.Stream<A, E, AtomRegistry>)
470
+ | ((get: AtomContext) => A)
471
+ | A,
472
+ options?: {
473
+ readonly initialValue?: unknown
474
+ readonly uninterruptible?: boolean | undefined
475
+ }
476
+ ) => {
477
+ if (typeof arg === "function" && !Effect.isEffect(arg) && !Stream.isStream(arg)) {
478
+ const create = arg as (get: AtomContext) => any
479
+ return function(get: AtomContext, providedServices?: Context.Context<any>) {
480
+ const value = create(get)
481
+ switch (typeof value) {
482
+ case "function":
483
+ case "object": {
484
+ if (value === null) return value
485
+ else if (EffectTypeId in value) {
486
+ return effect(get, value as any, options, providedServices)
487
+ } else if (StreamTypeId in value) {
488
+ return stream(get, value as any, options, providedServices)
489
+ }
490
+ return value
491
+ }
492
+ default:
493
+ return value
494
+ }
495
+ }
496
+ } else if (Effect.isEffect(arg)) {
497
+ return function(get: AtomContext, providedServices?: Context.Context<any>) {
498
+ return effect(get, arg as any, options, providedServices)
499
+ }
500
+ } else if (Stream.isStream(arg)) {
501
+ return function(get: AtomContext, providedServices?: Context.Context<any>) {
502
+ return stream(get, arg as any, options, providedServices)
503
+ }
504
+ }
505
+
506
+ return state(arg) as any
507
+ }
508
+
509
+ const EffectTypeId: keyof Effect.Effect<any> = "~effect/Effect"
510
+ const StreamTypeId: keyof Stream.Stream<any> = "~effect/Stream"
511
+
512
+ const state = <A>(
513
+ initialValue: A
514
+ ): Writable<A> =>
515
+ writable(function(_get) {
516
+ return initialValue
517
+ }, constSetSelf)
518
+
519
+ const effect = <A, E>(
520
+ get: AtomContext,
521
+ effect: Effect.Effect<A, E, Scope.Scope | AtomRegistry>,
522
+ options?: {
523
+ readonly initialValue?: A
524
+ readonly uninterruptible?: boolean | undefined
525
+ },
526
+ services?: Context.Context<any>
527
+ ): AsyncResult.AsyncResult<A, E> => {
528
+ const initialValue = options?.initialValue !== undefined
529
+ ? AsyncResult.success<A, E>(options.initialValue)
530
+ : AsyncResult.initial<A, E>()
531
+ return makeEffect(get, effect, initialValue, services, options?.uninterruptible)
532
+ }
533
+
534
+ function makeEffect<A, E>(
535
+ ctx: AtomContext,
536
+ effect: Effect.Effect<A, E, Scope.Scope | AtomRegistry>,
537
+ initialValue: AsyncResult.AsyncResult<A, E>,
538
+ services = Context.empty(),
539
+ uninterruptible = false
540
+ ): AsyncResult.AsyncResult<A, E> {
541
+ const previous = ctx.self<AsyncResult.AsyncResult<A, E>>()
542
+ const scope = Scope.makeUnsafe()
543
+ ctx.addFinalizer(() => {
544
+ Effect.runForkWith(services)(Scope.close(scope, Exit.void))
545
+ })
546
+ const servicesMap = new Map(services.mapUnsafe)
547
+ servicesMap.set(Scope.Scope.key, scope)
548
+ servicesMap.set(AtomRegistry.key, ctx.registry)
549
+ servicesMap.set(Scheduler.Scheduler.key, ctx.registry.scheduler)
550
+ let syncResult: AsyncResult.AsyncResult<A, E> | undefined
551
+ let isAsync = false
552
+ const cancel = runCallbackSync(
553
+ Context.makeUnsafe<Scope.Scope | AtomRegistry>(servicesMap),
554
+ effect,
555
+ function(exit) {
556
+ syncResult = AsyncResult.fromExitWithPrevious(exit, previous)
557
+ if (isAsync) {
558
+ ctx.setSelf(syncResult)
559
+ }
560
+ },
561
+ uninterruptible
562
+ )
563
+ isAsync = true
564
+ if (cancel !== undefined) {
565
+ ctx.addFinalizer(cancel)
566
+ }
567
+ if (syncResult !== undefined) {
568
+ return syncResult
569
+ } else if (previous._tag === "Some") {
570
+ return AsyncResult.waitingFrom(previous)
571
+ }
572
+ return AsyncResult.waiting(initialValue)
573
+ }
574
+
575
+ function runCallbackSync<R, A, E, ER = never>(
576
+ services: Context.Context<R>,
577
+ effect: Effect.Effect<A, E, R>,
578
+ onExit: (exit: Exit.Exit<A, E | ER>) => void,
579
+ uninterruptible = false
580
+ ): (() => void) | undefined {
581
+ if (Exit.isExit(effect)) {
582
+ onExit(effect as any)
583
+ return undefined
584
+ }
585
+ const runFork = Effect.runForkWith(services)
586
+ const fiber = runFork(effect)
587
+ fiber.currentDispatcher?.flush()
588
+ const result = fiber.pollUnsafe()
589
+ if (result) {
590
+ onExit(result)
591
+ return undefined
592
+ }
593
+ const remove = fiber.addObserver(onExit)
594
+ function cancel() {
595
+ remove()
596
+ if (!uninterruptible) {
597
+ fiber.interruptUnsafe()
598
+ }
599
+ }
600
+ return cancel
601
+ }
602
+
603
+ // -----------------------------------------------------------------------------
604
+ // context
605
+ // -----------------------------------------------------------------------------
606
+
607
+ /**
608
+ * Atom that builds a `Context` from a `Layer` and exposes constructors for atoms, functions, pulls, and subscription refs that run with that context.
609
+ *
610
+ * @category models
611
+ * @since 4.0.0
612
+ */
613
+ export interface AtomRuntime<R, ER = never> extends Atom<AsyncResult.AsyncResult<Context.Context<R>, ER>> {
614
+ readonly factory: RuntimeFactory
615
+
616
+ readonly layer: Atom<Layer.Layer<R, ER>>
617
+
618
+ readonly atom: {
619
+ <A, E>(
620
+ create: (get: AtomContext) => Effect.Effect<A, E, Scope.Scope | R | AtomRegistry | Reactivity.Reactivity>,
621
+ options?: {
622
+ readonly initialValue?: A
623
+ readonly uninterruptible?: boolean | undefined
624
+ }
625
+ ): Atom<AsyncResult.AsyncResult<A, E | ER>>
626
+ <A, E>(effect: Effect.Effect<A, E, Scope.Scope | R | AtomRegistry | Reactivity.Reactivity>, options?: {
627
+ readonly initialValue?: A
628
+ readonly uninterruptible?: boolean | undefined
629
+ }): Atom<AsyncResult.AsyncResult<A, E | ER>>
630
+ <A, E>(create: (get: AtomContext) => Stream.Stream<A, E, AtomRegistry | Reactivity.Reactivity | R>, options?: {
631
+ readonly initialValue?: A
632
+ }): Atom<AsyncResult.AsyncResult<A, E | ER | Cause.NoSuchElementError>>
633
+ <A, E>(stream: Stream.Stream<A, E, AtomRegistry | Reactivity.Reactivity | R>, options?: {
634
+ readonly initialValue?: A
635
+ }): Atom<AsyncResult.AsyncResult<A, E | ER | Cause.NoSuchElementError>>
636
+ }
637
+
638
+ readonly fn: {
639
+ <Arg>(): {
640
+ <E, A>(
641
+ fn: (arg: Arg, get: FnContext) => Effect.Effect<A, E, Scope.Scope | AtomRegistry | Reactivity.Reactivity | R>,
642
+ options?: {
643
+ readonly initialValue?: A | undefined
644
+ readonly reactivityKeys?: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>> | undefined
645
+ readonly concurrent?: boolean | undefined
646
+ }
647
+ ): AtomResultFn<Arg, A, E | ER>
648
+ <E, A>(
649
+ fn: (arg: Arg, get: FnContext) => Stream.Stream<A, E, AtomRegistry | Reactivity.Reactivity | R>,
650
+ options?: {
651
+ readonly initialValue?: A | undefined
652
+ readonly reactivityKeys?: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>> | undefined
653
+ readonly concurrent?: boolean | undefined
654
+ }
655
+ ): AtomResultFn<Arg, A, E | ER | Cause.NoSuchElementError>
656
+ }
657
+ <E, A, Arg = void>(
658
+ fn: (arg: Arg, get: FnContext) => Effect.Effect<A, E, Scope.Scope | AtomRegistry | Reactivity.Reactivity | R>,
659
+ options?: {
660
+ readonly initialValue?: A | undefined
661
+ readonly reactivityKeys?: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>> | undefined
662
+ readonly concurrent?: boolean | undefined
663
+ }
664
+ ): AtomResultFn<Arg, A, E | ER>
665
+ <E, A, Arg = void>(
666
+ fn: (arg: Arg, get: FnContext) => Stream.Stream<A, E, AtomRegistry | Reactivity.Reactivity | R>,
667
+ options?: {
668
+ readonly initialValue?: A | undefined
669
+ readonly reactivityKeys?: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>> | undefined
670
+ readonly concurrent?: boolean | undefined
671
+ }
672
+ ): AtomResultFn<Arg, A, E | ER | Cause.NoSuchElementError>
673
+ }
674
+
675
+ readonly pull: <A, E>(
676
+ create:
677
+ | ((get: AtomContext) => Stream.Stream<A, E, R | AtomRegistry | Reactivity.Reactivity>)
678
+ | Stream.Stream<A, E, R | AtomRegistry | Reactivity.Reactivity>,
679
+ options?: {
680
+ readonly disableAccumulation?: boolean
681
+ readonly initialValue?: ReadonlyArray<A>
682
+ }
683
+ ) => Writable<PullResult<A, E | ER>, void>
684
+
685
+ readonly subscriptionRef: <A, E>(
686
+ create:
687
+ | Effect.Effect<SubscriptionRef.SubscriptionRef<A>, E, Scope.Scope | R | AtomRegistry | Reactivity.Reactivity>
688
+ | ((
689
+ get: AtomContext
690
+ ) => Effect.Effect<SubscriptionRef.SubscriptionRef<A>, E, Scope.Scope | R | AtomRegistry | Reactivity.Reactivity>)
691
+ ) => Writable<AsyncResult.AsyncResult<A, E>, A>
692
+ }
693
+
694
+ /**
695
+ * Factory for `AtomRuntime` values that share a `Layer.MemoMap` and a set of global layers.
696
+ *
697
+ * @category models
698
+ * @since 4.0.0
699
+ */
700
+ export interface RuntimeFactory {
701
+ <R, E>(
702
+ create:
703
+ | Layer.Layer<R, E, AtomRegistry | Reactivity.Reactivity>
704
+ | ((get: AtomContext) => Layer.Layer<R, E, AtomRegistry | Reactivity.Reactivity>)
705
+ ): AtomRuntime<R, E>
706
+ readonly memoMap: Layer.MemoMap
707
+ readonly addGlobalLayer: <A, E>(layer: Layer.Layer<A, E, AtomRegistry | Reactivity.Reactivity>) => void
708
+
709
+ /**
710
+ * Uses the `Reactivity` service from the runtime to refresh the atom whenever
711
+ * the keys change.
712
+ */
713
+ readonly withReactivity: (
714
+ keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>
715
+ ) => <A extends Atom<any>>(atom: A) => A
716
+ }
717
+
718
+ /**
719
+ * Creates a `RuntimeFactory` backed by the supplied `Layer.MemoMap`.
720
+ *
721
+ * @category constructors
722
+ * @since 4.0.0
723
+ */
724
+ export const context: (options: {
725
+ readonly memoMap: Layer.MemoMap
726
+ }) => RuntimeFactory = (options) => {
727
+ let globalLayer: Layer.Layer<any, any, AtomRegistry> = Reactivity.layer
728
+ function factory<E, R>(
729
+ create:
730
+ | Layer.Layer<R, E, AtomRegistry | Reactivity.Reactivity>
731
+ | ((get: AtomContext) => Layer.Layer<R, E, AtomRegistry | Reactivity.Reactivity>)
732
+ ): AtomRuntime<R, E> {
733
+ const self = Object.create(RuntimeProto)
734
+ self.keepAlive = false
735
+ self.lazy = true
736
+ self.refresh = undefined
737
+ self.factory = factory
738
+
739
+ const layerAtom = keepAlive(
740
+ typeof create === "function"
741
+ ? readable((get) => Layer.provideMerge(create(get), globalLayer))
742
+ : readable(() => Layer.provideMerge(create, globalLayer))
743
+ )
744
+ self.layer = layerAtom
745
+
746
+ self.read = function read(get: AtomContext) {
747
+ const layer = get(layerAtom)
748
+ const build = Effect.flatMap(Effect.scope, (scope) => Layer.buildWithMemoMap(layer, options.memoMap, scope))
749
+ return effect(get, build, { uninterruptible: true })
750
+ }
751
+
752
+ return self
753
+ }
754
+ factory.memoMap = options.memoMap
755
+ factory.addGlobalLayer = (layer: Layer.Layer<any, any, AtomRegistry | Reactivity.Reactivity>) => {
756
+ globalLayer = Layer.provideMerge(globalLayer, Layer.provide(layer, Reactivity.layer))
757
+ }
758
+ const reactivityAtom = removeTtl(make(
759
+ Effect.contextWith((services: Context.Context<Scope.Scope>) =>
760
+ Layer.buildWithMemoMap(Reactivity.layer, options.memoMap, Context.get(services, Scope.Scope))
761
+ ).pipe(
762
+ Effect.map(Context.get(Reactivity.Reactivity))
763
+ )
764
+ ))
765
+ factory.withReactivity =
766
+ (keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>) =>
767
+ <A extends Atom<any>>(atom: A): A =>
768
+ transform(atom, (get) => {
769
+ const reactivity = AsyncResult.getOrThrow(get(reactivityAtom))
770
+ get.addFinalizer(reactivity.registerUnsafe(keys, () => {
771
+ get.refresh(atom)
772
+ }))
773
+ get.subscribe(atom, (value) => get.setSelf(value))
774
+ return get.once(atom)
775
+ }, { initialValueTarget: atom }) as any as A
776
+ return factory
777
+ }
778
+
779
+ /**
780
+ * Default `Layer.MemoMap` used by the module-level `runtime` factory.
781
+ *
782
+ * @category context
783
+ * @since 4.0.0
784
+ */
785
+ export const defaultMemoMap: Layer.MemoMap = Layer.makeMemoMapUnsafe()
786
+
787
+ /**
788
+ * Default `RuntimeFactory` created with `defaultMemoMap`.
789
+ *
790
+ * @category context
791
+ * @since 4.0.0
792
+ */
793
+ export const runtime: RuntimeFactory = context({ memoMap: defaultMemoMap })
794
+
795
+ /**
796
+ * Returns `Rx.runtime.withReactivity` for refreshing an atom whenever the
797
+ * keys change in the `Reactivity` service.
798
+ *
799
+ * **When to use**
800
+ *
801
+ * Use to refresh an atom whenever one or more invalidation keys change in the
802
+ * default reactivity runtime.
803
+ *
804
+ * @category reactivity
805
+ * @since 4.0.0
806
+ */
807
+ export const withReactivity: (
808
+ keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>
809
+ ) => <A extends Atom<any>>(atom: A) => A = runtime.withReactivity
810
+
811
+ // -----------------------------------------------------------------------------
812
+ // constructors - stream
813
+ // -----------------------------------------------------------------------------
814
+
815
+ const stream = <A, E>(
816
+ get: AtomContext,
817
+ stream: Stream.Stream<A, E, AtomRegistry>,
818
+ options?: {
819
+ readonly initialValue?: A
820
+ },
821
+ services?: Context.Context<any>
822
+ ): AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError> => {
823
+ const initialValue = options?.initialValue !== undefined
824
+ ? AsyncResult.success<A, E>(options.initialValue)
825
+ : AsyncResult.initial<A, E>()
826
+ return makeStream(get, stream, initialValue, services)
827
+ }
828
+
829
+ function makeStream<A, E>(
830
+ ctx: AtomContext,
831
+ stream: Stream.Stream<A, E, AtomRegistry>,
832
+ initialValue: AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError>,
833
+ services = Context.empty()
834
+ ): AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError> {
835
+ const previous = ctx.self<AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError>>()
836
+ services = Context.add(services, AtomRegistry, ctx.registry)
837
+
838
+ const run = Effect.scopedWith((scope) =>
839
+ Effect.flatMap(Channel.toPullScoped(stream.channel, scope), (pull) =>
840
+ Effect.whileLoop({
841
+ while: constTrue,
842
+ body: () => pull,
843
+ step(arr) {
844
+ ctx.setSelf(AsyncResult.success(Arr.lastNonEmpty(arr), {
845
+ waiting: true
846
+ }))
847
+ }
848
+ }))
849
+ ).pipe(
850
+ Effect.catchCause((cause) => {
851
+ if (Pull.isDoneCause(cause)) {
852
+ pipe(
853
+ ctx.self<AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError>>(),
854
+ Option.flatMap(AsyncResult.value),
855
+ Option.match({
856
+ onNone: () =>
857
+ ctx.setSelf(
858
+ AsyncResult.failWithPrevious(new Cause.NoSuchElementError(), {
859
+ previous: ctx.self<AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError>>()
860
+ })
861
+ ),
862
+ onSome: (a) => ctx.setSelf(AsyncResult.success(a))
863
+ })
864
+ )
865
+ } else {
866
+ ctx.setSelf(AsyncResult.failureWithPrevious(cause as Cause.Cause<E>, {
867
+ previous: ctx.self<AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError>>()
868
+ }))
869
+ }
870
+ return Effect.void
871
+ })
872
+ )
873
+ const servicesMap = new Map(services.mapUnsafe)
874
+ servicesMap.set(AtomRegistry.key, ctx.registry)
875
+ servicesMap.set(Scheduler.Scheduler.key, ctx.registry.scheduler)
876
+
877
+ const cancel = runCallbackSync(
878
+ Context.makeUnsafe<AtomRegistry>(servicesMap),
879
+ run,
880
+ constVoid,
881
+ false
882
+ )
883
+ if (cancel !== undefined) {
884
+ ctx.addFinalizer(cancel)
885
+ }
886
+
887
+ if (previous._tag === "Some") {
888
+ return AsyncResult.waitingFrom(previous)
889
+ }
890
+ return AsyncResult.waiting(initialValue)
891
+ }
892
+
893
+ // -----------------------------------------------------------------------------
894
+ // constructors - subscription ref
895
+ // -----------------------------------------------------------------------------
896
+
897
+ /**
898
+ * Creates a writable atom backed by a `SubscriptionRef`, or by an effect that produces one, updating from ref changes and writing atom updates back to the ref.
899
+ *
900
+ * @category constructors
901
+ * @since 4.0.0
902
+ */
903
+ export const subscriptionRef: {
904
+ <A>(ref: SubscriptionRef.SubscriptionRef<A> | ((get: AtomContext) => SubscriptionRef.SubscriptionRef<A>)): Writable<A>
905
+ <A, E>(
906
+ effect:
907
+ | Effect.Effect<SubscriptionRef.SubscriptionRef<A>, E, Scope.Scope | AtomRegistry>
908
+ | ((get: AtomContext) => Effect.Effect<SubscriptionRef.SubscriptionRef<A>, E, Scope.Scope | AtomRegistry>)
909
+ ): Writable<AsyncResult.AsyncResult<A, E>, A>
910
+ } = (
911
+ ref:
912
+ | SubscriptionRef.SubscriptionRef<any>
913
+ | ((get: AtomContext) => SubscriptionRef.SubscriptionRef<any>)
914
+ | Effect.Effect<SubscriptionRef.SubscriptionRef<any>, any, Scope.Scope | AtomRegistry>
915
+ | ((get: AtomContext) => Effect.Effect<SubscriptionRef.SubscriptionRef<any>, any, Scope.Scope | AtomRegistry>)
916
+ ) =>
917
+ makeSubRef(
918
+ readable((get) => {
919
+ const value = typeof ref === "function" ? ref(get) : ref
920
+ return SubscriptionRef.isSubscriptionRef(value)
921
+ ? value
922
+ : makeEffect(get, value, AsyncResult.initial(true))
923
+ }),
924
+ readSubscriptionRef
925
+ ) as any
926
+
927
+ const readSubscriptionRef = (
928
+ get: AtomContext,
929
+ sub:
930
+ | SubscriptionRef.SubscriptionRef<any>
931
+ | AsyncResult.AsyncResult<SubscriptionRef.SubscriptionRef<any>, any>,
932
+ services = Context.empty()
933
+ ) => {
934
+ if (SubscriptionRef.isSubscriptionRef(sub)) {
935
+ get.addFinalizer(
936
+ SubscriptionRef.changes(sub).pipe(
937
+ Stream.runForEachArray((arr) => {
938
+ for (let i = 0; i < arr.length; i++) {
939
+ get.setSelf(arr[i])
940
+ }
941
+ return Effect.void
942
+ }),
943
+ Effect.runCallbackWith(services)
944
+ )
945
+ )
946
+ return Effect.runSyncWith(services)(SubscriptionRef.get(sub))
947
+ } else if (sub._tag !== "Success") {
948
+ return sub
949
+ }
950
+ return makeStream(get, SubscriptionRef.changes(sub.value), AsyncResult.initial(true), services)
951
+ }
952
+
953
+ const makeSubRef = (
954
+ refAtom: Atom<
955
+ SubscriptionRef.SubscriptionRef<any> | AsyncResult.AsyncResult<SubscriptionRef.SubscriptionRef<any>, any>
956
+ >,
957
+ read: (
958
+ get: AtomContext,
959
+ ref: SubscriptionRef.SubscriptionRef<any> | AsyncResult.Success<SubscriptionRef.SubscriptionRef<any>, any>
960
+ ) => any
961
+ ) => {
962
+ function write(ctx: WriteContext<SubscriptionRef.SubscriptionRef<any>>, value: any) {
963
+ const ref = ctx.get(refAtom)
964
+ if (SubscriptionRef.isSubscriptionRef(ref)) {
965
+ Effect.runSync(SubscriptionRef.set(ref, value))
966
+ } else if (AsyncResult.isSuccess(ref)) {
967
+ Effect.runSync(SubscriptionRef.set(ref.value, value))
968
+ }
969
+ }
970
+ return writable((get) => {
971
+ const ref = get(refAtom)
972
+ if (SubscriptionRef.isSubscriptionRef(ref)) {
973
+ return read(get, ref)
974
+ } else if (AsyncResult.isSuccess(ref)) {
975
+ return read(get, ref)
976
+ }
977
+ return ref
978
+ }, write)
979
+ }
980
+
981
+ // -----------------------------------------------------------------------------
982
+ // constructors - functions
983
+ // -----------------------------------------------------------------------------
984
+
985
+ /**
986
+ * Context passed to `fn` and `fnSync` computations for reading atoms, awaiting results, registering finalizers, refreshing atoms, subscribing to changes, and writing updates.
987
+ *
988
+ * @category models
989
+ * @since 4.0.0
990
+ */
991
+ export interface FnContext {
992
+ <A>(atom: Atom<A>): A
993
+ result<A, E>(this: FnContext, atom: Atom<AsyncResult.AsyncResult<A, E>>, options?: {
994
+ readonly suspendOnWaiting?: boolean | undefined
995
+ }): Effect.Effect<A, E>
996
+ addFinalizer(this: FnContext, f: () => void): void
997
+ mount<A>(this: FnContext, atom: Atom<A>): void
998
+ refresh<A>(this: FnContext, atom: Atom<A>): void
999
+ self<A>(this: FnContext): Option.Option<A>
1000
+ setSelf<A>(this: FnContext, a: A): void
1001
+ set<R, W>(this: FnContext, atom: Writable<R, W>, value: W): void
1002
+ setResult<A, E, W>(this: FnContext, atom: Writable<AsyncResult.AsyncResult<A, E>, W>, value: W): Effect.Effect<A, E>
1003
+ some<A>(this: FnContext, atom: Atom<Option.Option<A>>): Effect.Effect<A>
1004
+ stream<A>(this: FnContext, atom: Atom<A>, options?: {
1005
+ readonly withoutInitialValue?: boolean
1006
+ readonly bufferSize?: number
1007
+ }): Stream.Stream<A>
1008
+ streamResult<A, E>(this: FnContext, atom: Atom<AsyncResult.AsyncResult<A, E>>, options?: {
1009
+ readonly withoutInitialValue?: boolean
1010
+ readonly bufferSize?: number
1011
+ }): Stream.Stream<A, E>
1012
+ subscribe<A>(this: FnContext, atom: Atom<A>, f: (_: A) => void, options?: {
1013
+ readonly immediate?: boolean
1014
+ }): void
1015
+ readonly registry: Registry.AtomRegistry
1016
+ }
1017
+
1018
+ /**
1019
+ * Creates a writable atom for a synchronous function; writing an argument re-runs the function, returning `Option.none` before the first call unless an initial value is supplied.
1020
+ *
1021
+ * @category constructors
1022
+ * @since 4.0.0
1023
+ */
1024
+ export const fnSync: {
1025
+ <Arg>(): {
1026
+ <A>(
1027
+ f: (arg: Arg, get: FnContext) => A
1028
+ ): Writable<Option.Option<A>, Arg>
1029
+ <A>(
1030
+ f: (arg: Arg, get: FnContext) => A,
1031
+ options: { readonly initialValue: A }
1032
+ ): Writable<A, Arg>
1033
+ }
1034
+ <A, Arg = void>(
1035
+ f: (arg: Arg, get: FnContext) => A
1036
+ ): Writable<Option.Option<A>, Arg>
1037
+ <A, Arg = void>(
1038
+ f: (arg: Arg, get: FnContext) => A,
1039
+ options: { readonly initialValue: A }
1040
+ ): Writable<A, Arg>
1041
+ } = function(...args: ReadonlyArray<any>) {
1042
+ if (args.length === 0) {
1043
+ return makeFnSync
1044
+ }
1045
+ return makeFnSync(...args as [any, any]) as any
1046
+ }
1047
+
1048
+ const makeFnSync = <Arg, A>(f: (arg: Arg, get: FnContext) => A, options?: {
1049
+ readonly initialValue?: A
1050
+ }): Writable<Option.Option<A> | A, Arg> => {
1051
+ const argAtom = removeTtl(state<[number, Arg]>([0, undefined as any]))
1052
+ const hasInitialValue = options?.initialValue !== undefined
1053
+ return writable(function(get) {
1054
+ ;(get as any).isFn = true
1055
+ const [counter, arg] = get.get(argAtom)
1056
+ if (counter === 0) {
1057
+ return hasInitialValue ? options.initialValue : Option.none()
1058
+ }
1059
+ return hasInitialValue ? f(arg, get) : Option.some(f(arg, get))
1060
+ }, function(ctx, arg) {
1061
+ batch(() => {
1062
+ ctx.set(argAtom, [ctx.get(argAtom)[0] + 1, arg as Arg])
1063
+ ctx.refreshSelf()
1064
+ })
1065
+ })
1066
+ }
1067
+
1068
+ /**
1069
+ * Writable async function atom whose value is an `AsyncResult` and whose writes accept function arguments plus `Reset` and `Interrupt` controls.
1070
+ *
1071
+ * @category models
1072
+ * @since 4.0.0
1073
+ */
1074
+ export interface AtomResultFn<Arg, A, E = never>
1075
+ extends Writable<AsyncResult.AsyncResult<A, E>, Arg | Reset | Interrupt>
1076
+ {}
1077
+
1078
+ /**
1079
+ * Defines the control symbol that can be written to an `AtomResultFn` to reset it to its initial state.
1080
+ *
1081
+ * **When to use**
1082
+ *
1083
+ * Use when you need an `AtomResultFn` write value that clears the current async
1084
+ * result and returns it to the initial state.
1085
+ *
1086
+ * @category symbols
1087
+ * @since 4.0.0
1088
+ */
1089
+ export const Reset = Symbol.for("effect/reactivity/atom/Atom/Reset")
1090
+
1091
+ /**
1092
+ * Type of the `Reset` control symbol accepted by `AtomResultFn` writes.
1093
+ *
1094
+ * @category symbols
1095
+ * @since 4.0.0
1096
+ */
1097
+ export type Reset = typeof Reset
1098
+
1099
+ /**
1100
+ * Defines the control symbol that can be written to an `AtomResultFn` to interrupt the current asynchronous computation.
1101
+ *
1102
+ * **When to use**
1103
+ *
1104
+ * Use when you need an `AtomResultFn` write value that interrupts the currently
1105
+ * running async computation.
1106
+ *
1107
+ * @category symbols
1108
+ * @since 4.0.0
1109
+ */
1110
+ export const Interrupt = Symbol.for("effect/reactivity/atom/Atom/Interrupt")
1111
+
1112
+ /**
1113
+ * Type of the `Interrupt` control symbol accepted by `AtomResultFn` writes.
1114
+ *
1115
+ * @category symbols
1116
+ * @since 4.0.0
1117
+ */
1118
+ export type Interrupt = typeof Interrupt
1119
+
1120
+ /**
1121
+ * Creates a writable atom for an `Effect` or `Stream` function; writing an argument starts the computation and exposes its state as an `AsyncResult`.
1122
+ *
1123
+ * @category constructors
1124
+ * @since 4.0.0
1125
+ */
1126
+ export const fn: {
1127
+ <Arg>(): <E, A>(fn: (arg: Arg, get: FnContext) => Effect.Effect<A, E, Scope.Scope | AtomRegistry>, options?: {
1128
+ readonly initialValue?: A | undefined
1129
+ readonly concurrent?: boolean | undefined
1130
+ }) => AtomResultFn<Arg, A, E>
1131
+ <E, A, Arg = void>(fn: (arg: Arg, get: FnContext) => Effect.Effect<A, E, Scope.Scope | AtomRegistry>, options?: {
1132
+ readonly initialValue?: A | undefined
1133
+ readonly concurrent?: boolean | undefined
1134
+ }): AtomResultFn<Arg, A, E>
1135
+ <Arg>(): <E, A>(fn: (arg: Arg, get: FnContext) => Stream.Stream<A, E, AtomRegistry>, options?: {
1136
+ readonly initialValue?: A | undefined
1137
+ readonly concurrent?: boolean | undefined
1138
+ }) => AtomResultFn<Arg, A, E | Cause.NoSuchElementError>
1139
+ <E, A, Arg = void>(fn: (arg: Arg, get: FnContext) => Stream.Stream<A, E, AtomRegistry>, options?: {
1140
+ readonly initialValue?: A | undefined
1141
+ readonly concurrent?: boolean | undefined
1142
+ }): AtomResultFn<Arg, A, E | Cause.NoSuchElementError>
1143
+ } = function(...args: ReadonlyArray<any>) {
1144
+ if (args.length === 0) {
1145
+ return makeFn
1146
+ }
1147
+ return makeFn(...args as [any, any]) as any
1148
+ }
1149
+
1150
+ const makeFn = <Arg, E, A>(
1151
+ f: (arg: Arg, get: FnContext) => Stream.Stream<A, E, AtomRegistry> | Effect.Effect<A, E, Scope.Scope | AtomRegistry>,
1152
+ options?: {
1153
+ readonly initialValue?: A | undefined
1154
+ readonly concurrent?: boolean | undefined
1155
+ }
1156
+ ): AtomResultFn<Arg, A, E | Cause.NoSuchElementError> => {
1157
+ const [read, write] = makeResultFn(f, options)
1158
+ return writable(read, write) as any
1159
+ }
1160
+
1161
+ function makeResultFn<Arg, E, A>(
1162
+ f: (arg: Arg, get: FnContext) => Effect.Effect<A, E, Scope.Scope | AtomRegistry> | Stream.Stream<A, E, AtomRegistry>,
1163
+ options?: {
1164
+ readonly initialValue?: A
1165
+ readonly concurrent?: boolean | undefined
1166
+ }
1167
+ ) {
1168
+ const argAtom = removeTtl(state<[number, Arg | Interrupt]>([0, undefined as any]))
1169
+ const initialValue = options?.initialValue !== undefined
1170
+ ? AsyncResult.success<A, E>(options.initialValue)
1171
+ : AsyncResult.initial<A, E>()
1172
+ const fibersAtom = options?.concurrent
1173
+ ? removeTtl(readable((get) => {
1174
+ const fibers = new Set<Fiber.Fiber<any, any>>()
1175
+ get.addFinalizer(() => fibers.forEach((f) => f.interruptUnsafe()))
1176
+ return fibers
1177
+ }))
1178
+ : undefined
1179
+
1180
+ function read(
1181
+ get: AtomContext,
1182
+ services?: Context.Context<any>
1183
+ ): AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError> {
1184
+ const fibers = fibersAtom ? get(fibersAtom) : undefined
1185
+ ;(get as any).isFn = true
1186
+ const [counter, arg] = get.get(argAtom)
1187
+ if (counter === 0) {
1188
+ return initialValue
1189
+ } else if (arg === Interrupt) {
1190
+ return AsyncResult.failureWithPrevious(Cause.interrupt(), { previous: get.self() })
1191
+ }
1192
+ let value = f(arg, get)
1193
+ if (EffectTypeId in value) {
1194
+ if (fibers) {
1195
+ const eff = value as Effect.Effect<A, E, Scope.Scope | AtomRegistry>
1196
+ value = Effect.flatMap(
1197
+ Effect.forkDetach(eff, { startImmediately: true }),
1198
+ (fiber) => {
1199
+ fibers.add(fiber)
1200
+ fiber.addObserver(() => fibers.delete(fiber))
1201
+ return Effect.map(Fiber.joinAll(fibers), (arr) => arr[0])
1202
+ }
1203
+ )
1204
+ }
1205
+ return makeEffect(get, value as any, initialValue, services, false)
1206
+ }
1207
+ return makeStream(get, value as any, initialValue, services)
1208
+ }
1209
+ function write(
1210
+ ctx: WriteContext<AsyncResult.AsyncResult<A, E | Cause.NoSuchElementError>>,
1211
+ arg: Arg | Reset | Interrupt
1212
+ ) {
1213
+ batch(() => {
1214
+ if (arg === Reset) {
1215
+ ctx.set(argAtom, [0, undefined as any])
1216
+ } else if (arg === Interrupt) {
1217
+ ctx.set(argAtom, [ctx.get(argAtom)[0] + 1, Interrupt])
1218
+ } else {
1219
+ ctx.set(argAtom, [ctx.get(argAtom)[0] + 1, arg])
1220
+ }
1221
+ ctx.refreshSelf()
1222
+ })
1223
+ }
1224
+ return [read, write, argAtom] as const
1225
+ }
1226
+
1227
+ /**
1228
+ * `AsyncResult` produced by `pull`, containing a non-empty batch of pulled items and a `done` flag, or `NoSuchElementError` when the stream completes without items.
1229
+ *
1230
+ * @category models
1231
+ * @since 4.0.0
1232
+ */
1233
+ export type PullResult<A, E = never> = AsyncResult.AsyncResult<{
1234
+ readonly done: boolean
1235
+ readonly items: Arr.NonEmptyArray<A>
1236
+ }, E | Cause.NoSuchElementError>
1237
+
1238
+ /**
1239
+ * Creates a writable atom that pulls an initial chunk from a stream and then pulls the next chunk whenever it is written to, accumulating items unless `disableAccumulation` is enabled.
1240
+ *
1241
+ * @category constructors
1242
+ * @since 4.0.0
1243
+ */
1244
+ export const pull = <A, E>(
1245
+ create: ((get: AtomContext) => Stream.Stream<A, E, AtomRegistry>) | Stream.Stream<A, E, AtomRegistry>,
1246
+ options?: {
1247
+ readonly disableAccumulation?: boolean | undefined
1248
+ }
1249
+ ): Writable<PullResult<A, E>, void> => {
1250
+ const pullSignal = removeTtl(state(0))
1251
+ const pullAtom = readable(makeRead(function(get) {
1252
+ return makeStreamPullEffect(get, pullSignal, create, options)
1253
+ }))
1254
+ return makeStreamPull(pullSignal, pullAtom)
1255
+ }
1256
+
1257
+ const makeStreamPullEffect = <A, E>(
1258
+ get: AtomContext,
1259
+ pullSignal: Atom<number>,
1260
+ create: Stream.Stream<A, E, AtomRegistry> | ((get: AtomContext) => Stream.Stream<A, E, AtomRegistry>),
1261
+ options?: {
1262
+ readonly disableAccumulation?: boolean | undefined
1263
+ }
1264
+ ): Effect.Effect<
1265
+ { readonly done: boolean; readonly items: Arr.NonEmptyArray<A> },
1266
+ E | Cause.NoSuchElementError,
1267
+ Scope.Scope | AtomRegistry
1268
+ > =>
1269
+ Effect.flatMap(
1270
+ Stream.toPull(typeof create === "function" ? create(get) : create),
1271
+ (pullChunk) => {
1272
+ const fiber = Fiber.getCurrent()!
1273
+ const services = fiber.context as Context.Context<AtomRegistry | Scope.Scope>
1274
+ let acc: ReadonlyArray<A> = Arr.empty<A>()
1275
+ const pull: Effect.Effect<
1276
+ {
1277
+ done: boolean
1278
+ items: Arr.NonEmptyArray<A>
1279
+ },
1280
+ Cause.NoSuchElementError | E,
1281
+ Registry.AtomRegistry
1282
+ > = Effect.matchCauseEffect(pullChunk, {
1283
+ onFailure(cause): Effect.Effect<
1284
+ { done: boolean; items: Arr.NonEmptyArray<A> },
1285
+ Cause.NoSuchElementError | E
1286
+ > {
1287
+ if (Pull.isDoneCause(cause)) {
1288
+ if (!Arr.isReadonlyArrayNonEmpty(acc)) {
1289
+ return Effect.fail(new Cause.NoSuchElementError(`Atom.pull: no items`))
1290
+ }
1291
+ return Effect.succeed({ done: true, items: acc as Arr.NonEmptyArray<A> })
1292
+ }
1293
+ return Effect.failCause(cause as Cause.Cause<E>)
1294
+ },
1295
+ onSuccess(chunk) {
1296
+ let items: Arr.NonEmptyArray<A>
1297
+ if (options?.disableAccumulation) {
1298
+ items = chunk as any
1299
+ } else {
1300
+ items = Arr.appendAll(acc, chunk)
1301
+ acc = items
1302
+ }
1303
+ return Effect.succeed({ done: false, items })
1304
+ }
1305
+ })
1306
+
1307
+ const cancels = new Set<() => void>()
1308
+ get.addFinalizer(() => {
1309
+ for (const cancel of cancels) cancel()
1310
+ })
1311
+ get.once(pullSignal)
1312
+ get.subscribe(pullSignal, () => {
1313
+ get.setSelf(AsyncResult.waitingFrom(get.self<PullResult<A, E>>()))
1314
+ let cancel: (() => void) | undefined
1315
+ // eslint-disable-next-line prefer-const
1316
+ cancel = runCallbackSync(services, pull, (exit) => {
1317
+ if (cancel) cancels.delete(cancel)
1318
+ const result = AsyncResult.fromExitWithPrevious(exit, get.self())
1319
+ const pending = cancels.size > 0
1320
+ get.setSelf(pending ? AsyncResult.waiting(result) : result)
1321
+ })
1322
+ if (cancel) cancels.add(cancel)
1323
+ })
1324
+
1325
+ return pull
1326
+ }
1327
+ )
1328
+
1329
+ const makeStreamPull = <A, E>(
1330
+ pullSignal: Writable<number>,
1331
+ pullAtom: Atom<PullResult<A, E>>
1332
+ ) =>
1333
+ writable(pullAtom.read, function(ctx, _) {
1334
+ ctx.set(pullSignal, ctx.get(pullSignal) + 1)
1335
+ })
1336
+
1337
+ /**
1338
+ * Creates a memoized atom factory that returns the same object for the same argument, using weak references for cached values when the platform supports them.
1339
+ *
1340
+ * @category constructors
1341
+ * @since 4.0.0
1342
+ */
1343
+ export const family = typeof WeakRef === "undefined" || typeof FinalizationRegistry === "undefined" ?
1344
+ <Arg, T extends object>(
1345
+ f: (arg: Arg) => T
1346
+ ): (arg: Arg) => T => {
1347
+ const atoms = MutableHashMap.empty<Arg, T>()
1348
+ return function(arg) {
1349
+ const atomEntry = MutableHashMap.get(atoms, arg)
1350
+ if (atomEntry._tag === "Some") {
1351
+ return atomEntry.value
1352
+ }
1353
+ const newAtom = f(arg)
1354
+ MutableHashMap.set(atoms, arg, newAtom)
1355
+ return newAtom
1356
+ }
1357
+ } :
1358
+ <Arg, T extends object>(
1359
+ f: (arg: Arg) => T
1360
+ ): (arg: Arg) => T => {
1361
+ const atoms = MutableHashMap.empty<Arg, WeakRef<T>>()
1362
+ const registry = new FinalizationRegistry<Arg>((arg) => {
1363
+ MutableHashMap.remove(atoms, arg)
1364
+ })
1365
+ return function(arg) {
1366
+ const atomEntry = MutableHashMap.get(atoms, arg).pipe(
1367
+ Option.flatMapNullishOr((ref) => ref.deref())
1368
+ )
1369
+
1370
+ if (atomEntry._tag === "Some") {
1371
+ return atomEntry.value
1372
+ }
1373
+ const newAtom = f(arg)
1374
+ MutableHashMap.set(atoms, arg, new WeakRef(newAtom))
1375
+ registry.register(newAtom, arg)
1376
+ return newAtom
1377
+ }
1378
+ }
1379
+
1380
+ /**
1381
+ * Uses a fallback `AsyncResult` atom while the primary atom is `Initial`, marking the fallback result as waiting until the primary atom produces a non-initial result.
1382
+ *
1383
+ * @category combinators
1384
+ * @since 4.0.0
1385
+ */
1386
+ export const withFallback: {
1387
+ <E2, A2>(
1388
+ fallback: Atom<AsyncResult.AsyncResult<A2, E2>>
1389
+ ): <R extends Atom<AsyncResult.AsyncResult<any, any>>>(
1390
+ self: R
1391
+ ) => [R] extends [Writable<infer _, infer RW>] ? Writable<
1392
+ AsyncResult.AsyncResult<
1393
+ AsyncResult.AsyncResult.Success<Type<R>> | A2,
1394
+ AsyncResult.AsyncResult.Failure<Type<R>> | E2
1395
+ >,
1396
+ RW
1397
+ >
1398
+ : Atom<
1399
+ AsyncResult.AsyncResult<
1400
+ AsyncResult.AsyncResult.Success<Type<R>> | A2,
1401
+ AsyncResult.AsyncResult.Failure<Type<R>> | E2
1402
+ >
1403
+ >
1404
+ <R extends Atom<AsyncResult.AsyncResult<any, any>>, A2, E2>(
1405
+ self: R,
1406
+ fallback: Atom<AsyncResult.AsyncResult<A2, E2>>
1407
+ ): [R] extends [Writable<infer _, infer RW>] ? Writable<
1408
+ AsyncResult.AsyncResult<
1409
+ AsyncResult.AsyncResult.Success<Type<R>> | A2,
1410
+ AsyncResult.AsyncResult.Failure<Type<R>> | E2
1411
+ >,
1412
+ RW
1413
+ >
1414
+ : Atom<
1415
+ AsyncResult.AsyncResult<
1416
+ AsyncResult.AsyncResult.Success<Type<R>> | A2,
1417
+ AsyncResult.AsyncResult.Failure<Type<R>> | E2
1418
+ >
1419
+ >
1420
+ } = dual(2, <R extends Atom<AsyncResult.AsyncResult<any, any>>, A2, E2>(
1421
+ self: R,
1422
+ fallback: Atom<AsyncResult.AsyncResult<A2, E2>>
1423
+ ): [R] extends [Writable<infer _, infer RW>] ? Writable<
1424
+ AsyncResult.AsyncResult<
1425
+ AsyncResult.AsyncResult.Success<Type<R>> | A2,
1426
+ AsyncResult.AsyncResult.Failure<Type<R>> | E2
1427
+ >,
1428
+ RW
1429
+ >
1430
+ : Atom<
1431
+ AsyncResult.AsyncResult<
1432
+ AsyncResult.AsyncResult.Success<Type<R>> | A2,
1433
+ AsyncResult.AsyncResult.Failure<Type<R>> | E2
1434
+ >
1435
+ > =>
1436
+ {
1437
+ function withFallback(get: AtomContext) {
1438
+ const result = get(self)
1439
+ if (result._tag === "Initial") {
1440
+ return AsyncResult.waiting(get(fallback))
1441
+ }
1442
+ return result
1443
+ }
1444
+ return isWritable(self)
1445
+ ? writable(
1446
+ withFallback,
1447
+ self.write,
1448
+ self.refresh ?? function(refresh) {
1449
+ refresh(self)
1450
+ }
1451
+ ) as any
1452
+ : readable(
1453
+ withFallback,
1454
+ self.refresh ?? function(refresh) {
1455
+ refresh(self)
1456
+ }
1457
+ ) as any
1458
+ })
1459
+
1460
+ /**
1461
+ * Returns a copy of an atom that remains cached and mounted even when no subscribers are using it.
1462
+ *
1463
+ * @category combinators
1464
+ * @since 4.0.0
1465
+ */
1466
+ export const keepAlive = <A extends Atom<any>>(self: A): A =>
1467
+ Object.assign(Object.create(Object.getPrototypeOf(self)), {
1468
+ ...self,
1469
+ keepAlive: true
1470
+ })
1471
+
1472
+ /**
1473
+ * Allows a reactive value to be disposed of when it is not in use.
1474
+ *
1475
+ * **Details**
1476
+ *
1477
+ * Atoms have this behavior by default, so use this to undo `keepAlive` on a copied atom.
1478
+ *
1479
+ * @category combinators
1480
+ * @since 4.0.0
1481
+ */
1482
+ export const autoDispose = <A extends Atom<any>>(self: A): A =>
1483
+ Object.assign(Object.create(Object.getPrototypeOf(self)), {
1484
+ ...self,
1485
+ keepAlive: false
1486
+ })
1487
+
1488
+ /**
1489
+ * Sets whether an atom should be lazy.
1490
+ *
1491
+ * **Details**
1492
+ *
1493
+ * Lazy atoms defer recomputation while they have no active listeners or active
1494
+ * non-lazy dependents, rebuilding the next time their value is observed.
1495
+ *
1496
+ * @category combinators
1497
+ * @since 4.0.0
1498
+ */
1499
+ export const setLazy: {
1500
+ (lazy: boolean): <A extends Atom<any>>(self: A) => A
1501
+ <A extends Atom<any>>(self: A, lazy: boolean): A
1502
+ } = dual(2, <A extends Atom<any>>(self: A, lazy: boolean) =>
1503
+ Object.assign(Object.create(Object.getPrototypeOf(self)), {
1504
+ ...self,
1505
+ lazy
1506
+ }))
1507
+
1508
+ /**
1509
+ * Attaches a diagnostic label to an atom.
1510
+ *
1511
+ * **Details**
1512
+ *
1513
+ * The label is used for inspection and debugging metadata and does not change the
1514
+ * atom's read or write behavior.
1515
+ *
1516
+ * @category combinators
1517
+ * @since 4.0.0
1518
+ */
1519
+ export const withLabel: {
1520
+ (name: string): <A extends Atom<any>>(self: A) => A
1521
+ <A extends Atom<any>>(self: A, name: string): A
1522
+ } = dual<
1523
+ (name: string) => <A extends Atom<any>>(self: A) => A,
1524
+ <A extends Atom<any>>(self: A, name: string) => A
1525
+ >(2, (self, name) =>
1526
+ Object.assign(Object.create(Object.getPrototypeOf(self)), {
1527
+ ...self,
1528
+ label: [name, new Error().stack?.split("\n")[5] ?? ""]
1529
+ }))
1530
+
1531
+ /**
1532
+ * Pairs an atom with an initial value for registry initialization.
1533
+ *
1534
+ * **When to use**
1535
+ *
1536
+ * Use to preload an atom value when constructing or seeding a registry.
1537
+ *
1538
+ * **Details**
1539
+ *
1540
+ * The returned tuple can be supplied to `AtomRegistry` initial values so the atom
1541
+ * starts with the provided value before it is first rebuilt.
1542
+ *
1543
+ * @category combinators
1544
+ * @since 4.0.0
1545
+ */
1546
+ export const initialValue: {
1547
+ <A>(initialValue: A): (self: Atom<A>) => readonly [Atom<A>, A]
1548
+ <A>(self: Atom<A>, initialValue: A): readonly [Atom<A>, A]
1549
+ } = dual<
1550
+ <A>(initialValue: A) => (self: Atom<A>) => readonly [Atom<A>, A],
1551
+ <A>(self: Atom<A>, initialValue: A) => readonly [Atom<A>, A]
1552
+ >(2, (self, initialValue) => [self, initialValue])
1553
+
1554
+ /**
1555
+ * Creates a derived atom by reading another atom with a custom `AtomContext`
1556
+ * function.
1557
+ *
1558
+ * **Details**
1559
+ *
1560
+ * If the source is writable, the derived atom keeps the source write input and
1561
+ * forwards writes to the source. `initialValueTarget` controls which atom receives
1562
+ * preloaded initial values for the derived atom.
1563
+ *
1564
+ * @category combinators
1565
+ * @since 4.0.0
1566
+ */
1567
+ export const transform: {
1568
+ <R extends Atom<any>, B>(
1569
+ f: (get: AtomContext, atom: R) => B,
1570
+ options?: {
1571
+ readonly initialValueTarget?: Atom<B> | undefined
1572
+ }
1573
+ ): (self: R) => [R] extends [Writable<infer _, infer RW>] ? Writable<B, RW> : Atom<B>
1574
+ <R extends Atom<any>, B>(
1575
+ self: R,
1576
+ f: (get: AtomContext, atom: R) => B,
1577
+ options?: {
1578
+ readonly initialValueTarget?: Atom<B> | undefined
1579
+ }
1580
+ ): [R] extends [Writable<infer _, infer RW>] ? Writable<B, RW> : Atom<B>
1581
+ } = dual(
1582
+ (args) => isAtom(args[0]),
1583
+ (<A, B>(
1584
+ self: Atom<A>,
1585
+ f: (get: AtomContext, atom: Atom<A>, options?: {
1586
+ readonly initialValueTarget?: Atom<B> | undefined
1587
+ }) => B,
1588
+ options?: {
1589
+ readonly initialValueTarget?: Atom<B> | undefined
1590
+ }
1591
+ ): Atom<B> => {
1592
+ const atom = removeTtl(
1593
+ isWritable(self)
1594
+ ? writable(
1595
+ (get) => f(get, self),
1596
+ function(ctx, value) {
1597
+ ctx.set(self, value)
1598
+ },
1599
+ self.refresh ?? function(refresh) {
1600
+ refresh(self)
1601
+ }
1602
+ )
1603
+ : readable(
1604
+ (get) => f(get, self),
1605
+ self.refresh ?? function(refresh) {
1606
+ refresh(self)
1607
+ }
1608
+ )
1609
+ )
1610
+ if (options?.initialValueTarget) {
1611
+ ;(atom as Mutable<Atom<B>>).initialValueTarget = getInitialValueTarget(options.initialValueTarget)
1612
+ }
1613
+ return atom
1614
+ }) as any
1615
+ )
1616
+
1617
+ const getInitialValueTarget = <A>(atom: Atom<A>): Atom<A> => {
1618
+ let target = atom
1619
+ while (target.initialValueTarget) {
1620
+ target = target.initialValueTarget
1621
+ }
1622
+ return target
1623
+ }
1624
+
1625
+ /**
1626
+ * Maps the current value of an atom with a pure function.
1627
+ *
1628
+ * **Details**
1629
+ *
1630
+ * When the source atom is writable, the returned atom remains writable and keeps
1631
+ * the source atom's write input type.
1632
+ *
1633
+ * @category combinators
1634
+ * @since 4.0.0
1635
+ */
1636
+ export const map: {
1637
+ <R extends Atom<any>, B>(
1638
+ f: (_: Type<R>) => B
1639
+ ): (self: R) => [R] extends [Writable<infer _, infer RW>] ? Writable<B, RW> : Atom<B>
1640
+ <R extends Atom<any>, B>(
1641
+ self: R,
1642
+ f: (_: Type<R>) => B
1643
+ ): [R] extends [Writable<infer _, infer RW>] ? Writable<B, RW> : Atom<B>
1644
+ } = dual(
1645
+ 2,
1646
+ <A, B>(self: Atom<A>, f: (_: A) => B): Atom<B> => transform(self, (get) => f(get(self)))
1647
+ )
1648
+
1649
+ /**
1650
+ * Maps the successful value inside an `AsyncResult` atom.
1651
+ *
1652
+ * **Details**
1653
+ *
1654
+ * Initial and failure states are preserved, and writable source atoms keep their
1655
+ * original write input type.
1656
+ *
1657
+ * @category combinators
1658
+ * @since 4.0.0
1659
+ */
1660
+ export const mapResult: {
1661
+ <R extends Atom<AsyncResult.AsyncResult<any, any>>, B>(
1662
+ f: (_: AsyncResult.AsyncResult.Success<Type<R>>) => B
1663
+ ): (
1664
+ self: R
1665
+ ) => [R] extends [Writable<infer _, infer RW>] ?
1666
+ Writable<AsyncResult.AsyncResult<B, AsyncResult.AsyncResult.Failure<Type<R>>>, RW>
1667
+ : Atom<AsyncResult.AsyncResult<B, AsyncResult.AsyncResult.Failure<Type<R>>>>
1668
+ <R extends Atom<AsyncResult.AsyncResult<any, any>>, B>(
1669
+ self: R,
1670
+ f: (_: AsyncResult.AsyncResult.Success<Type<R>>) => B
1671
+ ): [R] extends [Writable<infer _, infer RW>] ?
1672
+ Writable<AsyncResult.AsyncResult<B, AsyncResult.AsyncResult.Failure<Type<R>>>, RW>
1673
+ : Atom<AsyncResult.AsyncResult<B, AsyncResult.AsyncResult.Failure<Type<R>>>>
1674
+ } = dual(2, <R extends Atom<AsyncResult.AsyncResult<any, any>>, B>(
1675
+ self: R,
1676
+ f: (_: AsyncResult.AsyncResult.Success<Type<R>>) => B
1677
+ ): [R] extends [Writable<infer _, infer RW>] ?
1678
+ Writable<AsyncResult.AsyncResult<B, AsyncResult.AsyncResult.Failure<Type<R>>>, RW>
1679
+ : Atom<AsyncResult.AsyncResult<B, AsyncResult.AsyncResult.Failure<Type<R>>>> => map(self, AsyncResult.map(f)))
1680
+
1681
+ /**
1682
+ * Creates an atom that publishes source changes only after the source has stopped
1683
+ * changing for the specified duration.
1684
+ *
1685
+ * **Details**
1686
+ *
1687
+ * The current source value is used immediately, and any pending debounce timer is
1688
+ * cleared when the derived atom is disposed.
1689
+ *
1690
+ * @category combinators
1691
+ * @since 4.0.0
1692
+ */
1693
+ export const debounce: {
1694
+ (duration: Duration.Input): <A extends Atom<any>>(self: A) => WithoutSerializable<A>
1695
+ <A extends Atom<any>>(self: A, duration: Duration.Input): WithoutSerializable<A>
1696
+ } = dual(
1697
+ 2,
1698
+ <A>(self: Atom<A>, duration: Duration.Input): Atom<A> => {
1699
+ const millis = Duration.toMillis(Duration.fromInputUnsafe(duration))
1700
+ return transform(self, function(get) {
1701
+ let timeout: number | undefined
1702
+ let value = get.once(self)
1703
+ function update() {
1704
+ timeout = undefined
1705
+ get.setSelf(value)
1706
+ }
1707
+ get.addFinalizer(function() {
1708
+ if (timeout) clearTimeout(timeout)
1709
+ })
1710
+ get.subscribe(self, function(val) {
1711
+ value = val
1712
+ if (timeout) clearTimeout(timeout)
1713
+ timeout = setTimeout(update, millis) as any
1714
+ })
1715
+ return value
1716
+ }, { initialValueTarget: self })
1717
+ }
1718
+ )
1719
+
1720
+ /**
1721
+ * Creates a derived atom that reads the source and schedules a refresh after the
1722
+ * specified duration.
1723
+ *
1724
+ * **Details**
1725
+ *
1726
+ * The scheduled refresh is canceled when the derived atom's lifetime is disposed.
1727
+ *
1728
+ * @category combinators
1729
+ * @since 4.0.0
1730
+ */
1731
+ export const withRefresh: {
1732
+ (duration: Duration.Input): <A extends Atom<any>>(self: A) => WithoutSerializable<A>
1733
+ <A extends Atom<any>>(self: A, duration: Duration.Input): WithoutSerializable<A>
1734
+ } = dual(
1735
+ 2,
1736
+ <A>(self: Atom<A>, duration: Duration.Input): Atom<A> => {
1737
+ const millis = Duration.toMillis(Duration.fromInputUnsafe(duration))
1738
+ return transform(self, function(get) {
1739
+ const handle = setTimeout(() => get.refresh(self), millis) as any
1740
+ get.addFinalizer(() => clearTimeout(handle))
1741
+ return get(self)
1742
+ }, { initialValueTarget: self })
1743
+ }
1744
+ )
1745
+
1746
+ /**
1747
+ * Adds stale-while-revalidate refresh behavior to an async result atom.
1748
+ *
1749
+ * **Details**
1750
+ *
1751
+ * Automatic revalidation during reads is skipped while the current value is
1752
+ * fresh within `staleTime`. Manual `refresh` calls remain forceful and always
1753
+ * forward to the wrapped atom. Use `revalidateOnMount` to control whether stale data should trigger a
1754
+ * background refresh on first mount. Use `revalidateOnFocus` to control
1755
+ * focus behavior. `true` respects `staleTime` and `"always"` forces refetch.
1756
+ *
1757
+ * @category combinators
1758
+ * @since 4.0.0
1759
+ */
1760
+ export const swr: {
1761
+ (
1762
+ options: {
1763
+ readonly staleTime: Duration.Input
1764
+ readonly revalidateOnMount?: boolean | undefined
1765
+ readonly revalidateOnFocus?: boolean | "always" | undefined
1766
+ readonly focusSignal?: Atom<any> | undefined
1767
+ }
1768
+ ): <R extends Atom<AsyncResult.AsyncResult<any, any>>>(self: R) => WithoutSerializable<R>
1769
+ <R extends Atom<AsyncResult.AsyncResult<any, any>>>(
1770
+ self: R,
1771
+ options: {
1772
+ readonly staleTime: Duration.Input
1773
+ readonly revalidateOnMount?: boolean | undefined
1774
+ readonly revalidateOnFocus?: boolean | "always" | undefined
1775
+ readonly focusSignal?: Atom<any> | undefined
1776
+ }
1777
+ ): WithoutSerializable<R>
1778
+ } = dual(
1779
+ 2,
1780
+ <A, E>(
1781
+ self: Atom<AsyncResult.AsyncResult<A, E>>,
1782
+ options: {
1783
+ readonly staleTime: Duration.Input
1784
+ readonly revalidateOnMount?: boolean | undefined
1785
+ readonly revalidateOnFocus?: boolean | "always" | undefined
1786
+ readonly focusSignal?: Atom<any> | undefined
1787
+ }
1788
+ ): Atom<AsyncResult.AsyncResult<A, E>> => {
1789
+ const staleTime = Duration.toMillis(Duration.fromInputUnsafe(options.staleTime))
1790
+ return transform(self, (get) => {
1791
+ const current = get.once(self)
1792
+ get.subscribe(self, (value) => {
1793
+ get.setSelf(value)
1794
+ })
1795
+ if (options.revalidateOnFocus && options.focusSignal) {
1796
+ get.once(options.focusSignal)
1797
+ get.subscribe(
1798
+ options.focusSignal,
1799
+ options.revalidateOnFocus === "always" ? () => get.refresh(self) : () => {
1800
+ const current = get.once(self)
1801
+ if (shouldRevalidateSWR(current, staleTime)) {
1802
+ get.refresh(self)
1803
+ }
1804
+ }
1805
+ )
1806
+ }
1807
+ const firstRead = Option.isNone(get.self<AsyncResult.AsyncResult<A, E>>())
1808
+ if (firstRead && options.revalidateOnMount === false) {
1809
+ return current
1810
+ }
1811
+ if (shouldRevalidateSWR(current, staleTime)) {
1812
+ get.refresh(self)
1813
+ }
1814
+ return current
1815
+ }, { initialValueTarget: self })
1816
+ }
1817
+ ) as any
1818
+
1819
+ const swrTimestamp = <A, E>(result: AsyncResult.AsyncResult<A, E>): Option.Option<number> => {
1820
+ if (result._tag === "Success") {
1821
+ return Option.some(result.timestamp)
1822
+ }
1823
+ if (result._tag === "Failure") {
1824
+ return Option.map(result.previousSuccess, (success) => success.timestamp)
1825
+ }
1826
+ return Option.none()
1827
+ }
1828
+
1829
+ const isFreshWithin = (timestamp: number, staleTime: number, now: number): boolean => now - timestamp < staleTime
1830
+
1831
+ const shouldRevalidateSWR = <A, E>(result: AsyncResult.AsyncResult<A, E>, staleTime: number): boolean => {
1832
+ if (result.waiting) {
1833
+ return false
1834
+ }
1835
+ const timestamp = Option.getOrUndefined(swrTimestamp(result))
1836
+ if (timestamp === undefined) {
1837
+ return result._tag !== "Initial"
1838
+ }
1839
+ return !isFreshWithin(timestamp, staleTime, Date.now())
1840
+ }
1841
+
1842
+ /**
1843
+ * Wraps an atom in a writable optimistic atom.
1844
+ *
1845
+ * **Details**
1846
+ *
1847
+ * Writes accept transition atoms containing `AsyncResult` values. Waiting
1848
+ * successes are shown optimistically while transitions run; when successful
1849
+ * transitions finish, the source atom is refreshed, and failures roll the value
1850
+ * back to the latest source value.
1851
+ *
1852
+ * @category Optimistic
1853
+ * @since 4.0.0
1854
+ */
1855
+ export const optimistic = <A>(self: Atom<A>): Writable<A, Atom<AsyncResult.AsyncResult<A, unknown>>> => {
1856
+ let counter = 0
1857
+ const writeAtom = removeTtl(state(
1858
+ [
1859
+ counter,
1860
+ undefined as any as Atom<AsyncResult.AsyncResult<A, unknown>>
1861
+ ] as const
1862
+ ))
1863
+ return writable(
1864
+ (get) => {
1865
+ let lastValue = get.once(self)
1866
+ let needsRefresh = false
1867
+ get.subscribe(self, (value) => {
1868
+ lastValue = value
1869
+ if (transitions.size > 0) {
1870
+ return
1871
+ }
1872
+ needsRefresh = false
1873
+ if (!AsyncResult.isAsyncResult(value)) {
1874
+ return get.setSelf(value)
1875
+ }
1876
+ const current = Option.getOrUndefined(get.self<AsyncResult.AsyncResult<any, any>>())!
1877
+ switch (value._tag) {
1878
+ case "Initial": {
1879
+ if (AsyncResult.isInitial(current)) {
1880
+ get.setSelf(value)
1881
+ }
1882
+ return
1883
+ }
1884
+ case "Success": {
1885
+ if (AsyncResult.isSuccess(current)) {
1886
+ if (!value.waiting && value.timestamp >= current.timestamp) {
1887
+ get.setSelf(value)
1888
+ }
1889
+ } else {
1890
+ get.setSelf(value)
1891
+ }
1892
+ return
1893
+ }
1894
+ case "Failure": {
1895
+ return get.setSelf(value)
1896
+ }
1897
+ }
1898
+ })
1899
+ const transitions = new Set<Atom<AsyncResult.AsyncResult<A, unknown>>>()
1900
+ const cancels = new Set<() => void>()
1901
+ get.subscribe(writeAtom, ([, atom]) => {
1902
+ if (transitions.has(atom)) return
1903
+ transitions.add(atom)
1904
+ let cancel: (() => void) | undefined
1905
+ // eslint-disable-next-line prefer-const
1906
+ cancel = get.registry.subscribe(atom, (result) => {
1907
+ if (AsyncResult.isSuccess(result) && result.waiting) {
1908
+ return get.setSelf(result.value)
1909
+ }
1910
+ transitions.delete(atom)
1911
+ if (cancel) {
1912
+ cancels.delete(cancel)
1913
+ cancel()
1914
+ }
1915
+ if (!needsRefresh && !AsyncResult.isFailure(result)) {
1916
+ needsRefresh = true
1917
+ }
1918
+ if (transitions.size === 0) {
1919
+ if (needsRefresh) {
1920
+ needsRefresh = false
1921
+ get.refresh(self)
1922
+ } else {
1923
+ get.setSelf(lastValue)
1924
+ }
1925
+ }
1926
+ }, { immediate: true })
1927
+ if (transitions.has(atom)) {
1928
+ cancels.add(cancel)
1929
+ } else {
1930
+ cancel()
1931
+ }
1932
+ })
1933
+ get.addFinalizer(() => {
1934
+ for (const cancel of cancels) cancel()
1935
+ transitions.clear()
1936
+ cancels.clear()
1937
+ })
1938
+ return lastValue
1939
+ },
1940
+ (ctx, atom) => ctx.set(writeAtom, [++counter, atom]),
1941
+ (refresh) => refresh(self)
1942
+ )
1943
+ }
1944
+
1945
+ /**
1946
+ * Creates an `AtomResultFn` that applies an optimistic update before running the
1947
+ * underlying mutation.
1948
+ *
1949
+ * **Details**
1950
+ *
1951
+ * The reducer computes the provisional value from the current value and mutation
1952
+ * input. The wrapped function result then completes the transition or updates the
1953
+ * optimistic value through the provided setter callback.
1954
+ *
1955
+ * @category Optimistic
1956
+ * @since 4.0.0
1957
+ */
1958
+ export const optimisticFn: {
1959
+ <A, W, XA, XE, OW = void>(
1960
+ options: {
1961
+ readonly reducer: (current: NoInfer<A>, update: OW) => NoInfer<W>
1962
+ readonly fn:
1963
+ | AtomResultFn<OW, XA, XE>
1964
+ | ((set: (result: NoInfer<W>) => void) => AtomResultFn<OW, XA, XE>)
1965
+ }
1966
+ ): (
1967
+ self: Writable<A, Atom<AsyncResult.AsyncResult<W, unknown>>>
1968
+ ) => AtomResultFn<OW, XA, XE>
1969
+ <A, W, XA, XE, OW = void>(
1970
+ self: Writable<A, Atom<AsyncResult.AsyncResult<W, unknown>>>,
1971
+ options: {
1972
+ readonly reducer: (current: NoInfer<A>, update: OW) => NoInfer<W>
1973
+ readonly fn:
1974
+ | AtomResultFn<OW, XA, XE>
1975
+ | ((set: (result: NoInfer<W>) => void) => AtomResultFn<OW, XA, XE>)
1976
+ }
1977
+ ): AtomResultFn<OW, XA, XE>
1978
+ } = dual(2, <A, W, XA, XE, OW = void>(
1979
+ self: Writable<A, Atom<AsyncResult.AsyncResult<W, unknown>>>,
1980
+ options: {
1981
+ readonly reducer: (current: NoInfer<A>, update: OW) => NoInfer<W>
1982
+ readonly fn:
1983
+ | AtomResultFn<OW, XA, XE>
1984
+ | ((set: (result: NoInfer<W>) => void) => AtomResultFn<OW, XA, XE>)
1985
+ }
1986
+ ): AtomResultFn<OW, XA, XE> => {
1987
+ const transition = removeTtl(state<AsyncResult.AsyncResult<W, unknown>>(AsyncResult.initial()))
1988
+ return fn((arg: OW, get) => {
1989
+ let value = options.reducer(get(self), arg)
1990
+ if (AsyncResult.isAsyncResult(value)) {
1991
+ value = AsyncResult.waiting(value, { touch: true })
1992
+ }
1993
+ get.set(transition, AsyncResult.success(value, { waiting: true }))
1994
+ get.set(self, transition)
1995
+ const fn = typeof options.fn === "function"
1996
+ ? autoDispose(options.fn((value) =>
1997
+ get.set(
1998
+ transition,
1999
+ AsyncResult.success(AsyncResult.isAsyncResult(value) ? AsyncResult.waiting(value) : value, { waiting: true })
2000
+ )
2001
+ ))
2002
+ : options.fn
2003
+ get.set(fn, arg)
2004
+ return Effect.callback<XA, XE>((resume) => {
2005
+ get.subscribe(fn, (result) => {
2006
+ if (result._tag === "Initial" || result.waiting) return
2007
+ get.set(transition, AsyncResult.map(result, () => value))
2008
+ resume(AsyncResult.toExit(result) as any)
2009
+ }, { immediate: true })
2010
+ })
2011
+ })
2012
+ })
2013
+
2014
+ /**
2015
+ * Runs synchronous atom updates as a batch.
2016
+ *
2017
+ * **Details**
2018
+ *
2019
+ * Stale nodes are rebuilt and listeners are notified after the callback completes,
2020
+ * so dependent updates observe the final batched state.
2021
+ *
2022
+ * @category batching
2023
+ * @since 4.0.0
2024
+ */
2025
+ export const batch: (f: () => void) => void = Registry.batch
2026
+
2027
+ // -----------------------------------------------------------------------------
2028
+ // Focus
2029
+ // -----------------------------------------------------------------------------
2030
+
2031
+ /**
2032
+ * Creates a browser-only signal atom that increments when the document becomes visible.
2033
+ *
2034
+ * **Details**
2035
+ *
2036
+ * It listens for `visibilitychange` events on `window` and removes the listener
2037
+ * when the atom is disposed.
2038
+ *
2039
+ * @category Focus
2040
+ * @since 4.0.0
2041
+ */
2042
+ export const windowFocusSignal: Atom<number> = readable((get) => {
2043
+ let count = 0
2044
+ function update() {
2045
+ if (document.visibilityState === "visible") {
2046
+ get.setSelf(++count)
2047
+ }
2048
+ }
2049
+ window.addEventListener("visibilitychange", update)
2050
+ get.addFinalizer(() => {
2051
+ window.removeEventListener("visibilitychange", update)
2052
+ })
2053
+ return count
2054
+ })
2055
+
2056
+ /**
2057
+ * Creates a combinator that refreshes an atom whenever the supplied signal atom
2058
+ * changes.
2059
+ *
2060
+ * **Details**
2061
+ *
2062
+ * The derived atom also subscribes to the source atom so normal source updates are
2063
+ * forwarded to its own value.
2064
+ *
2065
+ * @category Focus
2066
+ * @since 4.0.0
2067
+ */
2068
+ export const makeRefreshOnSignal = <_>(signal: Atom<_>) => <A extends Atom<any>>(self: A): WithoutSerializable<A> =>
2069
+ transform(self, (get) => {
2070
+ get.once(signal)
2071
+ get.subscribe(signal, (_) => get.refresh(self))
2072
+ get.subscribe(self, (value) => get.setSelf(value))
2073
+ return get.once(self)
2074
+ }, { initialValueTarget: self }) as any
2075
+
2076
+ /**
2077
+ * Refreshes an atom whenever `windowFocusSignal` changes.
2078
+ *
2079
+ * **Details**
2080
+ *
2081
+ * This helper is browser-only because `windowFocusSignal` depends on `window` and
2082
+ * `document.visibilityState`.
2083
+ *
2084
+ * @category Focus
2085
+ * @since 4.0.0
2086
+ */
2087
+ export const refreshOnWindowFocus: <A extends Atom<any>>(self: A) => WithoutSerializable<A> = makeRefreshOnSignal(
2088
+ windowFocusSignal
2089
+ )
2090
+
2091
+ // -----------------------------------------------------------------------------
2092
+ // KeyValueStore
2093
+ // -----------------------------------------------------------------------------
2094
+
2095
+ /**
2096
+ * Creates a writable atom backed by a `KeyValueStore` entry.
2097
+ *
2098
+ * **Details**
2099
+ *
2100
+ * Values are encoded and decoded with the supplied schema. In sync mode the atom
2101
+ * exposes the decoded value and writes the default value when the key is missing;
2102
+ * in async mode it exposes an `AsyncResult` of the decoded value.
2103
+ *
2104
+ * @category KeyValueStore
2105
+ * @since 4.0.0
2106
+ */
2107
+ export const kvs = <S extends Schema.Codec<any, any>, const Mode extends "sync" | "async" = never>(options: {
2108
+ readonly runtime: AtomRuntime<KeyValueStore.KeyValueStore, any>
2109
+ readonly key: string
2110
+ readonly schema: S
2111
+ readonly defaultValue: LazyArg<S["Type"]>
2112
+ readonly mode?: Mode | undefined
2113
+ }): Writable<"async" extends Mode ? AsyncResult.AsyncResult<S["Type"]> : S["Type"], S["Type"]> => {
2114
+ const setAtom = options.runtime.fn(
2115
+ (value: S["Type"]) =>
2116
+ KeyValueStore.KeyValueStore.use((store) =>
2117
+ KeyValueStore.toSchemaStore(store, options.schema).set(options.key, value)
2118
+ )
2119
+ )
2120
+ const resultAtom = options.runtime.atom(
2121
+ KeyValueStore.KeyValueStore.use((store) => KeyValueStore.toSchemaStore(store, options.schema).get(options.key))
2122
+ )
2123
+ return writable(
2124
+ options.mode === "async" ?
2125
+ (get) => {
2126
+ get.mount(setAtom)
2127
+ const mapper = AsyncResult.map<Option.Option<S["Type"]>, S["Type"]>(
2128
+ Option.getOrElse(() => {
2129
+ const value = options.defaultValue()
2130
+ get.set(setAtom, value)
2131
+ return value
2132
+ })
2133
+ )
2134
+ get.subscribe(resultAtom, (result) => get.setSelf(mapper(result)))
2135
+ return mapper(get.once(resultAtom))
2136
+ } :
2137
+ (get) => {
2138
+ get.mount(setAtom)
2139
+ get.subscribe(resultAtom, (result) => {
2140
+ if (!AsyncResult.isSuccess(result)) return
2141
+ if (Option.isSome(result.value)) {
2142
+ get.setSelf(result.value.value)
2143
+ } else {
2144
+ const value = Option.getOrElse(get.self<S["Type"]>(), options.defaultValue)
2145
+ get.setSelf(value)
2146
+ get.set(setAtom, value)
2147
+ }
2148
+ }, { immediate: true })
2149
+ return Option.getOrElse(get.self<S["Type"]>(), options.defaultValue)
2150
+ },
2151
+ (ctx, value: S["Type"]) => {
2152
+ ctx.set(setAtom, value as any)
2153
+ ctx.setSelf(value)
2154
+ }
2155
+ ) as any
2156
+ }
2157
+
2158
+ // -----------------------------------------------------------------------------
2159
+ // URL search params
2160
+ // -----------------------------------------------------------------------------
2161
+
2162
+ /**
2163
+ * Creates an atom that reads and writes a URL search parameter.
2164
+ *
2165
+ * **Gotchas**
2166
+ *
2167
+ * If you pass a schema, it has to be synchronous and have no context.
2168
+ *
2169
+ * @category search params
2170
+ * @since 4.0.0
2171
+ */
2172
+ export const searchParam = <S extends Schema.Codec<any, string> = never>(name: string, options?: {
2173
+ readonly schema?: S | undefined
2174
+ }): Writable<[S] extends [never] ? string : Option.Option<S["Type"]>> => {
2175
+ const decode = options?.schema && Schema.decodeExit(options.schema)
2176
+ const encode = options?.schema && Schema.encodeExit(options.schema)
2177
+ return writable(
2178
+ (get) => {
2179
+ if (typeof window === "undefined") {
2180
+ return decode ? Option.none() : ""
2181
+ }
2182
+ const handleUpdate = () => {
2183
+ if (searchParamState.updating) return
2184
+ const searchParams = new URLSearchParams(window.location.search)
2185
+ const newValue = searchParams.get(name) || ""
2186
+ if (decode) {
2187
+ get.setSelf(Exit.getSuccess(decode(newValue)))
2188
+ } else if (newValue !== Option.getOrUndefined(get.self())) {
2189
+ get.setSelf(newValue)
2190
+ }
2191
+ }
2192
+ window.addEventListener("popstate", handleUpdate)
2193
+ window.addEventListener("pushstate", handleUpdate)
2194
+ get.addFinalizer(() => {
2195
+ window.removeEventListener("popstate", handleUpdate)
2196
+ window.removeEventListener("pushstate", handleUpdate)
2197
+ })
2198
+ const value = new URLSearchParams(window.location.search).get(name) || ""
2199
+ return decode ? Exit.getSuccess(decode(value)) : value as any
2200
+ },
2201
+ (ctx, value: any) => {
2202
+ if (typeof window === "undefined") {
2203
+ ctx.setSelf(value)
2204
+ return
2205
+ }
2206
+
2207
+ if (encode) {
2208
+ const encoded = Option.flatMap(value, (v) => Exit.getSuccess(encode(v as S["Type"])))
2209
+ searchParamState.updates.set(name, Option.getOrElse(encoded, () => ""))
2210
+ value = Option.zipRight(encoded, value)
2211
+ } else {
2212
+ searchParamState.updates.set(name, value)
2213
+ }
2214
+ ctx.setSelf(value)
2215
+ if (searchParamState.timeout) {
2216
+ clearTimeout(searchParamState.timeout)
2217
+ }
2218
+ searchParamState.timeout = setTimeout(updateSearchParams, 500) as any
2219
+ }
2220
+ )
2221
+ }
2222
+
2223
+ const searchParamState = {
2224
+ timeout: undefined as number | undefined,
2225
+ updates: new Map<string, string>(),
2226
+ updating: false
2227
+ }
2228
+
2229
+ function updateSearchParams() {
2230
+ searchParamState.timeout = undefined
2231
+ searchParamState.updating = true
2232
+ const searchParams = new URLSearchParams(window.location.search)
2233
+ for (const [key, value] of searchParamState.updates.entries()) {
2234
+ if (value.length > 0) {
2235
+ searchParams.set(key, value)
2236
+ } else {
2237
+ searchParams.delete(key)
2238
+ }
2239
+ }
2240
+ searchParamState.updates.clear()
2241
+ const newUrl = `${window.location.pathname}?${searchParams.toString()}`
2242
+ window.history.pushState({}, "", newUrl)
2243
+ searchParamState.updating = false
2244
+ }
2245
+
2246
+ // -----------------------------------------------------------------------------
2247
+ // conversions
2248
+ // -----------------------------------------------------------------------------
2249
+
2250
+ /**
2251
+ * Converts an atom into a stream using the `AtomRegistry` service.
2252
+ *
2253
+ * **Details**
2254
+ *
2255
+ * The stream emits the atom's current value immediately and then emits subsequent
2256
+ * changes until the stream scope is closed.
2257
+ *
2258
+ * @category converting
2259
+ * @since 4.0.0
2260
+ */
2261
+ export const toStream = <A>(self: Atom<A>): Stream.Stream<A, never, AtomRegistry> =>
2262
+ Stream.unwrap(AtomRegistry.use((r) => Effect.succeed(Registry.toStream(r, self))))
2263
+
2264
+ /**
2265
+ * Converts an `AsyncResult` atom into a stream using the `AtomRegistry` service.
2266
+ *
2267
+ * **Details**
2268
+ *
2269
+ * Initial results are skipped, successes are emitted as stream values, and
2270
+ * failures fail the stream with the result cause.
2271
+ *
2272
+ * @category converting
2273
+ * @since 4.0.0
2274
+ */
2275
+ export const toStreamResult = <A, E>(self: Atom<AsyncResult.AsyncResult<A, E>>): Stream.Stream<A, E, AtomRegistry> =>
2276
+ Stream.unwrap(AtomRegistry.use((r) => Effect.succeed(Registry.toStreamResult(r, self))))
2277
+
2278
+ /**
2279
+ * Reads an atom's current value from the `AtomRegistry` service.
2280
+ *
2281
+ * @category converting
2282
+ * @since 4.0.0
2283
+ */
2284
+ export const get = <A>(self: Atom<A>): Effect.Effect<A, never, AtomRegistry> =>
2285
+ AtomRegistry.use((r) => Effect.succeed(r.get(self)))
2286
+
2287
+ /**
2288
+ * Reads a writable atom, computes a return value and next write value, writes the
2289
+ * next value, and returns the computed result.
2290
+ *
2291
+ * @category converting
2292
+ * @since 4.0.0
2293
+ */
2294
+ export const modify: {
2295
+ <R, W, A>(
2296
+ f: (_: R) => [returnValue: A, nextValue: W]
2297
+ ): (self: Writable<R, W>) => Effect.Effect<A, never, AtomRegistry>
2298
+ <R, W, A>(self: Writable<R, W>, f: (_: R) => [returnValue: A, nextValue: W]): Effect.Effect<A, never, AtomRegistry>
2299
+ } = dual(
2300
+ 2,
2301
+ <R, W, A>(self: Writable<R, W>, f: (_: R) => [returnValue: A, nextValue: W]): Effect.Effect<A, never, AtomRegistry> =>
2302
+ Effect.map(AtomRegistry, (_) => _.modify(self, f))
2303
+ )
2304
+
2305
+ /**
2306
+ * Writes a value to a writable atom through the `AtomRegistry` service.
2307
+ *
2308
+ * @category converting
2309
+ * @since 4.0.0
2310
+ */
2311
+ export const set: {
2312
+ <W>(value: W): <R>(self: Writable<R, W>) => Effect.Effect<void, never, AtomRegistry>
2313
+ <R, W>(self: Writable<R, W>, value: W): Effect.Effect<void, never, AtomRegistry>
2314
+ } = dual(
2315
+ 2,
2316
+ <R, W>(self: Writable<R, W>, value: W): Effect.Effect<void, never, AtomRegistry> =>
2317
+ Effect.map(AtomRegistry, (_) => _.set(self, value))
2318
+ )
2319
+
2320
+ /**
2321
+ * Updates a writable atom by reading its current value from the registry and
2322
+ * writing the value returned by the update function.
2323
+ *
2324
+ * @category converting
2325
+ * @since 4.0.0
2326
+ */
2327
+ export const update: {
2328
+ <R, W>(f: (_: R) => W): (self: Writable<R, W>) => Effect.Effect<void, never, AtomRegistry>
2329
+ <R, W>(self: Writable<R, W>, f: (_: R) => W): Effect.Effect<void, never, AtomRegistry>
2330
+ } = dual(
2331
+ 2,
2332
+ <R, W>(self: Writable<R, W>, f: (_: R) => W): Effect.Effect<void, never, AtomRegistry> =>
2333
+ Effect.map(AtomRegistry, (_) => _.update(self, f))
2334
+ )
2335
+
2336
+ /**
2337
+ * Reads an `AsyncResult` atom as an effect through the `AtomRegistry` service.
2338
+ *
2339
+ * **Details**
2340
+ *
2341
+ * The effect waits while the result is `Initial`, and also while it is waiting
2342
+ * when `suspendOnWaiting` is enabled. Successes succeed with the value and
2343
+ * failures fail with the result cause.
2344
+ *
2345
+ * @category converting
2346
+ * @since 4.0.0
2347
+ */
2348
+ export const getResult = <A, E>(
2349
+ self: Atom<AsyncResult.AsyncResult<A, E>>,
2350
+ options?: { readonly suspendOnWaiting?: boolean | undefined }
2351
+ ): Effect.Effect<A, E, AtomRegistry> => AtomRegistry.use(Registry.getResult(self, options))
2352
+
2353
+ /**
2354
+ * Runs a refresh request for an atom through the `AtomRegistry` service.
2355
+ *
2356
+ * **When to use**
2357
+ *
2358
+ * Use to invalidate and recompute an atom from an Effect that has access to the
2359
+ * active registry.
2360
+ *
2361
+ * @category converting
2362
+ * @since 4.0.0
2363
+ */
2364
+ export const refresh = <A>(self: Atom<A>): Effect.Effect<void, never, AtomRegistry> =>
2365
+ Effect.map(AtomRegistry, (_) => _.refresh(self))
2366
+
2367
+ /**
2368
+ * Mounts an atom in the `AtomRegistry` for the lifetime of the current scope.
2369
+ *
2370
+ * **Details**
2371
+ *
2372
+ * Mounting keeps the atom subscribed with a no-op listener until the scope
2373
+ * finalizer releases it.
2374
+ *
2375
+ * @category converting
2376
+ * @since 4.0.0
2377
+ */
2378
+ export const mount = <A>(self: Atom<A>): Effect.Effect<void, never, AtomRegistry | Scope.Scope> =>
2379
+ AtomRegistry.use((r) => Registry.mount(r, self))
2380
+
2381
+ // -----------------------------------------------------------------------------
2382
+ // Serializable
2383
+ // -----------------------------------------------------------------------------
2384
+
2385
+ /**
2386
+ * The type id used to mark atoms that carry serialization metadata.
2387
+ *
2388
+ * @category type IDs
2389
+ * @since 4.0.0
2390
+ */
2391
+ export const SerializableTypeId: SerializableTypeId = "~effect-atom/atom/Atom/Serializable"
2392
+
2393
+ /**
2394
+ * The literal type of the serializable atom marker.
2395
+ *
2396
+ * @category type IDs
2397
+ * @since 4.0.0
2398
+ */
2399
+ export type SerializableTypeId = "~effect-atom/atom/Atom/Serializable"
2400
+
2401
+ /**
2402
+ * Serialization metadata attached to an atom.
2403
+ *
2404
+ * **Details**
2405
+ *
2406
+ * The key identifies the atom in dehydrated state, and the encode/decode
2407
+ * functions convert between the atom value and the schema encoded value.
2408
+ *
2409
+ * @category Serializable
2410
+ * @since 4.0.0
2411
+ */
2412
+ export interface Serializable<S extends Schema.Top> {
2413
+ readonly [SerializableTypeId]: {
2414
+ readonly key: string
2415
+ readonly encode: (value: S["Type"]) => S["Encoded"]
2416
+ readonly decode: (value: S["Encoded"]) => S["Type"]
2417
+ }
2418
+ }
2419
+
2420
+ /**
2421
+ * Returns `true` when an atom carries `Serializable` metadata.
2422
+ *
2423
+ * @category Serializable
2424
+ * @since 4.0.0
2425
+ */
2426
+ export const isSerializable = (self: Atom<any>): self is Atom<any> & Serializable<any> => SerializableTypeId in self
2427
+
2428
+ /**
2429
+ * Attaches serialization metadata to an atom using a schema and stable key.
2430
+ *
2431
+ * **Details**
2432
+ *
2433
+ * The schema is converted to a JSON codec for synchronous encode/decode, and the
2434
+ * key is also used as the atom label when the atom does not already have one.
2435
+ *
2436
+ * @category combinators
2437
+ * @since 4.0.0
2438
+ */
2439
+ export const serializable: {
2440
+ <R extends Atom<any>, S extends Schema.Codec<Type<R>, any>>(options: {
2441
+ readonly key: string
2442
+ readonly schema: S
2443
+ }): (self: R) => R & Serializable<S>
2444
+ <R extends Atom<any>, S extends Schema.Codec<Type<R>, any>>(self: R, options: {
2445
+ readonly key: string
2446
+ readonly schema: S
2447
+ }): R & Serializable<S>
2448
+ } = dual(2, <R extends Atom<any>, A, I>(self: R, options: {
2449
+ readonly key: string
2450
+ readonly schema: Schema.Codec<A, I>
2451
+ }): R & Serializable<any> => {
2452
+ const codecJson = Schema.toCodecJson(options.schema)
2453
+ return Object.assign(Object.create(Object.getPrototypeOf(self)), {
2454
+ ...self,
2455
+ label: self.label ?? [options.key, new Error().stack?.split("\n")[5] ?? ""],
2456
+ [SerializableTypeId]: {
2457
+ key: options.key,
2458
+ encode: Schema.encodeSync(codecJson),
2459
+ decode: Schema.decodeSync(codecJson)
2460
+ }
2461
+ })
2462
+ })
2463
+
2464
+ /**
2465
+ * The type id used to mark atoms with a server-side read override.
2466
+ *
2467
+ * @category type IDs
2468
+ * @since 4.0.0
2469
+ */
2470
+ export const ServerValueTypeId = "~effect-atom/atom/Atom/ServerValue" as const
2471
+
2472
+ /**
2473
+ * Sets the value of an Atom when read on the server.
2474
+ *
2475
+ * @category ServerValue
2476
+ * @since 4.0.0
2477
+ */
2478
+ export const withServerValue: {
2479
+ <A extends Atom<any>>(read: (get: <A>(atom: Atom<A>) => A) => Type<A>): (self: A) => A
2480
+ <A extends Atom<any>>(self: A, read: (get: <A>(atom: Atom<A>) => A) => Type<A>): A
2481
+ } = dual(
2482
+ 2,
2483
+ <A extends Atom<any>>(self: A, read: (get: <A>(atom: Atom<A>) => A) => Type<A>): A =>
2484
+ Object.assign(Object.create(Object.getPrototypeOf(self)), {
2485
+ ...self,
2486
+ [ServerValueTypeId]: read
2487
+ })
2488
+ )
2489
+
2490
+ /**
2491
+ * Sets an `AsyncResult` atom's server-side value to
2492
+ * `AsyncResult.initial(true)`.
2493
+ *
2494
+ * @category ServerValue
2495
+ * @since 4.0.0
2496
+ */
2497
+ export const withServerValueInitial = <A extends Atom<AsyncResult.AsyncResult<any, any>>>(self: A): A =>
2498
+ withServerValue(self, constant(AsyncResult.initial(true)) as any)
2499
+
2500
+ /**
2501
+ * Reads an atom from a registry, using its server-side read override when one is
2502
+ * present.
2503
+ *
2504
+ * **Details**
2505
+ *
2506
+ * Nested reads performed by the override are resolved against the same registry.
2507
+ *
2508
+ * @category ServerValue
2509
+ * @since 4.0.0
2510
+ */
2511
+ export const getServerValue: {
2512
+ (registry: Registry.AtomRegistry): <A>(self: Atom<A>) => A
2513
+ <A>(self: Atom<A>, registry: Registry.AtomRegistry): A
2514
+ } = dual(
2515
+ 2,
2516
+ <A>(self: Atom<A>, registry: Registry.AtomRegistry): A =>
2517
+ ServerValueTypeId in self
2518
+ ? (self as any)[ServerValueTypeId]((atom: Atom<any>) => registry.get(atom))
2519
+ : registry.get(self)
2520
+ )