@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,3149 @@
1
+ import {
2
+ Cause,
3
+ DateTime,
4
+ Duration,
5
+ Effect,
6
+ HashMap,
7
+ Option,
8
+ Redacted,
9
+ Result,
10
+ Schema,
11
+ SchemaGetter,
12
+ SchemaIssue,
13
+ SchemaParser,
14
+ SchemaTransformation
15
+ } from "effect"
16
+ import { TestSchema } from "effect/testing"
17
+ import { describe, it } from "vitest"
18
+ import { assertTrue, deepStrictEqual, strictEqual, throws } from "../utils/assert.ts"
19
+
20
+ const isDeno = "Deno" in globalThis
21
+
22
+ const FiniteFromDate = Schema.Date.pipe(Schema.decodeTo(
23
+ Schema.Number,
24
+ SchemaTransformation.transform({
25
+ decode: (date) => date.getTime(),
26
+ encode: (n) => new Date(n)
27
+ })
28
+ ))
29
+
30
+ describe("Serializers", () => {
31
+ describe("toCodecJson", () => {
32
+ it("should reorder the types in the Union based on the encoded side", async () => {
33
+ const schema = Schema.Union([
34
+ Schema.String,
35
+ Schema.String.pipe(Schema.encodeTo(Schema.BigInt, {
36
+ decode: SchemaGetter.transform((n: bigint) => String(n) + "a"),
37
+ encode: SchemaGetter.transform(() => 0n)
38
+ }))
39
+ ])
40
+ const serializer = Schema.toCodecJson(schema)
41
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(serializer))
42
+
43
+ const decoding = asserts.decoding()
44
+ await decoding.succeed("1", "1a")
45
+ })
46
+
47
+ describe("schemas without encoding", () => {
48
+ describe("Unsupported schemas", () => {
49
+ it("Struct with Symbol property name", () => {
50
+ const a = Symbol.for("a")
51
+ const schema = Schema.Struct({
52
+ [a]: Schema.String
53
+ })
54
+ throws(
55
+ () => Schema.toCodecJson(schema),
56
+ "Objects property names must be strings"
57
+ )
58
+ })
59
+ })
60
+
61
+ describe("Declaration", () => {
62
+ it("instanceOf without annotations", async () => {
63
+ const schema = Schema.instanceOf(URL)
64
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
65
+
66
+ const encoding = asserts.encoding()
67
+ await encoding.succeed(new URL("https://effect.website"), null)
68
+
69
+ const decoding = asserts.decoding()
70
+ await decoding.fail("https://effect.website/", `Expected null, got "https://effect.website/"`)
71
+ })
72
+
73
+ describe("instanceOf with annotation", () => {
74
+ it("arg: message: string", async () => {
75
+ class MyError extends Error {
76
+ constructor(message?: string) {
77
+ super(message)
78
+ this.name = "MyError"
79
+ Object.setPrototypeOf(this, MyError.prototype)
80
+ }
81
+ }
82
+
83
+ const schema = Schema.instanceOf(
84
+ MyError,
85
+ {
86
+ title: "MyError",
87
+ toCodec: () =>
88
+ Schema.link<MyError>()(
89
+ Schema.String,
90
+ SchemaTransformation.transform({
91
+ decode: (message) => new MyError(message),
92
+ encode: (e) => e.message
93
+ })
94
+ )
95
+ }
96
+ )
97
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
98
+
99
+ const encoding = asserts.encoding()
100
+ await encoding.succeed(new MyError("a"), "a")
101
+
102
+ const decoding = asserts.decoding()
103
+ await decoding.succeed("a", new MyError("a"))
104
+ })
105
+
106
+ it("arg: struct", async () => {
107
+ class MyError extends Error {
108
+ static Props = Schema.Struct({
109
+ message: Schema.String,
110
+ cause: Schema.String
111
+ })
112
+
113
+ constructor(props: typeof MyError.Props["Type"]) {
114
+ super(props.message, { cause: props.cause })
115
+ this.name = "MyError"
116
+ Object.setPrototypeOf(this, MyError.prototype)
117
+ }
118
+
119
+ static schema = Schema.instanceOf(
120
+ MyError,
121
+ {
122
+ title: "MyError",
123
+ toCodec: () =>
124
+ Schema.link<MyError>()(
125
+ MyError.Props,
126
+ SchemaTransformation.transform({
127
+ decode: (props) => new MyError(props),
128
+ encode: (e) => ({
129
+ message: e.message,
130
+ cause: typeof e.cause === "string" ? e.cause : String(e.cause)
131
+ })
132
+ })
133
+ )
134
+ }
135
+ )
136
+ }
137
+
138
+ const schema = MyError.schema
139
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
140
+
141
+ const encoding = asserts.encoding()
142
+ await encoding.succeed(new MyError({ message: "a", cause: "b" }), {
143
+ message: "a",
144
+ cause: "b"
145
+ })
146
+
147
+ const decoding = asserts.decoding()
148
+ await decoding.succeed({ message: "a", cause: "b" }, new MyError({ message: "a", cause: "b" }))
149
+ })
150
+ })
151
+ })
152
+
153
+ describe("should return the same reference if nothing changed", () => {
154
+ it("Struct", async () => {
155
+ const schema = Schema.Struct({
156
+ a: Schema.String,
157
+ b: Schema.Boolean
158
+ })
159
+ const serializer = Schema.toCodecJson(schema)
160
+ strictEqual(serializer.ast, schema.ast)
161
+ })
162
+
163
+ it("Record", async () => {
164
+ const schema = Schema.Record(Schema.String, Schema.Boolean)
165
+ const serializer = Schema.toCodecJson(schema)
166
+ strictEqual(serializer.ast, schema.ast)
167
+ })
168
+
169
+ it("Tuple", async () => {
170
+ const schema = Schema.Tuple([Schema.String, Schema.Boolean])
171
+ const serializer = Schema.toCodecJson(schema)
172
+ strictEqual(serializer.ast, schema.ast)
173
+ })
174
+
175
+ it("Array", async () => {
176
+ const schema = Schema.Array(Schema.String)
177
+ const serializer = Schema.toCodecJson(schema)
178
+ strictEqual(serializer.ast, schema.ast)
179
+ })
180
+
181
+ it("Union", async () => {
182
+ const schema = Schema.Union([Schema.String, Schema.Boolean])
183
+ const serializer = Schema.toCodecJson(schema)
184
+ strictEqual(serializer.ast, schema.ast)
185
+ })
186
+ })
187
+
188
+ it("should apply the construction process to the provided link in the serializer annotation", async () => {
189
+ const schema = Schema.Struct({
190
+ a: Schema.Date.annotate({
191
+ toCodec: () =>
192
+ Schema.link<Date>()(
193
+ Schema.Date,
194
+ SchemaTransformation.passthrough()
195
+ )
196
+ }),
197
+ b: Schema.Number
198
+ })
199
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
200
+
201
+ const encoding = asserts.encoding()
202
+ await encoding.succeed({ a: new Date("2021-01-01"), b: 1 }, {
203
+ a: "2021-01-01T00:00:00.000Z",
204
+ b: 1
205
+ })
206
+ })
207
+
208
+ it("Never", async () => {
209
+ const schema = Schema.Never
210
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
211
+
212
+ const encoding = asserts.encoding()
213
+ await encoding.fail({}, "Expected never, got {}")
214
+ })
215
+
216
+ it("Any", async () => {
217
+ const schema = Schema.Any
218
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
219
+
220
+ const encoding = asserts.encoding()
221
+ await encoding.succeed(() => {})
222
+
223
+ const decoding = asserts.decoding()
224
+ await decoding.succeed(() => {})
225
+ })
226
+
227
+ it("Unknown", async () => {
228
+ const schema = Schema.Unknown
229
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
230
+
231
+ const encoding = asserts.encoding()
232
+ await encoding.succeed("a")
233
+ await encoding.succeed(1)
234
+ await encoding.succeed(true)
235
+ await encoding.succeed(null)
236
+ await encoding.succeed({ a: "a", b: 1, c: true })
237
+ await encoding.succeed(["a", 1, true])
238
+ await encoding.fail({ a: 1n }, `Expected JSON value, got {"a":1n}`)
239
+
240
+ const decoding = asserts.decoding()
241
+ await decoding.succeed("a")
242
+ await decoding.succeed(1)
243
+ await decoding.succeed(true)
244
+ await decoding.succeed(null)
245
+ await decoding.succeed({ a: "a", b: 1, c: true })
246
+ await decoding.succeed(["a", 1, true])
247
+ await decoding.fail({ a: 1n }, `Expected JSON value, got {"a":1n}`)
248
+ })
249
+
250
+ it("ObjectKeyword", async () => {
251
+ const schema = Schema.ObjectKeyword
252
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
253
+
254
+ const encoding = asserts.encoding()
255
+ await encoding.succeed({ a: "a", b: 1, c: true })
256
+ await encoding.succeed(["a", 1, true])
257
+ await encoding.fail("a", `Expected object | array | function, got "a"`)
258
+ await encoding.fail({ a: 1n }, `Expected JSON value, got {"a":1n}`)
259
+
260
+ const decoding = asserts.decoding()
261
+ await decoding.succeed({ a: "a", b: 1, c: true })
262
+ await decoding.succeed(["a", 1, true])
263
+ await decoding.fail("a", `Expected object | array | function, got "a"`)
264
+ await decoding.fail({ a: 1n }, `Expected JSON value, got {"a":1n}`)
265
+ })
266
+
267
+ it("Undefined", async () => {
268
+ const schema = Schema.Undefined
269
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
270
+
271
+ const encoding = asserts.encoding()
272
+ await encoding.succeed(undefined, null)
273
+ })
274
+
275
+ it("Void", async () => {
276
+ const schema = Schema.Void
277
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
278
+
279
+ const encoding = asserts.encoding()
280
+ await encoding.succeed(undefined, null)
281
+ })
282
+
283
+ it("Null", async () => {
284
+ const schema = Schema.Null
285
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
286
+
287
+ const encoding = asserts.encoding()
288
+ await encoding.succeed(null)
289
+ })
290
+
291
+ it("String", async () => {
292
+ const schema = Schema.String
293
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
294
+
295
+ const encoding = asserts.encoding()
296
+ await encoding.succeed("a")
297
+
298
+ const decoding = asserts.decoding()
299
+ await decoding.succeed("a", "a")
300
+ })
301
+
302
+ describe("Number", () => {
303
+ it("Number", async () => {
304
+ const schema = Schema.Number
305
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
306
+
307
+ const encoding = asserts.encoding()
308
+ await encoding.succeed(1)
309
+ await encoding.succeed(-1)
310
+ await encoding.succeed(1.2)
311
+ await encoding.succeed(Infinity, "Infinity")
312
+ await encoding.succeed(-Infinity, "-Infinity")
313
+ await encoding.succeed(NaN, "NaN")
314
+
315
+ const decoding = asserts.decoding()
316
+ await decoding.succeed(1)
317
+ await decoding.succeed(-1)
318
+ await decoding.succeed(1.2)
319
+ await decoding.succeed("Infinity", Infinity)
320
+ await decoding.succeed("-Infinity", -Infinity)
321
+ await decoding.succeed("NaN", NaN)
322
+ await decoding.succeed(Infinity)
323
+ await decoding.succeed(-Infinity)
324
+ await decoding.succeed(NaN)
325
+ await decoding.fail(null, `Expected number | "Infinity" | "-Infinity" | "NaN", got null`)
326
+ await decoding.fail("a", `Expected "Infinity" | "-Infinity" | "NaN", got "a"`)
327
+ })
328
+
329
+ describe("checks", () => {
330
+ it("Finite", async () => {
331
+ const schema = Schema.Finite
332
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
333
+
334
+ const encoding = asserts.encoding()
335
+ await encoding.succeed(1)
336
+ await encoding.succeed(-1)
337
+ await encoding.succeed(1.2)
338
+ await encoding.fail(Infinity, "Expected a finite number, got Infinity")
339
+ await encoding.fail(-Infinity, "Expected a finite number, got -Infinity")
340
+ await encoding.fail(NaN, "Expected a finite number, got NaN")
341
+
342
+ const decoding = asserts.decoding()
343
+ await decoding.succeed(1)
344
+ await decoding.succeed(-1)
345
+ await decoding.succeed(1.2)
346
+ await decoding.fail("Infinity", `Expected number, got "Infinity"`)
347
+ await decoding.fail("-Infinity", `Expected number, got "-Infinity"`)
348
+ await decoding.fail("NaN", `Expected number, got "NaN"`)
349
+ await decoding.fail(Infinity, `Expected a finite number, got Infinity`)
350
+ await decoding.fail(-Infinity, `Expected a finite number, got -Infinity`)
351
+ await decoding.fail(NaN, `Expected a finite number, got NaN`)
352
+ await decoding.fail(null, `Expected number, got null`)
353
+ await decoding.fail("a", `Expected number, got "a"`)
354
+ })
355
+
356
+ it("Int", async () => {
357
+ const schema = Schema.Int
358
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
359
+
360
+ const encoding = asserts.encoding()
361
+ await encoding.succeed(1)
362
+ await encoding.succeed(-1)
363
+ await encoding.fail(1.2, `Expected an integer, got 1.2`)
364
+ await encoding.fail(Infinity, "Expected an integer, got Infinity")
365
+ await encoding.fail(-Infinity, "Expected an integer, got -Infinity")
366
+ await encoding.fail(NaN, "Expected an integer, got NaN")
367
+
368
+ const decoding = asserts.decoding()
369
+ await decoding.succeed(1)
370
+ await decoding.succeed(-1)
371
+ await decoding.fail(1.2, `Expected an integer, got 1.2`)
372
+ await decoding.fail("Infinity", `Expected number, got "Infinity"`)
373
+ await decoding.fail("-Infinity", `Expected number, got "-Infinity"`)
374
+ await decoding.fail("NaN", `Expected number, got "NaN"`)
375
+ await decoding.fail(Infinity, `Expected an integer, got Infinity`)
376
+ await decoding.fail(-Infinity, `Expected an integer, got -Infinity`)
377
+ await decoding.fail(NaN, `Expected an integer, got NaN`)
378
+ await decoding.fail(null, `Expected number, got null`)
379
+ await decoding.fail("a", `Expected number, got "a"`)
380
+ })
381
+
382
+ it("isGreaterThanOrEqualTo", async () => {
383
+ const schema = Schema.Number.check(Schema.isGreaterThanOrEqualTo(1))
384
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
385
+
386
+ const encoding = asserts.encoding()
387
+ await encoding.succeed(1)
388
+ await encoding.fail(-1, `Expected a value greater than or equal to 1, got -1`)
389
+ await encoding.succeed(1.2)
390
+ await encoding.succeed(Infinity, "Infinity")
391
+ await encoding.fail(-Infinity, "Expected a value greater than or equal to 1, got -Infinity")
392
+ await encoding.fail(NaN, "Expected a value greater than or equal to 1, got NaN")
393
+
394
+ const decoding = asserts.decoding()
395
+ await decoding.succeed(1)
396
+ await encoding.fail(-1, `Expected a value greater than or equal to 1, got -1`)
397
+ await decoding.succeed(1.2)
398
+ await decoding.succeed("Infinity", Infinity)
399
+ await decoding.fail("-Infinity", `Expected a value greater than or equal to 1, got -Infinity`)
400
+ await decoding.fail("NaN", `Expected a value greater than or equal to 1, got NaN`)
401
+ await decoding.succeed(Infinity)
402
+ await decoding.fail(-Infinity, `Expected a value greater than or equal to 1, got -Infinity`)
403
+ await decoding.fail(NaN, `Expected a value greater than or equal to 1, got NaN`)
404
+ await decoding.fail(null, `Expected number | "Infinity" | "-Infinity" | "NaN", got null`)
405
+ await decoding.fail("a", `Expected "Infinity" | "-Infinity" | "NaN", got "a"`)
406
+ })
407
+ })
408
+ })
409
+
410
+ it("Boolean", async () => {
411
+ const schema = Schema.Boolean
412
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
413
+
414
+ const encoding = asserts.encoding()
415
+ await encoding.succeed(true)
416
+
417
+ const decoding = asserts.decoding()
418
+ await decoding.succeed(true, true)
419
+ })
420
+
421
+ it("Symbol", async () => {
422
+ const schema = Schema.Symbol
423
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
424
+
425
+ const encoding = asserts.encoding()
426
+ await encoding.succeed(Symbol.for("a"), "Symbol(a)")
427
+ await encoding.fail(
428
+ Symbol("a"),
429
+ "cannot serialize to string, Symbol is not registered"
430
+ )
431
+ await encoding.fail(
432
+ Symbol(),
433
+ "cannot serialize to string, Symbol is not registered"
434
+ )
435
+
436
+ const decoding = asserts.decoding()
437
+ await decoding.succeed("Symbol(a)", Symbol.for("a"))
438
+ })
439
+
440
+ it("UniqueSymbol", async () => {
441
+ const schema = Schema.UniqueSymbol(Symbol.for("a"))
442
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
443
+
444
+ const encoding = asserts.encoding()
445
+ await encoding.succeed(Symbol.for("a"), "Symbol(a)")
446
+
447
+ const decoding = asserts.decoding()
448
+ await decoding.succeed("Symbol(a)", Symbol.for("a"))
449
+ })
450
+
451
+ it("BigInt", async () => {
452
+ const schema = Schema.BigInt
453
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
454
+
455
+ const encoding = asserts.encoding()
456
+ await encoding.succeed(1n, "1")
457
+
458
+ const decoding = asserts.decoding()
459
+ await decoding.succeed("1", 1n)
460
+ })
461
+
462
+ it("PropertyKey", async () => {
463
+ const schema = Schema.PropertyKey
464
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
465
+
466
+ const encoding = asserts.encoding()
467
+ await encoding.succeed("a")
468
+ await encoding.succeed(1)
469
+ await encoding.succeed(Symbol.for("a"), "Symbol(a)")
470
+
471
+ const decoding = asserts.decoding()
472
+ await decoding.succeed("a")
473
+ await decoding.succeed(1)
474
+ await decoding.succeed("Symbol(a)", Symbol.for("a"))
475
+ })
476
+
477
+ describe("Literal", () => {
478
+ it("string", async () => {
479
+ const schema = Schema.Literal("a")
480
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
481
+
482
+ const encoding = asserts.encoding()
483
+ await encoding.succeed("a")
484
+
485
+ const decoding = asserts.decoding()
486
+ await decoding.succeed("a")
487
+ })
488
+
489
+ it("number", async () => {
490
+ const schema = Schema.Literal(1)
491
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
492
+
493
+ const encoding = asserts.encoding()
494
+ await encoding.succeed(1)
495
+
496
+ const decoding = asserts.decoding()
497
+ await decoding.succeed(1)
498
+ })
499
+
500
+ it("boolean", async () => {
501
+ const schema = Schema.Literal(true)
502
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
503
+
504
+ const encoding = asserts.encoding()
505
+ await encoding.succeed(true)
506
+
507
+ const decoding = asserts.decoding()
508
+ await decoding.succeed(true)
509
+ })
510
+
511
+ it("bigint", async () => {
512
+ const schema = Schema.Literal(1n)
513
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
514
+
515
+ const encoding = asserts.encoding()
516
+ await encoding.succeed(1n, "1")
517
+
518
+ const decoding = asserts.decoding()
519
+ await decoding.succeed("1", 1n)
520
+ })
521
+ })
522
+
523
+ it("Literals", async () => {
524
+ const schema = Schema.Literals(["a", 1, 2n, true])
525
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
526
+
527
+ const decoding = asserts.decoding()
528
+ await decoding.fail(
529
+ "-",
530
+ `Expected "a" | 1 | "2" | true, got "-"`
531
+ )
532
+ })
533
+
534
+ describe("TemplateLiteral", () => {
535
+ it("1n + string", async () => {
536
+ const schema = Schema.TemplateLiteral([1n, Schema.String])
537
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
538
+
539
+ const encoding = asserts.encoding()
540
+ await encoding.succeed("1a")
541
+
542
+ const decoding = asserts.decoding()
543
+ await decoding.succeed("1a")
544
+ })
545
+
546
+ it(`"a" + bigint`, async () => {
547
+ const schema = Schema.TemplateLiteral(["a", Schema.BigInt])
548
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
549
+
550
+ const encoding = asserts.encoding()
551
+ await encoding.succeed("a1")
552
+
553
+ const decoding = asserts.decoding()
554
+ await decoding.succeed("a1")
555
+ })
556
+ })
557
+
558
+ it("Enum", async () => {
559
+ enum Fruits {
560
+ Apple,
561
+ Banana
562
+ }
563
+ const schema = Schema.Enum(Fruits)
564
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
565
+
566
+ const encoding = asserts.encoding()
567
+ await encoding.succeed(Fruits.Apple, 0)
568
+ await encoding.succeed(Fruits.Banana, 1)
569
+
570
+ const decoding = asserts.decoding()
571
+ await decoding.succeed(0, Fruits.Apple)
572
+ await decoding.succeed(1, Fruits.Banana)
573
+ })
574
+
575
+ describe("Struct", () => {
576
+ it("Date", async () => {
577
+ const schema = Schema.Struct({
578
+ a: Schema.Date
579
+ })
580
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
581
+
582
+ const encoding = asserts.encoding()
583
+ await encoding.succeed(
584
+ { a: new Date("2021-01-01") },
585
+ { a: "2021-01-01T00:00:00.000Z" }
586
+ )
587
+ })
588
+
589
+ it("UndefinedOr(Date)", async () => {
590
+ const schema = Schema.Struct({
591
+ a: Schema.UndefinedOr(Schema.Date)
592
+ })
593
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
594
+
595
+ const encoding = asserts.encoding()
596
+ await encoding.succeed({ a: new Date("2021-01-01") }, {
597
+ a: "2021-01-01T00:00:00.000Z"
598
+ })
599
+ await encoding.succeed({ a: undefined }, { a: null })
600
+
601
+ const decoding = asserts.decoding()
602
+ await decoding.succeed({ a: "2021-01-01T00:00:00.000Z" }, {
603
+ a: new Date("2021-01-01")
604
+ })
605
+ await decoding.succeed({ a: null }, { a: undefined })
606
+ })
607
+
608
+ it("NullOr(Date)", async () => {
609
+ const schema = Schema.Struct({
610
+ a: Schema.NullOr(Schema.Date)
611
+ })
612
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
613
+
614
+ const encoding = asserts.encoding()
615
+ await encoding.succeed({ a: new Date("2021-01-01") }, {
616
+ a: "2021-01-01T00:00:00.000Z"
617
+ })
618
+ await encoding.succeed({ a: null }, { a: null })
619
+
620
+ const decoding = asserts.decoding()
621
+ await decoding.succeed({ a: "2021-01-01T00:00:00.000Z" }, {
622
+ a: new Date("2021-01-01")
623
+ })
624
+ await decoding.succeed({ a: null }, { a: null })
625
+ })
626
+
627
+ it("optionalKey(Date)", async () => {
628
+ const schema = Schema.Struct({
629
+ a: Schema.optionalKey(Schema.Date)
630
+ })
631
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
632
+
633
+ const encoding = asserts.encoding()
634
+ await encoding.succeed({ a: new Date("2021-01-01") }, {
635
+ a: "2021-01-01T00:00:00.000Z"
636
+ })
637
+ await encoding.succeed({}, {})
638
+
639
+ const decoding = asserts.decoding()
640
+ await decoding.succeed({ a: "2021-01-01T00:00:00.000Z" }, {
641
+ a: new Date("2021-01-01")
642
+ })
643
+ await decoding.succeed({}, {})
644
+ })
645
+
646
+ it("optional(Date)", async () => {
647
+ const schema = Schema.Struct({
648
+ a: Schema.optional(Schema.Date)
649
+ })
650
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
651
+
652
+ const encoding = asserts.encoding()
653
+ await encoding.succeed({ a: new Date("2021-01-01") }, {
654
+ a: "2021-01-01T00:00:00.000Z"
655
+ })
656
+ await encoding.succeed({}, {})
657
+ await encoding.succeed({ a: undefined }, { a: null })
658
+
659
+ const decoding = asserts.decoding()
660
+ await decoding.succeed({ a: "2021-01-01T00:00:00.000Z" }, {
661
+ a: new Date("2021-01-01")
662
+ })
663
+ await decoding.succeed({}, {})
664
+ await decoding.succeed({ a: null }, { a: undefined })
665
+ })
666
+ })
667
+
668
+ it("Record(Symbol, Date)", async () => {
669
+ const schema = Schema.Record(Schema.Symbol, Schema.Date)
670
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
671
+
672
+ const encoding = asserts.encoding()
673
+ await encoding.succeed(
674
+ { [Symbol.for("a")]: new Date("2021-01-01"), [Symbol.for("b")]: new Date("2021-01-01") },
675
+ { "Symbol(a)": "2021-01-01T00:00:00.000Z", "Symbol(b)": "2021-01-01T00:00:00.000Z" }
676
+ )
677
+
678
+ const decoding = asserts.decoding()
679
+ await decoding.succeed(
680
+ { "Symbol(a)": "2021-01-01T00:00:00.000Z", "Symbol(b)": "2021-01-01T00:00:00.000Z" },
681
+ { [Symbol.for("a")]: new Date("2021-01-01"), [Symbol.for("b")]: new Date("2021-01-01") }
682
+ )
683
+ })
684
+
685
+ describe("Tuple", () => {
686
+ it("Date", async () => {
687
+ const schema = Schema.Tuple([Schema.Date])
688
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
689
+
690
+ const encoding = asserts.encoding()
691
+ await encoding.succeed(
692
+ [new Date("2021-01-01")],
693
+ ["2021-01-01T00:00:00.000Z"]
694
+ )
695
+
696
+ const decoding = asserts.decoding()
697
+ await decoding.succeed(
698
+ ["2021-01-01T00:00:00.000Z"],
699
+ [new Date("2021-01-01")]
700
+ )
701
+ })
702
+
703
+ it("UndefinedOr(Date)", async () => {
704
+ const schema = Schema.Tuple([Schema.UndefinedOr(Schema.Date)])
705
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
706
+
707
+ const encoding = asserts.encoding()
708
+ await encoding.succeed(
709
+ [new Date("2021-01-01")],
710
+ ["2021-01-01T00:00:00.000Z"]
711
+ )
712
+ await encoding.succeed([undefined], [null])
713
+
714
+ const decoding = asserts.decoding()
715
+ await decoding.succeed(["2021-01-01T00:00:00.000Z"], [
716
+ new Date("2021-01-01")
717
+ ])
718
+ await decoding.succeed([null], [undefined])
719
+ })
720
+
721
+ it("NullOr(Date)", async () => {
722
+ const schema = Schema.Tuple([Schema.NullOr(Schema.Date)])
723
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
724
+
725
+ const encoding = asserts.encoding()
726
+ await encoding.succeed([new Date("2021-01-01")], [
727
+ "2021-01-01T00:00:00.000Z"
728
+ ])
729
+ await encoding.succeed([null], [null])
730
+
731
+ const decoding = asserts.decoding()
732
+ await decoding.succeed(["2021-01-01T00:00:00.000Z"], [
733
+ new Date("2021-01-01")
734
+ ])
735
+ await decoding.succeed([null], [null])
736
+ })
737
+
738
+ it("optionalKey(Date)", async () => {
739
+ const schema = Schema.Tuple([Schema.optionalKey(Schema.Date)])
740
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
741
+
742
+ const encoding = asserts.encoding()
743
+ await encoding.succeed([new Date("2021-01-01")], [
744
+ "2021-01-01T00:00:00.000Z"
745
+ ])
746
+ await encoding.succeed([], [])
747
+
748
+ const decoding = asserts.decoding()
749
+ await decoding.succeed(["2021-01-01T00:00:00.000Z"], [
750
+ new Date("2021-01-01")
751
+ ])
752
+ await decoding.succeed([], [])
753
+ })
754
+
755
+ it("optional(Date)", async () => {
756
+ const schema = Schema.Tuple([Schema.optional(Schema.Date)])
757
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
758
+
759
+ const encoding = asserts.encoding()
760
+ await encoding.succeed([new Date("2021-01-01")], [
761
+ "2021-01-01T00:00:00.000Z"
762
+ ])
763
+ await encoding.succeed([], [])
764
+ await encoding.succeed([undefined], [null])
765
+
766
+ const decoding = asserts.decoding()
767
+ await decoding.succeed(["2021-01-01T00:00:00.000Z"], [
768
+ new Date("2021-01-01")
769
+ ])
770
+ await decoding.succeed([], [])
771
+ await decoding.succeed([null], [undefined])
772
+ })
773
+ })
774
+
775
+ it("Array(Date)", async () => {
776
+ const schema = Schema.Array(Schema.Date)
777
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
778
+
779
+ const encoding = asserts.encoding()
780
+ await encoding.succeed(
781
+ [new Date("2021-01-01"), new Date("2021-01-02")],
782
+ ["2021-01-01T00:00:00.000Z", "2021-01-02T00:00:00.000Z"]
783
+ )
784
+ })
785
+
786
+ describe("Union", () => {
787
+ it("NullOr(String)", async () => {
788
+ const schema = Schema.NullOr(Schema.String)
789
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
790
+
791
+ const encoding = asserts.encoding()
792
+ await encoding.succeed("a")
793
+ await encoding.succeed(null)
794
+
795
+ const decoding = asserts.decoding()
796
+ await decoding.succeed(null)
797
+ await decoding.succeed("a")
798
+ })
799
+
800
+ it("NullOr(Number)", async () => {
801
+ const schema = Schema.NullOr(Schema.Number)
802
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
803
+
804
+ const encoding = asserts.encoding()
805
+ await encoding.succeed(1)
806
+ await encoding.succeed(null)
807
+
808
+ const decoding = asserts.decoding()
809
+ await decoding.succeed(null)
810
+ await decoding.succeed(1)
811
+ })
812
+
813
+ it("Array(NullOr(Number))", async () => {
814
+ const schema = Schema.Array(Schema.NullOr(Schema.Number))
815
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
816
+
817
+ const encoding = asserts.encoding()
818
+ await encoding.succeed([1, null])
819
+
820
+ const decoding = asserts.decoding()
821
+ await decoding.succeed([1, null])
822
+ })
823
+
824
+ it("Union(Schema.Date, Finite)", async () => {
825
+ const schema = Schema.Union([Schema.Date, Schema.Finite])
826
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
827
+
828
+ const encoding = asserts.encoding()
829
+ await encoding.succeed(
830
+ new Date("2021-01-01"),
831
+ "2021-01-01T00:00:00.000Z"
832
+ )
833
+ await encoding.succeed(0)
834
+ })
835
+ })
836
+
837
+ it("Suspend", async () => {
838
+ interface Category {
839
+ readonly a: number
840
+ readonly categories: ReadonlyArray<Category>
841
+ }
842
+
843
+ const schema = Schema.Struct({
844
+ a: Schema.Finite.check(Schema.isGreaterThan(0)),
845
+ categories: Schema.Array(Schema.suspend((): Schema.Codec<Category> => schema))
846
+ })
847
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
848
+
849
+ const encoding = asserts.encoding()
850
+ await encoding.succeed({ a: 1, categories: [] }, {
851
+ a: 1,
852
+ categories: []
853
+ })
854
+ await encoding.succeed({
855
+ a: 1,
856
+ categories: [{ a: 2, categories: [] }]
857
+ }, {
858
+ a: 1,
859
+ categories: [
860
+ { a: 2, categories: [] }
861
+ ]
862
+ })
863
+
864
+ const decoding = asserts.decoding()
865
+ await decoding.succeed({
866
+ a: 1,
867
+ categories: []
868
+ }, { a: 1, categories: [] })
869
+ await decoding.succeed({
870
+ a: 1,
871
+ categories: [
872
+ { a: 2, categories: [] }
873
+ ]
874
+ }, { a: 1, categories: [{ a: 2, categories: [] }] })
875
+ })
876
+
877
+ it("Class", async () => {
878
+ class A extends Schema.Class<A>("A")(Schema.Struct({
879
+ a: Schema.Finite
880
+ })) {}
881
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(Schema.toType(A)))
882
+
883
+ const encoding = asserts.encoding()
884
+ await encoding.succeed(new A({ a: 0 }), { a: 0 })
885
+
886
+ const decoding = asserts.decoding()
887
+ await decoding.succeed({ a: 0 }, new A({ a: 0 }))
888
+ })
889
+
890
+ it("ErrorClass", async () => {
891
+ class E extends Schema.ErrorClass<E>("E")({
892
+ a: Schema.Finite
893
+ }) {}
894
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(Schema.toType(E)))
895
+
896
+ const encoding = asserts.encoding()
897
+ await encoding.succeed(new E({ a: 0 }), { a: 0 })
898
+
899
+ const decoding = asserts.decoding()
900
+ await decoding.succeed({ a: 0 }, new E({ a: 0 }))
901
+ })
902
+
903
+ it("Date", async () => {
904
+ const schema = Schema.Date
905
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
906
+
907
+ const encoding = asserts.encoding()
908
+ await encoding.succeed(
909
+ new Date("2021-01-01"),
910
+ "2021-01-01T00:00:00.000Z"
911
+ )
912
+ })
913
+
914
+ it("Error", async () => {
915
+ const schema = Schema.Error()
916
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
917
+
918
+ const encoding = asserts.encoding()
919
+ await encoding.succeed(
920
+ new Error("a"),
921
+ { name: "Error", message: "a" }
922
+ )
923
+ await encoding.succeed(
924
+ new Error("a", { cause: new Error("b") }),
925
+ { name: "Error", message: "a", cause: { name: "Error", message: "b" } }
926
+ )
927
+ await encoding.succeed(
928
+ new Error("a", { cause: "b" }),
929
+ { name: "Error", message: "a", cause: "b" }
930
+ )
931
+ const selfCause = new Error("a")
932
+ selfCause.stack = "stack"
933
+ selfCause.cause = selfCause
934
+ await encoding.succeed(
935
+ selfCause,
936
+ {
937
+ name: "Error",
938
+ message: "a",
939
+ cause: "[Circular]"
940
+ }
941
+ )
942
+ const cyclicCause: Record<string, unknown> = {}
943
+ cyclicCause.self = cyclicCause
944
+ await encoding.succeed(
945
+ new Error("a", { cause: cyclicCause }),
946
+ { name: "Error", message: "a", cause: {} }
947
+ )
948
+
949
+ const decoding = asserts.decoding()
950
+ // Error: message only
951
+ await decoding.succeed(
952
+ { message: "a" },
953
+ new Error("a")
954
+ )
955
+ // Error: message and name
956
+ await decoding.succeed(
957
+ { name: "b", message: "a" },
958
+ (() => {
959
+ const err = new Error("a")
960
+ err.name = "b"
961
+ return err
962
+ })()
963
+ )
964
+ // Error: message, name, and stack
965
+ await decoding.succeed(
966
+ { name: "b", message: "a", stack: "c" },
967
+ (() => {
968
+ const err = new Error("a")
969
+ err.name = "b"
970
+ err.stack = "c"
971
+ return err
972
+ })()
973
+ )
974
+ // Error: message and cause
975
+ await decoding.succeed(
976
+ { message: "a", cause: { message: "b" } },
977
+ new Error("a", { cause: new Error("b") })
978
+ )
979
+ // Error: explicit null cause
980
+ await decoding.succeed(
981
+ { message: "a", cause: null },
982
+ new Error("a", { cause: null })
983
+ )
984
+ })
985
+
986
+ it("Error with stack", async () => {
987
+ const schema = Schema.Error({ includeStack: true })
988
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
989
+ const error = new Error("a")
990
+ error.stack = "stack"
991
+ const customError = new Error("b")
992
+ customError.name = "CustomError"
993
+ customError.stack = "custom stack"
994
+
995
+ const encoding = asserts.encoding()
996
+ await encoding.succeed(error, { name: "Error", message: "a", stack: "stack" })
997
+ await encoding.succeed(customError, { name: "CustomError", message: "b", stack: "custom stack" })
998
+
999
+ const decoding = asserts.decoding()
1000
+ await decoding.succeed(
1001
+ { message: "a", stack: "stack" },
1002
+ error
1003
+ )
1004
+ await decoding.succeed(
1005
+ { name: "CustomError", message: "b", stack: "custom stack" },
1006
+ customError
1007
+ )
1008
+ })
1009
+
1010
+ it("Error with excluded cause", async () => {
1011
+ const schema = Schema.Error({ excludeCause: true })
1012
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1013
+
1014
+ const encoding = asserts.encoding()
1015
+ await encoding.succeed(
1016
+ new Error("a", { cause: new Error("b") }),
1017
+ { name: "Error", message: "a" }
1018
+ )
1019
+ })
1020
+
1021
+ it("URL", async () => {
1022
+ const schema = Schema.URL
1023
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1024
+
1025
+ const encoding = asserts.encoding()
1026
+ await encoding.succeed(
1027
+ new URL("https://example.com"),
1028
+ "https://example.com/"
1029
+ )
1030
+
1031
+ const decoding = asserts.decoding()
1032
+ await decoding.succeed(
1033
+ "https://example.com",
1034
+ new URL("https://example.com")
1035
+ )
1036
+ await decoding.succeed(
1037
+ "https://example.com/",
1038
+ new URL("https://example.com")
1039
+ )
1040
+ await decoding.fail(
1041
+ "not a url",
1042
+ `Invalid URL string: not a url`
1043
+ )
1044
+ })
1045
+
1046
+ it("URLSearchParams", async () => {
1047
+ const schema = Schema.URLSearchParams
1048
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1049
+
1050
+ const encoding = asserts.encoding()
1051
+ await encoding.succeed(
1052
+ new URLSearchParams("a=1&b=two"),
1053
+ "a=1&b=two"
1054
+ )
1055
+
1056
+ const decoding = asserts.decoding()
1057
+ await decoding.succeed(
1058
+ "a=1&b=two",
1059
+ new URLSearchParams("a=1&b=two")
1060
+ )
1061
+ })
1062
+
1063
+ it.skipIf(isDeno)("File", async () => {
1064
+ const schema = Schema.File
1065
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1066
+
1067
+ const encoding = asserts.encoding()
1068
+ await encoding.succeed(
1069
+ new File(["hi"], "note.txt", { type: "text/plain", lastModified: 123 }),
1070
+ { data: "aGk=", type: "text/plain", name: "note.txt", lastModified: 123 }
1071
+ )
1072
+
1073
+ const decoding = asserts.decoding()
1074
+ await decoding.succeed(
1075
+ { data: "aGk=", type: "text/plain", name: "note.txt", lastModified: 123 },
1076
+ new File(["hi"], "note.txt", { type: "text/plain", lastModified: 123 })
1077
+ )
1078
+ })
1079
+
1080
+ it.skipIf(isDeno)("FormData", async () => {
1081
+ const schema = Schema.FormData
1082
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1083
+
1084
+ const encoding = asserts.encoding()
1085
+ const formData = new FormData()
1086
+ formData.append("a", "1")
1087
+ formData.append("b", new File(["hi"], "note.txt", { type: "text/plain", lastModified: 123 }))
1088
+ await encoding.succeed(
1089
+ formData,
1090
+ [
1091
+ ["a", { _tag: "String", value: "1" }],
1092
+ ["b", { _tag: "File", value: { data: "aGk=", type: "text/plain", name: "note.txt", lastModified: 123 } }]
1093
+ ]
1094
+ )
1095
+
1096
+ const decoding = asserts.decoding()
1097
+ const expected = new FormData()
1098
+ expected.append("a", "1")
1099
+ expected.append("b", new File(["hi"], "note.txt", { type: "text/plain", lastModified: 123 }))
1100
+ await decoding.succeed(
1101
+ [
1102
+ ["a", { _tag: "String", value: "1" }],
1103
+ ["b", { _tag: "File", value: { data: "aGk=", type: "text/plain", name: "note.txt", lastModified: 123 } }]
1104
+ ],
1105
+ expected
1106
+ )
1107
+ })
1108
+
1109
+ it("RegExp", async () => {
1110
+ const schema = Schema.RegExp
1111
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1112
+
1113
+ const encoding = asserts.encoding()
1114
+ await encoding.succeed(new RegExp("a"), { source: "a", flags: "" })
1115
+ await encoding.succeed(new RegExp("a", "i"), { source: "a", flags: "i" })
1116
+
1117
+ const decoding = asserts.decoding()
1118
+ await decoding.succeed({ source: "a", flags: "" }, new RegExp("a"))
1119
+ await decoding.succeed({ source: "a", flags: "i" }, new RegExp("a", "i"))
1120
+ await decoding.fail(
1121
+ { source: "(", flags: "" },
1122
+ `SyntaxError: Invalid regular expression: /(/: Unterminated group`
1123
+ )
1124
+ await decoding.fail(
1125
+ { source: "a", flags: "x" },
1126
+ `SyntaxError: Invalid flags supplied to RegExp constructor 'x'`
1127
+ )
1128
+ })
1129
+
1130
+ it("Uint8Array", async () => {
1131
+ const schema = Schema.Uint8Array
1132
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1133
+
1134
+ const encoding = asserts.encoding()
1135
+ await encoding.succeed(new Uint8Array([1, 2, 3]), "AQID")
1136
+
1137
+ const decoding = asserts.decoding()
1138
+ await decoding.succeed("AQID", new Uint8Array([1, 2, 3]))
1139
+ await decoding.fail(
1140
+ "not a base64 string",
1141
+ "Length must be a multiple of 4, but is 19"
1142
+ )
1143
+ })
1144
+
1145
+ it("Duration", async () => {
1146
+ const schema = Schema.Duration
1147
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1148
+
1149
+ const encoding = asserts.encoding()
1150
+ await encoding.succeed(Duration.infinity, { _tag: "Infinity" })
1151
+ await encoding.succeed(Duration.negativeInfinity, { _tag: "NegativeInfinity" })
1152
+ await encoding.succeed(Duration.nanos(1000n), { _tag: "Nanos", value: "1000" })
1153
+ await encoding.succeed(Duration.nanos(-1000n), { _tag: "Nanos", value: "-1000" })
1154
+ await encoding.succeed(Duration.millis(1), { _tag: "Millis", value: 1 })
1155
+ await encoding.succeed(Duration.millis(-1), { _tag: "Millis", value: -1 })
1156
+ await encoding.succeed(Duration.zero, { _tag: "Millis", value: 0 })
1157
+
1158
+ const decoding = asserts.decoding()
1159
+ await decoding.succeed({ _tag: "Infinity" }, Duration.infinity)
1160
+ await decoding.succeed({ _tag: "NegativeInfinity" }, Duration.negativeInfinity)
1161
+ await decoding.succeed({ _tag: "Millis", value: 1 }, Duration.millis(1))
1162
+ await decoding.succeed({ _tag: "Millis", value: -1 }, Duration.millis(-1))
1163
+ await decoding.succeed({ _tag: "Nanos", value: "1000" }, Duration.nanos(1000n))
1164
+ await decoding.succeed({ _tag: "Nanos", value: "-1000" }, Duration.nanos(-1000n))
1165
+ })
1166
+
1167
+ it("DateTimeUtc", async () => {
1168
+ const schema = Schema.DateTimeUtc
1169
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1170
+
1171
+ const encoding = asserts.encoding()
1172
+ await encoding.succeed(
1173
+ DateTime.makeUnsafe("2021-01-01T00:00:00.000Z"),
1174
+ "2021-01-01T00:00:00.000Z"
1175
+ )
1176
+
1177
+ const decoding = asserts.decoding()
1178
+ await decoding.succeed(
1179
+ "2021-01-01T00:00:00.000Z",
1180
+ DateTime.makeUnsafe("2021-01-01T00:00:00.000Z")
1181
+ )
1182
+ })
1183
+
1184
+ it("Option(Date)", async () => {
1185
+ const schema = Schema.Option(Schema.Date)
1186
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1187
+
1188
+ const encoding = asserts.encoding()
1189
+ await encoding.succeed(Option.some(new Date("2021-01-01")), {
1190
+ _tag: "Some",
1191
+ value: "2021-01-01T00:00:00.000Z"
1192
+ })
1193
+ await encoding.succeed(Option.none(), { _tag: "None" })
1194
+ })
1195
+
1196
+ describe("Redacted", () => {
1197
+ it("Redacted(Option(String))", async () => {
1198
+ const schema = Schema.Redacted(Schema.Option(Schema.String))
1199
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1200
+
1201
+ const encoding = asserts.encoding()
1202
+ await encoding.succeed(
1203
+ Redacted.make(Option.none()),
1204
+ { _tag: "None" }
1205
+ )
1206
+ await encoding.succeed(
1207
+ Redacted.make(Option.some("a")),
1208
+ { _tag: "Some", value: "a" }
1209
+ )
1210
+
1211
+ const decoding = asserts.decoding()
1212
+ await decoding.succeed(
1213
+ { _tag: "None" },
1214
+ Redacted.make(Option.none())
1215
+ )
1216
+ await decoding.succeed(
1217
+ { _tag: "Some", value: "a" },
1218
+ Redacted.make(Option.some("a"))
1219
+ )
1220
+ })
1221
+
1222
+ it("Redacted(Option(String)) disallowJsonEncode", async () => {
1223
+ const schema = Schema.Redacted(Schema.Option(Schema.String), {
1224
+ disallowJsonEncode: true
1225
+ })
1226
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1227
+
1228
+ const encoding = asserts.encoding()
1229
+ await encoding.fail(
1230
+ Redacted.make(Option.none()),
1231
+ `Cannot serialize Redacted`
1232
+ )
1233
+ await encoding.fail(
1234
+ Redacted.make(Option.some("a")),
1235
+ `Cannot serialize Redacted`
1236
+ )
1237
+
1238
+ const decoding = asserts.decoding()
1239
+ await decoding.succeed(
1240
+ { _tag: "None" },
1241
+ Redacted.make(Option.none())
1242
+ )
1243
+ await decoding.succeed(
1244
+ { _tag: "Some", value: "a" },
1245
+ Redacted.make(Option.some("a"))
1246
+ )
1247
+ })
1248
+
1249
+ it("encoding a Redacted with a label", async () => {
1250
+ const schema = Schema.Redacted(Schema.String, { label: "password" })
1251
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1252
+
1253
+ const encoding = asserts.encoding()
1254
+ await encoding.fail(
1255
+ Redacted.make("a", { label: "API key" }),
1256
+ `Expected "password", got "API key"
1257
+ at ["label"]`
1258
+ )
1259
+ })
1260
+
1261
+ it("encoding a Redacted with a different label", async () => {
1262
+ const schema = Schema.Redacted(Schema.String)
1263
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1264
+
1265
+ const encoding = asserts.encoding()
1266
+ await encoding.succeed(
1267
+ Redacted.make("a", { label: "API key" }),
1268
+ "a"
1269
+ )
1270
+ })
1271
+ })
1272
+
1273
+ it("ReadonlySet", async () => {
1274
+ const schema = Schema.ReadonlySet(Schema.Option(Schema.Date))
1275
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1276
+
1277
+ const encoding = asserts.encoding()
1278
+ await encoding.succeed(new Set([Option.some(new Date("2021-01-01"))]), [{
1279
+ _tag: "Some",
1280
+ value: "2021-01-01T00:00:00.000Z"
1281
+ }])
1282
+
1283
+ const decoding = asserts.decoding()
1284
+ await decoding.succeed(
1285
+ [{ _tag: "Some", value: "2021-01-01T00:00:00.000Z" }],
1286
+ new Set([Option.some(new Date("2021-01-01"))])
1287
+ )
1288
+ })
1289
+
1290
+ it("ReadonlyMap", async () => {
1291
+ const schema = Schema.ReadonlyMap(Schema.Option(Schema.Date), Schema.Finite)
1292
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1293
+
1294
+ const encoding = asserts.encoding()
1295
+ await encoding.succeed(
1296
+ new Map([[Option.some(new Date("2021-01-01")), 0]]),
1297
+ [[
1298
+ { _tag: "Some", value: "2021-01-01T00:00:00.000Z" },
1299
+ 0
1300
+ ]]
1301
+ )
1302
+
1303
+ const decoding = asserts.decoding()
1304
+ await decoding.succeed(
1305
+ [[{ _tag: "Some", value: "2021-01-01T00:00:00.000Z" }, 0]],
1306
+ new Map([[Option.some(new Date("2021-01-01")), 0]])
1307
+ )
1308
+ })
1309
+
1310
+ it("HashMap", async () => {
1311
+ const schema = Schema.HashMap(Schema.Option(Schema.Date), Schema.Finite)
1312
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1313
+
1314
+ const encoding = asserts.encoding()
1315
+ await encoding.succeed(
1316
+ HashMap.make([Option.some(new Date("2021-01-01")), 0]),
1317
+ [[
1318
+ { _tag: "Some", value: "2021-01-01T00:00:00.000Z" },
1319
+ 0
1320
+ ]]
1321
+ )
1322
+
1323
+ const decoding = asserts.decoding()
1324
+ await decoding.succeed(
1325
+ [[{ _tag: "Some", value: "2021-01-01T00:00:00.000Z" }, 0]],
1326
+ HashMap.make([Option.some(new Date("2021-01-01")), 0])
1327
+ )
1328
+ })
1329
+ })
1330
+
1331
+ describe("schemas with encoding", () => {
1332
+ it("FiniteFromDate", async () => {
1333
+ const schema = FiniteFromDate
1334
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1335
+
1336
+ const encoding = asserts.encoding()
1337
+ await encoding.succeed(0, "1970-01-01T00:00:00.000Z")
1338
+ })
1339
+
1340
+ it("Struct", async () => {
1341
+ const schema = Schema.Struct({
1342
+ a: FiniteFromDate,
1343
+ b: FiniteFromDate
1344
+ })
1345
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1346
+
1347
+ const encoding = asserts.encoding()
1348
+ await encoding.succeed(
1349
+ { a: 0, b: 0 },
1350
+ { a: "1970-01-01T00:00:00.000Z", b: "1970-01-01T00:00:00.000Z" }
1351
+ )
1352
+ })
1353
+
1354
+ it("Tuple(Schema.Date, Schema.Date)", async () => {
1355
+ const schema = Schema.Tuple([FiniteFromDate, FiniteFromDate])
1356
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1357
+
1358
+ const encoding = asserts.encoding()
1359
+ await encoding.succeed(
1360
+ [0, 0],
1361
+ ["1970-01-01T00:00:00.000Z", "1970-01-01T00:00:00.000Z"]
1362
+ )
1363
+ })
1364
+
1365
+ it("Class", async () => {
1366
+ class A extends Schema.Class<A>("A")(Schema.Struct({
1367
+ a: FiniteFromDate
1368
+ })) {}
1369
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(A))
1370
+
1371
+ const encoding = asserts.encoding()
1372
+ await encoding.succeed(new A({ a: 0 }), { a: "1970-01-01T00:00:00.000Z" })
1373
+
1374
+ const decoding = asserts.decoding()
1375
+ await decoding.succeed({ a: "1970-01-01T00:00:00.000Z" }, new A({ a: 0 }))
1376
+ })
1377
+
1378
+ it("Error", async () => {
1379
+ class E extends Schema.ErrorClass<E>("E")({
1380
+ a: FiniteFromDate
1381
+ }) {}
1382
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(E))
1383
+
1384
+ const encoding = asserts.encoding()
1385
+ await encoding.succeed(new E({ a: 0 }), { a: "1970-01-01T00:00:00.000Z" })
1386
+
1387
+ const decoding = asserts.decoding()
1388
+ await decoding.succeed({ a: "1970-01-01T00:00:00.000Z" }, new E({ a: 0 }))
1389
+ })
1390
+
1391
+ it("Enum", async () => {
1392
+ enum Fruits {
1393
+ Apple,
1394
+ Banana = "banana"
1395
+ }
1396
+ const schema = Schema.Enum(Fruits)
1397
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1398
+
1399
+ const encoding = asserts.encoding()
1400
+ await encoding.succeed(Fruits.Apple, 0)
1401
+ await encoding.succeed(Fruits.Banana, "banana")
1402
+
1403
+ const decoding = asserts.decoding()
1404
+ await decoding.succeed(0, Fruits.Apple)
1405
+ })
1406
+
1407
+ it("Option(Option(FiniteFromDate))", async () => {
1408
+ const schema = Schema.Option(Schema.Option(FiniteFromDate))
1409
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1410
+
1411
+ const encoding = asserts.encoding()
1412
+ await encoding.succeed(Option.some(Option.some(0)), {
1413
+ _tag: "Some",
1414
+ value: {
1415
+ _tag: "Some",
1416
+ value: "1970-01-01T00:00:00.000Z"
1417
+ }
1418
+ })
1419
+ })
1420
+
1421
+ it("ReadonlyMap(Option(Symbol), Date)", async () => {
1422
+ const schema = Schema.ReadonlyMap(Schema.Option(Schema.Symbol), Schema.Date)
1423
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1424
+
1425
+ const encoding = asserts.encoding()
1426
+ await encoding.succeed(
1427
+ new Map([[Option.some(Symbol.for("a")), new Date("2021-01-01")]]),
1428
+ [[
1429
+ { _tag: "Some", value: "Symbol(a)" },
1430
+ "2021-01-01T00:00:00.000Z"
1431
+ ]]
1432
+ )
1433
+
1434
+ const decoding = asserts.decoding()
1435
+ await decoding.succeed(
1436
+ [[{ _tag: "Some", value: "Symbol(a)" }, "2021-01-01T00:00:00.000Z"]],
1437
+ new Map([[Option.some(Symbol.for("a")), new Date("2021-01-01")]])
1438
+ )
1439
+ })
1440
+
1441
+ it("Defect", async () => {
1442
+ const schema = Schema.Defect()
1443
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1444
+
1445
+ const encoding = asserts.encoding()
1446
+ await encoding.succeed(new Error("a"), { name: "Error", message: "a" })
1447
+ await encoding.succeed(
1448
+ new Error("a", { cause: new Error("b") }),
1449
+ { name: "Error", message: "a", cause: { name: "Error", message: "b" } }
1450
+ )
1451
+ await encoding.succeed(
1452
+ new Error("a", { cause: "b" }),
1453
+ { name: "Error", message: "a", cause: "b" }
1454
+ )
1455
+ await encoding.succeed(
1456
+ new Cause.NoSuchElementError(),
1457
+ { name: "NoSuchElementError", message: "" }
1458
+ )
1459
+ const cyclicDefect: Record<string, unknown> = {}
1460
+ cyclicDefect.self = cyclicDefect
1461
+ await encoding.succeed(cyclicDefect, {})
1462
+ await encoding.succeed("a")
1463
+ await encoding.succeed({ a: 1 })
1464
+
1465
+ const decoding = asserts.decoding()
1466
+ await decoding.succeed(
1467
+ { message: "a", cause: { message: "b" } },
1468
+ new Error("a", { cause: new Error("b") })
1469
+ )
1470
+ await decoding.succeed(
1471
+ { message: "a", cause: null },
1472
+ new Error("a", { cause: null })
1473
+ )
1474
+ })
1475
+
1476
+ it("Defect with excluded cause", async () => {
1477
+ const schema = Schema.Defect({ excludeCause: true })
1478
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1479
+
1480
+ const encoding = asserts.encoding()
1481
+ await encoding.succeed(
1482
+ new Error("a", { cause: new Error("b") }),
1483
+ { name: "Error", message: "a" }
1484
+ )
1485
+ })
1486
+
1487
+ it("Cause(Option(Finite), Option(String))", async () => {
1488
+ const schema = Schema.Cause(Schema.Option(Schema.Finite), Schema.Option(Schema.String))
1489
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1490
+
1491
+ const encoding = asserts.encoding()
1492
+ await encoding.succeed(Cause.fail(Option.some(1)), [{
1493
+ _tag: "Fail",
1494
+ error: { _tag: "Some", value: 1 }
1495
+ }])
1496
+ await encoding.succeed(Cause.die(Option.some("a")), [{
1497
+ _tag: "Die",
1498
+ defect: { _tag: "Some", value: "a" }
1499
+ }])
1500
+ await encoding.succeed(Cause.interrupt(1), [{
1501
+ _tag: "Interrupt",
1502
+ fiberId: 1
1503
+ }])
1504
+ await encoding.succeed(Cause.interrupt(), [{
1505
+ _tag: "Interrupt",
1506
+ fiberId: null
1507
+ }])
1508
+ })
1509
+
1510
+ it("DateTimeUtcFromValidDate", async () => {
1511
+ const schema = Schema.DateTimeUtcFromDate
1512
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
1513
+
1514
+ const encoding = asserts.encoding()
1515
+ await encoding.succeed(
1516
+ DateTime.makeUnsafe("2021-01-01T00:00:00.000Z"),
1517
+ "2021-01-01T00:00:00.000Z"
1518
+ )
1519
+
1520
+ const decoding = asserts.decoding()
1521
+ await decoding.succeed(
1522
+ "2021-01-01T00:00:00.000Z",
1523
+ DateTime.makeUnsafe("2021-01-01T00:00:00.000Z")
1524
+ )
1525
+ })
1526
+ })
1527
+
1528
+ it("StandardSchemaV1FailureResult", async () => {
1529
+ const b = Symbol.for("b")
1530
+
1531
+ const schema = Schema.Struct({
1532
+ a: Schema.NonEmptyString,
1533
+ [b]: Schema.Finite,
1534
+ c: Schema.Tuple([Schema.String])
1535
+ })
1536
+
1537
+ const r = SchemaParser.decodeUnknownExit(schema)({ a: "", c: [] }, { errors: "all" })
1538
+
1539
+ assertTrue(r._tag === "Failure")
1540
+ assertTrue(r.cause.reasons.length === 1)
1541
+ const failure = r.cause.reasons[0]
1542
+ assertTrue(failure._tag === "Fail")
1543
+
1544
+ const failureResult = SchemaIssue.makeFormatterStandardSchemaV1({
1545
+ leafHook: SchemaIssue.defaultLeafHook
1546
+ })(failure.error)
1547
+
1548
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(Schema.StandardSchemaV1FailureResult))
1549
+
1550
+ const encoding = asserts.encoding()
1551
+ await encoding.succeed(failureResult, {
1552
+ issues: [
1553
+ { path: ["a"], message: `Expected a value with a length of at least 1, got ""` },
1554
+ { path: ["c", 0], message: "Missing key" },
1555
+ { path: ["Symbol(b)"], message: "Missing key" }
1556
+ ]
1557
+ })
1558
+
1559
+ const decoding = asserts.decoding()
1560
+ await decoding.succeed({
1561
+ issues: [
1562
+ { path: ["a"], message: `Expected a value with a length of at least 1, got ""` },
1563
+ { path: ["c", 0], message: "Missing key" },
1564
+ { path: ["Symbol(b)"], message: "Missing key" }
1565
+ ]
1566
+ }, failureResult)
1567
+ })
1568
+ })
1569
+
1570
+ describe("toCodecStringTree", () => {
1571
+ it("should reorder the types in the Union based on the encoded side", async () => {
1572
+ const schema = Schema.Union([
1573
+ Schema.String,
1574
+ Schema.String.pipe(Schema.encodeTo(Schema.BigInt, {
1575
+ decode: SchemaGetter.transform((n: bigint) => String(n) + "a"),
1576
+ encode: SchemaGetter.transform(() => 0n)
1577
+ }))
1578
+ ])
1579
+ const serializer = Schema.toCodecStringTree(schema)
1580
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(serializer))
1581
+
1582
+ const decoding = asserts.decoding()
1583
+ await decoding.succeed("1", "1a")
1584
+ })
1585
+
1586
+ describe("keepDeclarations: true", () => {
1587
+ describe("Unsupported schemas", () => {
1588
+ it("Struct with Symbol property name", () => {
1589
+ const a = Symbol.for("a")
1590
+ const schema = Schema.Struct({
1591
+ [a]: Schema.String
1592
+ })
1593
+ throws(
1594
+ () => Schema.toCodecStringTree(schema, { keepDeclarations: true }),
1595
+ "Objects property names must be strings"
1596
+ )
1597
+ })
1598
+ })
1599
+
1600
+ it("should reorder the types in the Union based on the encoded side", async () => {
1601
+ const schema = Schema.Union([
1602
+ Schema.String,
1603
+ Schema.String.pipe(Schema.encodeTo(Schema.BigInt, {
1604
+ decode: SchemaGetter.transform((n: bigint) => String(n) + "a"),
1605
+ encode: SchemaGetter.transform(() => 0n)
1606
+ }))
1607
+ ])
1608
+ const serializer = Schema.toCodecStringTree(schema, { keepDeclarations: true })
1609
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(serializer))
1610
+
1611
+ const decoding = asserts.decoding()
1612
+ await decoding.succeed("1", "1a")
1613
+ })
1614
+
1615
+ it("should passthrough the schema if it's a declaration without an annotation", async () => {
1616
+ const schema = Schema.Struct({
1617
+ a: Schema.instanceOf(URL),
1618
+ b: Schema.Number
1619
+ })
1620
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema, { keepDeclarations: true }))
1621
+
1622
+ const encoding = asserts.encoding()
1623
+ await encoding.succeed({ a: new URL("https://effect.website"), b: 1 }, {
1624
+ a: new URL("https://effect.website"),
1625
+ b: "1"
1626
+ })
1627
+
1628
+ const decoding = asserts.decoding()
1629
+ await decoding.succeed({
1630
+ a: new URL("https://effect.website"),
1631
+ b: "1"
1632
+ }, { a: new URL("https://effect.website"), b: 1 })
1633
+ })
1634
+ })
1635
+
1636
+ describe("should return the same reference if nothing changed", () => {
1637
+ it("String", async () => {
1638
+ const schema = Schema.String
1639
+ const serializer = Schema.toCodecStringTree(schema)
1640
+ strictEqual(serializer.ast, schema.ast)
1641
+ })
1642
+
1643
+ it("Struct({ a: String })", async () => {
1644
+ const schema = Schema.Struct({
1645
+ a: Schema.String
1646
+ })
1647
+ const serializer = Schema.toCodecStringTree(schema)
1648
+ strictEqual(serializer.ast, schema.ast)
1649
+ })
1650
+ })
1651
+
1652
+ describe("should memoize the result", () => {
1653
+ it("Struct", async () => {
1654
+ const schema = Schema.Struct({
1655
+ a: Schema.Finite
1656
+ })
1657
+ const serializer = Schema.toCodecStringTree(schema)
1658
+ strictEqual(serializer.ast, Schema.toCodecStringTree(serializer).ast)
1659
+ })
1660
+
1661
+ it("Array", async () => {
1662
+ const schema = Schema.Array(Schema.Finite)
1663
+ const serializer = Schema.toCodecStringTree(schema)
1664
+ strictEqual(serializer.ast, Schema.toCodecStringTree(serializer).ast)
1665
+ })
1666
+ })
1667
+
1668
+ describe("schemas without encoding", () => {
1669
+ describe("Unsupported schemas", () => {
1670
+ it("Struct with Symbol property name", () => {
1671
+ const a = Symbol.for("a")
1672
+ const schema = Schema.Struct({
1673
+ [a]: Schema.String
1674
+ })
1675
+ throws(
1676
+ () => Schema.toCodecStringTree(schema),
1677
+ "Objects property names must be strings"
1678
+ )
1679
+ })
1680
+ })
1681
+
1682
+ it("Declaration", async () => {
1683
+ const schema = Schema.instanceOf(URL)
1684
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1685
+
1686
+ const encoding = asserts.encoding()
1687
+ await encoding.succeed(new URL("https://effect.website"), undefined)
1688
+
1689
+ const decoding = asserts.decoding()
1690
+ await decoding.fail("https://effect.website/", `Expected undefined, got "https://effect.website/"`)
1691
+ })
1692
+
1693
+ it("Unknown", async () => {
1694
+ const schema = Schema.Unknown
1695
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1696
+
1697
+ const encoding = asserts.encoding()
1698
+ await encoding.succeed("a")
1699
+ await encoding.fail(1, `Expected StringTree, got 1`)
1700
+ await encoding.succeed({ a: "a" })
1701
+ await encoding.succeed(["a"])
1702
+ await encoding.fail({ a: 1 }, `Expected StringTree, got {"a":1}`)
1703
+
1704
+ const decoding = asserts.decoding()
1705
+ await decoding.succeed("a")
1706
+ await decoding.fail(1, `Expected StringTree, got 1`)
1707
+ await decoding.succeed({ a: "a" })
1708
+ await decoding.succeed(["a"])
1709
+ await decoding.fail({ a: 1 }, `Expected StringTree, got {"a":1}`)
1710
+ })
1711
+
1712
+ it("ObjectKeyword", async () => {
1713
+ const schema = Schema.ObjectKeyword
1714
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1715
+
1716
+ const encoding = asserts.encoding()
1717
+ await encoding.fail("a", `Expected object | array | function, got "a"`)
1718
+ await encoding.fail(1, `Expected object | array | function, got 1`)
1719
+ await encoding.succeed({ a: "a" })
1720
+ await encoding.succeed(["a"])
1721
+ await encoding.fail({ a: 1 }, `Expected StringTree, got {"a":1}`)
1722
+
1723
+ const decoding = asserts.decoding()
1724
+ await decoding.fail("a", `Expected object | array | function, got "a"`)
1725
+ await decoding.fail(1, `Expected StringTree, got 1`)
1726
+ await decoding.succeed({ a: "a" })
1727
+ await decoding.succeed(["a"])
1728
+ await decoding.fail({ a: 1 }, `Expected StringTree, got {"a":1}`)
1729
+ })
1730
+
1731
+ it("Never", async () => {
1732
+ const schema = Schema.Never
1733
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1734
+
1735
+ const encoding = asserts.encoding()
1736
+ await encoding.fail({}, "Expected never, got {}")
1737
+ })
1738
+
1739
+ it("Any should be an escape hatch", async () => {
1740
+ const schema = Schema.Any
1741
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1742
+
1743
+ const encoding = asserts.encoding()
1744
+ await encoding.succeed(() => {})
1745
+
1746
+ const decoding = asserts.decoding()
1747
+ await decoding.succeed(() => {})
1748
+ })
1749
+
1750
+ it("Undefined", async () => {
1751
+ const schema = Schema.Undefined
1752
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1753
+
1754
+ const encoding = asserts.encoding()
1755
+ await encoding.succeed(undefined)
1756
+
1757
+ const decoding = asserts.decoding()
1758
+ await decoding.succeed(undefined)
1759
+ })
1760
+
1761
+ it("Void", async () => {
1762
+ const schema = Schema.Void
1763
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1764
+
1765
+ const encoding = asserts.encoding()
1766
+ await encoding.succeed(undefined)
1767
+
1768
+ const decoding = asserts.decoding()
1769
+ await decoding.succeed(undefined)
1770
+ })
1771
+
1772
+ it("Null", async () => {
1773
+ const schema = Schema.Null
1774
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1775
+
1776
+ const encoding = asserts.encoding()
1777
+ await encoding.succeed(null, "null")
1778
+
1779
+ const decoding = asserts.decoding()
1780
+ await decoding.succeed("null", null)
1781
+ })
1782
+
1783
+ it("String", async () => {
1784
+ const schema = Schema.String
1785
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1786
+
1787
+ const encoding = asserts.encoding()
1788
+ await encoding.succeed("a")
1789
+
1790
+ const decoding = asserts.decoding()
1791
+ await decoding.succeed("a")
1792
+ })
1793
+
1794
+ describe("Number", () => {
1795
+ it("Number", async () => {
1796
+ const schema = Schema.Number
1797
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1798
+
1799
+ const encoding = asserts.encoding()
1800
+ await encoding.succeed(1, "1")
1801
+ await encoding.succeed(-1, "-1")
1802
+ await encoding.succeed(1.2, "1.2")
1803
+ await encoding.succeed(Infinity, "Infinity")
1804
+ await encoding.succeed(-Infinity, "-Infinity")
1805
+ await encoding.succeed(NaN, "NaN")
1806
+
1807
+ const decoding = asserts.decoding()
1808
+ await decoding.succeed("1", 1)
1809
+ await decoding.succeed("-1", -1)
1810
+ await decoding.succeed("1.2", 1.2)
1811
+ await decoding.succeed("Infinity", Infinity)
1812
+ await decoding.succeed("-Infinity", -Infinity)
1813
+ await decoding.succeed("NaN", NaN)
1814
+ await decoding.fail(Infinity, `Expected string | "Infinity" | "-Infinity" | "NaN", got Infinity`)
1815
+ await decoding.fail(-Infinity, `Expected string | "Infinity" | "-Infinity" | "NaN", got -Infinity`)
1816
+ await decoding.fail(NaN, `Expected string | "Infinity" | "-Infinity" | "NaN", got NaN`)
1817
+ await decoding.fail(null, `Expected string | "Infinity" | "-Infinity" | "NaN", got null`)
1818
+ await decoding.fail(
1819
+ "a",
1820
+ `Expected a string representing a finite number, got "a"
1821
+ Expected "Infinity" | "-Infinity" | "NaN", got "a"`
1822
+ )
1823
+ })
1824
+
1825
+ describe("checks", () => {
1826
+ it("Finite", async () => {
1827
+ const schema = Schema.Finite
1828
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1829
+
1830
+ const encoding = asserts.encoding()
1831
+ await encoding.succeed(1, "1")
1832
+ await encoding.succeed(-1, "-1")
1833
+ await encoding.succeed(1.2, "1.2")
1834
+ await encoding.fail(Infinity, "Expected a finite number, got Infinity")
1835
+ await encoding.fail(-Infinity, "Expected a finite number, got -Infinity")
1836
+ await encoding.fail(NaN, "Expected a finite number, got NaN")
1837
+
1838
+ const decoding = asserts.decoding()
1839
+ await decoding.succeed("1", 1)
1840
+ await decoding.succeed("-1", -1)
1841
+ await decoding.succeed("1.2", 1.2)
1842
+ await decoding.fail("Infinity", `Expected a string representing a finite number, got "Infinity"`)
1843
+ await decoding.fail("-Infinity", `Expected a string representing a finite number, got "-Infinity"`)
1844
+ await decoding.fail("NaN", `Expected a string representing a finite number, got "NaN"`)
1845
+ await decoding.fail(Infinity, `Expected string, got Infinity`)
1846
+ await decoding.fail(-Infinity, `Expected string, got -Infinity`)
1847
+ await decoding.fail(NaN, `Expected string, got NaN`)
1848
+ await decoding.fail(null, `Expected string, got null`)
1849
+ await decoding.fail("a", `Expected a string representing a finite number, got "a"`)
1850
+ })
1851
+
1852
+ it("Int", async () => {
1853
+ const schema = Schema.Int
1854
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1855
+
1856
+ const encoding = asserts.encoding()
1857
+ await encoding.succeed(1, "1")
1858
+ await encoding.succeed(-1, "-1")
1859
+ await encoding.fail(1.2, `Expected an integer, got 1.2`)
1860
+ await encoding.fail(Infinity, `Expected an integer, got Infinity`)
1861
+ await encoding.fail(-Infinity, `Expected an integer, got -Infinity`)
1862
+ await encoding.fail(NaN, `Expected an integer, got NaN`)
1863
+
1864
+ const decoding = asserts.decoding()
1865
+ await decoding.succeed("1", 1)
1866
+ await decoding.succeed("-1", -1)
1867
+ await decoding.fail("1.2", `Expected an integer, got 1.2`)
1868
+ await decoding.fail("Infinity", `Expected a string representing a finite number, got "Infinity"`)
1869
+ await decoding.fail("-Infinity", `Expected a string representing a finite number, got "-Infinity"`)
1870
+ await decoding.fail("NaN", `Expected a string representing a finite number, got "NaN"`)
1871
+ await decoding.fail(Infinity, `Expected string, got Infinity`)
1872
+ await decoding.fail(-Infinity, `Expected string, got -Infinity`)
1873
+ await decoding.fail(NaN, `Expected string, got NaN`)
1874
+ await decoding.fail(null, `Expected string, got null`)
1875
+ await decoding.fail("a", `Expected a string representing a finite number, got "a"`)
1876
+ })
1877
+
1878
+ it("isGreaterThanOrEqualTo", async () => {
1879
+ const schema = Schema.Number.check(Schema.isGreaterThanOrEqualTo(1))
1880
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1881
+
1882
+ const encoding = asserts.encoding()
1883
+ await encoding.succeed(1, "1")
1884
+ await encoding.fail(-1, `Expected a value greater than or equal to 1, got -1`)
1885
+ await encoding.succeed(1.2, "1.2")
1886
+ await encoding.succeed(Infinity, "Infinity")
1887
+ await encoding.fail(-Infinity, "Expected a value greater than or equal to 1, got -Infinity")
1888
+ await encoding.fail(NaN, "Expected a value greater than or equal to 1, got NaN")
1889
+
1890
+ const decoding = asserts.decoding()
1891
+ await decoding.succeed("1", 1)
1892
+ await decoding.fail("-1", `Expected a value greater than or equal to 1, got -1`)
1893
+ await decoding.succeed("1.2", 1.2)
1894
+ await decoding.succeed("Infinity", Infinity)
1895
+ await decoding.fail("-Infinity", `Expected a value greater than or equal to 1, got -Infinity`)
1896
+ await decoding.fail("NaN", `Expected a value greater than or equal to 1, got NaN`)
1897
+ await decoding.fail(Infinity, `Expected string | "Infinity" | "-Infinity" | "NaN", got Infinity`)
1898
+ await decoding.fail(-Infinity, `Expected string | "Infinity" | "-Infinity" | "NaN", got -Infinity`)
1899
+ await decoding.fail(NaN, `Expected string | "Infinity" | "-Infinity" | "NaN", got NaN`)
1900
+ await decoding.fail(null, `Expected string | "Infinity" | "-Infinity" | "NaN", got null`)
1901
+ await decoding.fail(
1902
+ "a",
1903
+ `Expected a string representing a finite number, got "a"
1904
+ Expected "Infinity" | "-Infinity" | "NaN", got "a"`
1905
+ )
1906
+ })
1907
+ })
1908
+ })
1909
+
1910
+ it("Boolean", async () => {
1911
+ const schema = Schema.Boolean
1912
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1913
+
1914
+ const encoding = asserts.encoding()
1915
+ await encoding.succeed(true, "true")
1916
+ await encoding.succeed(false, "false")
1917
+
1918
+ const decoding = asserts.decoding()
1919
+ await decoding.succeed("true", true)
1920
+ await decoding.succeed("false", false)
1921
+ })
1922
+
1923
+ it("Symbol", async () => {
1924
+ const schema = Schema.Symbol
1925
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1926
+
1927
+ const encoding = asserts.encoding()
1928
+ await encoding.succeed(Symbol.for("a"), "Symbol(a)")
1929
+ await encoding.fail(
1930
+ Symbol("a"),
1931
+ "cannot serialize to string, Symbol is not registered"
1932
+ )
1933
+ await encoding.fail(
1934
+ Symbol(),
1935
+ "cannot serialize to string, Symbol is not registered"
1936
+ )
1937
+
1938
+ const decoding = asserts.decoding()
1939
+ await decoding.succeed("Symbol(a)", Symbol.for("a"))
1940
+ await decoding.fail("a", `Expected a string representing a symbol, got "a"`)
1941
+ })
1942
+
1943
+ it("UniqueSymbol", async () => {
1944
+ const schema = Schema.UniqueSymbol(Symbol.for("a"))
1945
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1946
+
1947
+ const encoding = asserts.encoding()
1948
+ await encoding.succeed(Symbol.for("a"), "Symbol(a)")
1949
+
1950
+ const decoding = asserts.decoding()
1951
+ await decoding.succeed("Symbol(a)", Symbol.for("a"))
1952
+ await decoding.fail("a", `Expected a string representing a symbol, got "a"`)
1953
+ })
1954
+
1955
+ it("BigInt", async () => {
1956
+ const schema = Schema.BigInt
1957
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1958
+
1959
+ const encoding = asserts.encoding()
1960
+ await encoding.succeed(1n, "1")
1961
+
1962
+ const decoding = asserts.decoding()
1963
+ await decoding.succeed("1", 1n)
1964
+ await decoding.fail("a", `Expected a string representing a bigint, got "a"`)
1965
+ })
1966
+
1967
+ it("PropertyKey", async () => {
1968
+ const schema = Schema.PropertyKey
1969
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1970
+
1971
+ const encoding = asserts.encoding()
1972
+ await encoding.succeed("a", "a")
1973
+ await encoding.succeed(1, "1")
1974
+ await encoding.succeed(Symbol.for("a"), "Symbol(a)")
1975
+
1976
+ const decoding = asserts.decoding()
1977
+ await decoding.succeed("a", "a")
1978
+ await decoding.succeed("1", 1)
1979
+ await decoding.succeed("Symbol(a)", Symbol.for("a"))
1980
+ })
1981
+
1982
+ describe("Literal", () => {
1983
+ it("string", async () => {
1984
+ const schema = Schema.Literal("a")
1985
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1986
+
1987
+ const encoding = asserts.encoding()
1988
+ await encoding.succeed("a", "a")
1989
+
1990
+ const decoding = asserts.decoding()
1991
+ await decoding.succeed("a", "a")
1992
+ })
1993
+
1994
+ it("number", async () => {
1995
+ const schema = Schema.Literal(1)
1996
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
1997
+
1998
+ const encoding = asserts.encoding()
1999
+ await encoding.succeed(1, "1")
2000
+
2001
+ const decoding = asserts.decoding()
2002
+ await decoding.succeed("1", 1)
2003
+ })
2004
+
2005
+ it("boolean", async () => {
2006
+ const schema = Schema.Literal(true)
2007
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2008
+
2009
+ const encoding = asserts.encoding()
2010
+ await encoding.succeed(true, "true")
2011
+
2012
+ const decoding = asserts.decoding()
2013
+ await decoding.succeed("true", true)
2014
+ })
2015
+
2016
+ it("bigint", async () => {
2017
+ const schema = Schema.Literal(1n)
2018
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2019
+
2020
+ const encoding = asserts.encoding()
2021
+ await encoding.succeed(1n, "1")
2022
+
2023
+ const decoding = asserts.decoding()
2024
+ await decoding.succeed("1", 1n)
2025
+ })
2026
+ })
2027
+
2028
+ it("Literals", async () => {
2029
+ const schema = Schema.Literals(["a", 1, 2n, true])
2030
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2031
+
2032
+ const decoding = asserts.decoding()
2033
+ await decoding.fail(
2034
+ "-",
2035
+ `Expected "a" | "1" | "2" | "true", got "-"`
2036
+ )
2037
+ })
2038
+
2039
+ describe("TemplateLiteral", () => {
2040
+ it("1n + string", async () => {
2041
+ const schema = Schema.TemplateLiteral([1n, Schema.String])
2042
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2043
+
2044
+ const encoding = asserts.encoding()
2045
+ await encoding.succeed("1a")
2046
+
2047
+ const decoding = asserts.decoding()
2048
+ await decoding.succeed("1a")
2049
+ })
2050
+
2051
+ it(`"a" + bigint`, async () => {
2052
+ const schema = Schema.TemplateLiteral(["a", Schema.BigInt])
2053
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2054
+
2055
+ const encoding = asserts.encoding()
2056
+ await encoding.succeed("a1")
2057
+
2058
+ const decoding = asserts.decoding()
2059
+ await decoding.succeed("a1")
2060
+ })
2061
+ })
2062
+
2063
+ it("Enum", async () => {
2064
+ enum Fruits {
2065
+ Apple,
2066
+ Banana
2067
+ }
2068
+ const schema = Schema.Enum(Fruits)
2069
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2070
+
2071
+ const encoding = asserts.encoding()
2072
+ await encoding.succeed(Fruits.Apple, "0")
2073
+ await encoding.succeed(Fruits.Banana, "1")
2074
+
2075
+ const decoding = asserts.decoding()
2076
+ await decoding.succeed("0", Fruits.Apple)
2077
+ await decoding.succeed("1", Fruits.Banana)
2078
+ })
2079
+
2080
+ describe("Struct", () => {
2081
+ it("Date", async () => {
2082
+ const schema = Schema.Struct({
2083
+ a: Schema.Date
2084
+ })
2085
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2086
+
2087
+ const encoding = asserts.encoding()
2088
+ await encoding.succeed({ a: new Date("2021-01-01") }, {
2089
+ a: "2021-01-01T00:00:00.000Z"
2090
+ })
2091
+
2092
+ const decoding = asserts.decoding()
2093
+ await decoding.succeed({ a: "2021-01-01T00:00:00.000Z" }, {
2094
+ a: new Date("2021-01-01")
2095
+ })
2096
+ })
2097
+
2098
+ it("UndefinedOr(Date)", async () => {
2099
+ const schema = Schema.Struct({
2100
+ a: Schema.UndefinedOr(Schema.Date)
2101
+ })
2102
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2103
+
2104
+ const encoding = asserts.encoding()
2105
+ await encoding.succeed({ a: new Date("2021-01-01") }, {
2106
+ a: "2021-01-01T00:00:00.000Z"
2107
+ })
2108
+ await encoding.succeed({ a: undefined }, { a: undefined })
2109
+
2110
+ const decoding = asserts.decoding()
2111
+ await decoding.succeed({ a: "2021-01-01T00:00:00.000Z" }, {
2112
+ a: new Date("2021-01-01")
2113
+ })
2114
+ await decoding.succeed({ a: undefined }, { a: undefined })
2115
+ })
2116
+
2117
+ it("NullOr(Date)", async () => {
2118
+ const schema = Schema.Struct({
2119
+ a: Schema.NullOr(Schema.Date)
2120
+ })
2121
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2122
+
2123
+ const encoding = asserts.encoding()
2124
+ await encoding.succeed({ a: new Date("2021-01-01") }, {
2125
+ a: "2021-01-01T00:00:00.000Z"
2126
+ })
2127
+ await encoding.succeed({ a: null }, { a: "null" })
2128
+
2129
+ const decoding = asserts.decoding()
2130
+ await decoding.succeed({ a: "2021-01-01T00:00:00.000Z" }, {
2131
+ a: new Date("2021-01-01")
2132
+ })
2133
+ await decoding.succeed({ a: "null" }, { a: null })
2134
+ })
2135
+
2136
+ it("optionalKey(Date)", async () => {
2137
+ const schema = Schema.Struct({
2138
+ a: Schema.optionalKey(Schema.Date)
2139
+ })
2140
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2141
+
2142
+ const encoding = asserts.encoding()
2143
+ await encoding.succeed({ a: new Date("2021-01-01") }, {
2144
+ a: "2021-01-01T00:00:00.000Z"
2145
+ })
2146
+ await encoding.succeed({}, {})
2147
+
2148
+ const decoding = asserts.decoding()
2149
+ await decoding.succeed({ a: "2021-01-01T00:00:00.000Z" }, {
2150
+ a: new Date("2021-01-01")
2151
+ })
2152
+ await decoding.succeed({}, {})
2153
+ })
2154
+
2155
+ it("optional(Date)", async () => {
2156
+ const schema = Schema.Struct({
2157
+ a: Schema.optional(Schema.Date)
2158
+ })
2159
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2160
+
2161
+ const encoding = asserts.encoding()
2162
+ await encoding.succeed({ a: new Date("2021-01-01") }, {
2163
+ a: "2021-01-01T00:00:00.000Z"
2164
+ })
2165
+ await encoding.succeed({}, {})
2166
+ await encoding.succeed({ a: undefined }, { a: undefined })
2167
+
2168
+ const decoding = asserts.decoding()
2169
+ await decoding.succeed({ a: "2021-01-01T00:00:00.000Z" }, {
2170
+ a: new Date("2021-01-01")
2171
+ })
2172
+ await decoding.succeed({}, {})
2173
+ await decoding.succeed({ a: undefined }, { a: undefined })
2174
+ })
2175
+ })
2176
+
2177
+ it("Record(Symbol, Date)", async () => {
2178
+ const schema = Schema.Record(Schema.Symbol, Schema.Date)
2179
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2180
+
2181
+ const encoding = asserts.encoding()
2182
+ await encoding.succeed(
2183
+ { [Symbol.for("a")]: new Date("2021-01-01"), [Symbol.for("b")]: new Date("2021-01-01") },
2184
+ { "Symbol(a)": "2021-01-01T00:00:00.000Z", "Symbol(b)": "2021-01-01T00:00:00.000Z" }
2185
+ )
2186
+
2187
+ const decoding = asserts.decoding()
2188
+ await decoding.succeed(
2189
+ { "Symbol(a)": "2021-01-01T00:00:00.000Z", "Symbol(b)": "2021-01-01T00:00:00.000Z" },
2190
+ { [Symbol.for("a")]: new Date("2021-01-01"), [Symbol.for("b")]: new Date("2021-01-01") }
2191
+ )
2192
+ })
2193
+
2194
+ describe("Tuple", () => {
2195
+ it("Date", async () => {
2196
+ const schema = Schema.Tuple([Schema.Date])
2197
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2198
+
2199
+ const encoding = asserts.encoding()
2200
+ await encoding.succeed(
2201
+ [new Date("2021-01-01")],
2202
+ ["2021-01-01T00:00:00.000Z"]
2203
+ )
2204
+
2205
+ const decoding = asserts.decoding()
2206
+ await decoding.succeed(
2207
+ ["2021-01-01T00:00:00.000Z"],
2208
+ [new Date("2021-01-01")]
2209
+ )
2210
+ })
2211
+
2212
+ it("UndefinedOr(Date)", async () => {
2213
+ const schema = Schema.Tuple([Schema.UndefinedOr(Schema.Date)])
2214
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2215
+
2216
+ const encoding = asserts.encoding()
2217
+ await encoding.succeed(
2218
+ [new Date("2021-01-01")],
2219
+ ["2021-01-01T00:00:00.000Z"]
2220
+ )
2221
+ await encoding.succeed([undefined])
2222
+
2223
+ const decoding = asserts.decoding()
2224
+ await decoding.succeed(["2021-01-01T00:00:00.000Z"], [
2225
+ new Date("2021-01-01")
2226
+ ])
2227
+ await decoding.succeed([undefined])
2228
+ })
2229
+
2230
+ it("NullOr(Date)", async () => {
2231
+ const schema = Schema.Tuple([Schema.NullOr(Schema.Date)])
2232
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2233
+
2234
+ const encoding = asserts.encoding()
2235
+ await encoding.succeed([new Date("2021-01-01")], [
2236
+ "2021-01-01T00:00:00.000Z"
2237
+ ])
2238
+ await encoding.succeed([null], ["null"])
2239
+
2240
+ const decoding = asserts.decoding()
2241
+ await decoding.succeed(["2021-01-01T00:00:00.000Z"], [
2242
+ new Date("2021-01-01")
2243
+ ])
2244
+ await decoding.succeed(["null"], [null])
2245
+ })
2246
+
2247
+ it("optionalKey(Date)", async () => {
2248
+ const schema = Schema.Tuple([Schema.optionalKey(Schema.Date)])
2249
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2250
+
2251
+ const encoding = asserts.encoding()
2252
+ await encoding.succeed([new Date("2021-01-01")], [
2253
+ "2021-01-01T00:00:00.000Z"
2254
+ ])
2255
+ await encoding.succeed([], [])
2256
+
2257
+ const decoding = asserts.decoding()
2258
+ await decoding.succeed(["2021-01-01T00:00:00.000Z"], [
2259
+ new Date("2021-01-01")
2260
+ ])
2261
+ await decoding.succeed([], [])
2262
+ })
2263
+
2264
+ it("optional(Date)", async () => {
2265
+ const schema = Schema.Tuple([Schema.optional(Schema.Date)])
2266
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2267
+
2268
+ const encoding = asserts.encoding()
2269
+ await encoding.succeed([new Date("2021-01-01")], [
2270
+ "2021-01-01T00:00:00.000Z"
2271
+ ])
2272
+ await encoding.succeed([], [])
2273
+ await encoding.succeed([undefined])
2274
+
2275
+ const decoding = asserts.decoding()
2276
+ await decoding.succeed(["2021-01-01T00:00:00.000Z"], [
2277
+ new Date("2021-01-01")
2278
+ ])
2279
+ await decoding.succeed([], [])
2280
+ await decoding.succeed([undefined])
2281
+ })
2282
+ })
2283
+
2284
+ it("Array(Date)", async () => {
2285
+ const schema = Schema.Array(Schema.Date)
2286
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2287
+
2288
+ const encoding = asserts.encoding()
2289
+ await encoding.succeed(
2290
+ [new Date("2021-01-01"), new Date("2021-01-02")],
2291
+ ["2021-01-01T00:00:00.000Z", "2021-01-02T00:00:00.000Z"]
2292
+ )
2293
+ })
2294
+
2295
+ describe("Union", () => {
2296
+ it("NullOr(Date)", async () => {
2297
+ const schema = Schema.NullOr(Schema.String)
2298
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2299
+
2300
+ const encoding = asserts.encoding()
2301
+ await encoding.succeed("a", "a")
2302
+ await encoding.succeed(null, "null")
2303
+
2304
+ const decoding = asserts.decoding()
2305
+ await decoding.succeed("null", null)
2306
+ await decoding.succeed("a", "a")
2307
+ })
2308
+
2309
+ it("NullOr(Number)", async () => {
2310
+ const schema = Schema.NullOr(Schema.Number)
2311
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2312
+
2313
+ const encoding = asserts.encoding()
2314
+ await encoding.succeed(1, "1")
2315
+ await encoding.succeed(null, "null")
2316
+
2317
+ const decoding = asserts.decoding()
2318
+ await decoding.succeed("null", null)
2319
+ await decoding.succeed("1", 1)
2320
+ })
2321
+
2322
+ it("Array(NullOr(Number))", async () => {
2323
+ const schema = Schema.Array(Schema.NullOr(Schema.Number))
2324
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2325
+
2326
+ const encoding = asserts.encoding()
2327
+ await encoding.succeed([1, null], ["1", "null"])
2328
+
2329
+ const decoding = asserts.decoding()
2330
+ await decoding.succeed(["1", "null"], [1, null])
2331
+ })
2332
+
2333
+ it("Union(Date, Finite)", async () => {
2334
+ const schema = Schema.Union([Schema.Date, Schema.Finite])
2335
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2336
+
2337
+ const encoding = asserts.encoding()
2338
+ await encoding.succeed(
2339
+ new Date("2021-01-01"),
2340
+ "2021-01-01T00:00:00.000Z"
2341
+ )
2342
+ await encoding.succeed(0, "0")
2343
+ })
2344
+ })
2345
+
2346
+ it("Suspend", async () => {
2347
+ interface Category {
2348
+ readonly a: number
2349
+ readonly categories: ReadonlyArray<Category>
2350
+ }
2351
+
2352
+ const schema = Schema.Struct({
2353
+ a: Schema.Finite.check(Schema.isGreaterThan(0)),
2354
+ categories: Schema.Array(Schema.suspend((): Schema.Codec<Category> => schema))
2355
+ })
2356
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2357
+
2358
+ const encoding = asserts.encoding()
2359
+ await encoding.succeed({ a: 1, categories: [] }, {
2360
+ a: "1",
2361
+ categories: []
2362
+ })
2363
+ await encoding.succeed({
2364
+ a: 1,
2365
+ categories: [{ a: 2, categories: [] }]
2366
+ }, {
2367
+ a: "1",
2368
+ categories: [
2369
+ { a: "2", categories: [] }
2370
+ ]
2371
+ })
2372
+
2373
+ const decoding = asserts.decoding()
2374
+ await decoding.succeed({
2375
+ a: "1",
2376
+ categories: []
2377
+ }, { a: 1, categories: [] })
2378
+ await decoding.succeed({
2379
+ a: "1",
2380
+ categories: [
2381
+ { a: "2", categories: [] }
2382
+ ]
2383
+ }, { a: 1, categories: [{ a: 2, categories: [] }] })
2384
+ })
2385
+
2386
+ it("Class", async () => {
2387
+ class A extends Schema.Class<A>("A")(Schema.Struct({
2388
+ a: Schema.Finite
2389
+ })) {}
2390
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(Schema.toType(A)))
2391
+
2392
+ const encoding = asserts.encoding()
2393
+ await encoding.succeed(new A({ a: 0 }), { a: "0" })
2394
+
2395
+ const decoding = asserts.decoding()
2396
+ await decoding.succeed({ a: "0" }, new A({ a: 0 }))
2397
+ })
2398
+
2399
+ it("ErrorClass", async () => {
2400
+ class E extends Schema.ErrorClass<E>("E")({
2401
+ a: Schema.Finite
2402
+ }) {}
2403
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(Schema.toType(E)))
2404
+
2405
+ const encoding = asserts.encoding()
2406
+ await encoding.succeed(new E({ a: 0 }), { a: "0" })
2407
+
2408
+ const decoding = asserts.decoding()
2409
+ await decoding.succeed({ a: "0" }, new E({ a: 0 }))
2410
+ })
2411
+
2412
+ it("Date", async () => {
2413
+ const schema = Schema.Date
2414
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2415
+
2416
+ const encoding = asserts.encoding()
2417
+ await encoding.succeed(
2418
+ new Date("2021-01-01"),
2419
+ "2021-01-01T00:00:00.000Z"
2420
+ )
2421
+ })
2422
+
2423
+ it("Error", async () => {
2424
+ const schema = Schema.Error()
2425
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2426
+
2427
+ const encoding = asserts.encoding()
2428
+ await encoding.succeed(
2429
+ new Error("a"),
2430
+ { name: "Error", message: "a" }
2431
+ )
2432
+
2433
+ const decoding = asserts.decoding()
2434
+ // Error: message only
2435
+ await decoding.succeed(
2436
+ { message: "a" },
2437
+ new Error("a")
2438
+ )
2439
+ // Error: message and name
2440
+ await decoding.succeed(
2441
+ { name: "b", message: "a" },
2442
+ (() => {
2443
+ const err = new Error("a")
2444
+ err.name = "b"
2445
+ return err
2446
+ })()
2447
+ )
2448
+ // Error: message, name, and stack
2449
+ await decoding.succeed(
2450
+ { name: "b", message: "a", stack: "c" },
2451
+ (() => {
2452
+ const err = new Error("a")
2453
+ err.name = "b"
2454
+ err.stack = "c"
2455
+ return err
2456
+ })()
2457
+ )
2458
+ })
2459
+
2460
+ it("URL", async () => {
2461
+ const schema = Schema.URL
2462
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2463
+
2464
+ const encoding = asserts.encoding()
2465
+ await encoding.succeed(
2466
+ new URL("https://example.com"),
2467
+ "https://example.com/"
2468
+ )
2469
+
2470
+ const decoding = asserts.decoding()
2471
+ await decoding.succeed(
2472
+ "https://example.com",
2473
+ new URL("https://example.com")
2474
+ )
2475
+ await decoding.succeed(
2476
+ "https://example.com/",
2477
+ new URL("https://example.com")
2478
+ )
2479
+ await decoding.fail(
2480
+ "not a url",
2481
+ `Invalid URL string: not a url`
2482
+ )
2483
+ })
2484
+
2485
+ it("RegExp", async () => {
2486
+ const schema = Schema.RegExp
2487
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2488
+
2489
+ const encoding = asserts.encoding()
2490
+ await encoding.succeed(new RegExp("a"), { source: "a", flags: "" })
2491
+ await encoding.succeed(new RegExp("a", "i"), { source: "a", flags: "i" })
2492
+
2493
+ const decoding = asserts.decoding()
2494
+ await decoding.succeed({ source: "a", flags: "" }, new RegExp("a"))
2495
+ await decoding.succeed({ source: "a", flags: "i" }, new RegExp("a", "i"))
2496
+ await decoding.fail(
2497
+ { source: "a", flags: "x" },
2498
+ `SyntaxError: Invalid flags supplied to RegExp constructor 'x'`
2499
+ )
2500
+ })
2501
+
2502
+ it("Option(Date)", async () => {
2503
+ const schema = Schema.Option(Schema.Date)
2504
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2505
+
2506
+ const encoding = asserts.encoding()
2507
+ await encoding.succeed(Option.some(new Date("2021-01-01")), {
2508
+ _tag: "Some",
2509
+ value: "2021-01-01T00:00:00.000Z"
2510
+ })
2511
+ await encoding.succeed(Option.none(), { _tag: "None" })
2512
+ })
2513
+
2514
+ it("Redacted(Option(String))", async () => {
2515
+ const schema = Schema.Redacted(Schema.Option(Schema.String))
2516
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2517
+
2518
+ const encoding = asserts.encoding()
2519
+ await encoding.succeed(
2520
+ Redacted.make(Option.none()),
2521
+ { _tag: "None" }
2522
+ )
2523
+ await encoding.succeed(
2524
+ Redacted.make(Option.some("a")),
2525
+ { _tag: "Some", value: "a" }
2526
+ )
2527
+
2528
+ const decoding = asserts.decoding()
2529
+ await decoding.succeed(
2530
+ { _tag: "None" },
2531
+ Redacted.make(Option.none())
2532
+ )
2533
+ await decoding.succeed(
2534
+ { _tag: "Some", value: "a" },
2535
+ Redacted.make(Option.some("a"))
2536
+ )
2537
+ })
2538
+
2539
+ it("Redacted(Option(String)) disallowJsonEncode", async () => {
2540
+ const schema = Schema.Redacted(Schema.Option(Schema.String), {
2541
+ disallowJsonEncode: true
2542
+ })
2543
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2544
+
2545
+ const encoding = asserts.encoding()
2546
+ await encoding.fail(
2547
+ Redacted.make(Option.none()),
2548
+ "Cannot serialize Redacted"
2549
+ )
2550
+ await encoding.fail(
2551
+ Redacted.make(Option.some("a")),
2552
+ "Cannot serialize Redacted"
2553
+ )
2554
+
2555
+ const decoding = asserts.decoding()
2556
+ await decoding.succeed(
2557
+ { _tag: "None" },
2558
+ Redacted.make(Option.none())
2559
+ )
2560
+ await decoding.succeed(
2561
+ { _tag: "Some", value: "a" },
2562
+ Redacted.make(Option.some("a"))
2563
+ )
2564
+ })
2565
+
2566
+ it("ReadonlySet", async () => {
2567
+ const schema = Schema.ReadonlySet(Schema.Option(Schema.Date))
2568
+ const asserts = new TestSchema.Asserts(Schema.toCodecJson(schema))
2569
+
2570
+ const encoding = asserts.encoding()
2571
+ await encoding.succeed(new Set([Option.some(new Date("2021-01-01"))]), [{
2572
+ _tag: "Some",
2573
+ value: "2021-01-01T00:00:00.000Z"
2574
+ }])
2575
+
2576
+ const decoding = asserts.decoding()
2577
+ await decoding.succeed(
2578
+ [{ _tag: "Some", value: "2021-01-01T00:00:00.000Z" }],
2579
+ new Set([Option.some(new Date("2021-01-01"))])
2580
+ )
2581
+ })
2582
+
2583
+ it("ReadonlyMap", async () => {
2584
+ const schema = Schema.ReadonlyMap(Schema.Option(Schema.Date), Schema.Finite)
2585
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2586
+
2587
+ const encoding = asserts.encoding()
2588
+ await encoding.succeed(
2589
+ new Map([[Option.some(new Date("2021-01-01")), 0]]),
2590
+ [[
2591
+ { _tag: "Some", value: "2021-01-01T00:00:00.000Z" },
2592
+ "0"
2593
+ ]]
2594
+ )
2595
+
2596
+ const decoding = asserts.decoding()
2597
+ await decoding.succeed(
2598
+ [[{ _tag: "Some", value: "2021-01-01T00:00:00.000Z" }, "0"]],
2599
+ new Map([[Option.some(new Date("2021-01-01")), 0]])
2600
+ )
2601
+ })
2602
+
2603
+ it("HashMap", async () => {
2604
+ const schema = Schema.HashMap(Schema.Option(Schema.Date), Schema.Finite)
2605
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(schema))
2606
+
2607
+ const encoding = asserts.encoding()
2608
+ await encoding.succeed(
2609
+ HashMap.make([Option.some(new Date("2021-01-01")), 0]),
2610
+ [[
2611
+ { _tag: "Some", value: "2021-01-01T00:00:00.000Z" },
2612
+ "0"
2613
+ ]]
2614
+ )
2615
+
2616
+ const decoding = asserts.decoding()
2617
+ await decoding.succeed(
2618
+ [[{ _tag: "Some", value: "2021-01-01T00:00:00.000Z" }, "0"]],
2619
+ HashMap.make([Option.some(new Date("2021-01-01")), 0])
2620
+ )
2621
+ })
2622
+ })
2623
+
2624
+ it("should handle optional keys", async () => {
2625
+ const schema = Schema.Struct({
2626
+ a: Schema.optionalKey(Schema.NonEmptyArray(Schema.String))
2627
+ })
2628
+ const serializer = Schema.toCodecStringTree(schema)
2629
+ const asserts = new TestSchema.Asserts(Schema.toCodecStringTree(serializer))
2630
+
2631
+ const decoding = asserts.decoding()
2632
+ await decoding.succeed({})
2633
+ await decoding.succeed({ a: ["a"] })
2634
+ await decoding.succeed({ a: "a" }, { a: ["a"] })
2635
+ })
2636
+ })
2637
+
2638
+ describe("toEncoderXml", () => {
2639
+ async function assertXml<T, E, RD>(schema: Schema.Codec<T, E, RD>, value: T, expected: string) {
2640
+ const serializer = Schema.toEncoderXml(Schema.toCodecStringTree(schema))
2641
+ strictEqual(await Effect.runPromise(serializer(value)), expected)
2642
+ }
2643
+
2644
+ async function assertXmlFailure<T, E, RD>(schema: Schema.Codec<T, E, RD>, value: T, message: string) {
2645
+ const serializer = Schema.toEncoderXml(Schema.toCodecStringTree(schema))
2646
+ const r = await serializer(value).pipe(
2647
+ Effect.mapError((err) => err.issue.toString()),
2648
+ Effect.result,
2649
+ Effect.runPromise
2650
+ )
2651
+ deepStrictEqual(r, Result.fail(message))
2652
+ }
2653
+
2654
+ describe("Schemas without annotations", () => {
2655
+ it("Declaration", async () => {
2656
+ await assertXml(Schema.instanceOf(URL), new URL("https://effect.website"), "<root/>")
2657
+ })
2658
+
2659
+ it("Unknown", async () => {
2660
+ await assertXml(Schema.Unknown, "value", "<root/>")
2661
+ })
2662
+
2663
+ it("ObjectKeyword", async () => {
2664
+ await assertXml(Schema.ObjectKeyword, { a: "value" }, "<root/>")
2665
+ })
2666
+ })
2667
+
2668
+ it("should use the identifier as the root name", async () => {
2669
+ await assertXml(Schema.String.annotate({ identifier: "a" }), "value", "<a>value</a>")
2670
+ await assertXml(Schema.String.annotate({ identifier: "a b" }), "value", `<a_b data-name="a b">value</a_b>`)
2671
+ await assertXml(Schema.String.annotate({ identifier: "a", title: "b" }), "value", "<a>value</a>")
2672
+ })
2673
+
2674
+ it("should use the title as the root name", async () => {
2675
+ await assertXml(Schema.String.annotate({ title: "a" }), "value", "<a>value</a>")
2676
+ await assertXml(Schema.String.annotate({ title: "a b" }), "value", `<a_b data-name="a b">value</a_b>`)
2677
+ })
2678
+
2679
+ it("should escape the text", async () => {
2680
+ await assertXml(Schema.String, "value&", `<root>value&amp;</root>`)
2681
+ await assertXml(Schema.String, "<value/>", `<root>&lt;value/&gt;</root>`)
2682
+ })
2683
+
2684
+ it("should escape the attributes", async () => {
2685
+ await assertXml(Schema.String.annotate({ title: "value&" }), "", `<value_ data-name="value&amp;"></value_>`)
2686
+ await assertXml(
2687
+ Schema.String.annotate({ title: "<value/>" }),
2688
+ "",
2689
+ `<__value__ data-name="&lt;value/&gt;"></__value__>`
2690
+ )
2691
+ })
2692
+
2693
+ it("Never", async () => {
2694
+ await assertXmlFailure(Schema.Never, "test", `Expected never, got "test"`)
2695
+ })
2696
+
2697
+ it("Any", async () => {
2698
+ await assertXml(Schema.Any, "test", "<root>test</root>")
2699
+ await assertXml(Schema.Any, 42, "<root>42</root>")
2700
+ await assertXml(
2701
+ Schema.Any,
2702
+ { a: 1 },
2703
+ `<root>
2704
+ <a>1</a>
2705
+ </root>`
2706
+ )
2707
+ })
2708
+
2709
+ it("Void", async () => {
2710
+ await assertXml(Schema.Void, undefined, "<root/>")
2711
+ })
2712
+
2713
+ it("Undefined", async () => {
2714
+ await assertXml(Schema.Undefined, undefined, "<root/>")
2715
+ })
2716
+
2717
+ it("Null", async () => {
2718
+ await assertXml(Schema.Null, null, "<root>null</root>")
2719
+ })
2720
+
2721
+ it("Number", async () => {
2722
+ await assertXml(Schema.Number, 1, "<root>1</root>")
2723
+ await assertXml(Schema.Number, 0, "<root>0</root>")
2724
+ await assertXml(Schema.Number, -1.5, "<root>-1.5</root>")
2725
+ await assertXml(Schema.Number, Infinity, "<root>Infinity</root>")
2726
+ await assertXml(Schema.Number, -Infinity, "<root>-Infinity</root>")
2727
+ await assertXml(Schema.Number, NaN, "<root>NaN</root>")
2728
+ })
2729
+
2730
+ it("Boolean", async () => {
2731
+ await assertXml(Schema.Boolean, true, "<root>true</root>")
2732
+ await assertXml(Schema.Boolean, false, "<root>false</root>")
2733
+ })
2734
+
2735
+ it("BigInt", async () => {
2736
+ await assertXml(Schema.BigInt, BigInt(42), "<root>42</root>")
2737
+ await assertXml(Schema.BigInt, BigInt(0), "<root>0</root>")
2738
+ await assertXml(Schema.BigInt, BigInt(-123), "<root>-123</root>")
2739
+ })
2740
+
2741
+ it("Symbol", async () => {
2742
+ const sym = Symbol.for("test")
2743
+ await assertXml(Schema.Symbol, sym, "<root>Symbol(test)</root>")
2744
+ })
2745
+
2746
+ it("TemplateLiteral", async () => {
2747
+ const schema = Schema.TemplateLiteral([Schema.Literal("Hello "), Schema.String, Schema.Literal("!")])
2748
+ await assertXml(schema, "Hello World!", "<root>Hello World!</root>")
2749
+ })
2750
+
2751
+ it("Struct", async () => {
2752
+ await assertXml(
2753
+ Schema.Struct({
2754
+ a: Schema.Number,
2755
+ "a b": Schema.Number
2756
+ }),
2757
+ { a: 1, "a b": 2 },
2758
+ `<root>
2759
+ <a>1</a>
2760
+ <a_b data-name="a b">2</a_b>
2761
+ </root>`
2762
+ )
2763
+ })
2764
+
2765
+ it("Array", async () => {
2766
+ await assertXml(Schema.Array(Schema.Number), [], "<root/>")
2767
+ await assertXml(
2768
+ Schema.Array(Schema.Number),
2769
+ [1, 2, 3],
2770
+ `<root>
2771
+ <item>1</item>
2772
+ <item>2</item>
2773
+ <item>3</item>
2774
+ </root>`
2775
+ )
2776
+ })
2777
+
2778
+ it("Array with custom item name", async () => {
2779
+ const serializer = Schema.toEncoderXml(Schema.toCodecStringTree(Schema.Array(Schema.Number)), {
2780
+ arrayItemName: "number"
2781
+ })
2782
+ strictEqual(
2783
+ await Effect.runPromise(serializer([1, 2, 3])),
2784
+ `<root>
2785
+ <number>1</number>
2786
+ <number>2</number>
2787
+ <number>3</number>
2788
+ </root>`
2789
+ )
2790
+ })
2791
+
2792
+ it("Union", async () => {
2793
+ await assertXml(Schema.Union([Schema.String, Schema.Number]), "test", "<root>test</root>")
2794
+ await assertXml(Schema.Union([Schema.String, Schema.Number]), 42, "<root>42</root>")
2795
+ })
2796
+
2797
+ it("Tuple", async () => {
2798
+ await assertXml(Schema.Tuple([]), [], "<root/>")
2799
+ await assertXml(
2800
+ Schema.Tuple([Schema.String, Schema.Number, Schema.Boolean]),
2801
+ ["a", 1, true],
2802
+ `<root>
2803
+ <item>a</item>
2804
+ <item>1</item>
2805
+ <item>true</item>
2806
+ </root>`
2807
+ )
2808
+ })
2809
+
2810
+ it("Record", async () => {
2811
+ await assertXml(Schema.Record(Schema.String, Schema.Number), {}, "<root/>")
2812
+ await assertXml(
2813
+ Schema.Record(Schema.String, Schema.Number),
2814
+ { a: 1, b: 2 },
2815
+ `<root>
2816
+ <a>1</a>
2817
+ <b>2</b>
2818
+ </root>`
2819
+ )
2820
+ })
2821
+
2822
+ it("NullOr", async () => {
2823
+ await assertXml(Schema.NullOr(Schema.String), "test", "<root>test</root>")
2824
+ await assertXml(Schema.NullOr(Schema.String), null, "<root>null</root>")
2825
+ })
2826
+
2827
+ it("TaggedUnion", async () => {
2828
+ const schema = Schema.TaggedUnion({
2829
+ A: { value: Schema.String },
2830
+ B: { value: Schema.Number }
2831
+ })
2832
+ await assertXml(
2833
+ schema,
2834
+ { _tag: "A", value: "test" },
2835
+ `<root>
2836
+ <_tag>A</_tag>
2837
+ <value>test</value>
2838
+ </root>`
2839
+ )
2840
+ await assertXml(
2841
+ schema,
2842
+ { _tag: "B", value: 42 },
2843
+ `<root>
2844
+ <_tag>B</_tag>
2845
+ <value>42</value>
2846
+ </root>`
2847
+ )
2848
+ })
2849
+
2850
+ it("TaggedStruct", async () => {
2851
+ const schema = Schema.TaggedStruct("User", {
2852
+ name: Schema.String,
2853
+ age: Schema.Number
2854
+ })
2855
+ await assertXml(
2856
+ schema,
2857
+ { _tag: "User", name: "John", age: 30 },
2858
+ `<root>
2859
+ <_tag>User</_tag>
2860
+ <age>30</age>
2861
+ <name>John</name>
2862
+ </root>`
2863
+ )
2864
+ })
2865
+
2866
+ it("Enum", async () => {
2867
+ const schema = Schema.Enum({
2868
+ A: "a",
2869
+ B: "b"
2870
+ })
2871
+ await assertXml(schema, "a", "<root>a</root>")
2872
+ await assertXml(schema, "b", "<root>b</root>")
2873
+ })
2874
+
2875
+ it("Literals", async () => {
2876
+ const schema = Schema.Literals(["a", 1, true, 1n])
2877
+ await assertXml(schema, "a", "<root>a</root>")
2878
+ await assertXml(schema, 1, "<root>1</root>")
2879
+ await assertXml(schema, true, "<root>true</root>")
2880
+ await assertXml(schema, 1n, "<root>1</root>")
2881
+ })
2882
+
2883
+ it("Nested Structures", async () => {
2884
+ const schema = Schema.Struct({
2885
+ user: Schema.Struct({
2886
+ name: Schema.String,
2887
+ age: Schema.Number
2888
+ }),
2889
+ tags: Schema.Array(Schema.String)
2890
+ })
2891
+ await assertXml(
2892
+ schema,
2893
+ { user: { name: "John", age: 30 }, tags: ["admin", "user"] },
2894
+ `<root>
2895
+ <tags>
2896
+ <item>admin</item>
2897
+ <item>user</item>
2898
+ </tags>
2899
+ <user>
2900
+ <age>30</age>
2901
+ <name>John</name>
2902
+ </user>
2903
+ </root>`
2904
+ )
2905
+ })
2906
+
2907
+ it("Special Characters in Text", async () => {
2908
+ await assertXml(Schema.String, "&<>\"'", `<root>&amp;&lt;&gt;"'</root>`)
2909
+ await assertXml(
2910
+ Schema.String,
2911
+ "line1\nline2",
2912
+ `<root>line1
2913
+ line2</root>`
2914
+ )
2915
+ await assertXml(Schema.String, "tab\there", "<root>tab here</root>")
2916
+ })
2917
+
2918
+ it("Special Characters in Attributes", async () => {
2919
+ await assertXml(
2920
+ Schema.String.annotate({ title: "test&value" }),
2921
+ "content",
2922
+ `<test_value data-name="test&amp;value">content</test_value>`
2923
+ )
2924
+ await assertXml(
2925
+ Schema.String.annotate({ title: "test<value>" }),
2926
+ "content",
2927
+ `<test_value_ data-name="test&lt;value&gt;">content</test_value_>`
2928
+ )
2929
+ await assertXml(
2930
+ Schema.String.annotate({ title: "test\"value" }),
2931
+ "content",
2932
+ `<test_value data-name="test&quot;value">content</test_value>`
2933
+ )
2934
+ })
2935
+
2936
+ it("XML Reserved Names", async () => {
2937
+ await assertXml(
2938
+ Schema.String.annotate({ title: "xml" }),
2939
+ "content",
2940
+ `<_xml data-name="xml">content</_xml>`
2941
+ )
2942
+ await assertXml(
2943
+ Schema.String.annotate({ title: "XML" }),
2944
+ "content",
2945
+ `<_XML data-name="XML">content</_XML>`
2946
+ )
2947
+ await assertXml(
2948
+ Schema.String.annotate({ title: "xmlns" }),
2949
+ "content",
2950
+ `<_xmlns data-name="xmlns">content</_xmlns>`
2951
+ )
2952
+ })
2953
+
2954
+ it("Invalid XML Tag Names", async () => {
2955
+ await assertXml(
2956
+ Schema.String.annotate({ title: "123invalid" }),
2957
+ "content",
2958
+ `<_123invalid data-name="123invalid">content</_123invalid>`
2959
+ )
2960
+ await assertXml(
2961
+ Schema.String.annotate({ title: "invalid name" }),
2962
+ "content",
2963
+ `<invalid_name data-name="invalid name">content</invalid_name>`
2964
+ )
2965
+ })
2966
+
2967
+ it("Empty String", async () => {
2968
+ await assertXml(Schema.String, "", "<root></root>")
2969
+ })
2970
+
2971
+ it("Whitespace Only String", async () => {
2972
+ await assertXml(Schema.String, " ", "<root> </root>")
2973
+ await assertXml(Schema.String, "\n\t", "<root>\n\t</root>")
2974
+ })
2975
+
2976
+ it("Unicode Characters", async () => {
2977
+ await assertXml(Schema.String, "Hello 世界", "<root>Hello 世界</root>")
2978
+ await assertXml(Schema.String, "🚀🌟✨", "<root>🚀🌟✨</root>")
2979
+ await assertXml(Schema.String, "αβγδε", "<root>αβγδε</root>")
2980
+ })
2981
+
2982
+ it("XML Encoder Options - rootName", async () => {
2983
+ const serializer = Schema.toEncoderXml(Schema.toCodecStringTree(Schema.String), {
2984
+ rootName: "custom"
2985
+ })
2986
+ strictEqual(await Effect.runPromise(serializer("test")), "<custom>test</custom>")
2987
+ })
2988
+
2989
+ it("XML Encoder Options - pretty: false", async () => {
2990
+ const serializer = Schema.toEncoderXml(
2991
+ Schema.toCodecStringTree(Schema.Struct({
2992
+ a: Schema.Number,
2993
+ b: Schema.String
2994
+ })),
2995
+ {
2996
+ pretty: false
2997
+ }
2998
+ )
2999
+ strictEqual(await Effect.runPromise(serializer({ a: 1, b: "test" })), "<root><a>1</a><b>test</b></root>")
3000
+ })
3001
+
3002
+ it("XML Encoder Options - custom indent", async () => {
3003
+ const serializer = Schema.toEncoderXml(
3004
+ Schema.toCodecStringTree(Schema.Struct({
3005
+ a: Schema.Number
3006
+ })),
3007
+ {
3008
+ indent: " "
3009
+ }
3010
+ )
3011
+ strictEqual(
3012
+ await Effect.runPromise(serializer({ a: 1 })),
3013
+ `<root>
3014
+ <a>1</a>
3015
+ </root>`
3016
+ )
3017
+ })
3018
+
3019
+ it("XML Encoder Options - sortKeys: false", async () => {
3020
+ const serializer = Schema.toEncoderXml(
3021
+ Schema.toCodecStringTree(Schema.Struct({
3022
+ z: Schema.Number,
3023
+ a: Schema.Number,
3024
+ m: Schema.Number
3025
+ })),
3026
+ {
3027
+ sortKeys: false
3028
+ }
3029
+ )
3030
+ strictEqual(
3031
+ await Effect.runPromise(serializer({ z: 3, a: 1, m: 2 })),
3032
+ `<root>
3033
+ <z>3</z>
3034
+ <a>1</a>
3035
+ <m>2</m>
3036
+ </root>`
3037
+ )
3038
+ })
3039
+
3040
+ it("Circular Reference Detection", async () => {
3041
+ const obj: any = { name: "test" }
3042
+ obj.self = obj
3043
+
3044
+ const serializer = Schema.toEncoderXml(Schema.toCodecStringTree(Schema.Any))
3045
+ try {
3046
+ await Effect.runPromise(serializer(obj))
3047
+ throw new Error("Expected error")
3048
+ } catch (error: any) {
3049
+ strictEqual(error.message, "Cycle detected while serializing to XML.")
3050
+ }
3051
+ })
3052
+
3053
+ it("Nested Arrays", async () => {
3054
+ const schema = Schema.Array(Schema.Array(Schema.Number))
3055
+ await assertXml(
3056
+ schema,
3057
+ [[1, 2], [3, 4]],
3058
+ `<root>
3059
+ <item>
3060
+ <item>1</item>
3061
+ <item>2</item>
3062
+ </item>
3063
+ <item>
3064
+ <item>3</item>
3065
+ <item>4</item>
3066
+ </item>
3067
+ </root>`
3068
+ )
3069
+ })
3070
+
3071
+ it("Record with Number Keys", async () => {
3072
+ const schema = Schema.Record(Schema.Number, Schema.String)
3073
+ await assertXml(
3074
+ schema,
3075
+ { 1: "one", 2: "two" },
3076
+ `<root>
3077
+ <_1 data-name="1">one</_1>
3078
+ <_2 data-name="2">two</_2>
3079
+ </root>`
3080
+ )
3081
+ })
3082
+
3083
+ it("Record with Symbol Keys", async () => {
3084
+ const sym1 = Symbol.for("key1")
3085
+ const sym2 = Symbol.for("key2")
3086
+ const schema = Schema.Record(Schema.Symbol, Schema.String)
3087
+ await assertXml(
3088
+ schema,
3089
+ { [sym1]: "value1", [sym2]: "value2" },
3090
+ `<root>
3091
+ <Symbol_key1_ data-name="Symbol(key1)">value1</Symbol_key1_>
3092
+ <Symbol_key2_ data-name="Symbol(key2)">value2</Symbol_key2_>
3093
+ </root>`
3094
+ )
3095
+ })
3096
+
3097
+ it("Tuple with Rest", async () => {
3098
+ const schema = Schema.TupleWithRest(Schema.Tuple([Schema.String, Schema.Number]), [Schema.Boolean])
3099
+ await assertXml(
3100
+ schema,
3101
+ ["test", 42, true, false],
3102
+ `<root>
3103
+ <item>test</item>
3104
+ <item>42</item>
3105
+ <item>true</item>
3106
+ <item>false</item>
3107
+ </root>`
3108
+ )
3109
+ })
3110
+
3111
+ it("Suspend (Recursive Types)", async () => {
3112
+ interface Tree {
3113
+ readonly value: number
3114
+ readonly children: ReadonlyArray<Tree>
3115
+ }
3116
+
3117
+ const Tree: Schema.Codec<Tree> = Schema.Struct({
3118
+ value: Schema.Number,
3119
+ children: Schema.Array(Schema.suspend(() => Tree))
3120
+ })
3121
+
3122
+ const tree: Tree = {
3123
+ value: 1,
3124
+ children: [
3125
+ { value: 2, children: [] },
3126
+ { value: 3, children: [] }
3127
+ ]
3128
+ }
3129
+
3130
+ await assertXml(
3131
+ Tree,
3132
+ tree,
3133
+ `<root>
3134
+ <children>
3135
+ <item>
3136
+ <children/>
3137
+ <value>2</value>
3138
+ </item>
3139
+ <item>
3140
+ <children/>
3141
+ <value>3</value>
3142
+ </item>
3143
+ </children>
3144
+ <value>1</value>
3145
+ </root>`
3146
+ )
3147
+ })
3148
+ })
3149
+ })