@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,2797 @@
1
+ /**
2
+ * Broadcasts values from publishers to many subscribers.
3
+ *
4
+ * Publishers add messages with `publish` or `publishAll`, and each active
5
+ * `Subscription` receives its own copy of every accepted message. Unlike a
6
+ * queue, subscribers do not compete for messages. This module includes bounded,
7
+ * dropping, sliding, and unbounded hubs, optional replay buffers for late
8
+ * subscribers, message-taking helpers, capacity and shutdown operations, and
9
+ * low-level types for custom hub strategies.
10
+ *
11
+ * @since 2.0.0
12
+ */
13
+ import * as Arr from "./Array.ts"
14
+ import * as Context from "./Context.ts"
15
+ import * as Deferred from "./Deferred.ts"
16
+ import * as Effect from "./Effect.ts"
17
+ import * as Exit from "./Exit.ts"
18
+ import type { LazyArg } from "./Function.ts"
19
+ import { dual, identity } from "./Function.ts"
20
+ import * as Latch from "./Latch.ts"
21
+ import * as MutableList from "./MutableList.ts"
22
+ import * as MutableRef from "./MutableRef.ts"
23
+ import { nextPow2 } from "./Number.ts"
24
+ import * as Option from "./Option.ts"
25
+ import { type Pipeable, pipeArguments } from "./Pipeable.ts"
26
+ import * as Scope from "./Scope.ts"
27
+ import type { Covariant, Invariant } from "./Types.ts"
28
+
29
+ const TypeId = "~effect/PubSub"
30
+
31
+ /**
32
+ * A `PubSub<A>` is an asynchronous message hub into which publishers can publish
33
+ * messages of type `A` and subscribers can subscribe to take messages of type
34
+ * `A`.
35
+ *
36
+ * **Example** (Publishing and subscribing to messages)
37
+ *
38
+ * ```ts
39
+ * import { Effect, PubSub } from "effect"
40
+ *
41
+ * const program = Effect.gen(function*() {
42
+ * // Create a bounded PubSub with capacity 10
43
+ * const pubsub = yield* PubSub.bounded<string>(10)
44
+ *
45
+ * // Subscribe and consume messages
46
+ * yield* Effect.scoped(Effect.gen(function*() {
47
+ * const subscription = yield* PubSub.subscribe(pubsub)
48
+ *
49
+ * // Publish messages
50
+ * yield* PubSub.publish(pubsub, "Hello")
51
+ * yield* PubSub.publish(pubsub, "World")
52
+ *
53
+ * const message1 = yield* PubSub.take(subscription)
54
+ * const message2 = yield* PubSub.take(subscription)
55
+ * console.log(message1, message2) // "Hello", "World"
56
+ * }))
57
+ * })
58
+ * ```
59
+ *
60
+ * @category models
61
+ * @since 2.0.0
62
+ */
63
+ export interface PubSub<in out A> extends Pipeable {
64
+ readonly [TypeId]: {
65
+ readonly _A: Invariant<A>
66
+ }
67
+ readonly pubsub: PubSub.Atomic<A>
68
+ readonly subscribers: PubSub.Subscribers<A>
69
+ readonly scope: Scope.Closeable
70
+ readonly shutdownHook: Latch.Latch
71
+ readonly shutdownFlag: MutableRef.MutableRef<boolean>
72
+ readonly strategy: PubSub.Strategy<A>
73
+ }
74
+
75
+ /**
76
+ * Companion namespace containing the low-level building blocks used by
77
+ * `PubSub`, including atomic implementations, backing subscriptions, replay
78
+ * windows, and delivery strategies.
79
+ *
80
+ * @since 2.0.0
81
+ */
82
+ export declare namespace PubSub {
83
+ /**
84
+ * Low-level atomic PubSub interface that handles the core message storage and retrieval.
85
+ *
86
+ * @category models
87
+ * @since 4.0.0
88
+ */
89
+ export interface Atomic<in out A> {
90
+ readonly capacity: number
91
+ isEmpty(): boolean
92
+ isFull(): boolean
93
+ size(): number
94
+ publish(value: A): boolean
95
+ publishAll(elements: Iterable<A>): Array<A>
96
+ slide(): void
97
+ subscribe(): BackingSubscription<A>
98
+ replayWindow(): ReplayWindow<A>
99
+ }
100
+
101
+ /**
102
+ * Low-level subscription interface that handles message polling for individual subscribers.
103
+ *
104
+ * @category models
105
+ * @since 4.0.0
106
+ */
107
+ export interface BackingSubscription<out A> {
108
+ isEmpty(): boolean
109
+ size(): number
110
+ poll(): A | MutableList.Empty
111
+ pollUpTo(n: number): Array<A>
112
+ unsubscribe(): void
113
+ }
114
+
115
+ /**
116
+ * Tracks the pollers currently waiting on each backing subscription.
117
+ *
118
+ * **Details**
119
+ *
120
+ * This type is part of the low-level `PubSub.Strategy` contract. Most
121
+ * application code should use `subscribe`, `take`, and the other `PubSub`
122
+ * operations instead of manipulating subscriber maps directly.
123
+ *
124
+ * @category models
125
+ * @since 4.0.0
126
+ */
127
+ export type Subscribers<A> = Map<
128
+ BackingSubscription<A>,
129
+ Set<MutableList.MutableList<Deferred.Deferred<A>>>
130
+ >
131
+
132
+ /**
133
+ * Interface for accessing replay buffer contents for late subscribers.
134
+ *
135
+ * @category models
136
+ * @since 4.0.0
137
+ */
138
+ export interface ReplayWindow<A> {
139
+ take(): A | undefined
140
+ takeN(n: number): Array<A>
141
+ takeAll(): Array<A>
142
+ readonly remaining: number
143
+ }
144
+
145
+ /**
146
+ * Strategy interface defining how PubSub handles backpressure and message distribution.
147
+ *
148
+ * @category models
149
+ * @since 4.0.0
150
+ */
151
+ export interface Strategy<in out A> {
152
+ /**
153
+ * Describes any finalization logic associated with this strategy.
154
+ */
155
+ readonly shutdown: Effect.Effect<void>
156
+
157
+ /**
158
+ * Describes how publishers should signal to subscribers that they are
159
+ * waiting for space to become available in the `PubSub`.
160
+ */
161
+ handleSurplus(
162
+ pubsub: Atomic<A>,
163
+ subscribers: Subscribers<A>,
164
+ elements: Iterable<A>,
165
+ isShutdown: MutableRef.MutableRef<boolean>
166
+ ): Effect.Effect<boolean>
167
+
168
+ /**
169
+ * Describes how subscribers should signal to publishers waiting for space
170
+ * to become available in the `PubSub` that space may be available.
171
+ */
172
+ onPubSubEmptySpaceUnsafe(
173
+ pubsub: Atomic<A>,
174
+ subscribers: Subscribers<A>
175
+ ): void
176
+
177
+ /**
178
+ * Describes how subscribers waiting for additional values from the `PubSub`
179
+ * should take those values and signal to publishers that they are no
180
+ * longer waiting for additional values.
181
+ */
182
+ completePollersUnsafe(
183
+ pubsub: Atomic<A>,
184
+ subscribers: Subscribers<A>,
185
+ subscription: BackingSubscription<A>,
186
+ pollers: MutableList.MutableList<Deferred.Deferred<A>>
187
+ ): void
188
+
189
+ /**
190
+ * Describes how publishers should signal to subscribers waiting for
191
+ * additional values from the `PubSub` that new values are available.
192
+ */
193
+ completeSubscribersUnsafe(
194
+ pubsub: Atomic<A>,
195
+ subscribers: Subscribers<A>
196
+ ): void
197
+ }
198
+ }
199
+
200
+ const SubscriptionTypeId = "~effect/PubSub/Subscription"
201
+
202
+ /**
203
+ * A subscription represents a consumer's connection to a PubSub, allowing them to take messages.
204
+ *
205
+ * **Example** (Taking messages from a subscription)
206
+ *
207
+ * ```ts
208
+ * import { Effect, PubSub } from "effect"
209
+ *
210
+ * const program = Effect.gen(function*() {
211
+ * const pubsub = yield* PubSub.bounded<string>(10)
212
+ *
213
+ * // Subscribe within a scope for automatic cleanup
214
+ * yield* Effect.scoped(Effect.gen(function*() {
215
+ * const subscription: PubSub.Subscription<string> = yield* PubSub.subscribe(
216
+ * pubsub
217
+ * )
218
+ *
219
+ * yield* PubSub.publishAll(pubsub, ["msg1", "msg2", "msg3"])
220
+ *
221
+ * // Take individual messages
222
+ * const message = yield* PubSub.take(subscription)
223
+ * console.log(message) // "msg1"
224
+ *
225
+ * // Take multiple messages
226
+ * const messages = yield* PubSub.takeUpTo(subscription, 1)
227
+ * console.log(messages) // ["msg2"]
228
+ * const allMessages = yield* PubSub.takeAll(subscription)
229
+ * console.log(allMessages) // ["msg3"]
230
+ * }))
231
+ * })
232
+ * ```
233
+ *
234
+ * @category models
235
+ * @since 4.0.0
236
+ */
237
+ export interface Subscription<out A> extends Pipeable {
238
+ readonly [SubscriptionTypeId]: {
239
+ readonly _A: Covariant<A>
240
+ }
241
+ readonly pubsub: PubSub.Atomic<any>
242
+ readonly subscribers: PubSub.Subscribers<any>
243
+ readonly subscription: PubSub.BackingSubscription<A>
244
+ readonly pollers: MutableList.MutableList<Deferred.Deferred<any>>
245
+ readonly shutdownHook: Latch.Latch
246
+ readonly shutdownFlag: MutableRef.MutableRef<boolean>
247
+ readonly strategy: PubSub.Strategy<any>
248
+ readonly replayWindow: PubSub.ReplayWindow<A>
249
+ }
250
+
251
+ /**
252
+ * Creates a PubSub with a custom atomic implementation and strategy.
253
+ *
254
+ * **Example** (Creating a PubSub with a custom strategy)
255
+ *
256
+ * ```ts
257
+ * import { Effect, PubSub } from "effect"
258
+ *
259
+ * const program = Effect.gen(function*() {
260
+ * // Create custom PubSub with specific atomic implementation and strategy
261
+ * const pubsub = yield* PubSub.make<string>({
262
+ * atomicPubSub: () => PubSub.makeAtomicBounded(100),
263
+ * strategy: () => new PubSub.BackPressureStrategy()
264
+ * })
265
+ *
266
+ * // Use the created PubSub
267
+ * yield* PubSub.publish(pubsub, "Hello")
268
+ * })
269
+ * ```
270
+ *
271
+ * @category constructors
272
+ * @since 4.0.0
273
+ */
274
+ export const make = <A>(
275
+ options: {
276
+ readonly atomicPubSub: LazyArg<PubSub.Atomic<A>>
277
+ readonly strategy: LazyArg<PubSub.Strategy<A>>
278
+ }
279
+ ): Effect.Effect<PubSub<A>> =>
280
+ Effect.sync(() =>
281
+ makePubSubUnsafe(
282
+ options.atomicPubSub(),
283
+ new Map(),
284
+ Scope.makeUnsafe(),
285
+ Latch.makeUnsafe(false),
286
+ MutableRef.make(false),
287
+ options.strategy()
288
+ )
289
+ )
290
+
291
+ /**
292
+ * Creates a bounded `PubSub` that applies backpressure when it reaches
293
+ * capacity.
294
+ *
295
+ * **Details**
296
+ *
297
+ * Published messages are retained until all current subscribers have taken
298
+ * them. When the capacity is full, publishers suspend until space is available.
299
+ * Pass an options object to configure both `capacity` and an optional replay
300
+ * buffer for late subscribers.
301
+ *
302
+ * **Example** (Creating a bounded PubSub)
303
+ *
304
+ * ```ts
305
+ * import { Effect, PubSub } from "effect"
306
+ *
307
+ * const program = Effect.gen(function*() {
308
+ * // Create bounded PubSub with capacity 100
309
+ * const pubsub = yield* PubSub.bounded<string>(100)
310
+ *
311
+ * // Create with replay buffer for late subscribers
312
+ * const pubsubWithReplay = yield* PubSub.bounded<string>({
313
+ * capacity: 100,
314
+ * replay: 10 // Last 10 messages replayed to new subscribers
315
+ * })
316
+ * })
317
+ * ```
318
+ *
319
+ * @category constructors
320
+ * @since 2.0.0
321
+ */
322
+ export const bounded = <A>(
323
+ capacity: number | {
324
+ readonly capacity: number
325
+ readonly replay?: number | undefined
326
+ }
327
+ ): Effect.Effect<PubSub<A>> =>
328
+ make({
329
+ atomicPubSub: () => makeAtomicBounded(capacity),
330
+ strategy: () => new BackPressureStrategy()
331
+ })
332
+
333
+ /**
334
+ * Creates a bounded `PubSub` with the dropping strategy. The `PubSub` will drop new
335
+ * messages if the `PubSub` is at capacity.
336
+ *
337
+ * **Details**
338
+ *
339
+ * For best performance use capacities that are powers of two.
340
+ *
341
+ * **Example** (Dropping messages when full)
342
+ *
343
+ * ```ts
344
+ * import { Effect, PubSub } from "effect"
345
+ *
346
+ * const program = Effect.gen(function*() {
347
+ * // Create dropping PubSub that drops new messages when full
348
+ * const pubsub = yield* PubSub.dropping<string>(3)
349
+ *
350
+ * // With replay buffer for late subscribers
351
+ * const pubsubWithReplay = yield* PubSub.dropping<string>({
352
+ * capacity: 3,
353
+ * replay: 5
354
+ * })
355
+ *
356
+ * yield* Effect.scoped(Effect.gen(function*() {
357
+ * const subscription = yield* PubSub.subscribe(pubsub)
358
+ *
359
+ * // Fill the PubSub and see dropping behavior
360
+ * yield* PubSub.publish(pubsub, "msg1") // succeeds
361
+ * yield* PubSub.publish(pubsub, "msg2") // succeeds
362
+ * yield* PubSub.publish(pubsub, "msg3") // succeeds
363
+ * const dropped = yield* PubSub.publish(pubsub, "msg4") // returns false (dropped)
364
+ * console.log("Message dropped:", !dropped) // true
365
+ *
366
+ * const messages = yield* PubSub.takeAll(subscription)
367
+ * console.log(messages) // ["msg1", "msg2", "msg3"]
368
+ * }))
369
+ * })
370
+ * ```
371
+ *
372
+ * @category constructors
373
+ * @since 2.0.0
374
+ */
375
+ export const dropping = <A>(
376
+ capacity: number | {
377
+ readonly capacity: number
378
+ readonly replay?: number | undefined
379
+ }
380
+ ): Effect.Effect<PubSub<A>> =>
381
+ make({
382
+ atomicPubSub: () => makeAtomicBounded(capacity),
383
+ strategy: () => new DroppingStrategy()
384
+ })
385
+
386
+ /**
387
+ * Creates a bounded `PubSub` with the sliding strategy. The `PubSub` will add new
388
+ * messages and drop old messages if the `PubSub` is at capacity.
389
+ *
390
+ * **Details**
391
+ *
392
+ * For best performance use capacities that are powers of two.
393
+ *
394
+ * **Example** (Sliding old messages when full)
395
+ *
396
+ * ```ts
397
+ * import { Effect, PubSub } from "effect"
398
+ *
399
+ * const program = Effect.gen(function*() {
400
+ * // Create sliding PubSub that evicts old messages when full
401
+ * const pubsub = yield* PubSub.sliding<string>(3)
402
+ *
403
+ * // With replay buffer
404
+ * const pubsubWithReplay = yield* PubSub.sliding<string>({
405
+ * capacity: 3,
406
+ * replay: 2
407
+ * })
408
+ *
409
+ * yield* Effect.scoped(Effect.gen(function*() {
410
+ * const subscription = yield* PubSub.subscribe(pubsub)
411
+ *
412
+ * // Fill and overflow the PubSub
413
+ * yield* PubSub.publish(pubsub, "msg1")
414
+ * yield* PubSub.publish(pubsub, "msg2")
415
+ * yield* PubSub.publish(pubsub, "msg3")
416
+ * yield* PubSub.publish(pubsub, "msg4") // "msg1" is evicted
417
+ *
418
+ * const messages = yield* PubSub.takeAll(subscription)
419
+ * console.log(messages) // ["msg2", "msg3", "msg4"]
420
+ * }))
421
+ * })
422
+ * ```
423
+ *
424
+ * @category constructors
425
+ * @since 2.0.0
426
+ */
427
+ export const sliding = <A>(
428
+ capacity: number | {
429
+ readonly capacity: number
430
+ readonly replay?: number | undefined
431
+ }
432
+ ): Effect.Effect<PubSub<A>> =>
433
+ make({
434
+ atomicPubSub: () => makeAtomicBounded(capacity),
435
+ strategy: () => new SlidingStrategy()
436
+ })
437
+
438
+ /**
439
+ * Creates an unbounded `PubSub`.
440
+ *
441
+ * **Example** (Creating an unbounded PubSub)
442
+ *
443
+ * ```ts
444
+ * import { Effect, PubSub } from "effect"
445
+ *
446
+ * const program = Effect.gen(function*() {
447
+ * // Create unbounded PubSub
448
+ * const pubsub = yield* PubSub.unbounded<string>()
449
+ *
450
+ * // With replay buffer for late subscribers
451
+ * const pubsubWithReplay = yield* PubSub.unbounded<string>({
452
+ * replay: 10
453
+ * })
454
+ *
455
+ * yield* Effect.scoped(Effect.gen(function*() {
456
+ * const subscription = yield* PubSub.subscribe(pubsub)
457
+ *
458
+ * // Can publish unlimited messages
459
+ * for (let i = 0; i < 3; i++) {
460
+ * yield* PubSub.publish(pubsub, `message-${i}`)
461
+ * }
462
+ *
463
+ * const message = yield* PubSub.take(subscription)
464
+ * console.log("First message:", message) // "message-0"
465
+ * }))
466
+ * })
467
+ * ```
468
+ *
469
+ * @category constructors
470
+ * @since 2.0.0
471
+ */
472
+ export const unbounded = <A>(options?: {
473
+ readonly replay?: number | undefined
474
+ }): Effect.Effect<PubSub<A>> =>
475
+ make({
476
+ atomicPubSub: () => makeAtomicUnbounded(options),
477
+ strategy: () => new DroppingStrategy()
478
+ })
479
+
480
+ /**
481
+ * Creates a bounded atomic PubSub implementation with optional replay buffer.
482
+ *
483
+ * **When to use**
484
+ *
485
+ * Use to provide bounded message storage when building a custom `PubSub` with
486
+ * `make` and an explicit delivery strategy.
487
+ *
488
+ * **Details**
489
+ *
490
+ * Pass either a capacity number or an options object with `capacity` and
491
+ * optional `replay`. A positive `replay` value enables a replay buffer for late
492
+ * subscribers, and fractional replay sizes are rounded up.
493
+ *
494
+ * **Gotchas**
495
+ *
496
+ * The capacity must be greater than zero; invalid capacities throw
497
+ * synchronously before an atomic implementation is created.
498
+ *
499
+ * @see {@link make} for constructing a `PubSub` from an atomic implementation and delivery strategy
500
+ * @see {@link makeAtomicUnbounded} for an atomic implementation without a bounded capacity
501
+ * @see {@link bounded} for the higher-level backpressure constructor
502
+ * @see {@link dropping} for the higher-level dropping constructor
503
+ * @see {@link sliding} for the higher-level sliding constructor
504
+ *
505
+ * @category constructors
506
+ * @since 4.0.0
507
+ */
508
+ export const makeAtomicBounded = <A>(
509
+ capacity: number | {
510
+ readonly capacity: number
511
+ readonly replay?: number | undefined
512
+ }
513
+ ): PubSub.Atomic<A> => {
514
+ const options = typeof capacity === "number" ? { capacity } : capacity
515
+ ensureCapacity(options.capacity)
516
+ const replayBuffer = options.replay && options.replay > 0 ? new ReplayBuffer<A>(Math.ceil(options.replay)) : undefined
517
+ if (options.capacity === 1) {
518
+ return new BoundedPubSubSingle(replayBuffer)
519
+ } else if (nextPow2(options.capacity) === options.capacity) {
520
+ return new BoundedPubSubPow2(options.capacity, replayBuffer)
521
+ } else {
522
+ return new BoundedPubSubArb(options.capacity, replayBuffer)
523
+ }
524
+ }
525
+
526
+ /**
527
+ * Creates an unbounded atomic PubSub implementation with optional replay buffer.
528
+ *
529
+ * **When to use**
530
+ *
531
+ * Use to create the low-level storage layer for a custom `PubSub` whose active
532
+ * subscribers may retain an unbounded number of pending messages.
533
+ *
534
+ * **Gotchas**
535
+ *
536
+ * Messages published while subscribers are active can be retained without a
537
+ * capacity limit until those subscribers take them or unsubscribe.
538
+ *
539
+ * @see {@link makeAtomicBounded} for a bounded atomic implementation that enforces capacity
540
+ * @see {@link make} for wrapping an atomic implementation with a delivery strategy
541
+ * @see {@link unbounded} for the high-level effectful constructor for unbounded `PubSub` values
542
+ *
543
+ * @category constructors
544
+ * @since 4.0.0
545
+ */
546
+ export const makeAtomicUnbounded = <A>(options?: {
547
+ readonly replay?: number | undefined
548
+ }): PubSub.Atomic<A> => new UnboundedPubSub(options?.replay ? new ReplayBuffer(options.replay) : undefined)
549
+
550
+ /**
551
+ * Returns the number of elements the queue can hold.
552
+ *
553
+ * **Example** (Getting PubSub capacity)
554
+ *
555
+ * ```ts
556
+ * import { Effect, PubSub } from "effect"
557
+ *
558
+ * const program = Effect.gen(function*() {
559
+ * const pubsub = yield* PubSub.bounded<string>(100)
560
+ * const cap = PubSub.capacity(pubsub)
561
+ * console.log("PubSub capacity:", cap) // 100
562
+ *
563
+ * const unboundedPubsub = yield* PubSub.unbounded<string>()
564
+ * const unboundedCap = PubSub.capacity(unboundedPubsub)
565
+ * console.log("Unbounded capacity:", unboundedCap) // Number.MAX_SAFE_INTEGER
566
+ * })
567
+ * ```
568
+ *
569
+ * @category getters
570
+ * @since 2.0.0
571
+ */
572
+ export const capacity = <A>(self: PubSub<A>): number => self.pubsub.capacity
573
+
574
+ /**
575
+ * Returns the current number of messages retained by the `PubSub` for active
576
+ * subscribers.
577
+ *
578
+ * **Details**
579
+ *
580
+ * If the `PubSub` has been shut down, the returned effect succeeds with `0`.
581
+ * The size is not a count of waiting subscribers or suspended publishers.
582
+ *
583
+ * **Example** (Getting PubSub size)
584
+ *
585
+ * ```ts
586
+ * import { Effect, PubSub } from "effect"
587
+ *
588
+ * const program = Effect.gen(function*() {
589
+ * const pubsub = yield* PubSub.bounded<string>(10)
590
+ *
591
+ * // Initially empty
592
+ * const initialSize = yield* PubSub.size(pubsub)
593
+ * console.log("Initial size:", initialSize) // 0
594
+ *
595
+ * yield* Effect.scoped(Effect.gen(function*() {
596
+ * const subscription = yield* PubSub.subscribe(pubsub)
597
+ *
598
+ * // Publish some messages for the active subscription
599
+ * yield* PubSub.publish(pubsub, "msg1")
600
+ * yield* PubSub.publish(pubsub, "msg2")
601
+ *
602
+ * const afterPublish = yield* PubSub.size(pubsub)
603
+ * console.log("After publishing:", afterPublish) // 2
604
+ *
605
+ * yield* PubSub.takeAll(subscription)
606
+ * }))
607
+ * })
608
+ * ```
609
+ *
610
+ * @category getters
611
+ * @since 2.0.0
612
+ */
613
+ export const size = <A>(self: PubSub<A>): Effect.Effect<number> => Effect.sync(() => sizeUnsafe(self))
614
+ /**
615
+ * Returns the current number of messages retained by the `PubSub` for active
616
+ * subscribers synchronously.
617
+ *
618
+ * **When to use**
619
+ *
620
+ * Use when an immediate `PubSub` size snapshot is needed outside effectful code
621
+ * and concurrent changes between the check and later use are acceptable.
622
+ *
623
+ * **Details**
624
+ *
625
+ * Returns `0` after shutdown. Because this is an unsafe synchronous snapshot,
626
+ * prefer `size` in effectful code.
627
+ *
628
+ * **Example** (Reading size synchronously)
629
+ *
630
+ * ```ts
631
+ * import { PubSub } from "effect"
632
+ *
633
+ * // Unsafe synchronous size check
634
+ * declare const pubsub: PubSub.PubSub<string>
635
+ *
636
+ * const size = PubSub.sizeUnsafe(pubsub)
637
+ * console.log("Current size:", size)
638
+ * ```
639
+ *
640
+ * @category getters
641
+ * @since 4.0.0
642
+ */
643
+ export const sizeUnsafe = <A>(self: PubSub<A>): number => {
644
+ if (MutableRef.get(self.shutdownFlag)) {
645
+ return 0
646
+ }
647
+ return self.pubsub.size()
648
+ }
649
+
650
+ /**
651
+ * Returns `true` when the `PubSub` has reached its configured capacity.
652
+ *
653
+ * **Details**
654
+ *
655
+ * For unbounded PubSubs this is normally `false`.
656
+ *
657
+ * **Example** (Checking whether a PubSub is full)
658
+ *
659
+ * ```ts
660
+ * import { Effect, PubSub } from "effect"
661
+ *
662
+ * const program = Effect.gen(function*() {
663
+ * const pubsub = yield* PubSub.bounded<string>(2)
664
+ *
665
+ * // Initially not full
666
+ * const initiallyFull = yield* PubSub.isFull(pubsub)
667
+ * console.log("Initially full:", initiallyFull) // false
668
+ *
669
+ * yield* Effect.scoped(Effect.gen(function*() {
670
+ * const subscription = yield* PubSub.subscribe(pubsub)
671
+ *
672
+ * // Fill the PubSub for the active subscription
673
+ * yield* PubSub.publish(pubsub, "msg1")
674
+ * yield* PubSub.publish(pubsub, "msg2")
675
+ *
676
+ * const nowFull = yield* PubSub.isFull(pubsub)
677
+ * console.log("Now full:", nowFull) // true
678
+ *
679
+ * yield* PubSub.takeAll(subscription)
680
+ * }))
681
+ * })
682
+ * ```
683
+ *
684
+ * @category predicates
685
+ * @since 2.0.0
686
+ */
687
+ export const isFull = <A>(self: PubSub<A>): Effect.Effect<boolean> =>
688
+ Effect.map(size(self), (size) => size === self.pubsub.capacity)
689
+
690
+ /**
691
+ * Returns `true` if the `Pubsub` contains zero elements, `false` otherwise.
692
+ *
693
+ * **Example** (Checking whether a PubSub is empty)
694
+ *
695
+ * ```ts
696
+ * import { Effect, PubSub } from "effect"
697
+ *
698
+ * const program = Effect.gen(function*() {
699
+ * const pubsub = yield* PubSub.bounded<string>(10)
700
+ *
701
+ * // Initially empty
702
+ * const initiallyEmpty = yield* PubSub.isEmpty(pubsub)
703
+ * console.log("Initially empty:", initiallyEmpty) // true
704
+ *
705
+ * yield* Effect.scoped(Effect.gen(function*() {
706
+ * const subscription = yield* PubSub.subscribe(pubsub)
707
+ *
708
+ * // Publish a message for the active subscription
709
+ * yield* PubSub.publish(pubsub, "Hello")
710
+ *
711
+ * const nowEmpty = yield* PubSub.isEmpty(pubsub)
712
+ * console.log("Now empty:", nowEmpty) // false
713
+ *
714
+ * yield* PubSub.take(subscription)
715
+ * }))
716
+ * })
717
+ * ```
718
+ *
719
+ * @category predicates
720
+ * @since 2.0.0
721
+ */
722
+ export const isEmpty = <A>(self: PubSub<A>): Effect.Effect<boolean> => Effect.map(size(self), (size) => size === 0)
723
+
724
+ /**
725
+ * Shuts down the `PubSub`, interrupting suspended publishers and subscribers
726
+ * and finalizing active subscriptions.
727
+ *
728
+ * **Details**
729
+ *
730
+ * After shutdown, `publish` and `publishAll` succeed with `false`,
731
+ * `publishUnsafe` returns `false`, and subscription operations such as `take`
732
+ * interrupt.
733
+ *
734
+ * **Example** (Shutting down a PubSub)
735
+ *
736
+ * ```ts
737
+ * import { Effect, PubSub } from "effect"
738
+ *
739
+ * const program = Effect.gen(function*() {
740
+ * const pubsub = yield* PubSub.bounded<string>(1)
741
+ *
742
+ * // Shutdown the PubSub
743
+ * yield* PubSub.shutdown(pubsub)
744
+ *
745
+ * const isShutdown = yield* PubSub.isShutdown(pubsub)
746
+ * console.log("Is shutdown:", isShutdown) // true
747
+ *
748
+ * // Publishing after shutdown returns false
749
+ * const published = yield* PubSub.publish(pubsub, "msg1")
750
+ * console.log("Published after shutdown:", published) // false
751
+ * })
752
+ * ```
753
+ *
754
+ * @category lifecycle
755
+ * @since 2.0.0
756
+ */
757
+ export const shutdown = <A>(self: PubSub<A>): Effect.Effect<void> =>
758
+ Effect.uninterruptible(Effect.withFiber((fiber) => {
759
+ MutableRef.set(self.shutdownFlag, true)
760
+ return Scope.close(self.scope, Exit.interrupt(fiber.id)).pipe(
761
+ Effect.andThen(self.strategy.shutdown),
762
+ Effect.when(self.shutdownHook.open),
763
+ Effect.asVoid
764
+ )
765
+ }))
766
+
767
+ /**
768
+ * Checks effectfully whether `shutdown` has been called, returning `true`
769
+ * after shutdown and `false` otherwise.
770
+ *
771
+ * **Example** (Checking whether a PubSub is shut down)
772
+ *
773
+ * ```ts
774
+ * import { Effect, PubSub } from "effect"
775
+ *
776
+ * const program = Effect.gen(function*() {
777
+ * const pubsub = yield* PubSub.bounded<string>(10)
778
+ *
779
+ * // Initially not shutdown
780
+ * const initiallyShutdown = yield* PubSub.isShutdown(pubsub)
781
+ * console.log("Initially shutdown:", initiallyShutdown) // false
782
+ *
783
+ * // Shutdown the PubSub
784
+ * yield* PubSub.shutdown(pubsub)
785
+ *
786
+ * const nowShutdown = yield* PubSub.isShutdown(pubsub)
787
+ * console.log("Now shutdown:", nowShutdown) // true
788
+ * })
789
+ * ```
790
+ *
791
+ * @category predicates
792
+ * @since 2.0.0
793
+ */
794
+ export const isShutdown = <A>(self: PubSub<A>): Effect.Effect<boolean> => Effect.sync(() => isShutdownUnsafe(self))
795
+
796
+ /**
797
+ * Checks synchronously whether `shutdown` has been called, returning `true`
798
+ * after shutdown and `false` otherwise.
799
+ *
800
+ * **When to use**
801
+ *
802
+ * Use when an immediate `PubSub` shutdown-state snapshot is needed outside
803
+ * effectful code and racing shutdown changes are acceptable.
804
+ *
805
+ * **Example** (Checking shutdown synchronously)
806
+ *
807
+ * ```ts
808
+ * import { PubSub } from "effect"
809
+ *
810
+ * declare const pubsub: PubSub.PubSub<string>
811
+ *
812
+ * // Unsafe synchronous shutdown check
813
+ * const isDown = PubSub.isShutdownUnsafe(pubsub)
814
+ * if (isDown) {
815
+ * console.log("PubSub is shutdown, cannot publish")
816
+ * } else {
817
+ * console.log("PubSub is active")
818
+ * }
819
+ * ```
820
+ *
821
+ * @category predicates
822
+ * @since 4.0.0
823
+ */
824
+ export const isShutdownUnsafe = <A>(self: PubSub<A>): boolean => self.shutdownFlag.current
825
+
826
+ /**
827
+ * Waits until the queue is shutdown. The `Effect` returned by this method will
828
+ * not resume until the queue has been shutdown. If the queue is already
829
+ * shutdown, the `Effect` will resume right away.
830
+ *
831
+ * **Example** (Waiting for shutdown)
832
+ *
833
+ * ```ts
834
+ * import { Effect, Fiber, PubSub } from "effect"
835
+ *
836
+ * const program = Effect.gen(function*() {
837
+ * const pubsub = yield* PubSub.bounded<string>(10)
838
+ *
839
+ * // Start a fiber that waits for shutdown
840
+ * const waiterFiber = yield* Effect.forkChild(
841
+ * Effect.gen(function*() {
842
+ * yield* PubSub.awaitShutdown(pubsub)
843
+ * console.log("PubSub has been shutdown!")
844
+ * })
845
+ * )
846
+ *
847
+ * // Do some work...
848
+ * yield* Effect.sleep("100 millis")
849
+ *
850
+ * // Shutdown the PubSub
851
+ * yield* PubSub.shutdown(pubsub)
852
+ *
853
+ * // The waiter will now complete
854
+ * yield* Fiber.join(waiterFiber)
855
+ * })
856
+ * ```
857
+ *
858
+ * @category lifecycle
859
+ * @since 2.0.0
860
+ */
861
+ export const awaitShutdown = <A>(self: PubSub<A>): Effect.Effect<void> => self.shutdownHook.await
862
+
863
+ /**
864
+ * Publishes a message to the `PubSub` as an `Effect`, returning whether the
865
+ * message was accepted.
866
+ *
867
+ * **When to use**
868
+ *
869
+ * Use when you need to publish from effectful code and let the configured
870
+ * PubSub strategy handle surplus messages.
871
+ *
872
+ * **Details**
873
+ *
874
+ * The effect succeeds with `false` if the `PubSub` is shut down. If the message
875
+ * cannot be accepted immediately, the configured strategy decides how surplus
876
+ * messages are handled.
877
+ *
878
+ * **Example** (Publishing a message)
879
+ *
880
+ * ```ts
881
+ * import { Effect, PubSub } from "effect"
882
+ *
883
+ * const program = Effect.gen(function*() {
884
+ * const pubsub = yield* PubSub.bounded<string>(10)
885
+ *
886
+ * // Publish a message
887
+ * const published = yield* PubSub.publish(pubsub, "Hello World")
888
+ * console.log("Message published:", published) // true
889
+ *
890
+ * yield* Effect.scoped(Effect.gen(function*() {
891
+ * const subscription = yield* PubSub.subscribe(pubsub)
892
+ *
893
+ * yield* PubSub.publish(pubsub, "Hello")
894
+ * const message = yield* PubSub.take(subscription)
895
+ * console.log("Received:", message) // "Hello"
896
+ * }))
897
+ * })
898
+ * ```
899
+ *
900
+ * @see {@link publishUnsafe} for a synchronous non-blocking attempt that does not run effectful surplus handling
901
+ *
902
+ * @category publishing
903
+ * @since 2.0.0
904
+ */
905
+ export const publish: {
906
+ <A>(value: A): (self: PubSub<A>) => Effect.Effect<boolean>
907
+ <A>(self: PubSub<A>, value: A): Effect.Effect<boolean>
908
+ } = dual(2, <A>(self: PubSub<A>, value: A): Effect.Effect<boolean> =>
909
+ Effect.suspend(() => {
910
+ if (self.shutdownFlag.current) {
911
+ return Effect.succeed(false)
912
+ }
913
+
914
+ if (self.pubsub.publish(value)) {
915
+ self.strategy.completeSubscribersUnsafe(self.pubsub, self.subscribers)
916
+ return Effect.succeed(true)
917
+ }
918
+
919
+ return self.strategy.handleSurplus(
920
+ self.pubsub,
921
+ self.subscribers,
922
+ [value],
923
+ self.shutdownFlag
924
+ )
925
+ }))
926
+
927
+ /**
928
+ * Attempts to publish a message synchronously without applying the PubSub
929
+ * strategy's effectful surplus handling.
930
+ *
931
+ * **When to use**
932
+ *
933
+ * Use when you need a non-blocking synchronous publish attempt where `false`
934
+ * is an acceptable result when the message cannot be accepted immediately.
935
+ *
936
+ * **Details**
937
+ *
938
+ * Returns `false` if the `PubSub` is shut down or the message cannot be
939
+ * accepted immediately, for example when a bounded PubSub is full. Prefer
940
+ * `publish` when backpressure or sliding behavior should be honored.
941
+ *
942
+ * **Example** (Publishing without suspending)
943
+ *
944
+ * ```ts
945
+ * import { PubSub } from "effect"
946
+ *
947
+ * declare const pubsub: PubSub.PubSub<string>
948
+ *
949
+ * // Unsafe synchronous publish (non-blocking)
950
+ * const published = PubSub.publishUnsafe(pubsub, "Hello")
951
+ * if (published) {
952
+ * console.log("Message published successfully")
953
+ * } else {
954
+ * console.log("Message dropped (PubSub full or shutdown)")
955
+ * }
956
+ *
957
+ * // Useful for scenarios where you don't want to suspend
958
+ * const messages = ["msg1", "msg2", "msg3"]
959
+ * const publishedCount =
960
+ * messages.filter((msg) => PubSub.publishUnsafe(pubsub, msg)).length
961
+ * console.log(`Published ${publishedCount} out of ${messages.length} messages`)
962
+ * ```
963
+ *
964
+ * @see {@link publish} for effectful publishing that honors the configured surplus strategy
965
+ *
966
+ * @category publishing
967
+ * @since 4.0.0
968
+ */
969
+ export const publishUnsafe: {
970
+ <A>(value: A): (self: PubSub<A>) => boolean
971
+ <A>(self: PubSub<A>, value: A): boolean
972
+ } = dual(2, <A>(self: PubSub<A>, value: A): boolean => {
973
+ if (self.shutdownFlag.current) return false
974
+ if (self.pubsub.publish(value)) {
975
+ self.strategy.completeSubscribersUnsafe(self.pubsub, self.subscribers)
976
+ return true
977
+ }
978
+ return false
979
+ })
980
+
981
+ /**
982
+ * Publishes all of the specified messages to the `PubSub`, returning whether they
983
+ * were published to the `PubSub`.
984
+ *
985
+ * **Example** (Publishing multiple messages)
986
+ *
987
+ * ```ts
988
+ * import { Effect, Fiber, PubSub } from "effect"
989
+ *
990
+ * const program = Effect.gen(function*() {
991
+ * const pubsub = yield* PubSub.bounded<string>(10)
992
+ *
993
+ * // Publish multiple messages at once
994
+ * const messages = ["Hello", "World", "from", "Effect"]
995
+ * const allPublished = yield* PubSub.publishAll(pubsub, messages)
996
+ * console.log("All messages published:", allPublished) // true
997
+ *
998
+ * // With a smaller capacity and an active subscription
999
+ * const smallPubsub = yield* PubSub.bounded<string>(2)
1000
+ * const manyMessages = ["msg1", "msg2", "msg3", "msg4"]
1001
+ *
1002
+ * yield* Effect.scoped(Effect.gen(function*() {
1003
+ * const subscription = yield* PubSub.subscribe(smallPubsub)
1004
+ *
1005
+ * // Will suspend until space becomes available for all messages
1006
+ * const fiber = yield* Effect.forkChild(PubSub.publishAll(smallPubsub, manyMessages))
1007
+ *
1008
+ * const firstBatch = yield* PubSub.takeBetween(subscription, 2, 2)
1009
+ * console.log("First batch:", firstBatch) // ["msg1", "msg2"]
1010
+ *
1011
+ * const result = yield* Fiber.join(fiber)
1012
+ * console.log("All messages eventually published:", result) // true
1013
+ *
1014
+ * const secondBatch = yield* PubSub.takeAll(subscription)
1015
+ * console.log("Second batch:", secondBatch) // ["msg3", "msg4"]
1016
+ * }))
1017
+ * })
1018
+ * ```
1019
+ *
1020
+ * @category publishing
1021
+ * @since 2.0.0
1022
+ */
1023
+ export const publishAll: {
1024
+ <A>(elements: Iterable<A>): (self: PubSub<A>) => Effect.Effect<boolean>
1025
+ <A>(self: PubSub<A>, elements: Iterable<A>): Effect.Effect<boolean>
1026
+ } = dual(2, <A>(self: PubSub<A>, elements: Iterable<A>): Effect.Effect<boolean> =>
1027
+ Effect.suspend(() => {
1028
+ if (self.shutdownFlag.current) {
1029
+ return Effect.succeed(false)
1030
+ }
1031
+ const surplus = self.pubsub.publishAll(elements)
1032
+ self.strategy.completeSubscribersUnsafe(self.pubsub, self.subscribers)
1033
+ if (surplus.length === 0) {
1034
+ return Effect.succeed(true)
1035
+ }
1036
+ return self.strategy.handleSurplus(
1037
+ self.pubsub,
1038
+ self.subscribers,
1039
+ surplus,
1040
+ self.shutdownFlag
1041
+ )
1042
+ }))
1043
+
1044
+ /**
1045
+ * Subscribes to receive messages from the `PubSub`. The resulting subscription can
1046
+ * be evaluated multiple times within the scope to take a message from the `PubSub`
1047
+ * each time.
1048
+ *
1049
+ * **Example** (Subscribing to messages)
1050
+ *
1051
+ * ```ts
1052
+ * import { Effect, PubSub } from "effect"
1053
+ *
1054
+ * const program = Effect.gen(function*() {
1055
+ * const pubsub = yield* PubSub.bounded<string>(10)
1056
+ *
1057
+ * // Subscribe within a scope for automatic cleanup
1058
+ * yield* Effect.scoped(Effect.gen(function*() {
1059
+ * const subscription = yield* PubSub.subscribe(pubsub)
1060
+ *
1061
+ * // Publish some messages
1062
+ * yield* PubSub.publish(pubsub, "Hello")
1063
+ * yield* PubSub.publish(pubsub, "World")
1064
+ *
1065
+ * // Take messages one by one
1066
+ * const msg1 = yield* PubSub.take(subscription)
1067
+ * const msg2 = yield* PubSub.take(subscription)
1068
+ * console.log(msg1, msg2) // "Hello", "World"
1069
+ *
1070
+ * // Subscription is automatically cleaned up when scope exits
1071
+ * }))
1072
+ *
1073
+ * yield* Effect.scoped(Effect.gen(function*() {
1074
+ * const sub1 = yield* PubSub.subscribe(pubsub)
1075
+ * const sub2 = yield* PubSub.subscribe(pubsub)
1076
+ *
1077
+ * // Multiple subscribers can receive the same messages
1078
+ * yield* PubSub.publish(pubsub, "Broadcast")
1079
+ *
1080
+ * const [msg1, msg2] = yield* Effect.all([
1081
+ * PubSub.take(sub1),
1082
+ * PubSub.take(sub2)
1083
+ * ])
1084
+ * console.log("Both received:", msg1, msg2) // "Broadcast", "Broadcast"
1085
+ * }))
1086
+ * })
1087
+ * ```
1088
+ *
1089
+ * @category subscriptions
1090
+ * @since 2.0.0
1091
+ */
1092
+ export const subscribe = <A>(self: PubSub<A>): Effect.Effect<Subscription<A>, never, Scope.Scope> =>
1093
+ Effect.uninterruptible(
1094
+ Effect.contextWith((services) => {
1095
+ const localScope = Context.get(services, Scope.Scope)
1096
+ const scope = Scope.forkUnsafe(self.scope)
1097
+ const subscription = makeSubscriptionUnsafe(self.pubsub, self.subscribers, self.strategy)
1098
+ return Scope.addFinalizer(scope, unsubscribe(subscription)).pipe(
1099
+ Effect.andThen(Scope.addFinalizerExit(localScope, (exit) => Scope.close(scope, exit))),
1100
+ Effect.as(subscription)
1101
+ )
1102
+ })
1103
+ )
1104
+
1105
+ const unsubscribe = <A>(self: Subscription<A>): Effect.Effect<void> =>
1106
+ Effect.uninterruptible(
1107
+ Effect.withFiber<void>((state) => {
1108
+ MutableRef.set(self.shutdownFlag, true)
1109
+ return Effect.forEach(
1110
+ MutableList.takeAll(self.pollers),
1111
+ (d) => Deferred.interruptWith(d, state.id),
1112
+ { discard: true, concurrency: "unbounded" }
1113
+ ).pipe(
1114
+ Effect.tap(() =>
1115
+ Effect.sync(() => {
1116
+ self.subscribers.delete(self.subscription)
1117
+ self.subscription.unsubscribe()
1118
+ self.strategy.onPubSubEmptySpaceUnsafe(self.pubsub, self.subscribers)
1119
+ })
1120
+ ),
1121
+ Effect.when(self.shutdownHook.open),
1122
+ Effect.asVoid
1123
+ )
1124
+ })
1125
+ )
1126
+
1127
+ /**
1128
+ * Takes a single message from the subscription. If no messages are available,
1129
+ * this will suspend until a message becomes available.
1130
+ *
1131
+ * **Example** (Taking a message)
1132
+ *
1133
+ * ```ts
1134
+ * import { Effect, Fiber, PubSub } from "effect"
1135
+ *
1136
+ * const program = Effect.gen(function*() {
1137
+ * const pubsub = yield* PubSub.bounded<string>(10)
1138
+ *
1139
+ * yield* Effect.scoped(Effect.gen(function*() {
1140
+ * const subscription = yield* PubSub.subscribe(pubsub)
1141
+ *
1142
+ * // Start a fiber to take a message (will suspend)
1143
+ * const takeFiber = yield* Effect.forkChild(
1144
+ * PubSub.take(subscription)
1145
+ * )
1146
+ *
1147
+ * // Publish a message
1148
+ * yield* PubSub.publish(pubsub, "Hello")
1149
+ *
1150
+ * // The take will now complete
1151
+ * const message = yield* Fiber.join(takeFiber)
1152
+ * console.log("Received:", message) // "Hello"
1153
+ * }))
1154
+ * })
1155
+ * ```
1156
+ *
1157
+ * @category subscriptions
1158
+ * @since 4.0.0
1159
+ */
1160
+ export const take = <A>(self: Subscription<A>): Effect.Effect<A> =>
1161
+ Effect.suspend(() => {
1162
+ if (self.shutdownFlag.current) {
1163
+ return Effect.interrupt
1164
+ }
1165
+ if (self.replayWindow.remaining > 0) {
1166
+ const message = self.replayWindow.take()!
1167
+ return Effect.succeed(message)
1168
+ }
1169
+ const message = self.pollers.length === 0
1170
+ ? self.subscription.poll()
1171
+ : MutableList.Empty
1172
+ if (message === MutableList.Empty) {
1173
+ return pollForItem(self)
1174
+ } else {
1175
+ self.strategy.onPubSubEmptySpaceUnsafe(self.pubsub, self.subscribers)
1176
+ return Effect.succeed(message)
1177
+ }
1178
+ })
1179
+
1180
+ /**
1181
+ * Takes all available messages from the subscription, suspending if no items
1182
+ * are available.
1183
+ *
1184
+ * **Example** (Taking all available messages)
1185
+ *
1186
+ * ```ts
1187
+ * import { Effect, PubSub } from "effect"
1188
+ *
1189
+ * const program = Effect.gen(function*() {
1190
+ * const pubsub = yield* PubSub.bounded<string>(10)
1191
+ *
1192
+ * yield* Effect.scoped(Effect.gen(function*() {
1193
+ * const subscription = yield* PubSub.subscribe(pubsub)
1194
+ *
1195
+ * // Publish multiple messages
1196
+ * yield* PubSub.publishAll(pubsub, ["msg1", "msg2", "msg3"])
1197
+ *
1198
+ * // Take all available messages at once
1199
+ * const allMessages = yield* PubSub.takeAll(subscription)
1200
+ * console.log("All messages:", allMessages) // ["msg1", "msg2", "msg3"]
1201
+ * }))
1202
+ * })
1203
+ * ```
1204
+ *
1205
+ * @category subscriptions
1206
+ * @since 4.0.0
1207
+ */
1208
+ export const takeAll = <A>(self: Subscription<A>): Effect.Effect<Arr.NonEmptyArray<A>> =>
1209
+ Effect.suspend(function loop(value?: [A]): Effect.Effect<Arr.NonEmptyArray<A>> {
1210
+ if (self.shutdownFlag.current) {
1211
+ return Effect.interrupt
1212
+ }
1213
+ let as = self.pollers.length === 0
1214
+ ? self.subscription.pollUpTo(Number.POSITIVE_INFINITY)
1215
+ : []
1216
+ if (value) {
1217
+ as = value.concat(as)
1218
+ }
1219
+ self.strategy.onPubSubEmptySpaceUnsafe(self.pubsub, self.subscribers)
1220
+ if (self.replayWindow.remaining > 0) {
1221
+ return Effect.succeed(self.replayWindow.takeAll().concat(as) as Arr.NonEmptyArray<A>)
1222
+ } else if (!Arr.isArrayNonEmpty(as)) {
1223
+ return Effect.flatMap(pollForItem(self), (item) => loop([item]))
1224
+ }
1225
+ return Effect.succeed(as)
1226
+ })
1227
+
1228
+ const pollForItem = <A>(self: Subscription<A>) => {
1229
+ const deferred = Deferred.makeUnsafe<A>()
1230
+ let set = self.subscribers.get(self.subscription)
1231
+ if (!set) {
1232
+ set = new Set()
1233
+ self.subscribers.set(self.subscription, set)
1234
+ }
1235
+ set.add(self.pollers)
1236
+ MutableList.append(self.pollers, deferred)
1237
+ self.strategy.completePollersUnsafe(
1238
+ self.pubsub,
1239
+ self.subscribers,
1240
+ self.subscription,
1241
+ self.pollers
1242
+ )
1243
+ return Effect.onInterrupt(
1244
+ Deferred.await(deferred),
1245
+ () => {
1246
+ MutableList.remove(self.pollers, deferred)
1247
+ return Effect.void
1248
+ }
1249
+ )
1250
+ }
1251
+
1252
+ /**
1253
+ * Takes up to the specified number of messages from the subscription without suspending.
1254
+ *
1255
+ * **Example** (Taking up to a maximum number of messages)
1256
+ *
1257
+ * ```ts
1258
+ * import { Effect, PubSub } from "effect"
1259
+ *
1260
+ * const program = Effect.gen(function*() {
1261
+ * const pubsub = yield* PubSub.bounded<string>(10)
1262
+ *
1263
+ * yield* Effect.scoped(Effect.gen(function*() {
1264
+ * const subscription = yield* PubSub.subscribe(pubsub)
1265
+ *
1266
+ * // Publish multiple messages
1267
+ * yield* PubSub.publishAll(pubsub, ["msg1", "msg2", "msg3", "msg4", "msg5"])
1268
+ *
1269
+ * // Take up to 3 messages
1270
+ * const upTo3 = yield* PubSub.takeUpTo(subscription, 3)
1271
+ * console.log("Up to 3:", upTo3) // ["msg1", "msg2", "msg3"]
1272
+ *
1273
+ * // Take up to 5 more (only 2 remaining)
1274
+ * const upTo5 = yield* PubSub.takeUpTo(subscription, 5)
1275
+ * console.log("Up to 5:", upTo5) // ["msg4", "msg5"]
1276
+ *
1277
+ * // No more messages available
1278
+ * const noMore = yield* PubSub.takeUpTo(subscription, 10)
1279
+ * console.log("No more:", noMore) // []
1280
+ * }))
1281
+ * })
1282
+ * ```
1283
+ *
1284
+ * @category subscriptions
1285
+ * @since 4.0.0
1286
+ */
1287
+ export const takeUpTo: {
1288
+ (max: number): <A>(self: Subscription<A>) => Effect.Effect<Array<A>>
1289
+ <A>(self: Subscription<A>, max: number): Effect.Effect<Array<A>>
1290
+ } = dual(2, <A>(self: Subscription<A>, max: number): Effect.Effect<Array<A>> =>
1291
+ Effect.suspend(() => {
1292
+ if (self.shutdownFlag.current) return Effect.interrupt
1293
+ let replay: Array<A> | undefined = undefined
1294
+ if (self.replayWindow.remaining >= max) {
1295
+ return Effect.succeed(self.replayWindow.takeN(max))
1296
+ } else if (self.replayWindow.remaining > 0) {
1297
+ replay = self.replayWindow.takeAll()
1298
+ max = max - replay.length
1299
+ }
1300
+ const as = self.pollers.length === 0
1301
+ ? self.subscription.pollUpTo(max)
1302
+ : []
1303
+ self.strategy.onPubSubEmptySpaceUnsafe(self.pubsub, self.subscribers)
1304
+ return replay ? Effect.succeed(replay.concat(as)) : Effect.succeed(as)
1305
+ }))
1306
+
1307
+ /**
1308
+ * Takes between the specified minimum and maximum number of messages from the subscription.
1309
+ * Will suspend if the minimum number is not immediately available.
1310
+ *
1311
+ * **Example** (Taking between a minimum and maximum)
1312
+ *
1313
+ * ```ts
1314
+ * import { Effect, Fiber, PubSub } from "effect"
1315
+ *
1316
+ * const program = Effect.gen(function*() {
1317
+ * const pubsub = yield* PubSub.bounded<string>(10)
1318
+ *
1319
+ * yield* Effect.scoped(Effect.gen(function*() {
1320
+ * const subscription = yield* PubSub.subscribe(pubsub)
1321
+ *
1322
+ * // Start taking between 2 and 5 messages (will suspend)
1323
+ * const takeFiber = yield* Effect.forkChild(
1324
+ * PubSub.takeBetween(subscription, 2, 5)
1325
+ * )
1326
+ *
1327
+ * // Publish 3 messages
1328
+ * yield* PubSub.publishAll(pubsub, ["msg1", "msg2", "msg3"])
1329
+ *
1330
+ * // Now the take will complete with 3 messages
1331
+ * const messages = yield* Fiber.join(takeFiber)
1332
+ * console.log("Between 2-5:", messages) // ["msg1", "msg2", "msg3"]
1333
+ * }))
1334
+ * })
1335
+ * ```
1336
+ *
1337
+ * @category subscriptions
1338
+ * @since 4.0.0
1339
+ */
1340
+ export const takeBetween: {
1341
+ (min: number, max: number): <A>(self: Subscription<A>) => Effect.Effect<Array<A>>
1342
+ <A>(self: Subscription<A>, min: number, max: number): Effect.Effect<Array<A>>
1343
+ } = dual(
1344
+ 3,
1345
+ <A>(self: Subscription<A>, min: number, max: number): Effect.Effect<Array<A>> =>
1346
+ Effect.suspend(() => takeRemainderLoop(self, min, max, []))
1347
+ )
1348
+
1349
+ const takeRemainderLoop = <A>(
1350
+ self: Subscription<A>,
1351
+ min: number,
1352
+ max: number,
1353
+ acc: Array<A>
1354
+ ): Effect.Effect<Array<A>> => {
1355
+ if (max < min) {
1356
+ return Effect.succeed(acc)
1357
+ }
1358
+ return Effect.flatMap(takeUpTo(self, max), (bs) => {
1359
+ acc.push(...bs)
1360
+ const remaining = min - bs.length
1361
+ if (remaining === 1) {
1362
+ return Effect.map(take(self), (b) => {
1363
+ acc.push(b)
1364
+ return acc
1365
+ })
1366
+ }
1367
+ if (remaining > 1) {
1368
+ return Effect.flatMap(take(self), (b) => {
1369
+ acc.push(b)
1370
+ return takeRemainderLoop(
1371
+ self,
1372
+ remaining - 1,
1373
+ max - bs.length - 1,
1374
+ acc
1375
+ )
1376
+ })
1377
+ }
1378
+ return Effect.succeed(acc)
1379
+ })
1380
+ }
1381
+
1382
+ /**
1383
+ * Returns the number of messages currently available in the subscription as an
1384
+ * `Effect`.
1385
+ *
1386
+ * **When to use**
1387
+ *
1388
+ * Use when checking a subscription from effectful code and shutdown should
1389
+ * interrupt the effect.
1390
+ *
1391
+ * **Details**
1392
+ *
1393
+ * The count includes replay-buffered messages. If the subscription has been
1394
+ * shut down, the effect interrupts.
1395
+ *
1396
+ * **Example** (Checking remaining messages)
1397
+ *
1398
+ * ```ts
1399
+ * import { Effect, PubSub } from "effect"
1400
+ *
1401
+ * const program = Effect.gen(function*() {
1402
+ * const pubsub = yield* PubSub.bounded<string>(10)
1403
+ *
1404
+ * yield* Effect.scoped(Effect.gen(function*() {
1405
+ * const subscription = yield* PubSub.subscribe(pubsub)
1406
+ *
1407
+ * // Publish some messages
1408
+ * yield* PubSub.publishAll(pubsub, ["msg1", "msg2", "msg3"])
1409
+ *
1410
+ * // Check how many messages are available
1411
+ * const count = yield* PubSub.remaining(subscription)
1412
+ * console.log("Messages available:", count) // 3
1413
+ *
1414
+ * // Take one message
1415
+ * yield* PubSub.take(subscription)
1416
+ *
1417
+ * const remaining = yield* PubSub.remaining(subscription)
1418
+ * console.log("Messages remaining:", remaining) // 2
1419
+ * }))
1420
+ * })
1421
+ * ```
1422
+ *
1423
+ * @see {@link remainingUnsafe} for a synchronous check that reports shutdown as `Option.none()`
1424
+ *
1425
+ * @category getters
1426
+ * @since 4.0.0
1427
+ */
1428
+ export const remaining = <A>(self: Subscription<A>): Effect.Effect<number> =>
1429
+ Effect.suspend(() =>
1430
+ self.shutdownFlag.current
1431
+ ? Effect.interrupt
1432
+ : Effect.succeed(self.subscription.size() + self.replayWindow.remaining)
1433
+ )
1434
+
1435
+ /**
1436
+ * Synchronously returns the number of messages currently available in the
1437
+ * subscription, or `Option.none()` when it is shut down.
1438
+ *
1439
+ * **When to use**
1440
+ *
1441
+ * Use when you need synchronous polling outside a managed workflow and want
1442
+ * shutdown observed as data instead of interruption.
1443
+ *
1444
+ * **Example** (Checking remaining messages synchronously)
1445
+ *
1446
+ * ```ts
1447
+ * import { PubSub } from "effect"
1448
+ *
1449
+ * declare const subscription: PubSub.Subscription<string>
1450
+ *
1451
+ * // Unsafe synchronous check for remaining messages
1452
+ * const remainingOption = PubSub.remainingUnsafe(subscription)
1453
+ * if (remainingOption._tag === "Some") {
1454
+ * console.log("Messages available:", remainingOption.value)
1455
+ * } else {
1456
+ * console.log("Subscription is shutdown")
1457
+ * }
1458
+ *
1459
+ * // Useful for polling or batching scenarios
1460
+ * if (remainingOption._tag === "Some" && remainingOption.value > 10) {
1461
+ * // Process messages in batch
1462
+ * }
1463
+ * ```
1464
+ *
1465
+ * @see {@link remaining} for the effectful variant that interrupts on shutdown
1466
+ *
1467
+ * @category getters
1468
+ * @since 4.0.0
1469
+ */
1470
+ export const remainingUnsafe = <A>(self: Subscription<A>): Option.Option<number> => {
1471
+ if (self.shutdownFlag.current) {
1472
+ return Option.none()
1473
+ }
1474
+ return Option.some(self.subscription.size() + self.replayWindow.remaining)
1475
+ }
1476
+
1477
+ // -----------------------------------------------------------------------------
1478
+ // internal
1479
+ // -----------------------------------------------------------------------------
1480
+
1481
+ const AbsentValue = Symbol.for("effect/PubSub/AbsentValue")
1482
+ type AbsentValue = typeof AbsentValue
1483
+
1484
+ const addSubscribers = <A>(
1485
+ subscribers: PubSub.Subscribers<A>,
1486
+ subscription: PubSub.BackingSubscription<A>,
1487
+ pollers: MutableList.MutableList<Deferred.Deferred<A>>
1488
+ ) => {
1489
+ if (!subscribers.has(subscription)) {
1490
+ subscribers.set(subscription, new Set())
1491
+ }
1492
+ const set = subscribers.get(subscription)!
1493
+ set.add(pollers)
1494
+ }
1495
+
1496
+ const removeSubscribers = <A>(
1497
+ subscribers: PubSub.Subscribers<A>,
1498
+ subscription: PubSub.BackingSubscription<A>,
1499
+ pollers: MutableList.MutableList<Deferred.Deferred<A>>
1500
+ ) => {
1501
+ if (!subscribers.has(subscription)) {
1502
+ return
1503
+ }
1504
+ const set = subscribers.get(subscription)!
1505
+ set.delete(pollers)
1506
+ if (set.size === 0) {
1507
+ subscribers.delete(subscription)
1508
+ }
1509
+ }
1510
+
1511
+ const makeSubscriptionUnsafe = <A>(
1512
+ pubsub: PubSub.Atomic<A>,
1513
+ subscribers: PubSub.Subscribers<A>,
1514
+ strategy: PubSub.Strategy<A>
1515
+ ): Subscription<A> =>
1516
+ new SubscriptionImpl(
1517
+ pubsub,
1518
+ subscribers,
1519
+ pubsub.subscribe(),
1520
+ MutableList.make<Deferred.Deferred<A>>(),
1521
+ Latch.makeUnsafe(false),
1522
+ MutableRef.make(false),
1523
+ strategy,
1524
+ pubsub.replayWindow()
1525
+ )
1526
+
1527
+ class BoundedPubSubArb<in out A> implements PubSub.Atomic<A> {
1528
+ array: Array<A>
1529
+ publisherIndex = 0
1530
+ subscribers: Array<number>
1531
+ subscriberCount = 0
1532
+ subscribersIndex = 0
1533
+
1534
+ readonly capacity: number
1535
+ readonly replayBuffer: ReplayBuffer<A> | undefined
1536
+
1537
+ constructor(capacity: number, replayBuffer: ReplayBuffer<A> | undefined) {
1538
+ this.capacity = capacity
1539
+ this.replayBuffer = replayBuffer
1540
+ this.array = Array.from({ length: capacity })
1541
+ this.subscribers = Array.from({ length: capacity })
1542
+ }
1543
+
1544
+ replayWindow(): PubSub.ReplayWindow<A> {
1545
+ return this.replayBuffer ? new ReplayWindowImpl(this.replayBuffer) : emptyReplayWindow
1546
+ }
1547
+
1548
+ isEmpty(): boolean {
1549
+ return this.publisherIndex === this.subscribersIndex
1550
+ }
1551
+
1552
+ isFull(): boolean {
1553
+ return this.publisherIndex === this.subscribersIndex + this.capacity
1554
+ }
1555
+
1556
+ size(): number {
1557
+ return this.publisherIndex - this.subscribersIndex
1558
+ }
1559
+
1560
+ publish(value: A): boolean {
1561
+ if (this.isFull()) {
1562
+ return false
1563
+ }
1564
+ if (this.subscriberCount !== 0) {
1565
+ const index = this.publisherIndex % this.capacity
1566
+ this.array[index] = value
1567
+ this.subscribers[index] = this.subscriberCount
1568
+ this.publisherIndex += 1
1569
+ }
1570
+ if (this.replayBuffer) {
1571
+ this.replayBuffer.offer(value)
1572
+ }
1573
+ return true
1574
+ }
1575
+
1576
+ publishAll(elements: Iterable<A>): Array<A> {
1577
+ if (this.subscriberCount === 0) {
1578
+ if (this.replayBuffer) {
1579
+ this.replayBuffer.offerAll(elements)
1580
+ }
1581
+ return []
1582
+ }
1583
+ const chunk = Arr.fromIterable(elements)
1584
+ const n = chunk.length
1585
+ const size = this.publisherIndex - this.subscribersIndex
1586
+ const available = this.capacity - size
1587
+ const forPubSub = Math.min(n, available)
1588
+ if (forPubSub === 0) {
1589
+ return chunk
1590
+ }
1591
+ let iteratorIndex = 0
1592
+ const publishAllIndex = this.publisherIndex + forPubSub
1593
+ while (this.publisherIndex !== publishAllIndex) {
1594
+ const a = chunk[iteratorIndex++]
1595
+ const index = this.publisherIndex % this.capacity
1596
+ this.array[index] = a
1597
+ this.subscribers[index] = this.subscriberCount
1598
+ this.publisherIndex += 1
1599
+ if (this.replayBuffer) {
1600
+ this.replayBuffer.offer(a)
1601
+ }
1602
+ }
1603
+ return chunk.slice(iteratorIndex)
1604
+ }
1605
+
1606
+ slide(): void {
1607
+ if (this.subscribersIndex !== this.publisherIndex) {
1608
+ const index = this.subscribersIndex % this.capacity
1609
+ this.array[index] = AbsentValue as unknown as A
1610
+ this.subscribers[index] = 0
1611
+ this.subscribersIndex += 1
1612
+ }
1613
+ if (this.replayBuffer) {
1614
+ this.replayBuffer.slide()
1615
+ }
1616
+ }
1617
+
1618
+ subscribe(): PubSub.BackingSubscription<A> {
1619
+ this.subscriberCount += 1
1620
+ return new BoundedPubSubArbSubscription(this, this.publisherIndex, false)
1621
+ }
1622
+ }
1623
+
1624
+ class BoundedPubSubArbSubscription<in out A> implements PubSub.BackingSubscription<A> {
1625
+ private self: BoundedPubSubArb<A>
1626
+ private subscriberIndex: number
1627
+ private unsubscribed: boolean
1628
+
1629
+ constructor(
1630
+ self: BoundedPubSubArb<A>,
1631
+ subscriberIndex: number,
1632
+ unsubscribed: boolean
1633
+ ) {
1634
+ this.self = self
1635
+ this.subscriberIndex = subscriberIndex
1636
+ this.unsubscribed = unsubscribed
1637
+ }
1638
+
1639
+ isEmpty(): boolean {
1640
+ return (
1641
+ this.unsubscribed ||
1642
+ this.self.publisherIndex === this.subscriberIndex ||
1643
+ this.self.publisherIndex === this.self.subscribersIndex
1644
+ )
1645
+ }
1646
+
1647
+ size() {
1648
+ if (this.unsubscribed) {
1649
+ return 0
1650
+ }
1651
+ return this.self.publisherIndex - Math.max(this.subscriberIndex, this.self.subscribersIndex)
1652
+ }
1653
+
1654
+ poll(): A | MutableList.Empty {
1655
+ if (this.unsubscribed) {
1656
+ return MutableList.Empty
1657
+ }
1658
+ this.subscriberIndex = Math.max(this.subscriberIndex, this.self.subscribersIndex)
1659
+ if (this.subscriberIndex !== this.self.publisherIndex) {
1660
+ const index = this.subscriberIndex % this.self.capacity
1661
+ const elem = this.self.array[index]!
1662
+ this.self.subscribers[index] -= 1
1663
+ if (this.self.subscribers[index] === 0) {
1664
+ this.self.array[index] = AbsentValue as unknown as A
1665
+ this.self.subscribersIndex += 1
1666
+ }
1667
+ this.subscriberIndex += 1
1668
+ return elem
1669
+ }
1670
+ return MutableList.Empty
1671
+ }
1672
+
1673
+ pollUpTo(n: number): Array<A> {
1674
+ if (this.unsubscribed) {
1675
+ return []
1676
+ }
1677
+ this.subscriberIndex = Math.max(this.subscriberIndex, this.self.subscribersIndex)
1678
+ const size = this.self.publisherIndex - this.subscriberIndex
1679
+ const toPoll = Math.min(n, size)
1680
+ if (toPoll <= 0) {
1681
+ return []
1682
+ }
1683
+ const builder: Array<A> = []
1684
+ const pollUpToIndex = this.subscriberIndex + toPoll
1685
+ while (this.subscriberIndex !== pollUpToIndex) {
1686
+ const index = this.subscriberIndex % this.self.capacity
1687
+ const a = this.self.array[index] as A
1688
+ this.self.subscribers[index] -= 1
1689
+ if (this.self.subscribers[index] === 0) {
1690
+ this.self.array[index] = AbsentValue as unknown as A
1691
+ this.self.subscribersIndex += 1
1692
+ }
1693
+ builder.push(a)
1694
+ this.subscriberIndex += 1
1695
+ }
1696
+
1697
+ return builder
1698
+ }
1699
+
1700
+ unsubscribe(): void {
1701
+ if (!this.unsubscribed) {
1702
+ this.unsubscribed = true
1703
+ this.self.subscriberCount -= 1
1704
+ this.subscriberIndex = Math.max(this.subscriberIndex, this.self.subscribersIndex)
1705
+ while (this.subscriberIndex !== this.self.publisherIndex) {
1706
+ const index = this.subscriberIndex % this.self.capacity
1707
+ this.self.subscribers[index] -= 1
1708
+ if (this.self.subscribers[index] === 0) {
1709
+ this.self.array[index] = AbsentValue as unknown as A
1710
+ this.self.subscribersIndex += 1
1711
+ }
1712
+ this.subscriberIndex += 1
1713
+ }
1714
+ }
1715
+ }
1716
+ }
1717
+
1718
+ class BoundedPubSubPow2<in out A> implements PubSub.Atomic<A> {
1719
+ array: Array<A>
1720
+ mask: number
1721
+ publisherIndex = 0
1722
+ subscribers: Array<number>
1723
+ subscriberCount = 0
1724
+ subscribersIndex = 0
1725
+
1726
+ readonly capacity: number
1727
+ readonly replayBuffer: ReplayBuffer<A> | undefined
1728
+
1729
+ constructor(capacity: number, replayBuffer: ReplayBuffer<A> | undefined) {
1730
+ this.capacity = capacity
1731
+ this.replayBuffer = replayBuffer
1732
+ this.array = Array.from({ length: capacity })
1733
+ this.mask = capacity - 1
1734
+ this.subscribers = Array.from({ length: capacity })
1735
+ }
1736
+
1737
+ replayWindow(): PubSub.ReplayWindow<A> {
1738
+ return this.replayBuffer ? new ReplayWindowImpl(this.replayBuffer) : emptyReplayWindow
1739
+ }
1740
+
1741
+ isEmpty(): boolean {
1742
+ return this.publisherIndex === this.subscribersIndex
1743
+ }
1744
+
1745
+ isFull(): boolean {
1746
+ return this.publisherIndex === this.subscribersIndex + this.capacity
1747
+ }
1748
+
1749
+ size(): number {
1750
+ return this.publisherIndex - this.subscribersIndex
1751
+ }
1752
+
1753
+ publish(value: A): boolean {
1754
+ if (this.isFull()) {
1755
+ return false
1756
+ }
1757
+ if (this.subscriberCount !== 0) {
1758
+ const index = this.publisherIndex & this.mask
1759
+ this.array[index] = value
1760
+ this.subscribers[index] = this.subscriberCount
1761
+ this.publisherIndex += 1
1762
+ }
1763
+ if (this.replayBuffer) {
1764
+ this.replayBuffer.offer(value)
1765
+ }
1766
+ return true
1767
+ }
1768
+
1769
+ publishAll(elements: Iterable<A>): Array<A> {
1770
+ if (this.subscriberCount === 0) {
1771
+ if (this.replayBuffer) {
1772
+ this.replayBuffer.offerAll(elements)
1773
+ }
1774
+ return []
1775
+ }
1776
+ const chunk = Arr.fromIterable(elements)
1777
+ const n = chunk.length
1778
+ const size = this.publisherIndex - this.subscribersIndex
1779
+ const available = this.capacity - size
1780
+ const forPubSub = Math.min(n, available)
1781
+ if (forPubSub === 0) {
1782
+ return chunk
1783
+ }
1784
+ let iteratorIndex = 0
1785
+ const publishAllIndex = this.publisherIndex + forPubSub
1786
+ while (this.publisherIndex !== publishAllIndex) {
1787
+ const elem = chunk[iteratorIndex++]
1788
+ const index = this.publisherIndex & this.mask
1789
+ this.array[index] = elem
1790
+ this.subscribers[index] = this.subscriberCount
1791
+ this.publisherIndex += 1
1792
+ if (this.replayBuffer) {
1793
+ this.replayBuffer.offer(elem)
1794
+ }
1795
+ }
1796
+ return chunk.slice(iteratorIndex)
1797
+ }
1798
+
1799
+ slide(): void {
1800
+ if (this.subscribersIndex !== this.publisherIndex) {
1801
+ const index = this.subscribersIndex & this.mask
1802
+ this.array[index] = AbsentValue as unknown as A
1803
+ this.subscribers[index] = 0
1804
+ this.subscribersIndex += 1
1805
+ }
1806
+ if (this.replayBuffer) {
1807
+ this.replayBuffer.slide()
1808
+ }
1809
+ }
1810
+
1811
+ subscribe(): PubSub.BackingSubscription<A> {
1812
+ this.subscriberCount += 1
1813
+ return new BoundedPubSubPow2Subscription(this, this.publisherIndex, false)
1814
+ }
1815
+ }
1816
+
1817
+ class BoundedPubSubPow2Subscription<in out A> implements PubSub.BackingSubscription<A> {
1818
+ private self: BoundedPubSubPow2<A>
1819
+ private subscriberIndex: number
1820
+ private unsubscribed: boolean
1821
+
1822
+ constructor(
1823
+ self: BoundedPubSubPow2<A>,
1824
+ subscriberIndex: number,
1825
+ unsubscribed: boolean
1826
+ ) {
1827
+ this.self = self
1828
+ this.subscriberIndex = subscriberIndex
1829
+ this.unsubscribed = unsubscribed
1830
+ }
1831
+
1832
+ isEmpty(): boolean {
1833
+ return (
1834
+ this.unsubscribed ||
1835
+ this.self.publisherIndex === this.subscriberIndex ||
1836
+ this.self.publisherIndex === this.self.subscribersIndex
1837
+ )
1838
+ }
1839
+
1840
+ size() {
1841
+ if (this.unsubscribed) {
1842
+ return 0
1843
+ }
1844
+ return this.self.publisherIndex - Math.max(this.subscriberIndex, this.self.subscribersIndex)
1845
+ }
1846
+
1847
+ poll(): A | MutableList.Empty {
1848
+ if (this.unsubscribed) {
1849
+ return MutableList.Empty
1850
+ }
1851
+ this.subscriberIndex = Math.max(this.subscriberIndex, this.self.subscribersIndex)
1852
+ if (this.subscriberIndex !== this.self.publisherIndex) {
1853
+ const index = this.subscriberIndex & this.self.mask
1854
+ const elem = this.self.array[index]!
1855
+ this.self.subscribers[index] -= 1
1856
+ if (this.self.subscribers[index] === 0) {
1857
+ this.self.array[index] = AbsentValue as unknown as A
1858
+ this.self.subscribersIndex += 1
1859
+ }
1860
+ this.subscriberIndex += 1
1861
+ return elem
1862
+ }
1863
+ return MutableList.Empty
1864
+ }
1865
+
1866
+ pollUpTo(n: number): Array<A> {
1867
+ if (this.unsubscribed) {
1868
+ return []
1869
+ }
1870
+ this.subscriberIndex = Math.max(this.subscriberIndex, this.self.subscribersIndex)
1871
+ const size = this.self.publisherIndex - this.subscriberIndex
1872
+ const toPoll = Math.min(n, size)
1873
+ if (toPoll <= 0) {
1874
+ return []
1875
+ }
1876
+ const builder: Array<A> = []
1877
+ const pollUpToIndex = this.subscriberIndex + toPoll
1878
+ while (this.subscriberIndex !== pollUpToIndex) {
1879
+ const index = this.subscriberIndex & this.self.mask
1880
+ const elem = this.self.array[index] as A
1881
+ this.self.subscribers[index] -= 1
1882
+ if (this.self.subscribers[index] === 0) {
1883
+ this.self.array[index] = AbsentValue as unknown as A
1884
+ this.self.subscribersIndex += 1
1885
+ }
1886
+ builder.push(elem)
1887
+ this.subscriberIndex += 1
1888
+ }
1889
+ return builder
1890
+ }
1891
+
1892
+ unsubscribe(): void {
1893
+ if (!this.unsubscribed) {
1894
+ this.unsubscribed = true
1895
+ this.self.subscriberCount -= 1
1896
+ this.subscriberIndex = Math.max(this.subscriberIndex, this.self.subscribersIndex)
1897
+ while (this.subscriberIndex !== this.self.publisherIndex) {
1898
+ const index = this.subscriberIndex & this.self.mask
1899
+ this.self.subscribers[index] -= 1
1900
+ if (this.self.subscribers[index] === 0) {
1901
+ this.self.array[index] = AbsentValue as unknown as A
1902
+ this.self.subscribersIndex += 1
1903
+ }
1904
+ this.subscriberIndex += 1
1905
+ }
1906
+ }
1907
+ }
1908
+ }
1909
+
1910
+ class BoundedPubSubSingle<in out A> implements PubSub.Atomic<A> {
1911
+ publisherIndex = 0
1912
+ subscriberCount = 0
1913
+ subscribers = 0
1914
+ value: A = AbsentValue as unknown as A
1915
+
1916
+ readonly capacity = 1
1917
+ readonly replayBuffer: ReplayBuffer<A> | undefined
1918
+
1919
+ constructor(replayBuffer: ReplayBuffer<A> | undefined) {
1920
+ this.replayBuffer = replayBuffer
1921
+ }
1922
+
1923
+ replayWindow(): PubSub.ReplayWindow<A> {
1924
+ return this.replayBuffer ? new ReplayWindowImpl(this.replayBuffer) : emptyReplayWindow
1925
+ }
1926
+
1927
+ pipe() {
1928
+ return pipeArguments(this, arguments)
1929
+ }
1930
+
1931
+ isEmpty(): boolean {
1932
+ return this.subscribers === 0
1933
+ }
1934
+
1935
+ isFull(): boolean {
1936
+ return !this.isEmpty()
1937
+ }
1938
+
1939
+ size(): number {
1940
+ return this.isEmpty() ? 0 : 1
1941
+ }
1942
+
1943
+ publish(value: A): boolean {
1944
+ if (this.isFull()) {
1945
+ return false
1946
+ }
1947
+ if (this.subscriberCount !== 0) {
1948
+ this.value = value
1949
+ this.subscribers = this.subscriberCount
1950
+ this.publisherIndex += 1
1951
+ }
1952
+ if (this.replayBuffer) {
1953
+ this.replayBuffer.offer(value)
1954
+ }
1955
+ return true
1956
+ }
1957
+
1958
+ publishAll(elements: Iterable<A>): Array<A> {
1959
+ if (this.subscriberCount === 0) {
1960
+ if (this.replayBuffer) {
1961
+ this.replayBuffer.offerAll(elements)
1962
+ }
1963
+ return []
1964
+ }
1965
+ const chunk = Arr.fromIterable(elements)
1966
+ if (chunk.length === 0) {
1967
+ return chunk
1968
+ }
1969
+ if (this.publish(chunk[0])) {
1970
+ return chunk.slice(1)
1971
+ } else {
1972
+ return chunk
1973
+ }
1974
+ }
1975
+
1976
+ slide(): void {
1977
+ if (this.isFull()) {
1978
+ this.subscribers = 0
1979
+ this.value = AbsentValue as unknown as A
1980
+ }
1981
+ if (this.replayBuffer) {
1982
+ this.replayBuffer.slide()
1983
+ }
1984
+ }
1985
+
1986
+ subscribe(): PubSub.BackingSubscription<A> {
1987
+ this.subscriberCount += 1
1988
+ return new BoundedPubSubSingleSubscription(this, this.publisherIndex, false)
1989
+ }
1990
+ }
1991
+
1992
+ class BoundedPubSubSingleSubscription<in out A> implements PubSub.BackingSubscription<A> {
1993
+ private self: BoundedPubSubSingle<A>
1994
+ private subscriberIndex: number
1995
+ private unsubscribed: boolean
1996
+
1997
+ constructor(
1998
+ self: BoundedPubSubSingle<A>,
1999
+ subscriberIndex: number,
2000
+ unsubscribed: boolean
2001
+ ) {
2002
+ this.self = self
2003
+ this.subscriberIndex = subscriberIndex
2004
+ this.unsubscribed = unsubscribed
2005
+ }
2006
+
2007
+ isEmpty(): boolean {
2008
+ return (
2009
+ this.unsubscribed ||
2010
+ this.self.subscribers === 0 ||
2011
+ this.subscriberIndex === this.self.publisherIndex
2012
+ )
2013
+ }
2014
+
2015
+ size() {
2016
+ return this.isEmpty() ? 0 : 1
2017
+ }
2018
+
2019
+ poll(): A | MutableList.Empty {
2020
+ if (this.isEmpty()) {
2021
+ return MutableList.Empty
2022
+ }
2023
+ const elem = this.self.value
2024
+ this.self.subscribers -= 1
2025
+ if (this.self.subscribers === 0) {
2026
+ this.self.value = AbsentValue as unknown as A
2027
+ }
2028
+ this.subscriberIndex += 1
2029
+ return elem
2030
+ }
2031
+
2032
+ pollUpTo(n: number): Array<A> {
2033
+ if (this.isEmpty() || n < 1) {
2034
+ return []
2035
+ }
2036
+ const a = this.self.value
2037
+ this.self.subscribers -= 1
2038
+ if (this.self.subscribers === 0) {
2039
+ this.self.value = AbsentValue as unknown as A
2040
+ }
2041
+ this.subscriberIndex += 1
2042
+ return [a]
2043
+ }
2044
+
2045
+ unsubscribe(): void {
2046
+ if (!this.unsubscribed) {
2047
+ this.unsubscribed = true
2048
+ this.self.subscriberCount -= 1
2049
+ if (this.subscriberIndex !== this.self.publisherIndex) {
2050
+ this.self.subscribers -= 1
2051
+ if (this.self.subscribers === 0) {
2052
+ this.self.value = AbsentValue as unknown as A
2053
+ }
2054
+ }
2055
+ }
2056
+ }
2057
+ }
2058
+
2059
+ interface Node<out A> {
2060
+ value: A | AbsentValue
2061
+ subscribers: number
2062
+ next: Node<A> | null
2063
+ }
2064
+
2065
+ class UnboundedPubSub<in out A> implements PubSub.Atomic<A> {
2066
+ publisherHead: Node<A> = {
2067
+ value: AbsentValue,
2068
+ subscribers: 0,
2069
+ next: null
2070
+ }
2071
+ publisherTail = this.publisherHead
2072
+ publisherIndex = 0
2073
+ subscribersIndex = 0
2074
+
2075
+ readonly capacity = Number.MAX_SAFE_INTEGER
2076
+ readonly replayBuffer: ReplayBuffer<A> | undefined
2077
+
2078
+ constructor(replayBuffer: ReplayBuffer<A> | undefined) {
2079
+ this.replayBuffer = replayBuffer
2080
+ }
2081
+
2082
+ replayWindow(): PubSub.ReplayWindow<A> {
2083
+ return this.replayBuffer ? new ReplayWindowImpl(this.replayBuffer) : emptyReplayWindow
2084
+ }
2085
+
2086
+ isEmpty(): boolean {
2087
+ return this.publisherHead === this.publisherTail
2088
+ }
2089
+
2090
+ isFull(): boolean {
2091
+ return false
2092
+ }
2093
+
2094
+ size(): number {
2095
+ return this.publisherIndex - this.subscribersIndex
2096
+ }
2097
+
2098
+ publish(value: A): boolean {
2099
+ const subscribers = this.publisherTail.subscribers
2100
+ if (subscribers !== 0) {
2101
+ this.publisherTail.next = {
2102
+ value,
2103
+ subscribers,
2104
+ next: null
2105
+ }
2106
+ this.publisherTail = this.publisherTail.next
2107
+ this.publisherIndex += 1
2108
+ }
2109
+ if (this.replayBuffer) {
2110
+ this.replayBuffer.offer(value)
2111
+ }
2112
+ return true
2113
+ }
2114
+
2115
+ publishAll(elements: Iterable<A>): Array<A> {
2116
+ if (this.publisherTail.subscribers !== 0) {
2117
+ for (const a of elements) {
2118
+ this.publish(a)
2119
+ }
2120
+ } else if (this.replayBuffer) {
2121
+ this.replayBuffer.offerAll(elements)
2122
+ }
2123
+ return []
2124
+ }
2125
+
2126
+ slide(): void {
2127
+ if (this.publisherHead !== this.publisherTail) {
2128
+ this.publisherHead = this.publisherHead.next!
2129
+ this.publisherHead.value = AbsentValue
2130
+ this.subscribersIndex += 1
2131
+ }
2132
+ if (this.replayBuffer) {
2133
+ this.replayBuffer.slide()
2134
+ }
2135
+ }
2136
+
2137
+ subscribe(): PubSub.BackingSubscription<A> {
2138
+ this.publisherTail.subscribers += 1
2139
+ return new UnboundedPubSubSubscription(
2140
+ this,
2141
+ this.publisherTail,
2142
+ this.publisherIndex,
2143
+ false
2144
+ )
2145
+ }
2146
+ }
2147
+
2148
+ class UnboundedPubSubSubscription<in out A> implements PubSub.BackingSubscription<A> {
2149
+ private self: UnboundedPubSub<A>
2150
+ private subscriberHead: Node<A>
2151
+ private subscriberIndex: number
2152
+ private unsubscribed: boolean
2153
+
2154
+ constructor(
2155
+ self: UnboundedPubSub<A>,
2156
+ subscriberHead: Node<A>,
2157
+ subscriberIndex: number,
2158
+ unsubscribed: boolean
2159
+ ) {
2160
+ this.self = self
2161
+ this.subscriberHead = subscriberHead
2162
+ this.subscriberIndex = subscriberIndex
2163
+ this.unsubscribed = unsubscribed
2164
+ }
2165
+
2166
+ isEmpty(): boolean {
2167
+ if (this.unsubscribed) {
2168
+ return true
2169
+ }
2170
+ let empty = true
2171
+ let loop = true
2172
+ while (loop) {
2173
+ if (this.subscriberHead === this.self.publisherTail) {
2174
+ loop = false
2175
+ } else {
2176
+ if (this.subscriberHead.next!.value !== AbsentValue) {
2177
+ empty = false
2178
+ loop = false
2179
+ } else {
2180
+ this.subscriberHead = this.subscriberHead.next!
2181
+ this.subscriberIndex += 1
2182
+ }
2183
+ }
2184
+ }
2185
+ return empty
2186
+ }
2187
+
2188
+ size() {
2189
+ if (this.unsubscribed) {
2190
+ return 0
2191
+ }
2192
+ return this.self.publisherIndex - Math.max(this.subscriberIndex, this.self.subscribersIndex)
2193
+ }
2194
+
2195
+ poll(): A | MutableList.Empty {
2196
+ if (this.unsubscribed) {
2197
+ return MutableList.Empty
2198
+ }
2199
+ let loop = true
2200
+ let polled: A | MutableList.Empty = MutableList.Empty
2201
+ while (loop) {
2202
+ if (this.subscriberHead === this.self.publisherTail) {
2203
+ loop = false
2204
+ } else {
2205
+ const elem = this.subscriberHead.next!.value
2206
+ if (elem !== AbsentValue) {
2207
+ polled = elem
2208
+ this.subscriberHead.subscribers -= 1
2209
+ if (this.subscriberHead.subscribers === 0) {
2210
+ this.self.publisherHead = this.self.publisherHead.next!
2211
+ this.self.publisherHead.value = AbsentValue
2212
+ this.self.subscribersIndex += 1
2213
+ }
2214
+ loop = false
2215
+ }
2216
+ this.subscriberHead = this.subscriberHead.next!
2217
+ this.subscriberIndex += 1
2218
+ }
2219
+ }
2220
+ return polled
2221
+ }
2222
+
2223
+ pollUpTo(n: number): Array<A> {
2224
+ const builder: Array<A> = []
2225
+ let i = 0
2226
+ while (i !== n) {
2227
+ const a = this.poll()
2228
+ if (a === MutableList.Empty) {
2229
+ i = n
2230
+ } else {
2231
+ builder.push(a)
2232
+ i += 1
2233
+ }
2234
+ }
2235
+ return builder
2236
+ }
2237
+
2238
+ unsubscribe(): void {
2239
+ if (!this.unsubscribed) {
2240
+ this.unsubscribed = true
2241
+ this.self.publisherTail.subscribers -= 1
2242
+ while (this.subscriberHead !== this.self.publisherTail) {
2243
+ if (this.subscriberHead.next!.value !== AbsentValue) {
2244
+ this.subscriberHead.subscribers -= 1
2245
+ if (this.subscriberHead.subscribers === 0) {
2246
+ this.self.publisherHead = this.self.publisherHead.next!
2247
+ this.self.publisherHead.value = AbsentValue
2248
+ this.self.subscribersIndex += 1
2249
+ }
2250
+ }
2251
+ this.subscriberHead = this.subscriberHead.next!
2252
+ }
2253
+ }
2254
+ }
2255
+ }
2256
+
2257
+ class SubscriptionImpl<in out A> implements Subscription<A> {
2258
+ readonly [SubscriptionTypeId] = {
2259
+ _A: identity
2260
+ }
2261
+
2262
+ readonly pubsub: PubSub.Atomic<A>
2263
+ readonly subscribers: PubSub.Subscribers<A>
2264
+ readonly subscription: PubSub.BackingSubscription<A>
2265
+ readonly pollers: MutableList.MutableList<Deferred.Deferred<A>>
2266
+ readonly shutdownHook: Latch.Latch
2267
+ readonly shutdownFlag: MutableRef.MutableRef<boolean>
2268
+ readonly strategy: PubSub.Strategy<A>
2269
+ readonly replayWindow: PubSub.ReplayWindow<A>
2270
+
2271
+ constructor(
2272
+ pubsub: PubSub.Atomic<A>,
2273
+ subscribers: PubSub.Subscribers<A>,
2274
+ subscription: PubSub.BackingSubscription<A>,
2275
+ pollers: MutableList.MutableList<Deferred.Deferred<A>>,
2276
+ shutdownHook: Latch.Latch,
2277
+ shutdownFlag: MutableRef.MutableRef<boolean>,
2278
+ strategy: PubSub.Strategy<A>,
2279
+ replayWindow: PubSub.ReplayWindow<A>
2280
+ ) {
2281
+ this.pubsub = pubsub
2282
+ this.subscribers = subscribers
2283
+ this.subscription = subscription
2284
+ this.pollers = pollers
2285
+ this.shutdownHook = shutdownHook
2286
+ this.shutdownFlag = shutdownFlag
2287
+ this.strategy = strategy
2288
+ this.replayWindow = replayWindow
2289
+ }
2290
+
2291
+ pipe() {
2292
+ return pipeArguments(this, arguments)
2293
+ }
2294
+ }
2295
+
2296
+ class PubSubImpl<in out A> implements PubSub<A> {
2297
+ readonly [TypeId] = {
2298
+ _A: identity
2299
+ }
2300
+
2301
+ readonly pubsub: PubSub.Atomic<A>
2302
+ readonly subscribers: PubSub.Subscribers<A>
2303
+ readonly scope: Scope.Closeable
2304
+ readonly shutdownHook: Latch.Latch
2305
+ readonly shutdownFlag: MutableRef.MutableRef<boolean>
2306
+ readonly strategy: PubSub.Strategy<A>
2307
+
2308
+ constructor(
2309
+ pubsub: PubSub.Atomic<A>,
2310
+ subscribers: PubSub.Subscribers<A>,
2311
+ scope: Scope.Closeable,
2312
+ shutdownHook: Latch.Latch,
2313
+ shutdownFlag: MutableRef.MutableRef<boolean>,
2314
+ strategy: PubSub.Strategy<A>
2315
+ ) {
2316
+ this.pubsub = pubsub
2317
+ this.subscribers = subscribers
2318
+ this.scope = scope
2319
+ this.shutdownHook = shutdownHook
2320
+ this.shutdownFlag = shutdownFlag
2321
+ this.strategy = strategy
2322
+ }
2323
+
2324
+ pipe() {
2325
+ return pipeArguments(this, arguments)
2326
+ }
2327
+ }
2328
+
2329
+ const makePubSubUnsafe = <A>(
2330
+ pubsub: PubSub.Atomic<A>,
2331
+ subscribers: PubSub.Subscribers<A>,
2332
+ scope: Scope.Closeable,
2333
+ shutdownHook: Latch.Latch,
2334
+ shutdownFlag: MutableRef.MutableRef<boolean>,
2335
+ strategy: PubSub.Strategy<A>
2336
+ ): PubSub<A> => new PubSubImpl(pubsub, subscribers, scope, shutdownHook, shutdownFlag, strategy)
2337
+
2338
+ const ensureCapacity = (capacity: number): void => {
2339
+ if (capacity <= 0) {
2340
+ throw new Error(`Cannot construct PubSub with capacity of ${capacity}`)
2341
+ }
2342
+ }
2343
+
2344
+ // -----------------------------------------------------------------------------
2345
+ // PubSub.Strategy
2346
+ // -----------------------------------------------------------------------------
2347
+
2348
+ /**
2349
+ * Represents the back-pressure strategy for bounded `PubSub` values.
2350
+ *
2351
+ * **When to use**
2352
+ *
2353
+ * Use to preserve every message for current subscribers when a bounded custom
2354
+ * `PubSub` should make publishers wait for capacity instead of dropping or
2355
+ * evicting messages.
2356
+ *
2357
+ * **Details**
2358
+ *
2359
+ * Publishers wait when the `PubSub` is at capacity, so all current subscribers
2360
+ * can receive every published message.
2361
+ *
2362
+ * **Gotchas**
2363
+ *
2364
+ * A slow subscriber can slow down publishers and other subscribers.
2365
+ *
2366
+ * @see {@link bounded} for creating bounded PubSubs with back pressure by default
2367
+ * @see {@link DroppingStrategy} for dropping new messages when capacity is full
2368
+ * @see {@link SlidingStrategy} for evicting old messages when capacity is full
2369
+ *
2370
+ * @category models
2371
+ * @since 4.0.0
2372
+ */
2373
+ export class BackPressureStrategy<in out A> implements PubSub.Strategy<A> {
2374
+ publishers: MutableList.MutableList<
2375
+ readonly [A, Deferred.Deferred<boolean>, boolean]
2376
+ > = MutableList.make()
2377
+
2378
+ get shutdown(): Effect.Effect<void> {
2379
+ return Effect.withFiber((fiber) =>
2380
+ Effect.forEach(
2381
+ MutableList.takeAll(this.publishers),
2382
+ ([_, deferred, last]) => last ? Deferred.interruptWith(deferred, fiber.id) : Effect.void,
2383
+ { concurrency: "unbounded", discard: true }
2384
+ )
2385
+ )
2386
+ }
2387
+
2388
+ handleSurplus(
2389
+ pubsub: PubSub.Atomic<A>,
2390
+ subscribers: PubSub.Subscribers<A>,
2391
+ elements: Iterable<A>,
2392
+ isShutdown: MutableRef.MutableRef<boolean>
2393
+ ): Effect.Effect<boolean> {
2394
+ return Effect.suspend(() => {
2395
+ const deferred = Deferred.makeUnsafe<boolean>()
2396
+ this.offerUnsafe(elements, deferred)
2397
+ this.onPubSubEmptySpaceUnsafe(pubsub, subscribers)
2398
+ this.completeSubscribersUnsafe(pubsub, subscribers)
2399
+ return (MutableRef.get(isShutdown) ? Effect.interrupt : Deferred.await(deferred)).pipe(
2400
+ Effect.onInterrupt(() => {
2401
+ this.removeUnsafe(deferred)
2402
+ return Effect.void
2403
+ })
2404
+ )
2405
+ })
2406
+ }
2407
+
2408
+ onPubSubEmptySpaceUnsafe(
2409
+ pubsub: PubSub.Atomic<A>,
2410
+ subscribers: PubSub.Subscribers<A>
2411
+ ): void {
2412
+ let keepPolling = true
2413
+ while (keepPolling && !pubsub.isFull()) {
2414
+ const publisher = MutableList.take(this.publishers)
2415
+ if (publisher === MutableList.Empty) {
2416
+ keepPolling = false
2417
+ } else {
2418
+ const [value, deferred] = publisher
2419
+ const published = pubsub.publish(value)
2420
+ if (published && publisher[2]) {
2421
+ Deferred.doneUnsafe(deferred, Exit.succeed(true))
2422
+ } else if (!published) {
2423
+ MutableList.prepend(this.publishers, publisher)
2424
+ }
2425
+ this.completeSubscribersUnsafe(pubsub, subscribers)
2426
+ }
2427
+ }
2428
+ }
2429
+
2430
+ completePollersUnsafe(
2431
+ pubsub: PubSub.Atomic<A>,
2432
+ subscribers: PubSub.Subscribers<A>,
2433
+ subscription: PubSub.BackingSubscription<A>,
2434
+ pollers: MutableList.MutableList<Deferred.Deferred<A>>
2435
+ ): void {
2436
+ return strategyCompletePollersUnsafe(this, pubsub, subscribers, subscription, pollers)
2437
+ }
2438
+
2439
+ completeSubscribersUnsafe(pubsub: PubSub.Atomic<A>, subscribers: PubSub.Subscribers<A>): void {
2440
+ return strategyCompleteSubscribersUnsafe(this, pubsub, subscribers)
2441
+ }
2442
+
2443
+ private offerUnsafe(elements: Iterable<A>, deferred: Deferred.Deferred<boolean>): void {
2444
+ const iterator = elements[Symbol.iterator]()
2445
+ let next: IteratorResult<A> = iterator.next()
2446
+ if (!next.done) {
2447
+ // oxlint-disable-next-line no-constant-condition
2448
+ while (1) {
2449
+ const value = next.value
2450
+ next = iterator.next()
2451
+ if (next.done) {
2452
+ MutableList.append(this.publishers, [value, deferred, true])
2453
+ break
2454
+ }
2455
+ MutableList.append(this.publishers, [value, deferred, false])
2456
+ }
2457
+ }
2458
+ }
2459
+
2460
+ removeUnsafe(deferred: Deferred.Deferred<boolean>): void {
2461
+ MutableList.filter(this.publishers, ([_, d]) => d !== deferred)
2462
+ }
2463
+ }
2464
+
2465
+ /**
2466
+ * Represents the dropping strategy for bounded `PubSub` values.
2467
+ *
2468
+ * **When to use**
2469
+ *
2470
+ * Use to keep publishers fast by dropping new messages when the `PubSub` is at
2471
+ * capacity.
2472
+ *
2473
+ * **Details**
2474
+ *
2475
+ * A publish that arrives while the `PubSub` is full is dropped instead of
2476
+ * waiting for capacity.
2477
+ *
2478
+ * **Gotchas**
2479
+ *
2480
+ * Subscribers may miss messages published while they are subscribed.
2481
+ *
2482
+ * **Example** (Applying a dropping strategy)
2483
+ *
2484
+ * ```ts
2485
+ * import { Effect, PubSub } from "effect"
2486
+ *
2487
+ * const program = Effect.gen(function*() {
2488
+ * // Create PubSub with dropping strategy
2489
+ * const pubsub = yield* PubSub.dropping<string>(2)
2490
+ *
2491
+ * // Or explicitly create with dropping strategy
2492
+ * const customPubsub = yield* PubSub.make<string>({
2493
+ * atomicPubSub: () => PubSub.makeAtomicBounded(2),
2494
+ * strategy: () => new PubSub.DroppingStrategy()
2495
+ * })
2496
+ *
2497
+ * yield* Effect.scoped(Effect.gen(function*() {
2498
+ * const subscription = yield* PubSub.subscribe(pubsub)
2499
+ *
2500
+ * // Fill the PubSub
2501
+ * const pub1 = yield* PubSub.publish(pubsub, "msg1") // true
2502
+ * const pub2 = yield* PubSub.publish(pubsub, "msg2") // true
2503
+ * const pub3 = yield* PubSub.publish(pubsub, "msg3") // false (dropped)
2504
+ *
2505
+ * console.log("Publication results:", [pub1, pub2, pub3]) // [true, true, false]
2506
+ *
2507
+ * // Subscribers will only see the first two messages
2508
+ * const messages = yield* PubSub.takeAll(subscription)
2509
+ * console.log("Received messages:", messages) // ["msg1", "msg2"]
2510
+ * }))
2511
+ * })
2512
+ * ```
2513
+ *
2514
+ * @category models
2515
+ * @since 4.0.0
2516
+ */
2517
+ export class DroppingStrategy<in out A> implements PubSub.Strategy<A> {
2518
+ get shutdown(): Effect.Effect<void> {
2519
+ return Effect.void
2520
+ }
2521
+
2522
+ handleSurplus(
2523
+ _pubsub: PubSub.Atomic<A>,
2524
+ _subscribers: PubSub.Subscribers<A>,
2525
+ _elements: Iterable<A>,
2526
+ _isShutdown: MutableRef.MutableRef<boolean>
2527
+ ): Effect.Effect<boolean> {
2528
+ return Effect.succeed(false)
2529
+ }
2530
+
2531
+ onPubSubEmptySpaceUnsafe(
2532
+ _pubsub: PubSub.Atomic<A>,
2533
+ _subscribers: PubSub.Subscribers<A>
2534
+ ): void {
2535
+ //
2536
+ }
2537
+
2538
+ completePollersUnsafe(
2539
+ pubsub: PubSub.Atomic<A>,
2540
+ subscribers: PubSub.Subscribers<A>,
2541
+ subscription: PubSub.BackingSubscription<A>,
2542
+ pollers: MutableList.MutableList<Deferred.Deferred<A>>
2543
+ ): void {
2544
+ return strategyCompletePollersUnsafe(this, pubsub, subscribers, subscription, pollers)
2545
+ }
2546
+
2547
+ completeSubscribersUnsafe(pubsub: PubSub.Atomic<A>, subscribers: PubSub.Subscribers<A>): void {
2548
+ return strategyCompleteSubscribersUnsafe(this, pubsub, subscribers)
2549
+ }
2550
+ }
2551
+
2552
+ /**
2553
+ * Represents the sliding strategy for bounded `PubSub` values.
2554
+ *
2555
+ * **When to use**
2556
+ *
2557
+ * Use to keep the most recent messages when the `PubSub` is at capacity.
2558
+ *
2559
+ * **Details**
2560
+ *
2561
+ * New messages are accepted by evicting older messages from the bounded
2562
+ * `PubSub`.
2563
+ *
2564
+ * **Gotchas**
2565
+ *
2566
+ * Slow subscribers may miss older messages that are evicted before they are
2567
+ * consumed.
2568
+ *
2569
+ * **Example** (Applying a sliding strategy)
2570
+ *
2571
+ * ```ts
2572
+ * import { Effect, PubSub } from "effect"
2573
+ *
2574
+ * const program = Effect.gen(function*() {
2575
+ * // Create PubSub with sliding strategy
2576
+ * const pubsub = yield* PubSub.sliding<string>(2)
2577
+ *
2578
+ * // Or explicitly create with sliding strategy
2579
+ * const customPubsub = yield* PubSub.make<string>({
2580
+ * atomicPubSub: () => PubSub.makeAtomicBounded(2),
2581
+ * strategy: () => new PubSub.SlidingStrategy()
2582
+ * })
2583
+ *
2584
+ * yield* Effect.scoped(Effect.gen(function*() {
2585
+ * const subscription = yield* PubSub.subscribe(pubsub)
2586
+ *
2587
+ * // Publish messages that exceed capacity
2588
+ * yield* PubSub.publish(pubsub, "msg1") // stored
2589
+ * yield* PubSub.publish(pubsub, "msg2") // stored
2590
+ * yield* PubSub.publish(pubsub, "msg3") // "msg1" evicted, "msg3" stored
2591
+ * yield* PubSub.publish(pubsub, "msg4") // "msg2" evicted, "msg4" stored
2592
+ *
2593
+ * // Subscribers will see the most recent messages
2594
+ * const messages = yield* PubSub.takeAll(subscription)
2595
+ * console.log("Recent messages:", messages) // ["msg3", "msg4"]
2596
+ * }))
2597
+ * })
2598
+ * ```
2599
+ *
2600
+ * @category models
2601
+ * @since 4.0.0
2602
+ */
2603
+ export class SlidingStrategy<in out A> implements PubSub.Strategy<A> {
2604
+ get shutdown(): Effect.Effect<void> {
2605
+ return Effect.void
2606
+ }
2607
+
2608
+ handleSurplus(
2609
+ pubsub: PubSub.Atomic<A>,
2610
+ subscribers: PubSub.Subscribers<A>,
2611
+ elements: Iterable<A>,
2612
+ _isShutdown: MutableRef.MutableRef<boolean>
2613
+ ): Effect.Effect<boolean> {
2614
+ return Effect.sync(() => {
2615
+ this.slidingPublishUnsafe(pubsub, elements)
2616
+ this.completeSubscribersUnsafe(pubsub, subscribers)
2617
+ return true
2618
+ })
2619
+ }
2620
+
2621
+ onPubSubEmptySpaceUnsafe(
2622
+ _pubsub: PubSub.Atomic<A>,
2623
+ _subscribers: PubSub.Subscribers<A>
2624
+ ): void {
2625
+ //
2626
+ }
2627
+
2628
+ completePollersUnsafe(
2629
+ pubsub: PubSub.Atomic<A>,
2630
+ subscribers: PubSub.Subscribers<A>,
2631
+ subscription: PubSub.BackingSubscription<A>,
2632
+ pollers: MutableList.MutableList<Deferred.Deferred<A>>
2633
+ ): void {
2634
+ return strategyCompletePollersUnsafe(this, pubsub, subscribers, subscription, pollers)
2635
+ }
2636
+
2637
+ completeSubscribersUnsafe(pubsub: PubSub.Atomic<A>, subscribers: PubSub.Subscribers<A>): void {
2638
+ return strategyCompleteSubscribersUnsafe(this, pubsub, subscribers)
2639
+ }
2640
+
2641
+ slidingPublishUnsafe(pubsub: PubSub.Atomic<A>, elements: Iterable<A>): void {
2642
+ const it = elements[Symbol.iterator]()
2643
+ let next = it.next()
2644
+ if (!next.done && pubsub.capacity > 0) {
2645
+ let a = next.value
2646
+ let loop = true
2647
+ while (loop) {
2648
+ pubsub.slide()
2649
+ const pub = pubsub.publish(a)
2650
+ if (pub && (next = it.next()) && !next.done) {
2651
+ a = next.value
2652
+ } else if (pub) {
2653
+ loop = false
2654
+ }
2655
+ }
2656
+ }
2657
+ }
2658
+ }
2659
+
2660
+ const strategyCompletePollersUnsafe = <A>(
2661
+ strategy: PubSub.Strategy<A>,
2662
+ pubsub: PubSub.Atomic<A>,
2663
+ subscribers: PubSub.Subscribers<A>,
2664
+ subscription: PubSub.BackingSubscription<A>,
2665
+ pollers: MutableList.MutableList<Deferred.Deferred<A>>
2666
+ ): void => {
2667
+ let keepPolling = true
2668
+ while (keepPolling && !subscription.isEmpty()) {
2669
+ const poller = MutableList.take(pollers)
2670
+ if (poller === MutableList.Empty) {
2671
+ removeSubscribers(subscribers, subscription, pollers)
2672
+ if (pollers.length === 0) {
2673
+ keepPolling = false
2674
+ } else {
2675
+ addSubscribers(subscribers, subscription, pollers)
2676
+ }
2677
+ } else {
2678
+ const pollResult = subscription.poll()
2679
+ if (pollResult === MutableList.Empty) {
2680
+ MutableList.prepend(pollers, poller)
2681
+ } else {
2682
+ Deferred.doneUnsafe(poller, Exit.succeed(pollResult))
2683
+ strategy.onPubSubEmptySpaceUnsafe(pubsub, subscribers)
2684
+ }
2685
+ }
2686
+ }
2687
+ }
2688
+
2689
+ const strategyCompleteSubscribersUnsafe = <A>(
2690
+ strategy: PubSub.Strategy<A>,
2691
+ pubsub: PubSub.Atomic<A>,
2692
+ subscribers: PubSub.Subscribers<A>
2693
+ ): void => {
2694
+ for (
2695
+ const [subscription, pollersSet] of subscribers
2696
+ ) {
2697
+ for (const pollers of pollersSet) {
2698
+ strategy.completePollersUnsafe(pubsub, subscribers, subscription, pollers)
2699
+ }
2700
+ }
2701
+ }
2702
+
2703
+ interface ReplayNode<A> {
2704
+ value: A | AbsentValue
2705
+ next: ReplayNode<A> | null
2706
+ }
2707
+
2708
+ class ReplayBuffer<A> {
2709
+ readonly capacity: number
2710
+ head: ReplayNode<A> = { value: AbsentValue, next: null }
2711
+ tail: ReplayNode<A> = this.head
2712
+ size = 0
2713
+ index = 0
2714
+
2715
+ constructor(capacity: number) {
2716
+ this.capacity = capacity
2717
+ }
2718
+
2719
+ slide() {
2720
+ this.index++
2721
+ }
2722
+ offer(a: A): void {
2723
+ this.tail.value = a
2724
+ this.tail.next = {
2725
+ value: AbsentValue,
2726
+ next: null
2727
+ }
2728
+ this.tail = this.tail.next
2729
+ if (this.size === this.capacity) {
2730
+ this.head = this.head.next!
2731
+ } else {
2732
+ this.size += 1
2733
+ }
2734
+ }
2735
+ offerAll(as: Iterable<A>): void {
2736
+ for (const a of as) {
2737
+ this.offer(a)
2738
+ }
2739
+ }
2740
+ }
2741
+
2742
+ class ReplayWindowImpl<A> implements PubSub.ReplayWindow<A> {
2743
+ head: ReplayNode<A>
2744
+ index: number
2745
+ remaining: number
2746
+ readonly buffer: ReplayBuffer<A>
2747
+
2748
+ constructor(buffer: ReplayBuffer<A>) {
2749
+ this.buffer = buffer
2750
+ this.index = buffer.index
2751
+ this.remaining = buffer.size
2752
+ this.head = buffer.head
2753
+ }
2754
+ fastForward() {
2755
+ while (this.index < this.buffer.index) {
2756
+ this.head = this.head.next!
2757
+ this.index++
2758
+ }
2759
+ }
2760
+ take(): A | undefined {
2761
+ if (this.remaining === 0) {
2762
+ return undefined
2763
+ } else if (this.index < this.buffer.index) {
2764
+ this.fastForward()
2765
+ }
2766
+ this.remaining--
2767
+ const value = this.head.value
2768
+ this.head = this.head.next!
2769
+ return value as A
2770
+ }
2771
+ takeN(n: number): Array<A> {
2772
+ if (this.remaining === 0) {
2773
+ return []
2774
+ } else if (this.index < this.buffer.index) {
2775
+ this.fastForward()
2776
+ }
2777
+ const len = Math.min(n, this.remaining)
2778
+ const items = new Array(len)
2779
+ for (let i = 0; i < len; i++) {
2780
+ const value = this.head.value as A
2781
+ this.head = this.head.next!
2782
+ items[i] = value
2783
+ }
2784
+ this.remaining -= len
2785
+ return items
2786
+ }
2787
+ takeAll(): Array<A> {
2788
+ return this.takeN(this.remaining)
2789
+ }
2790
+ }
2791
+
2792
+ const emptyReplayWindow: PubSub.ReplayWindow<never> = {
2793
+ remaining: 0,
2794
+ take: () => undefined,
2795
+ takeN: () => [],
2796
+ takeAll: () => []
2797
+ }