@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.
- package/HARNESS.md +34 -0
- package/README.md +113 -0
- package/dist/bin/effect-harness.d.ts +2 -0
- package/dist/bin/effect-harness.js +39 -0
- package/dist/bin/effect-harness.js.map +1 -0
- package/dist/src/cli/Main.d.ts +6 -0
- package/dist/src/cli/Main.js +141 -0
- package/dist/src/cli/Main.js.map +1 -0
- package/dist/src/harness/CraftSkills.d.ts +14 -0
- package/dist/src/harness/CraftSkills.js +164 -0
- package/dist/src/harness/CraftSkills.js.map +1 -0
- package/dist/src/harness/Errors.d.ts +24 -0
- package/dist/src/harness/Errors.js +26 -0
- package/dist/src/harness/Errors.js.map +1 -0
- package/dist/src/harness/GuardrailRules.d.ts +6 -0
- package/dist/src/harness/GuardrailRules.js +303 -0
- package/dist/src/harness/GuardrailRules.js.map +1 -0
- package/dist/src/harness/Guardrails.d.ts +10 -0
- package/dist/src/harness/Guardrails.js +69 -0
- package/dist/src/harness/Guardrails.js.map +1 -0
- package/dist/src/harness/Init.d.ts +9 -0
- package/dist/src/harness/Init.js +234 -0
- package/dist/src/harness/Init.js.map +1 -0
- package/dist/src/harness/Model.d.ts +44 -0
- package/dist/src/harness/Model.js +169 -0
- package/dist/src/harness/Model.js.map +1 -0
- package/dist/src/harness/ModuleSources.d.ts +5 -0
- package/dist/src/harness/ModuleSources.js +47 -0
- package/dist/src/harness/ModuleSources.js.map +1 -0
- package/dist/src/harness/PnpmWorkspace.d.ts +2 -0
- package/dist/src/harness/PnpmWorkspace.js +23 -0
- package/dist/src/harness/PnpmWorkspace.js.map +1 -0
- package/dist/src/harness/Publish.d.ts +53 -0
- package/dist/src/harness/Publish.js +282 -0
- package/dist/src/harness/Publish.js.map +1 -0
- package/dist/src/harness/SelfVerify.d.ts +4 -0
- package/dist/src/harness/SelfVerify.js +56 -0
- package/dist/src/harness/SelfVerify.js.map +1 -0
- package/dist/src/harness/SourcePin.d.ts +12 -0
- package/dist/src/harness/SourcePin.js +320 -0
- package/dist/src/harness/SourcePin.js.map +1 -0
- package/dist/src/harness/Status.d.ts +12 -0
- package/dist/src/harness/Status.js +88 -0
- package/dist/src/harness/Status.js.map +1 -0
- package/dist/src/harness/TargetVerify.d.ts +8 -0
- package/dist/src/harness/TargetVerify.js +432 -0
- package/dist/src/harness/TargetVerify.js.map +1 -0
- package/dist/src/harness/TestContract.d.ts +6 -0
- package/dist/src/harness/TestContract.js +45 -0
- package/dist/src/harness/TestContract.js.map +1 -0
- package/dist/src/platform/Json.d.ts +8 -0
- package/dist/src/platform/Json.js +35 -0
- package/dist/src/platform/Json.js.map +1 -0
- package/dist/src/platform/ManagedFiles.d.ts +8 -0
- package/dist/src/platform/ManagedFiles.js +59 -0
- package/dist/src/platform/ManagedFiles.js.map +1 -0
- package/dist/src/platform/Process.d.ts +8 -0
- package/dist/src/platform/Process.js +80 -0
- package/dist/src/platform/Process.js.map +1 -0
- package/guide/default-capabilities.md +38 -0
- package/guide/index.md +49 -0
- package/guide/setup.md +64 -0
- package/harness/default-capabilities.md +32 -0
- package/harness/exposure.md +46 -0
- package/harness/feedback/index.md +60 -0
- package/harness/index.md +22 -0
- package/harness/official-inventory.md +85 -0
- package/harness/runtime/codex/AGENTS.fragment.md +28 -0
- package/harness/runtime/codex/agents/effect-worker.md +26 -0
- package/harness/runtime/codex/skills/effect-code/SKILL.md +72 -0
- package/harness/runtime/codex/skills/effect-code/agents/openai.yaml +4 -0
- package/harness/runtime/codex/skills/effect-feedback/SKILL.md +66 -0
- package/harness/runtime/codex/skills/effect-feedback/agents/openai.yaml +4 -0
- package/harness/source.md +52 -0
- package/harness/target-agent-contract.md +205 -0
- package/package.json +68 -0
- package/repos/craft-skills.manifest.json +34 -0
- package/repos/effect/.agents/skills/grill-me/SKILL.md +43 -0
- package/repos/effect/.agents/skills/jsdocs/SKILL.md +203 -0
- package/repos/effect/.agents/skills/scratchpad/SKILL.md +44 -0
- package/repos/effect/.agents/skills/scratchpad/agents/openai.yaml +7 -0
- package/repos/effect/.agents/skills/scratchpad/scripts/extract-example.mjs +260 -0
- package/repos/effect/.changeset/add-bigdecimal-sumall-multiplyall.md +5 -0
- package/repos/effect/.changeset/add-chunk-schema.md +5 -0
- package/repos/effect/.changeset/add-command-hidden.md +19 -0
- package/repos/effect/.changeset/add-config-nested.md +5 -0
- package/repos/effect/.changeset/add-flag-hidden.md +15 -0
- package/repos/effect/.changeset/add-from-string-schemas.md +5 -0
- package/repos/effect/.changeset/add-headers-remove-many.md +5 -0
- package/repos/effect/.changeset/add-indexeddb-kvs-layer.md +5 -0
- package/repos/effect/.changeset/add-make-msgpack.md +5 -0
- package/repos/effect/.changeset/add-make-option.md +5 -0
- package/repos/effect/.changeset/add-missing-tx-modules.md +11 -0
- package/repos/effect/.changeset/add-newtype-module.md +5 -0
- package/repos/effect/.changeset/add-scalar-show-operation-id.md +5 -0
- package/repos/effect/.changeset/add-schedule-tap.md +5 -0
- package/repos/effect/.changeset/add-schema-annotate-encoded.md +5 -0
- package/repos/effect/.changeset/add-schema-array-ensure.md +5 -0
- package/repos/effect/.changeset/add-schema-bigdecimal.md +5 -0
- package/repos/effect/.changeset/add-schema-datetime.md +5 -0
- package/repos/effect/.changeset/add-schema-option-from-optional-nullor.md +5 -0
- package/repos/effect/.changeset/add-schema-option-from-undefined-nullish.md +5 -0
- package/repos/effect/.changeset/add-schema-string-encoding.md +5 -0
- package/repos/effect/.changeset/add-sql-pglite.md +5 -0
- package/repos/effect/.changeset/add-standard-jsdoc-rule.md +5 -0
- package/repos/effect/.changeset/add-stream-broadcastn.md +5 -0
- package/repos/effect/.changeset/add-unstable-encoding-export.md +5 -0
- package/repos/effect/.changeset/afraid-cobras-like.md +5 -0
- package/repos/effect/.changeset/ai-openai-config-field-leak.md +6 -0
- package/repos/effect/.changeset/ai-openai-file-nullable-fields.md +5 -0
- package/repos/effect/.changeset/anthropic-4-6-structured-output.md +5 -0
- package/repos/effect/.changeset/asyncresult-exhaustive.md +5 -0
- package/repos/effect/.changeset/atom-stream-error-type.md +5 -0
- package/repos/effect/.changeset/beige-paths-sort.md +5 -0
- package/repos/effect/.changeset/better-apples-nail.md +5 -0
- package/repos/effect/.changeset/better-rocks-arrive.md +5 -0
- package/repos/effect/.changeset/big-pans-look.md +5 -0
- package/repos/effect/.changeset/blue-dingos-greet.md +5 -0
- package/repos/effect/.changeset/blue-ligers-cheat.md +5 -0
- package/repos/effect/.changeset/blue-onions-smile.md +5 -0
- package/repos/effect/.changeset/blue-ravens-type.md +5 -0
- package/repos/effect/.changeset/blue-trams-kiss.md +7 -0
- package/repos/effect/.changeset/bold-chairs-yawn.md +5 -0
- package/repos/effect/.changeset/bold-planets-shout.md +30 -0
- package/repos/effect/.changeset/breezy-meals-see.md +5 -0
- package/repos/effect/.changeset/bright-bugs-bow.md +5 -0
- package/repos/effect/.changeset/bright-canyons-clean.md +5 -0
- package/repos/effect/.changeset/bright-dogs-fail.md +5 -0
- package/repos/effect/.changeset/bright-flags-stand.md +5 -0
- package/repos/effect/.changeset/bright-laws-teach.md +5 -0
- package/repos/effect/.changeset/bright-lemons-dance.md +5 -0
- package/repos/effect/.changeset/bright-planes-smash.md +5 -0
- package/repos/effect/.changeset/bright-rats-attend.md +5 -0
- package/repos/effect/.changeset/bright-toes-rush.md +5 -0
- package/repos/effect/.changeset/bumpy-boxes-teach.md +5 -0
- package/repos/effect/.changeset/busy-lions-sneeze.md +5 -0
- package/repos/effect/.changeset/busy-maps-attend.md +7 -0
- package/repos/effect/.changeset/calm-buckets-own.md +5 -0
- package/repos/effect/.changeset/calm-carrots-march.md +7 -0
- package/repos/effect/.changeset/calm-cars-rest.md +5 -0
- package/repos/effect/.changeset/calm-panthers-nail.md +5 -0
- package/repos/effect/.changeset/calm-seas-smile.md +5 -0
- package/repos/effect/.changeset/calm-squids-hug.md +5 -0
- package/repos/effect/.changeset/chatty-poets-type.md +5 -0
- package/repos/effect/.changeset/chilled-mice-wash.md +5 -0
- package/repos/effect/.changeset/chilly-pumas-rule.md +5 -0
- package/repos/effect/.changeset/chubby-buckets-feel.md +5 -0
- package/repos/effect/.changeset/chubby-parents-flow.md +5 -0
- package/repos/effect/.changeset/chubby-planets-fall.md +5 -0
- package/repos/effect/.changeset/clean-balloons-tan.md +5 -0
- package/repos/effect/.changeset/clean-bulldogs-care.md +5 -0
- package/repos/effect/.changeset/clean-dryers-sneeze.md +5 -0
- package/repos/effect/.changeset/clean-geese-work.md +5 -0
- package/repos/effect/.changeset/clean-goats-wave.md +5 -0
- package/repos/effect/.changeset/clean-needles-shake.md +23 -0
- package/repos/effect/.changeset/clean-tires-guess.md +5 -0
- package/repos/effect/.changeset/clear-spies-boil.md +5 -0
- package/repos/effect/.changeset/cli-help-choices.md +5 -0
- package/repos/effect/.changeset/cold-knives-lie.md +35 -0
- package/repos/effect/.changeset/cold-rooms-show.md +5 -0
- package/repos/effect/.changeset/cold-sloths-wave.md +5 -0
- package/repos/effect/.changeset/compact-json-schema-enum.md +25 -0
- package/repos/effect/.changeset/config-withdefault-eager.md +7 -0
- package/repos/effect/.changeset/config.json +24 -0
- package/repos/effect/.changeset/consolidate-encoding.md +5 -0
- package/repos/effect/.changeset/consolidate-sql-error.md +16 -0
- package/repos/effect/.changeset/crisp-seas-warn.md +5 -0
- package/repos/effect/.changeset/cuddly-rooms-bet.md +5 -0
- package/repos/effect/.changeset/curly-poems-talk.md +5 -0
- package/repos/effect/.changeset/curly-spies-relax.md +5 -0
- package/repos/effect/.changeset/curvy-apples-float.md +5 -0
- package/repos/effect/.changeset/custom-http-security-openapi-generator.md +5 -0
- package/repos/effect/.changeset/cute-heads-thank.md +5 -0
- package/repos/effect/.changeset/cyan-loops-grow.md +5 -0
- package/repos/effect/.changeset/cyan-radios-switch.md +5 -0
- package/repos/effect/.changeset/deep-rivers-spend.md +5 -0
- package/repos/effect/.changeset/dirty-lamps-trade.md +5 -0
- package/repos/effect/.changeset/dirty-laws-wear.md +5 -0
- package/repos/effect/.changeset/duration-temporal-object-input.md +7 -0
- package/repos/effect/.changeset/eager-coats-cheat.md +5 -0
- package/repos/effect/.changeset/early-birds-dream.md +5 -0
- package/repos/effect/.changeset/early-donuts-argue.md +5 -0
- package/repos/effect/.changeset/early-peaches-check.md +6 -0
- package/repos/effect/.changeset/eff-691-default-logger-ordering.md +5 -0
- package/repos/effect/.changeset/eff-693-rpcgroup-handler-deps.md +5 -0
- package/repos/effect/.changeset/eff-694-cli-completions-module.md +5 -0
- package/repos/effect/.changeset/eff-695-layer-mock-dual-api.md +5 -0
- package/repos/effect/.changeset/eff-697-rpcserialization-json-array-decode.md +5 -0
- package/repos/effect/.changeset/eff-698-rpcserialization-unreachable-branch.md +5 -0
- package/repos/effect/.changeset/eff-700-httpapi-middleware-errors.md +12 -0
- package/repos/effect/.changeset/eff-701-httpapierror-respondable.md +5 -0
- package/repos/effect/.changeset/eff-704-stream-merge-predicate.md +5 -0
- package/repos/effect/.changeset/eff-705-layer-tap-apis.md +5 -0
- package/repos/effect/.changeset/eff-706-servicemap-mutate.md +6 -0
- package/repos/effect/.changeset/eff-716-response-id-tracker-map.md +5 -0
- package/repos/effect/.changeset/eff-717-openai-socket-cancel.md +5 -0
- package/repos/effect/.changeset/eff-718-embedding-model-surface.md +13 -0
- package/repos/effect/.changeset/eff-725-fix-catch-jsdoc.md +5 -0
- package/repos/effect/.changeset/eff-726-model-dimensions.md +7 -0
- package/repos/effect/.changeset/eff-727-cli-help-alignment.md +5 -0
- package/repos/effect/.changeset/eff-730-language-model-incremental-fallback.md +5 -0
- package/repos/effect/.changeset/eff-736-cached-with-ttl.md +5 -0
- package/repos/effect/.changeset/eff-738-cron-prev.md +5 -0
- package/repos/effect/.changeset/eff-739-openai-function-call-done.md +5 -0
- package/repos/effect/.changeset/eff-740-missing-summary-parts.md +5 -0
- package/repos/effect/.changeset/eff-742-http-client-request-web.md +5 -0
- package/repos/effect/.changeset/eff-744-sqlite-migrator-lock.md +5 -0
- package/repos/effect/.changeset/eff-746-fixed-iteration-catchup.md +5 -0
- package/repos/effect/.changeset/eff-747-unify-effect.md +5 -0
- package/repos/effect/.changeset/eff-754-url-builder-any.md +6 -0
- package/repos/effect/.changeset/eff-755-references-core.md +5 -0
- package/repos/effect/.changeset/eff-769-select-text-highlight.md +5 -0
- package/repos/effect/.changeset/eff-774-mutable-list-append-all-empty-array.md +5 -0
- package/repos/effect/.changeset/eff-777-schema-make-effect.md +5 -0
- package/repos/effect/.changeset/eff-778-http-middleware-path-logger.md +5 -0
- package/repos/effect/.changeset/eff-779-keyvaluestore-layer-sql.md +5 -0
- package/repos/effect/.changeset/eff-780-layer-unify.md +5 -0
- package/repos/effect/.changeset/eff-781-fix-stream-toqueue-types.md +5 -0
- package/repos/effect/.changeset/eff-782-httpapi-status-literals.md +5 -0
- package/repos/effect/.changeset/eff-783-atom-http-api-errors.md +5 -0
- package/repos/effect/.changeset/eff-819-cluster-workflow-shard-groups.md +5 -0
- package/repos/effect/.changeset/eight-turkeys-own.md +7 -0
- package/repos/effect/.changeset/eighty-lies-deny.md +5 -0
- package/repos/effect/.changeset/eighty-poets-draw.md +9 -0
- package/repos/effect/.changeset/eighty-swans-scream.md +5 -0
- package/repos/effect/.changeset/eighty-teeth-sniff.md +5 -0
- package/repos/effect/.changeset/eleven-apes-share.md +5 -0
- package/repos/effect/.changeset/eleven-numbers-bake.md +5 -0
- package/repos/effect/.changeset/empty-gifts-beg.md +5 -0
- package/repos/effect/.changeset/empty-http-rpc-client.md +5 -0
- package/repos/effect/.changeset/eventlog-unencrypted.md +5 -0
- package/repos/effect/.changeset/expand-schema-filter-output.md +24 -0
- package/repos/effect/.changeset/export-schema-encode-keys-interface.md +7 -0
- package/repos/effect/.changeset/extract-semaphore-latch.md +10 -0
- package/repos/effect/.changeset/fair-bees-relax.md +5 -0
- package/repos/effect/.changeset/fair-buttons-share.md +7 -0
- package/repos/effect/.changeset/fair-cooks-stop.md +5 -0
- package/repos/effect/.changeset/fair-cups-train.md +5 -0
- package/repos/effect/.changeset/fair-dryers-speak.md +5 -0
- package/repos/effect/.changeset/fair-forks-shake.md +5 -0
- package/repos/effect/.changeset/fair-pandas-prove.md +5 -0
- package/repos/effect/.changeset/fair-pants-float.md +5 -0
- package/repos/effect/.changeset/fair-poems-visit.md +5 -0
- package/repos/effect/.changeset/famous-wolves-lead.md +5 -0
- package/repos/effect/.changeset/fancy-glasses-grow.md +5 -0
- package/repos/effect/.changeset/fast-times-camp.md +5 -0
- package/repos/effect/.changeset/few-birds-matter.md +5 -0
- package/repos/effect/.changeset/few-cougars-dig.md +5 -0
- package/repos/effect/.changeset/few-foxes-grin.md +5 -0
- package/repos/effect/.changeset/few-mirrors-pull.md +14 -0
- package/repos/effect/.changeset/few-socks-poke.md +5 -0
- package/repos/effect/.changeset/fiber-runtime-start-metrics.md +5 -0
- package/repos/effect/.changeset/fiery-jokes-care.md +5 -0
- package/repos/effect/.changeset/fiery-mammals-call.md +5 -0
- package/repos/effect/.changeset/fine-walls-decide.md +5 -0
- package/repos/effect/.changeset/first-success-of.md +5 -0
- package/repos/effect/.changeset/five-parents-relax.md +5 -0
- package/repos/effect/.changeset/five-worms-rhyme.md +5 -0
- package/repos/effect/.changeset/fix-1332.md +5 -0
- package/repos/effect/.changeset/fix-1917.md +11 -0
- package/repos/effect/.changeset/fix-1927.md +5 -0
- package/repos/effect/.changeset/fix-1940.md +7 -0
- package/repos/effect/.changeset/fix-1947.md +7 -0
- package/repos/effect/.changeset/fix-2002.md +5 -0
- package/repos/effect/.changeset/fix-2012.md +5 -0
- package/repos/effect/.changeset/fix-2015.md +5 -0
- package/repos/effect/.changeset/fix-2260.md +5 -0
- package/repos/effect/.changeset/fix-2268.md +5 -0
- package/repos/effect/.changeset/fix-2271.md +5 -0
- package/repos/effect/.changeset/fix-2384.md +7 -0
- package/repos/effect/.changeset/fix-ai-empty-params-structured-output.md +5 -0
- package/repos/effect/.changeset/fix-ai-text-toolkit-typing.md +5 -0
- package/repos/effect/.changeset/fix-catch-orelse-error-erasure.md +5 -0
- package/repos/effect/.changeset/fix-class-constructor-defaults.md +5 -0
- package/repos/effect/.changeset/fix-cli-mixed-global-flag-context.md +7 -0
- package/repos/effect/.changeset/fix-config-withDefault.md +5 -0
- package/repos/effect/.changeset/fix-config-withdefault-filter.md +7 -0
- package/repos/effect/.changeset/fix-datetime-gmt.md +5 -0
- package/repos/effect/.changeset/fix-devtools-flush-on-teardown.md +10 -0
- package/repos/effect/.changeset/fix-duration-symmetric-rounding.md +5 -0
- package/repos/effect/.changeset/fix-entity-manager-defect-replay.md +5 -0
- package/repos/effect/.changeset/fix-entity-proxy-rpc-handler-context.md +5 -0
- package/repos/effect/.changeset/fix-entity-proxy-server-path-params.md +5 -0
- package/repos/effect/.changeset/fix-from-readable-stream-cancel-defect.md +5 -0
- package/repos/effect/.changeset/fix-graph-undirected-traversal.md +5 -0
- package/repos/effect/.changeset/fix-has-interrupts-only-empty.md +5 -0
- package/repos/effect/.changeset/fix-hashmap-bit31-ordering.md +5 -0
- package/repos/effect/.changeset/fix-headers-proto-enumerability.md +5 -0
- package/repos/effect/.changeset/fix-http-incoming-message-parse-options.md +5 -0
- package/repos/effect/.changeset/fix-httpapi-endpoint-error-inference.md +5 -0
- package/repos/effect/.changeset/fix-httpapi-schema-types.md +5 -0
- package/repos/effect/.changeset/fix-httpapi-security-middleware-cache.md +5 -0
- package/repos/effect/.changeset/fix-is-json-dag.md +7 -0
- package/repos/effect/.changeset/fix-json-schema-anyof-oneof-siblings.md +5 -0
- package/repos/effect/.changeset/fix-json-schema-import-json.md +5 -0
- package/repos/effect/.changeset/fix-keepalive-blocked-timers.md +5 -0
- package/repos/effect/.changeset/fix-mcp-param-name-resolution.md +5 -0
- package/repos/effect/.changeset/fix-mermaid-escape-special-chars.md +5 -0
- package/repos/effect/.changeset/fix-mutable-list-filter-length.md +5 -0
- package/repos/effect/.changeset/fix-object-keyword-json-schema.md +5 -0
- package/repos/effect/.changeset/fix-openai-mcp-tool-names.md +5 -0
- package/repos/effect/.changeset/fix-openapi-generator-form-urlencoded.md +5 -0
- package/repos/effect/.changeset/fix-openapi-generator-swagger2openapi.md +5 -0
- package/repos/effect/.changeset/fix-openapi-preserve-multiple-response-content-types.md +5 -0
- package/repos/effect/.changeset/fix-openrouter-sparse-array.md +5 -0
- package/repos/effect/.changeset/fix-otel-logger-clock-skew.md +7 -0
- package/repos/effect/.changeset/fix-otel-logger-severity-number.md +20 -0
- package/repos/effect/.changeset/fix-queue-collect-duplication.md +5 -0
- package/repos/effect/.changeset/fix-random-string-seeds.md +5 -0
- package/repos/effect/.changeset/fix-ratelimiter-tokenbucket-redis-ttl.md +5 -0
- package/repos/effect/.changeset/fix-remainder-scientific-notation.md +5 -0
- package/repos/effect/.changeset/fix-request-resolver-pending-batches-leak.md +5 -0
- package/repos/effect/.changeset/fix-retry-transient-autocomplete.md +5 -0
- package/repos/effect/.changeset/fix-rpc-http-requestids-finalizer.md +5 -0
- package/repos/effect/.changeset/fix-rpc-json-id-edges.md +5 -0
- package/repos/effect/.changeset/fix-schedule-fixed-double-exec.md +9 -0
- package/repos/effect/.changeset/fix-schedule-reduce-sync-state.md +5 -0
- package/repos/effect/.changeset/fix-schema-arbitrary-exclusive-bounds.md +5 -0
- package/repos/effect/.changeset/fix-schema-defect-message.md +5 -0
- package/repos/effect/.changeset/fix-schema-encode-keys-property-keys.md +5 -0
- package/repos/effect/.changeset/fix-schema-encodekeys-class.md +5 -0
- package/repos/effect/.changeset/fix-schema-encodekeys-struct.md +5 -0
- package/repos/effect/.changeset/fix-schema-identifier-expected-message.md +5 -0
- package/repos/effect/.changeset/fix-schema-is-uuid.md +5 -0
- package/repos/effect/.changeset/fix-schema-option-non-schema-failures.md +17 -0
- package/repos/effect/.changeset/fix-schema-parser-checks.md +9 -0
- package/repos/effect/.changeset/fix-searchparam-initial-decode.md +5 -0
- package/repos/effect/.changeset/fix-serializable-wire-transfer.md +7 -0
- package/repos/effect/.changeset/fix-stream-grouped-within-flush.md +5 -0
- package/repos/effect/.changeset/fix-stream-run-for-each-while.md +5 -0
- package/repos/effect/.changeset/fix-stream-scan-effect.md +5 -0
- package/repos/effect/.changeset/fix-stream-scoped-scope.md +5 -0
- package/repos/effect/.changeset/fix-strip-approval-artifacts-multi-round.md +13 -0
- package/repos/effect/.changeset/fix-struct-utility-types-simplify.md +5 -0
- package/repos/effect/.changeset/fix-structwithrest-index-signatures.md +6 -0
- package/repos/effect/.changeset/fix-tagged-union-class-sentinels.md +5 -0
- package/repos/effect/.changeset/fix-tagged-union-match-unify.md +6 -0
- package/repos/effect/.changeset/fix-to-tagged-union-isanyof-custom-tags.md +10 -0
- package/repos/effect/.changeset/fix-tuple-with-rest-post-rest-index-drift.md +5 -0
- package/repos/effect/.changeset/fix-tuple-with-rest-post-rest-validation.md +5 -0
- package/repos/effect/.changeset/fix-types-voidifempty.md +5 -0
- package/repos/effect/.changeset/fix-void-response-encoding.md +5 -0
- package/repos/effect/.changeset/fix-workflow-proxy-rpc-handler-context.md +5 -0
- package/repos/effect/.changeset/flat-chicken-remain.md +5 -0
- package/repos/effect/.changeset/floppy-cows-spend.md +5 -0
- package/repos/effect/.changeset/floppy-items-admire.md +5 -0
- package/repos/effect/.changeset/floppy-pigs-kiss.md +5 -0
- package/repos/effect/.changeset/fluffy-meals-matter.md +5 -0
- package/repos/effect/.changeset/fluffy-pumas-push.md +5 -0
- package/repos/effect/.changeset/forked-memo-maps.md +6 -0
- package/repos/effect/.changeset/forty-hounds-cheer.md +5 -0
- package/repos/effect/.changeset/forty-otters-cry.md +5 -0
- package/repos/effect/.changeset/forty-rings-film.md +7 -0
- package/repos/effect/.changeset/forty-signs-stay.md +5 -0
- package/repos/effect/.changeset/forty-swans-divide.md +5 -0
- package/repos/effect/.changeset/forty-trees-pay.md +5 -0
- package/repos/effect/.changeset/four-papayas-bow.md +5 -0
- package/repos/effect/.changeset/four-points-repeat.md +5 -0
- package/repos/effect/.changeset/fresh-cats-smash.md +5 -0
- package/repos/effect/.changeset/fresh-emus-cheat.md +5 -0
- package/repos/effect/.changeset/fresh-monkeys-smoke.md +9 -0
- package/repos/effect/.changeset/fruity-houses-learn.md +6 -0
- package/repos/effect/.changeset/full-adults-double.md +5 -0
- package/repos/effect/.changeset/funny-crabs-hang.md +6 -0
- package/repos/effect/.changeset/funny-forks-move.md +5 -0
- package/repos/effect/.changeset/fuzzy-camels-hunt.md +5 -0
- package/repos/effect/.changeset/fuzzy-dodos-help.md +5 -0
- package/repos/effect/.changeset/fuzzy-lions-perform.md +5 -0
- package/repos/effect/.changeset/fuzzy-planets-sneeze.md +5 -0
- package/repos/effect/.changeset/gold-meteors-move.md +5 -0
- package/repos/effect/.changeset/gold-readers-hug.md +5 -0
- package/repos/effect/.changeset/gold-rings-start.md +5 -0
- package/repos/effect/.changeset/good-tools-work.md +7 -0
- package/repos/effect/.changeset/graph-algorithm-fixes.md +5 -0
- package/repos/effect/.changeset/great-trains-mate.md +5 -0
- package/repos/effect/.changeset/great-trams-report.md +5 -0
- package/repos/effect/.changeset/green-beds-unref.md +7 -0
- package/repos/effect/.changeset/green-chips-wash.md +5 -0
- package/repos/effect/.changeset/green-moons-smile.md +5 -0
- package/repos/effect/.changeset/green-pugs-play.md +5 -0
- package/repos/effect/.changeset/green-rings-prove.md +5 -0
- package/repos/effect/.changeset/happy-mirrors-dream.md +5 -0
- package/repos/effect/.changeset/heavy-loops-cut.md +5 -0
- package/repos/effect/.changeset/heavy-trams-fix.md +5 -0
- package/repos/effect/.changeset/hip-socks-travel.md +5 -0
- package/repos/effect/.changeset/honest-pens-thank.md +5 -0
- package/repos/effect/.changeset/honest-rivers-notice.md +5 -0
- package/repos/effect/.changeset/hot-taxis-fry.md +5 -0
- package/repos/effect/.changeset/httpapi-endpoint-relax-constraints.md +5 -0
- package/repos/effect/.changeset/httpapi-schema-service-types.md +6 -0
- package/repos/effect/.changeset/huge-moons-rhyme.md +5 -0
- package/repos/effect/.changeset/humble-pigs-dig.md +5 -0
- package/repos/effect/.changeset/icy-flies-cross.md +5 -0
- package/repos/effect/.changeset/itchy-radios-poke.md +5 -0
- package/repos/effect/.changeset/itchy-results-bet.md +5 -0
- package/repos/effect/.changeset/itchy-shrimps-deny.md +5 -0
- package/repos/effect/.changeset/itchy-toes-promise.md +5 -0
- package/repos/effect/.changeset/k8s-last-transition-null.md +5 -0
- package/repos/effect/.changeset/khaki-cats-learn.md +5 -0
- package/repos/effect/.changeset/khaki-melons-appear.md +5 -0
- package/repos/effect/.changeset/kind-hounds-float.md +5 -0
- package/repos/effect/.changeset/kind-windows-fall.md +5 -0
- package/repos/effect/.changeset/late-hotels-rule.md +5 -0
- package/repos/effect/.changeset/late-lamps-care.md +5 -0
- package/repos/effect/.changeset/late-rivers-applaud.md +5 -0
- package/repos/effect/.changeset/layer-map-dynamic-idle-ttl.md +5 -0
- package/repos/effect/.changeset/lazy-queens-rush.md +5 -0
- package/repos/effect/.changeset/lazy-recursive-forward-refs.md +5 -0
- package/repos/effect/.changeset/lazy-timers-exist.md +5 -0
- package/repos/effect/.changeset/legal-pants-drop.md +5 -0
- package/repos/effect/.changeset/lemon-taxis-sin.md +5 -0
- package/repos/effect/.changeset/light-kids-sneeze.md +5 -0
- package/repos/effect/.changeset/little-dryers-allow.md +7 -0
- package/repos/effect/.changeset/long-cameras-think.md +5 -0
- package/repos/effect/.changeset/lovely-cobras-change.md +5 -0
- package/repos/effect/.changeset/lovely-frogs-rescue.md +5 -0
- package/repos/effect/.changeset/lucky-buttons-jump.md +5 -0
- package/repos/effect/.changeset/lucky-phones-listen.md +5 -0
- package/repos/effect/.changeset/lucky-worms-type.md +5 -0
- package/repos/effect/.changeset/mean-dingos-share.md +5 -0
- package/repos/effect/.changeset/mean-trains-smash.md +5 -0
- package/repos/effect/.changeset/metal-parts-yell.md +5 -0
- package/repos/effect/.changeset/mighty-games-matter.md +5 -0
- package/repos/effect/.changeset/modern-uuid-guid-filter.md +5 -0
- package/repos/effect/.changeset/nasty-geese-grow.md +5 -0
- package/repos/effect/.changeset/neat-goats-wave.md +5 -0
- package/repos/effect/.changeset/neat-kings-chew.md +5 -0
- package/repos/effect/.changeset/neat-lions-rest.md +5 -0
- package/repos/effect/.changeset/neat-snails-wash.md +5 -0
- package/repos/effect/.changeset/neat-taxis-notice.md +5 -0
- package/repos/effect/.changeset/new-dogs-swim.md +5 -0
- package/repos/effect/.changeset/new-toes-stop.md +5 -0
- package/repos/effect/.changeset/ninety-geese-exist.md +5 -0
- package/repos/effect/.changeset/odd-boats-think.md +5 -0
- package/repos/effect/.changeset/odd-bulldogs-sleep.md +5 -0
- package/repos/effect/.changeset/odd-fans-glow.md +5 -0
- package/repos/effect/.changeset/odd-forks-talk.md +5 -0
- package/repos/effect/.changeset/odd-laws-draw.md +5 -0
- package/repos/effect/.changeset/odd-owls-smoke.md +5 -0
- package/repos/effect/.changeset/odd-socks-boil.md +5 -0
- package/repos/effect/.changeset/odd-suns-dance.md +5 -0
- package/repos/effect/.changeset/old-brooms-cry.md +5 -0
- package/repos/effect/.changeset/old-facts-stand.md +5 -0
- package/repos/effect/.changeset/old-mirrors-float.md +5 -0
- package/repos/effect/.changeset/olive-poems-visit.md +5 -0
- package/repos/effect/.changeset/open-hotels-remain.md +5 -0
- package/repos/effect/.changeset/openai-compat-nullable-tool-name.md +7 -0
- package/repos/effect/.changeset/openai-compat-reasoning.md +5 -0
- package/repos/effect/.changeset/otel-resource-env-precedence.md +5 -0
- package/repos/effect/.changeset/perfect-buckets-tickle.md +5 -0
- package/repos/effect/.changeset/petite-months-allow.md +6 -0
- package/repos/effect/.changeset/platform-crypto-service.md +9 -0
- package/repos/effect/.changeset/platform-node-shared-barrel.md +5 -0
- package/repos/effect/.changeset/plenty-moons-pull.md +5 -0
- package/repos/effect/.changeset/polite-brooms-tickle.md +5 -0
- package/repos/effect/.changeset/polite-pigs-speak.md +5 -0
- package/repos/effect/.changeset/polite-tables-kneel.md +5 -0
- package/repos/effect/.changeset/port-react-hydration.md +8 -0
- package/repos/effect/.changeset/pre.json +588 -0
- package/repos/effect/.changeset/public-deer-ring.md +5 -0
- package/repos/effect/.changeset/public-jeans-stop.md +5 -0
- package/repos/effect/.changeset/pubsub-publish-false.md +5 -0
- package/repos/effect/.changeset/puny-pens-clap.md +6 -0
- package/repos/effect/.changeset/purple-bars-prove.md +5 -0
- package/repos/effect/.changeset/purple-schools-float.md +5 -0
- package/repos/effect/.changeset/purple-turtles-draw.md +5 -0
- package/repos/effect/.changeset/quick-dragons-fix.md +5 -0
- package/repos/effect/.changeset/quick-falcons-travel.md +5 -0
- package/repos/effect/.changeset/quick-geese-relax.md +5 -0
- package/repos/effect/.changeset/quick-lamps-dig.md +5 -0
- package/repos/effect/.changeset/quick-lizards-fall.md +5 -0
- package/repos/effect/.changeset/quick-trees-join.md +5 -0
- package/repos/effect/.changeset/quiet-carpets-grin.md +5 -0
- package/repos/effect/.changeset/quiet-files-hunt.md +5 -0
- package/repos/effect/.changeset/quiet-lamps-jam.md +5 -0
- package/repos/effect/.changeset/quiet-radios-wave.md +5 -0
- package/repos/effect/.changeset/quiet-redis-scripts.md +5 -0
- package/repos/effect/.changeset/ready-olives-divide.md +5 -0
- package/repos/effect/.changeset/real-trains-ring.md +5 -0
- package/repos/effect/.changeset/red-pigs-repair.md +5 -0
- package/repos/effect/.changeset/redacted-representation-options.md +7 -0
- package/repos/effect/.changeset/refactor-cli-global-flags.md +27 -0
- package/repos/effect/.changeset/refactor-config-provider.md +23 -0
- package/repos/effect/.changeset/refactor-representation-references.md +5 -0
- package/repos/effect/.changeset/remove-effect-transactionwith.md +5 -0
- package/repos/effect/.changeset/remove-http-span-counter.md +5 -0
- package/repos/effect/.changeset/remove-nullor.md +5 -0
- package/repos/effect/.changeset/remove-openapi-fromapi-options.md +7 -0
- package/repos/effect/.changeset/remove-types-mergerecord.md +5 -0
- package/repos/effect/.changeset/remove-unused-utils-apis.md +5 -0
- package/repos/effect/.changeset/rename-rebuild-out.md +5 -0
- package/repos/effect/.changeset/restore-schema-parse-options.md +5 -0
- package/repos/effect/.changeset/rich-dots-push.md +5 -0
- package/repos/effect/.changeset/rich-hoops-nail.md +5 -0
- package/repos/effect/.changeset/rich-sloths-draw.md +5 -0
- package/repos/effect/.changeset/ripe-lies-battle.md +5 -0
- package/repos/effect/.changeset/rpc-middleware-provides-fix.md +5 -0
- package/repos/effect/.changeset/scalar-custom-fetch.md +5 -0
- package/repos/effect/.changeset/schema-as-class.md +17 -0
- package/repos/effect/.changeset/schema-asserts-signature.md +5 -0
- package/repos/effect/.changeset/schema-clean-up-additionalProperties.md +7 -0
- package/repos/effect/.changeset/schema-datetime-utc-from-string.md +5 -0
- package/repos/effect/.changeset/schema-decoding-defaults-services.md +7 -0
- package/repos/effect/.changeset/schema-defaults-issue-channel.md +7 -0
- package/repos/effect/.changeset/schema-dollar-prefix.md +5 -0
- package/repos/effect/.changeset/schema-missing-self-generic.md +5 -0
- package/repos/effect/.changeset/schema-ordered-arbitrary-constraints.md +12 -0
- package/repos/effect/.changeset/schema-parser-adapter-errors.md +5 -0
- package/repos/effect/.changeset/schema-refactor-toCodecJson.md +5 -0
- package/repos/effect/.changeset/schema-remove-annotate-in.md +5 -0
- package/repos/effect/.changeset/schema-rename-makeUnsafe-to-make.md +7 -0
- package/repos/effect/.changeset/schema-rename-parser-makeUnsafe.md +5 -0
- package/repos/effect/.changeset/schema-result-combinators.md +5 -0
- package/repos/effect/.changeset/schema-struct-simplify.md +5 -0
- package/repos/effect/.changeset/seven-mugs-marry.md +5 -0
- package/repos/effect/.changeset/shaggy-birds-stay.md +5 -0
- package/repos/effect/.changeset/shaggy-cities-push.md +5 -0
- package/repos/effect/.changeset/shaggy-numbers-accept.md +5 -0
- package/repos/effect/.changeset/sharp-emus-applaud.md +5 -0
- package/repos/effect/.changeset/sharp-goats-wink.md +5 -0
- package/repos/effect/.changeset/sharp-pandas-care.md +5 -0
- package/repos/effect/.changeset/sharp-peas-march.md +5 -0
- package/repos/effect/.changeset/sharp-rules-draw.md +5 -0
- package/repos/effect/.changeset/sharp-singers-sort.md +5 -0
- package/repos/effect/.changeset/shiny-trains-hug.md +5 -0
- package/repos/effect/.changeset/short-cows-relate.md +5 -0
- package/repos/effect/.changeset/short-foxes-admire.md +5 -0
- package/repos/effect/.changeset/shy-cycles-flow.md +5 -0
- package/repos/effect/.changeset/shy-geckos-sniff.md +30 -0
- package/repos/effect/.changeset/silent-geckos-matter.md +5 -0
- package/repos/effect/.changeset/silent-needles-design.md +6 -0
- package/repos/effect/.changeset/silent-plants-matter.md +8 -0
- package/repos/effect/.changeset/silent-spoons-stare.md +5 -0
- package/repos/effect/.changeset/silly-loops-tickle.md +5 -0
- package/repos/effect/.changeset/silver-bulk-indexeddb.md +5 -0
- package/repos/effect/.changeset/silver-emus-smoke.md +5 -0
- package/repos/effect/.changeset/silver-kings-poke.md +5 -0
- package/repos/effect/.changeset/silver-snails-sqlite.md +17 -0
- package/repos/effect/.changeset/silver-wings-watch.md +5 -0
- package/repos/effect/.changeset/six-cups-taste.md +5 -0
- package/repos/effect/.changeset/sixty-mails-shout.md +5 -0
- package/repos/effect/.changeset/sixty-socks-yell.md +5 -0
- package/repos/effect/.changeset/slimy-planets-divide.md +5 -0
- package/repos/effect/.changeset/slimy-turtles-juggle.md +5 -0
- package/repos/effect/.changeset/slow-beans-battle.md +28 -0
- package/repos/effect/.changeset/slow-berries-enjoy.md +5 -0
- package/repos/effect/.changeset/small-bugs-hunt.md +5 -0
- package/repos/effect/.changeset/small-crabs-care.md +9 -0
- package/repos/effect/.changeset/small-pets-sit.md +6 -0
- package/repos/effect/.changeset/smart-ducks-jump.md +6 -0
- package/repos/effect/.changeset/smart-pillows-buy.md +6 -0
- package/repos/effect/.changeset/smart-timers-fly.md +5 -0
- package/repos/effect/.changeset/smart-tips-sort.md +5 -0
- package/repos/effect/.changeset/social-pumas-prove.md +5 -0
- package/repos/effect/.changeset/soft-comics-wink.md +5 -0
- package/repos/effect/.changeset/soft-delete-sqlmodel.md +5 -0
- package/repos/effect/.changeset/soft-seals-allow.md +5 -0
- package/repos/effect/.changeset/solid-cougars-attack.md +5 -0
- package/repos/effect/.changeset/solid-doors-ring.md +5 -0
- package/repos/effect/.changeset/solid-items-tease.md +5 -0
- package/repos/effect/.changeset/solid-towns-smoke.md +5 -0
- package/repos/effect/.changeset/sour-canyons-rescue.md +5 -0
- package/repos/effect/.changeset/sparkly-bears-act.md +5 -0
- package/repos/effect/.changeset/sparkly-coins-sit.md +5 -0
- package/repos/effect/.changeset/spotty-comics-fry.md +5 -0
- package/repos/effect/.changeset/sql-migrator-mjs-mts.md +5 -0
- package/repos/effect/.changeset/stale-dots-tell.md +5 -0
- package/repos/effect/.changeset/stale-snakes-know.md +5 -0
- package/repos/effect/.changeset/strict-areas-end.md +5 -0
- package/repos/effect/.changeset/strict-buckets-hug.md +8 -0
- package/repos/effect/.changeset/strip-resolved-approvals.md +5 -0
- package/repos/effect/.changeset/strong-balloons-tickle.md +5 -0
- package/repos/effect/.changeset/strong-bees-queue.md +5 -0
- package/repos/effect/.changeset/struct-record.md +5 -0
- package/repos/effect/.changeset/sunny-ads-hang.md +5 -0
- package/repos/effect/.changeset/sunny-bikes-sleep.md +5 -0
- package/repos/effect/.changeset/sunny-rooms-invent.md +5 -0
- package/repos/effect/.changeset/sweet-donuts-bet.md +5 -0
- package/repos/effect/.changeset/sweet-hotels-give.md +5 -0
- package/repos/effect/.changeset/sweet-views-learn.md +5 -0
- package/repos/effect/.changeset/swift-spiders-unpack.md +5 -0
- package/repos/effect/.changeset/swift-symbols-stand.md +5 -0
- package/repos/effect/.changeset/tagged-error-class-optional-empty-props.md +5 -0
- package/repos/effect/.changeset/tall-hairs-return.md +5 -0
- package/repos/effect/.changeset/tall-mails-listen.md +5 -0
- package/repos/effect/.changeset/tall-queens-cheer.md +5 -0
- package/repos/effect/.changeset/tall-wombats-wave.md +5 -0
- package/repos/effect/.changeset/tangy-colts-lose.md +5 -0
- package/repos/effect/.changeset/tasty-comics-send.md +5 -0
- package/repos/effect/.changeset/ten-kings-fry.md +5 -0
- package/repos/effect/.changeset/thick-pandas-wait.md +5 -0
- package/repos/effect/.changeset/thin-ducks-wonder.md +5 -0
- package/repos/effect/.changeset/thirty-ducks-go.md +5 -0
- package/repos/effect/.changeset/thirty-pans-love.md +5 -0
- package/repos/effect/.changeset/three-corners-sort.md +5 -0
- package/repos/effect/.changeset/three-ravens-jam.md +5 -0
- package/repos/effect/.changeset/three-tomatoes-wave.md +5 -0
- package/repos/effect/.changeset/tidy-foxes-own.md +5 -0
- package/repos/effect/.changeset/tidy-icons-glow.md +5 -0
- package/repos/effect/.changeset/tidy-stacks-encode.md +5 -0
- package/repos/effect/.changeset/tidy-stars-drive.md +5 -0
- package/repos/effect/.changeset/tiny-buckets-wave.md +5 -0
- package/repos/effect/.changeset/tiny-lilies-flash.md +5 -0
- package/repos/effect/.changeset/tiny-rabbits-smile.md +5 -0
- package/repos/effect/.changeset/tocodecjson-return-json-type.md +10 -0
- package/repos/effect/.changeset/tool-get-json-schema-tests.md +5 -0
- package/repos/effect/.changeset/true-actors-battle.md +5 -0
- package/repos/effect/.changeset/twenty-buttons-cheer.md +5 -0
- package/repos/effect/.changeset/two-roses-double.md +5 -0
- package/repos/effect/.changeset/unify-error-defect-stack-options.md +23 -0
- package/repos/effect/.changeset/update-schema-arbitrary-report.md +22 -0
- package/repos/effect/.changeset/upset-colts-stick.md +5 -0
- package/repos/effect/.changeset/vast-bananas-send.md +5 -0
- package/repos/effect/.changeset/vast-deserts-travel.md +5 -0
- package/repos/effect/.changeset/violet-peaches-feel.md +5 -0
- package/repos/effect/.changeset/vitest-layer-top-level-options.md +5 -0
- package/repos/effect/.changeset/wacky-grapes-poke.md +5 -0
- package/repos/effect/.changeset/wacky-rice-add.md +5 -0
- package/repos/effect/.changeset/warm-dolls-brake.md +5 -0
- package/repos/effect/.changeset/warm-friends-tie.md +5 -0
- package/repos/effect/.changeset/warm-snails-shop.md +7 -0
- package/repos/effect/.changeset/wet-news-invent.md +5 -0
- package/repos/effect/.changeset/wild-readers-clean.md +5 -0
- package/repos/effect/.changeset/wild-suns-bearer-space.md +5 -0
- package/repos/effect/.changeset/wise-ants-wave.md +6 -0
- package/repos/effect/.changeset/wise-flags-shift.md +22 -0
- package/repos/effect/.changeset/wise-oranges-stay.md +5 -0
- package/repos/effect/.changeset/witty-lobsters-share.md +5 -0
- package/repos/effect/.changeset/yellow-adults-study.md +5 -0
- package/repos/effect/.changeset/yellow-clocks-dance.md +5 -0
- package/repos/effect/.changeset/yellow-dingos-jump.md +5 -0
- package/repos/effect/.changeset/young-doors-change.md +5 -0
- package/repos/effect/.envrc +1 -0
- package/repos/effect/.github/actions/setup/action.yaml +33 -0
- package/repos/effect/.github/workflows/ai-codegen.yml +66 -0
- package/repos/effect/.github/workflows/bundle-comment.yml +72 -0
- package/repos/effect/.github/workflows/check.yml +195 -0
- package/repos/effect/.github/workflows/release.yml +47 -0
- package/repos/effect/.github/workflows/snapshot.yml +34 -0
- package/repos/effect/.oxlintrc.json +25 -0
- package/repos/effect/.patterns/effect.md +102 -0
- package/repos/effect/.patterns/jsdoc.md +53 -0
- package/repos/effect/.patterns/testing.md +44 -0
- package/repos/effect/.specs/README.md +2 -0
- package/repos/effect/.vscode/extensions.json +6 -0
- package/repos/effect/.vscode/settings.json +44 -0
- package/repos/effect/AGENTS.md +139 -0
- package/repos/effect/LICENSE +21 -0
- package/repos/effect/LLMS.md +343 -0
- package/repos/effect/MIGRATION.md +83 -0
- package/repos/effect/README.md +3 -0
- package/repos/effect/TODOS.md +28 -0
- package/repos/effect/ai-docs/README.md +44 -0
- package/repos/effect/ai-docs/package.json +36 -0
- package/repos/effect/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
- package/repos/effect/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +39 -0
- package/repos/effect/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
- package/repos/effect/ai-docs/src/01_effect/01_basics/index.md +5 -0
- package/repos/effect/ai-docs/src/01_effect/02_services/01_service.ts +45 -0
- package/repos/effect/ai-docs/src/01_effect/02_services/10_reference.ts +10 -0
- package/repos/effect/ai-docs/src/01_effect/02_services/20_layer-composition.ts +70 -0
- package/repos/effect/ai-docs/src/01_effect/02_services/20_layer-unwrap.ts +66 -0
- package/repos/effect/ai-docs/src/01_effect/02_services/index.md +5 -0
- package/repos/effect/ai-docs/src/01_effect/03_errors/01_error-handling.ts +30 -0
- package/repos/effect/ai-docs/src/01_effect/03_errors/10_catch-tags.ts +24 -0
- package/repos/effect/ai-docs/src/01_effect/03_errors/20_reason-errors.ts +64 -0
- package/repos/effect/ai-docs/src/01_effect/03_errors/index.md +1 -0
- package/repos/effect/ai-docs/src/01_effect/04_resources/10_acquire-release.ts +105 -0
- package/repos/effect/ai-docs/src/01_effect/04_resources/20_layer-side-effects.ts +31 -0
- package/repos/effect/ai-docs/src/01_effect/04_resources/30_layer-map.ts +86 -0
- package/repos/effect/ai-docs/src/01_effect/04_resources/index.md +3 -0
- package/repos/effect/ai-docs/src/01_effect/05_running/10_run-main.ts +30 -0
- package/repos/effect/ai-docs/src/01_effect/05_running/20_layer-launch.ts +27 -0
- package/repos/effect/ai-docs/src/01_effect/05_running/index.md +1 -0
- package/repos/effect/ai-docs/src/01_effect/06_pubsub/10_pubsub.ts +56 -0
- package/repos/effect/ai-docs/src/01_effect/06_pubsub/index.md +3 -0
- package/repos/effect/ai-docs/src/02_stream/10_creating-streams.ts +103 -0
- package/repos/effect/ai-docs/src/02_stream/20_consuming-streams.ts +137 -0
- package/repos/effect/ai-docs/src/02_stream/30_encoding.ts +165 -0
- package/repos/effect/ai-docs/src/02_stream/index.md +4 -0
- package/repos/effect/ai-docs/src/03_integration/10_managed-runtime.ts +129 -0
- package/repos/effect/ai-docs/src/03_integration/index.md +5 -0
- package/repos/effect/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
- package/repos/effect/ai-docs/src/05_batching/index.md +3 -0
- package/repos/effect/ai-docs/src/06_schedule/10_schedules.ts +102 -0
- package/repos/effect/ai-docs/src/06_schedule/index.md +3 -0
- package/repos/effect/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
- package/repos/effect/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
- package/repos/effect/ai-docs/src/07_datetime/index.md +5 -0
- package/repos/effect/ai-docs/src/08_observability/10_logging.ts +66 -0
- package/repos/effect/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
- package/repos/effect/ai-docs/src/08_observability/index.md +7 -0
- package/repos/effect/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
- package/repos/effect/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
- package/repos/effect/ai-docs/src/09_testing/index.md +1 -0
- package/repos/effect/ai-docs/src/50_http-client/10_basics.ts +102 -0
- package/repos/effect/ai-docs/src/50_http-client/index.md +3 -0
- package/repos/effect/ai-docs/src/51_http-server/10_basics.ts +116 -0
- package/repos/effect/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
- package/repos/effect/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
- package/repos/effect/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
- package/repos/effect/ai-docs/src/51_http-server/fixtures/api/Users.ts +91 -0
- package/repos/effect/ai-docs/src/51_http-server/fixtures/domain/User.ts +12 -0
- package/repos/effect/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
- package/repos/effect/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +36 -0
- package/repos/effect/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +71 -0
- package/repos/effect/ai-docs/src/51_http-server/fixtures/server/Users.ts +62 -0
- package/repos/effect/ai-docs/src/51_http-server/index.md +3 -0
- package/repos/effect/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
- package/repos/effect/ai-docs/src/60_child-process/index.md +3 -0
- package/repos/effect/ai-docs/src/70_cli/10_basics.ts +136 -0
- package/repos/effect/ai-docs/src/70_cli/index.md +5 -0
- package/repos/effect/ai-docs/src/71_ai/10_language-model.ts +156 -0
- package/repos/effect/ai-docs/src/71_ai/20_tools.ts +226 -0
- package/repos/effect/ai-docs/src/71_ai/30_chat.ts +158 -0
- package/repos/effect/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
- package/repos/effect/ai-docs/src/71_ai/index.md +5 -0
- package/repos/effect/ai-docs/src/80_cluster/10_entities.ts +97 -0
- package/repos/effect/ai-docs/src/80_cluster/index.md +4 -0
- package/repos/effect/ai-docs/src/index.md +12 -0
- package/repos/effect/ai-docs/tsconfig.json +24 -0
- package/repos/effect/cookbooks/schedule.md +3507 -0
- package/repos/effect/deno.json +33 -0
- package/repos/effect/docker-compose.yaml +18 -0
- package/repos/effect/dprint.json +32 -0
- package/repos/effect/flake.lock +27 -0
- package/repos/effect/flake.nix +24 -0
- package/repos/effect/jsdocs.config.json +16 -0
- package/repos/effect/migration/cause.md +163 -0
- package/repos/effect/migration/equality.md +72 -0
- package/repos/effect/migration/error-handling.md +106 -0
- package/repos/effect/migration/fiber-keep-alive.md +74 -0
- package/repos/effect/migration/fiberref.md +109 -0
- package/repos/effect/migration/forking.md +94 -0
- package/repos/effect/migration/generators.md +32 -0
- package/repos/effect/migration/layer-memoization.md +98 -0
- package/repos/effect/migration/runtime.md +88 -0
- package/repos/effect/migration/schema.md +1032 -0
- package/repos/effect/migration/scope.md +50 -0
- package/repos/effect/migration/services.md +235 -0
- package/repos/effect/migration/v3-to-v4.md +421 -0
- package/repos/effect/migration/yieldable.md +173 -0
- package/repos/effect/package.json +104 -0
- package/repos/effect/packages/ai/anthropic/CHANGELOG.md +611 -0
- package/repos/effect/packages/ai/anthropic/codegen.yml +63 -0
- package/repos/effect/packages/ai/anthropic/docgen.json +26 -0
- package/repos/effect/packages/ai/anthropic/package.json +67 -0
- package/repos/effect/packages/ai/anthropic/src/AnthropicClient.ts +432 -0
- package/repos/effect/packages/ai/anthropic/src/AnthropicConfig.ts +84 -0
- package/repos/effect/packages/ai/anthropic/src/AnthropicError.ts +212 -0
- package/repos/effect/packages/ai/anthropic/src/AnthropicLanguageModel.ts +3098 -0
- package/repos/effect/packages/ai/anthropic/src/AnthropicTelemetry.ts +132 -0
- package/repos/effect/packages/ai/anthropic/src/AnthropicTool.ts +2512 -0
- package/repos/effect/packages/ai/anthropic/src/Generated.ts +12600 -0
- package/repos/effect/packages/ai/anthropic/src/index.ts +40 -0
- package/repos/effect/packages/ai/anthropic/src/internal/errors.ts +370 -0
- package/repos/effect/packages/ai/anthropic/src/internal/utilities.ts +26 -0
- package/repos/effect/packages/ai/anthropic/test/AnthropicLanguageModel.test.ts +300 -0
- package/repos/effect/packages/ai/anthropic/tsconfig.json +8 -0
- package/repos/effect/packages/ai/anthropic/vitest.config.ts +6 -0
- package/repos/effect/packages/ai/openai/CHANGELOG.md +668 -0
- package/repos/effect/packages/ai/openai/codegen.yaml +41 -0
- package/repos/effect/packages/ai/openai/docgen.json +24 -0
- package/repos/effect/packages/ai/openai/package.json +67 -0
- package/repos/effect/packages/ai/openai/src/Generated.ts +35774 -0
- package/repos/effect/packages/ai/openai/src/OpenAiClient.ts +730 -0
- package/repos/effect/packages/ai/openai/src/OpenAiClientGenerated.ts +202 -0
- package/repos/effect/packages/ai/openai/src/OpenAiConfig.ts +93 -0
- package/repos/effect/packages/ai/openai/src/OpenAiEmbeddingModel.ts +258 -0
- package/repos/effect/packages/ai/openai/src/OpenAiError.ts +242 -0
- package/repos/effect/packages/ai/openai/src/OpenAiLanguageModel.ts +3133 -0
- package/repos/effect/packages/ai/openai/src/OpenAiSchema.ts +1286 -0
- package/repos/effect/packages/ai/openai/src/OpenAiTelemetry.ts +162 -0
- package/repos/effect/packages/ai/openai/src/OpenAiTool.ts +342 -0
- package/repos/effect/packages/ai/openai/src/index.ts +55 -0
- package/repos/effect/packages/ai/openai/src/internal/errors.ts +349 -0
- package/repos/effect/packages/ai/openai/src/internal/utilities.ts +33 -0
- package/repos/effect/packages/ai/openai/test/OpenAiClient.test.ts +798 -0
- package/repos/effect/packages/ai/openai/test/OpenAiEmbeddingModel.test.ts +289 -0
- package/repos/effect/packages/ai/openai/test/OpenAiLanguageModel.test.ts +1528 -0
- package/repos/effect/packages/ai/openai/test/OpenAiSchema.test.ts +273 -0
- package/repos/effect/packages/ai/openai/tsconfig.json +8 -0
- package/repos/effect/packages/ai/openai/vitest.config.ts +6 -0
- package/repos/effect/packages/ai/openai-compat/CHANGELOG.md +626 -0
- package/repos/effect/packages/ai/openai-compat/docgen.json +24 -0
- package/repos/effect/packages/ai/openai-compat/package.json +69 -0
- package/repos/effect/packages/ai/openai-compat/src/OpenAiClient.ts +1221 -0
- package/repos/effect/packages/ai/openai-compat/src/OpenAiConfig.ts +87 -0
- package/repos/effect/packages/ai/openai-compat/src/OpenAiEmbeddingModel.ts +254 -0
- package/repos/effect/packages/ai/openai-compat/src/OpenAiError.ts +178 -0
- package/repos/effect/packages/ai/openai-compat/src/OpenAiLanguageModel.ts +1951 -0
- package/repos/effect/packages/ai/openai-compat/src/OpenAiTelemetry.ts +164 -0
- package/repos/effect/packages/ai/openai-compat/src/index.ts +35 -0
- package/repos/effect/packages/ai/openai-compat/src/internal/errors.ts +327 -0
- package/repos/effect/packages/ai/openai-compat/src/internal/utilities.ts +33 -0
- package/repos/effect/packages/ai/openai-compat/test/OpenAiClient.test.ts +474 -0
- package/repos/effect/packages/ai/openai-compat/test/OpenAiEmbeddingModel.test.ts +216 -0
- package/repos/effect/packages/ai/openai-compat/test/OpenAiLanguageModel.test.ts +1505 -0
- package/repos/effect/packages/ai/openai-compat/tsconfig.json +8 -0
- package/repos/effect/packages/ai/openai-compat/vitest.config.ts +6 -0
- package/repos/effect/packages/ai/openrouter/CHANGELOG.md +607 -0
- package/repos/effect/packages/ai/openrouter/codegen.yml +35 -0
- package/repos/effect/packages/ai/openrouter/docgen.json +24 -0
- package/repos/effect/packages/ai/openrouter/package.json +67 -0
- package/repos/effect/packages/ai/openrouter/src/Generated.ts +10028 -0
- package/repos/effect/packages/ai/openrouter/src/OpenRouterClient.ts +357 -0
- package/repos/effect/packages/ai/openrouter/src/OpenRouterConfig.ts +99 -0
- package/repos/effect/packages/ai/openrouter/src/OpenRouterError.ts +225 -0
- package/repos/effect/packages/ai/openrouter/src/OpenRouterLanguageModel.ts +1796 -0
- package/repos/effect/packages/ai/openrouter/src/index.ts +30 -0
- package/repos/effect/packages/ai/openrouter/src/internal/errors.ts +375 -0
- package/repos/effect/packages/ai/openrouter/src/internal/utilities.ts +92 -0
- package/repos/effect/packages/ai/openrouter/tsconfig.json +10 -0
- package/repos/effect/packages/ai/openrouter/vitest.config.ts +6 -0
- package/repos/effect/packages/atom/react/CHANGELOG.md +599 -0
- package/repos/effect/packages/atom/react/LICENSE +21 -0
- package/repos/effect/packages/atom/react/README.md +7 -0
- package/repos/effect/packages/atom/react/docgen.json +25 -0
- package/repos/effect/packages/atom/react/package.json +79 -0
- package/repos/effect/packages/atom/react/src/Hooks.ts +476 -0
- package/repos/effect/packages/atom/react/src/ReactHydration.ts +109 -0
- package/repos/effect/packages/atom/react/src/RegistryContext.ts +108 -0
- package/repos/effect/packages/atom/react/src/ScopedAtom.ts +151 -0
- package/repos/effect/packages/atom/react/src/index.ts +23 -0
- package/repos/effect/packages/atom/react/test/index.test.tsx +650 -0
- package/repos/effect/packages/atom/react/tsconfig.json +8 -0
- package/repos/effect/packages/atom/react/vitest.config.ts +9 -0
- package/repos/effect/packages/atom/react/vitest.setup.ts +8 -0
- package/repos/effect/packages/atom/solid/CHANGELOG.md +595 -0
- package/repos/effect/packages/atom/solid/LICENSE +21 -0
- package/repos/effect/packages/atom/solid/README.md +7 -0
- package/repos/effect/packages/atom/solid/docgen.json +26 -0
- package/repos/effect/packages/atom/solid/package.json +72 -0
- package/repos/effect/packages/atom/solid/src/Hooks.ts +359 -0
- package/repos/effect/packages/atom/solid/src/RegistryContext.ts +80 -0
- package/repos/effect/packages/atom/solid/src/index.ts +13 -0
- package/repos/effect/packages/atom/solid/test/index.test.tsx +296 -0
- package/repos/effect/packages/atom/solid/tsconfig.json +8 -0
- package/repos/effect/packages/atom/solid/vitest.config.ts +15 -0
- package/repos/effect/packages/atom/solid/vitest.setup.ts +8 -0
- package/repos/effect/packages/atom/vue/CHANGELOG.md +593 -0
- package/repos/effect/packages/atom/vue/LICENSE +21 -0
- package/repos/effect/packages/atom/vue/README.md +7 -0
- package/repos/effect/packages/atom/vue/docgen.json +24 -0
- package/repos/effect/packages/atom/vue/package.json +68 -0
- package/repos/effect/packages/atom/vue/src/index.ts +211 -0
- package/repos/effect/packages/atom/vue/test/index.test.ts +5 -0
- package/repos/effect/packages/atom/vue/tsconfig.json +14 -0
- package/repos/effect/packages/atom/vue/vitest.config.ts +8 -0
- package/repos/effect/packages/effect/CHANGELOG.md +1607 -0
- package/repos/effect/packages/effect/CONFIG.md +690 -0
- package/repos/effect/packages/effect/HTTPAPI.md +3213 -0
- package/repos/effect/packages/effect/LICENSE +21 -0
- package/repos/effect/packages/effect/MCP.md +369 -0
- package/repos/effect/packages/effect/OPTIC.md +620 -0
- package/repos/effect/packages/effect/README.md +53 -0
- package/repos/effect/packages/effect/SCHEMA.md +7284 -0
- package/repos/effect/packages/effect/benchmark/schema/Enums.ts +40 -0
- package/repos/effect/packages/effect/benchmark/schema/Optic.ts +79 -0
- package/repos/effect/packages/effect/benchmark/schema/array.ts +74 -0
- package/repos/effect/packages/effect/benchmark/schema/filter.ts +74 -0
- package/repos/effect/packages/effect/benchmark/schema/object.ts +82 -0
- package/repos/effect/packages/effect/benchmark/schema/tagged-union.ts +69 -0
- package/repos/effect/packages/effect/benchmark/schema/transformation.ts +91 -0
- package/repos/effect/packages/effect/benchmark/stream/splitLines.ts +46 -0
- package/repos/effect/packages/effect/docgen.json +38 -0
- package/repos/effect/packages/effect/package.json +127 -0
- package/repos/effect/packages/effect/src/Array.ts +4908 -0
- package/repos/effect/packages/effect/src/BigDecimal.ts +1943 -0
- package/repos/effect/packages/effect/src/BigInt.ts +1029 -0
- package/repos/effect/packages/effect/src/Boolean.ts +481 -0
- package/repos/effect/packages/effect/src/Brand.ts +318 -0
- package/repos/effect/packages/effect/src/Cache.ts +1295 -0
- package/repos/effect/packages/effect/src/Cause.ts +1939 -0
- package/repos/effect/packages/effect/src/Channel.ts +8615 -0
- package/repos/effect/packages/effect/src/ChannelSchema.ts +308 -0
- package/repos/effect/packages/effect/src/Chunk.ts +2976 -0
- package/repos/effect/packages/effect/src/Clock.ts +194 -0
- package/repos/effect/packages/effect/src/Combiner.ts +316 -0
- package/repos/effect/packages/effect/src/Config.ts +1416 -0
- package/repos/effect/packages/effect/src/ConfigProvider.ts +1159 -0
- package/repos/effect/packages/effect/src/Console.ts +653 -0
- package/repos/effect/packages/effect/src/Context.ts +1339 -0
- package/repos/effect/packages/effect/src/Cron.ts +1212 -0
- package/repos/effect/packages/effect/src/Crypto.ts +318 -0
- package/repos/effect/packages/effect/src/Data.ts +774 -0
- package/repos/effect/packages/effect/src/DateTime.ts +2922 -0
- package/repos/effect/packages/effect/src/Deferred.ts +917 -0
- package/repos/effect/packages/effect/src/Differ.ts +32 -0
- package/repos/effect/packages/effect/src/Duration.ts +1827 -0
- package/repos/effect/packages/effect/src/Effect.ts +15347 -0
- package/repos/effect/packages/effect/src/Effectable.ts +68 -0
- package/repos/effect/packages/effect/src/Encoding.ts +1046 -0
- package/repos/effect/packages/effect/src/Equal.ts +550 -0
- package/repos/effect/packages/effect/src/Equivalence.ts +870 -0
- package/repos/effect/packages/effect/src/ErrorReporter.ts +543 -0
- package/repos/effect/packages/effect/src/ExecutionPlan.ts +416 -0
- package/repos/effect/packages/effect/src/Exit.ts +1085 -0
- package/repos/effect/packages/effect/src/Fiber.ts +632 -0
- package/repos/effect/packages/effect/src/FiberHandle.ts +815 -0
- package/repos/effect/packages/effect/src/FiberMap.ts +1030 -0
- package/repos/effect/packages/effect/src/FiberSet.ts +713 -0
- package/repos/effect/packages/effect/src/FileSystem.ts +1394 -0
- package/repos/effect/packages/effect/src/Filter.ts +827 -0
- package/repos/effect/packages/effect/src/Formatter.ts +319 -0
- package/repos/effect/packages/effect/src/Function.ts +1415 -0
- package/repos/effect/packages/effect/src/Graph.ts +4892 -0
- package/repos/effect/packages/effect/src/HKT.ts +213 -0
- package/repos/effect/packages/effect/src/Hash.ts +539 -0
- package/repos/effect/packages/effect/src/HashMap.ts +1236 -0
- package/repos/effect/packages/effect/src/HashRing.ts +426 -0
- package/repos/effect/packages/effect/src/HashSet.ts +605 -0
- package/repos/effect/packages/effect/src/Inspectable.ts +329 -0
- package/repos/effect/packages/effect/src/Iterable.ts +2483 -0
- package/repos/effect/packages/effect/src/JsonPatch.ts +469 -0
- package/repos/effect/packages/effect/src/JsonPointer.ts +80 -0
- package/repos/effect/packages/effect/src/JsonSchema.ts +948 -0
- package/repos/effect/packages/effect/src/Latch.ts +373 -0
- package/repos/effect/packages/effect/src/Layer.ts +2773 -0
- package/repos/effect/packages/effect/src/LayerMap.ts +468 -0
- package/repos/effect/packages/effect/src/LogLevel.ts +412 -0
- package/repos/effect/packages/effect/src/Logger.ts +1284 -0
- package/repos/effect/packages/effect/src/ManagedRuntime.ts +381 -0
- package/repos/effect/packages/effect/src/Match.ts +2606 -0
- package/repos/effect/packages/effect/src/Metric.ts +4058 -0
- package/repos/effect/packages/effect/src/MutableHashMap.ts +845 -0
- package/repos/effect/packages/effect/src/MutableHashSet.ts +422 -0
- package/repos/effect/packages/effect/src/MutableList.ts +967 -0
- package/repos/effect/packages/effect/src/MutableRef.ts +822 -0
- package/repos/effect/packages/effect/src/Newtype.ts +319 -0
- package/repos/effect/packages/effect/src/NonEmptyIterable.ts +221 -0
- package/repos/effect/packages/effect/src/Number.ts +860 -0
- package/repos/effect/packages/effect/src/Optic.ts +1701 -0
- package/repos/effect/packages/effect/src/Option.ts +2664 -0
- package/repos/effect/packages/effect/src/Order.ts +982 -0
- package/repos/effect/packages/effect/src/Ordering.ts +182 -0
- package/repos/effect/packages/effect/src/PartitionedSemaphore.ts +561 -0
- package/repos/effect/packages/effect/src/Path.ts +870 -0
- package/repos/effect/packages/effect/src/Pipeable.ts +674 -0
- package/repos/effect/packages/effect/src/PlatformError.ts +221 -0
- package/repos/effect/packages/effect/src/Pool.ts +699 -0
- package/repos/effect/packages/effect/src/Predicate.ts +1872 -0
- package/repos/effect/packages/effect/src/PrimaryKey.ts +123 -0
- package/repos/effect/packages/effect/src/PubSub.ts +2797 -0
- package/repos/effect/packages/effect/src/Pull.ts +376 -0
- package/repos/effect/packages/effect/src/Queue.ts +1962 -0
- package/repos/effect/packages/effect/src/Random.ts +549 -0
- package/repos/effect/packages/effect/src/RcMap.ts +612 -0
- package/repos/effect/packages/effect/src/RcRef.ts +225 -0
- package/repos/effect/packages/effect/src/Record.ts +1563 -0
- package/repos/effect/packages/effect/src/Redactable.ts +168 -0
- package/repos/effect/packages/effect/src/Redacted.ts +314 -0
- package/repos/effect/packages/effect/src/Reducer.ts +178 -0
- package/repos/effect/packages/effect/src/Ref.ts +801 -0
- package/repos/effect/packages/effect/src/References.ts +786 -0
- package/repos/effect/packages/effect/src/RegExp.ts +82 -0
- package/repos/effect/packages/effect/src/Request.ts +598 -0
- package/repos/effect/packages/effect/src/RequestResolver.ts +1249 -0
- package/repos/effect/packages/effect/src/Resource.ts +184 -0
- package/repos/effect/packages/effect/src/Result.ts +1939 -0
- package/repos/effect/packages/effect/src/Runtime.ts +432 -0
- package/repos/effect/packages/effect/src/Schedule.ts +3564 -0
- package/repos/effect/packages/effect/src/Scheduler.ts +285 -0
- package/repos/effect/packages/effect/src/Schema.ts +14653 -0
- package/repos/effect/packages/effect/src/SchemaAST.ts +3903 -0
- package/repos/effect/packages/effect/src/SchemaGetter.ts +1870 -0
- package/repos/effect/packages/effect/src/SchemaIssue.ts +1176 -0
- package/repos/effect/packages/effect/src/SchemaParser.ts +1105 -0
- package/repos/effect/packages/effect/src/SchemaRepresentation.ts +3944 -0
- package/repos/effect/packages/effect/src/SchemaTransformation.ts +1818 -0
- package/repos/effect/packages/effect/src/SchemaUtils.ts +51 -0
- package/repos/effect/packages/effect/src/Scope.ts +572 -0
- package/repos/effect/packages/effect/src/ScopedCache.ts +820 -0
- package/repos/effect/packages/effect/src/ScopedRef.ts +192 -0
- package/repos/effect/packages/effect/src/Semaphore.ts +517 -0
- package/repos/effect/packages/effect/src/Sink.ts +2174 -0
- package/repos/effect/packages/effect/src/Stdio.ts +143 -0
- package/repos/effect/packages/effect/src/Stream.ts +11722 -0
- package/repos/effect/packages/effect/src/String.ts +1427 -0
- package/repos/effect/packages/effect/src/Struct.ts +979 -0
- package/repos/effect/packages/effect/src/SubscriptionRef.ts +1021 -0
- package/repos/effect/packages/effect/src/Symbol.ts +31 -0
- package/repos/effect/packages/effect/src/SynchronizedRef.ts +668 -0
- package/repos/effect/packages/effect/src/Take.ts +46 -0
- package/repos/effect/packages/effect/src/Terminal.ts +188 -0
- package/repos/effect/packages/effect/src/Tracer.ts +683 -0
- package/repos/effect/packages/effect/src/Trie.ts +953 -0
- package/repos/effect/packages/effect/src/Tuple.ts +737 -0
- package/repos/effect/packages/effect/src/TxChunk.ts +822 -0
- package/repos/effect/packages/effect/src/TxDeferred.ts +319 -0
- package/repos/effect/packages/effect/src/TxHashMap.ts +2165 -0
- package/repos/effect/packages/effect/src/TxHashSet.ts +908 -0
- package/repos/effect/packages/effect/src/TxPriorityQueue.ts +567 -0
- package/repos/effect/packages/effect/src/TxPubSub.ts +684 -0
- package/repos/effect/packages/effect/src/TxQueue.ts +1488 -0
- package/repos/effect/packages/effect/src/TxReentrantLock.ts +655 -0
- package/repos/effect/packages/effect/src/TxRef.ts +282 -0
- package/repos/effect/packages/effect/src/TxSemaphore.ts +707 -0
- package/repos/effect/packages/effect/src/TxSubscriptionRef.ts +518 -0
- package/repos/effect/packages/effect/src/Types.ts +1121 -0
- package/repos/effect/packages/effect/src/UndefinedOr.ts +239 -0
- package/repos/effect/packages/effect/src/Unify.ts +314 -0
- package/repos/effect/packages/effect/src/Utils.ts +221 -0
- package/repos/effect/packages/effect/src/index.ts +712 -0
- package/repos/effect/packages/effect/src/internal/array.ts +8 -0
- package/repos/effect/packages/effect/src/internal/concurrency.ts +52 -0
- package/repos/effect/packages/effect/src/internal/core.ts +666 -0
- package/repos/effect/packages/effect/src/internal/dateTime.ts +1264 -0
- package/repos/effect/packages/effect/src/internal/doNotation.ts +117 -0
- package/repos/effect/packages/effect/src/internal/effect.ts +6427 -0
- package/repos/effect/packages/effect/src/internal/equal.ts +28 -0
- package/repos/effect/packages/effect/src/internal/errors.ts +9 -0
- package/repos/effect/packages/effect/src/internal/executionPlan.ts +120 -0
- package/repos/effect/packages/effect/src/internal/hashMap.ts +1309 -0
- package/repos/effect/packages/effect/src/internal/hashSet.ts +190 -0
- package/repos/effect/packages/effect/src/internal/layer.ts +88 -0
- package/repos/effect/packages/effect/src/internal/matcher.ts +637 -0
- package/repos/effect/packages/effect/src/internal/metric.ts +2 -0
- package/repos/effect/packages/effect/src/internal/option.ts +98 -0
- package/repos/effect/packages/effect/src/internal/random.ts +20 -0
- package/repos/effect/packages/effect/src/internal/rcRef.ts +189 -0
- package/repos/effect/packages/effect/src/internal/record.ts +18 -0
- package/repos/effect/packages/effect/src/internal/redacted.ts +19 -0
- package/repos/effect/packages/effect/src/internal/references.ts +72 -0
- package/repos/effect/packages/effect/src/internal/request.ts +205 -0
- package/repos/effect/packages/effect/src/internal/result.ts +112 -0
- package/repos/effect/packages/effect/src/internal/schedule.ts +248 -0
- package/repos/effect/packages/effect/src/internal/schema/annotations.ts +37 -0
- package/repos/effect/packages/effect/src/internal/schema/arbitrary.ts +894 -0
- package/repos/effect/packages/effect/src/internal/schema/cause.ts +26 -0
- package/repos/effect/packages/effect/src/internal/schema/equivalence.ts +154 -0
- package/repos/effect/packages/effect/src/internal/schema/representation.ts +799 -0
- package/repos/effect/packages/effect/src/internal/schema/schema.ts +128 -0
- package/repos/effect/packages/effect/src/internal/stream.ts +28 -0
- package/repos/effect/packages/effect/src/internal/tracer.ts +41 -0
- package/repos/effect/packages/effect/src/internal/trie.ts +733 -0
- package/repos/effect/packages/effect/src/internal/version.ts +2 -0
- package/repos/effect/packages/effect/src/testing/FastCheck.ts +89 -0
- package/repos/effect/packages/effect/src/testing/TestClock.ts +547 -0
- package/repos/effect/packages/effect/src/testing/TestConsole.ts +369 -0
- package/repos/effect/packages/effect/src/testing/TestSchema.ts +567 -0
- package/repos/effect/packages/effect/src/testing/index.ts +25 -0
- package/repos/effect/packages/effect/src/unstable/ai/AiError.ts +1629 -0
- package/repos/effect/packages/effect/src/unstable/ai/AnthropicStructuredOutput.ts +407 -0
- package/repos/effect/packages/effect/src/unstable/ai/Chat.ts +931 -0
- package/repos/effect/packages/effect/src/unstable/ai/EmbeddingModel.ts +269 -0
- package/repos/effect/packages/effect/src/unstable/ai/IdGenerator.ts +300 -0
- package/repos/effect/packages/effect/src/unstable/ai/LanguageModel.ts +2221 -0
- package/repos/effect/packages/effect/src/unstable/ai/McpSchema.ts +2527 -0
- package/repos/effect/packages/effect/src/unstable/ai/McpServer.ts +1468 -0
- package/repos/effect/packages/effect/src/unstable/ai/Model.ts +166 -0
- package/repos/effect/packages/effect/src/unstable/ai/OpenAiStructuredOutput.ts +476 -0
- package/repos/effect/packages/effect/src/unstable/ai/Prompt.ts +2234 -0
- package/repos/effect/packages/effect/src/unstable/ai/Response.ts +2582 -0
- package/repos/effect/packages/effect/src/unstable/ai/ResponseIdTracker.ts +139 -0
- package/repos/effect/packages/effect/src/unstable/ai/Telemetry.ts +515 -0
- package/repos/effect/packages/effect/src/unstable/ai/Tokenizer.ts +176 -0
- package/repos/effect/packages/effect/src/unstable/ai/Tool.ts +2003 -0
- package/repos/effect/packages/effect/src/unstable/ai/Toolkit.ts +554 -0
- package/repos/effect/packages/effect/src/unstable/ai/index.ts +90 -0
- package/repos/effect/packages/effect/src/unstable/ai/internal/codec-transformer.ts +13 -0
- package/repos/effect/packages/effect/src/unstable/cli/Argument.ts +749 -0
- package/repos/effect/packages/effect/src/unstable/cli/CliError.ts +549 -0
- package/repos/effect/packages/effect/src/unstable/cli/CliOutput.ts +607 -0
- package/repos/effect/packages/effect/src/unstable/cli/Command.ts +1610 -0
- package/repos/effect/packages/effect/src/unstable/cli/Completions.ts +123 -0
- package/repos/effect/packages/effect/src/unstable/cli/Flag.ts +986 -0
- package/repos/effect/packages/effect/src/unstable/cli/GlobalFlag.ts +295 -0
- package/repos/effect/packages/effect/src/unstable/cli/HelpDoc.ts +323 -0
- package/repos/effect/packages/effect/src/unstable/cli/Param.ts +2193 -0
- package/repos/effect/packages/effect/src/unstable/cli/Primitive.ts +766 -0
- package/repos/effect/packages/effect/src/unstable/cli/Prompt.ts +3852 -0
- package/repos/effect/packages/effect/src/unstable/cli/SEMANTICS.md +157 -0
- package/repos/effect/packages/effect/src/unstable/cli/index.ts +60 -0
- package/repos/effect/packages/effect/src/unstable/cli/internal/ansi.ts +152 -0
- package/repos/effect/packages/effect/src/unstable/cli/internal/auto-suggest.ts +41 -0
- package/repos/effect/packages/effect/src/unstable/cli/internal/command.ts +340 -0
- package/repos/effect/packages/effect/src/unstable/cli/internal/completions/bash.ts +222 -0
- package/repos/effect/packages/effect/src/unstable/cli/internal/completions/descriptor.ts +133 -0
- package/repos/effect/packages/effect/src/unstable/cli/internal/completions/fish.ts +253 -0
- package/repos/effect/packages/effect/src/unstable/cli/internal/completions/zsh.ts +220 -0
- package/repos/effect/packages/effect/src/unstable/cli/internal/config.ts +272 -0
- package/repos/effect/packages/effect/src/unstable/cli/internal/help.ts +181 -0
- package/repos/effect/packages/effect/src/unstable/cli/internal/lexer.ts +70 -0
- package/repos/effect/packages/effect/src/unstable/cli/internal/parser.ts +932 -0
- package/repos/effect/packages/effect/src/unstable/cluster/ClusterCron.ts +163 -0
- package/repos/effect/packages/effect/src/unstable/cluster/ClusterError.ts +238 -0
- package/repos/effect/packages/effect/src/unstable/cluster/ClusterMetrics.ts +112 -0
- package/repos/effect/packages/effect/src/unstable/cluster/ClusterSchema.ts +170 -0
- package/repos/effect/packages/effect/src/unstable/cluster/ClusterWorkflowEngine.ts +778 -0
- package/repos/effect/packages/effect/src/unstable/cluster/DeliverAt.ts +58 -0
- package/repos/effect/packages/effect/src/unstable/cluster/Entity.ts +779 -0
- package/repos/effect/packages/effect/src/unstable/cluster/EntityAddress.ts +93 -0
- package/repos/effect/packages/effect/src/unstable/cluster/EntityId.ts +50 -0
- package/repos/effect/packages/effect/src/unstable/cluster/EntityProxy.ts +263 -0
- package/repos/effect/packages/effect/src/unstable/cluster/EntityProxyServer.ts +149 -0
- package/repos/effect/packages/effect/src/unstable/cluster/EntityResource.ts +184 -0
- package/repos/effect/packages/effect/src/unstable/cluster/EntityType.ts +52 -0
- package/repos/effect/packages/effect/src/unstable/cluster/Envelope.ts +433 -0
- package/repos/effect/packages/effect/src/unstable/cluster/HttpRunner.ts +345 -0
- package/repos/effect/packages/effect/src/unstable/cluster/K8sHttpClient.ts +297 -0
- package/repos/effect/packages/effect/src/unstable/cluster/MachineId.ts +54 -0
- package/repos/effect/packages/effect/src/unstable/cluster/Message.ts +314 -0
- package/repos/effect/packages/effect/src/unstable/cluster/MessageStorage.ts +1072 -0
- package/repos/effect/packages/effect/src/unstable/cluster/Reply.ts +455 -0
- package/repos/effect/packages/effect/src/unstable/cluster/Runner.ts +129 -0
- package/repos/effect/packages/effect/src/unstable/cluster/RunnerAddress.ts +112 -0
- package/repos/effect/packages/effect/src/unstable/cluster/RunnerHealth.ts +145 -0
- package/repos/effect/packages/effect/src/unstable/cluster/RunnerServer.ts +220 -0
- package/repos/effect/packages/effect/src/unstable/cluster/RunnerStorage.ts +243 -0
- package/repos/effect/packages/effect/src/unstable/cluster/Runners.ts +690 -0
- package/repos/effect/packages/effect/src/unstable/cluster/ShardId.ts +178 -0
- package/repos/effect/packages/effect/src/unstable/cluster/Sharding.ts +1488 -0
- package/repos/effect/packages/effect/src/unstable/cluster/ShardingConfig.ts +367 -0
- package/repos/effect/packages/effect/src/unstable/cluster/ShardingRegistrationEvent.ts +76 -0
- package/repos/effect/packages/effect/src/unstable/cluster/SingleRunner.ts +75 -0
- package/repos/effect/packages/effect/src/unstable/cluster/Singleton.ts +56 -0
- package/repos/effect/packages/effect/src/unstable/cluster/SingletonAddress.ts +49 -0
- package/repos/effect/packages/effect/src/unstable/cluster/Snowflake.ts +282 -0
- package/repos/effect/packages/effect/src/unstable/cluster/SocketRunner.ts +96 -0
- package/repos/effect/packages/effect/src/unstable/cluster/SqlMessageStorage.ts +1045 -0
- package/repos/effect/packages/effect/src/unstable/cluster/SqlRunnerStorage.ts +700 -0
- package/repos/effect/packages/effect/src/unstable/cluster/TestRunner.ts +36 -0
- package/repos/effect/packages/effect/src/unstable/cluster/index.ts +195 -0
- package/repos/effect/packages/effect/src/unstable/cluster/internal/entityManager.ts +678 -0
- package/repos/effect/packages/effect/src/unstable/cluster/internal/entityReaper.ts +58 -0
- package/repos/effect/packages/effect/src/unstable/cluster/internal/hash.ts +23 -0
- package/repos/effect/packages/effect/src/unstable/cluster/internal/interruptors.ts +2 -0
- package/repos/effect/packages/effect/src/unstable/cluster/internal/resourceMap.ts +100 -0
- package/repos/effect/packages/effect/src/unstable/cluster/internal/resourceRef.ts +99 -0
- package/repos/effect/packages/effect/src/unstable/devtools/DevTools.ts +68 -0
- package/repos/effect/packages/effect/src/unstable/devtools/DevToolsClient.ts +236 -0
- package/repos/effect/packages/effect/src/unstable/devtools/DevToolsSchema.ts +558 -0
- package/repos/effect/packages/effect/src/unstable/devtools/DevToolsServer.ts +94 -0
- package/repos/effect/packages/effect/src/unstable/devtools/index.ts +25 -0
- package/repos/effect/packages/effect/src/unstable/encoding/Msgpack.ts +383 -0
- package/repos/effect/packages/effect/src/unstable/encoding/Ndjson.ts +602 -0
- package/repos/effect/packages/effect/src/unstable/encoding/Sse.ts +593 -0
- package/repos/effect/packages/effect/src/unstable/encoding/index.ts +20 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/Event.ts +447 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/EventGroup.ts +193 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/EventJournal.ts +795 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/EventLog.ts +1030 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/EventLogEncryption.ts +169 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/EventLogMessage.ts +354 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/EventLogRemote.ts +377 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/EventLogServer.ts +242 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/EventLogServerEncrypted.ts +268 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/EventLogServerUnencrypted.ts +898 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/EventLogSessionAuth.ts +524 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/SqlEventJournal.ts +353 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/SqlEventLogServerEncrypted.ts +343 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +527 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/index.ts +75 -0
- package/repos/effect/packages/effect/src/unstable/eventlog/internal/identityRootSecretDerivation.ts +153 -0
- package/repos/effect/packages/effect/src/unstable/http/Cookies.ts +952 -0
- package/repos/effect/packages/effect/src/unstable/http/Etag.ts +141 -0
- package/repos/effect/packages/effect/src/unstable/http/FetchHttpClient.ts +123 -0
- package/repos/effect/packages/effect/src/unstable/http/FindMyWay.ts +15 -0
- package/repos/effect/packages/effect/src/unstable/http/Headers.ts +438 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpBody.ts +545 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpClient.ts +1630 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpClientError.ts +328 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpClientRequest.ts +968 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpClientResponse.ts +408 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpEffect.ts +400 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpIncomingMessage.ts +153 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpMethod.ts +124 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpMiddleware.ts +394 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpPlatform.ts +165 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpRouter.ts +1341 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpServer.ts +329 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpServerError.ts +374 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpServerRequest.ts +1081 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpServerRespondable.ts +115 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpServerResponse.ts +1381 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpStaticServer.ts +464 -0
- package/repos/effect/packages/effect/src/unstable/http/HttpTraceContext.ts +160 -0
- package/repos/effect/packages/effect/src/unstable/http/Multipart.ts +830 -0
- package/repos/effect/packages/effect/src/unstable/http/Multipasta/HeadersParser.ts +14 -0
- package/repos/effect/packages/effect/src/unstable/http/Multipasta/Node.ts +14 -0
- package/repos/effect/packages/effect/src/unstable/http/Multipasta/Search.ts +14 -0
- package/repos/effect/packages/effect/src/unstable/http/Multipasta/Web.ts +14 -0
- package/repos/effect/packages/effect/src/unstable/http/Multipasta.ts +15 -0
- package/repos/effect/packages/effect/src/unstable/http/Template.ts +262 -0
- package/repos/effect/packages/effect/src/unstable/http/Url.ts +330 -0
- package/repos/effect/packages/effect/src/unstable/http/UrlParams.ts +678 -0
- package/repos/effect/packages/effect/src/unstable/http/index.ts +145 -0
- package/repos/effect/packages/effect/src/unstable/http/internal/preResponseHandler.ts +15 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/HttpApi.ts +316 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiBuilder.ts +1015 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiClient.ts +1005 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiEndpoint.ts +1545 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiError.ts +443 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiGroup.ts +381 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiMiddleware.ts +478 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiScalar.ts +267 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiSchema.ts +733 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiSecurity.ts +244 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiSwagger.ts +68 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/HttpApiTest.ts +112 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/OpenApi.ts +1098 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/index.ts +70 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/internal/html.ts +18 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/internal/httpApiScalar.ts +5 -0
- package/repos/effect/packages/effect/src/unstable/httpapi/internal/httpApiSwagger.ts +9 -0
- package/repos/effect/packages/effect/src/unstable/observability/Otlp.ts +172 -0
- package/repos/effect/packages/effect/src/unstable/observability/OtlpExporter.ts +149 -0
- package/repos/effect/packages/effect/src/unstable/observability/OtlpLogger.ts +340 -0
- package/repos/effect/packages/effect/src/unstable/observability/OtlpMetrics.ts +826 -0
- package/repos/effect/packages/effect/src/unstable/observability/OtlpResource.ts +288 -0
- package/repos/effect/packages/effect/src/unstable/observability/OtlpSerialization.ts +66 -0
- package/repos/effect/packages/effect/src/unstable/observability/OtlpTracer.ts +442 -0
- package/repos/effect/packages/effect/src/unstable/observability/PrometheusMetrics.ts +468 -0
- package/repos/effect/packages/effect/src/unstable/observability/index.ts +45 -0
- package/repos/effect/packages/effect/src/unstable/observability/internal/otlpEnv.ts +39 -0
- package/repos/effect/packages/effect/src/unstable/observability/internal/otlpProtobuf.ts +779 -0
- package/repos/effect/packages/effect/src/unstable/observability/internal/protobuf.ts +262 -0
- package/repos/effect/packages/effect/src/unstable/persistence/KeyValueStore.ts +864 -0
- package/repos/effect/packages/effect/src/unstable/persistence/Persistable.ts +252 -0
- package/repos/effect/packages/effect/src/unstable/persistence/PersistedCache.ts +111 -0
- package/repos/effect/packages/effect/src/unstable/persistence/PersistedQueue.ts +1196 -0
- package/repos/effect/packages/effect/src/unstable/persistence/Persistence.ts +1071 -0
- package/repos/effect/packages/effect/src/unstable/persistence/RateLimiter.ts +748 -0
- package/repos/effect/packages/effect/src/unstable/persistence/Redis.ts +188 -0
- package/repos/effect/packages/effect/src/unstable/persistence/index.ts +40 -0
- package/repos/effect/packages/effect/src/unstable/process/ChildProcess.ts +1036 -0
- package/repos/effect/packages/effect/src/unstable/process/ChildProcessSpawner.ts +285 -0
- package/repos/effect/packages/effect/src/unstable/process/index.ts +15 -0
- package/repos/effect/packages/effect/src/unstable/reactivity/AsyncResult.ts +1081 -0
- package/repos/effect/packages/effect/src/unstable/reactivity/Atom.ts +2520 -0
- package/repos/effect/packages/effect/src/unstable/reactivity/AtomHttpApi.ts +352 -0
- package/repos/effect/packages/effect/src/unstable/reactivity/AtomRef.ts +352 -0
- package/repos/effect/packages/effect/src/unstable/reactivity/AtomRegistry.ts +1127 -0
- package/repos/effect/packages/effect/src/unstable/reactivity/AtomRpc.ts +305 -0
- package/repos/effect/packages/effect/src/unstable/reactivity/Hydration.ts +155 -0
- package/repos/effect/packages/effect/src/unstable/reactivity/Reactivity.ts +348 -0
- package/repos/effect/packages/effect/src/unstable/reactivity/index.ts +45 -0
- package/repos/effect/packages/effect/src/unstable/rpc/Rpc.ts +1255 -0
- package/repos/effect/packages/effect/src/unstable/rpc/RpcClient.ts +1370 -0
- package/repos/effect/packages/effect/src/unstable/rpc/RpcClientError.ts +57 -0
- package/repos/effect/packages/effect/src/unstable/rpc/RpcGroup.ts +409 -0
- package/repos/effect/packages/effect/src/unstable/rpc/RpcMessage.ts +402 -0
- package/repos/effect/packages/effect/src/unstable/rpc/RpcMiddleware.ts +344 -0
- package/repos/effect/packages/effect/src/unstable/rpc/RpcSchema.ts +97 -0
- package/repos/effect/packages/effect/src/unstable/rpc/RpcSerialization.ts +546 -0
- package/repos/effect/packages/effect/src/unstable/rpc/RpcServer.ts +1492 -0
- package/repos/effect/packages/effect/src/unstable/rpc/RpcTest.ts +56 -0
- package/repos/effect/packages/effect/src/unstable/rpc/RpcWorker.ts +118 -0
- package/repos/effect/packages/effect/src/unstable/rpc/Utils.ts +120 -0
- package/repos/effect/packages/effect/src/unstable/rpc/index.ts +65 -0
- package/repos/effect/packages/effect/src/unstable/schema/Model.ts +862 -0
- package/repos/effect/packages/effect/src/unstable/schema/VariantSchema.ts +604 -0
- package/repos/effect/packages/effect/src/unstable/schema/index.ts +15 -0
- package/repos/effect/packages/effect/src/unstable/socket/Socket.ts +911 -0
- package/repos/effect/packages/effect/src/unstable/socket/SocketServer.ts +147 -0
- package/repos/effect/packages/effect/src/unstable/socket/index.ts +15 -0
- package/repos/effect/packages/effect/src/unstable/sql/Migrator.ts +440 -0
- package/repos/effect/packages/effect/src/unstable/sql/SqlClient.ts +342 -0
- package/repos/effect/packages/effect/src/unstable/sql/SqlConnection.ts +83 -0
- package/repos/effect/packages/effect/src/unstable/sql/SqlError.ts +590 -0
- package/repos/effect/packages/effect/src/unstable/sql/SqlModel.ts +359 -0
- package/repos/effect/packages/effect/src/unstable/sql/SqlResolver.ts +380 -0
- package/repos/effect/packages/effect/src/unstable/sql/SqlSchema.ts +172 -0
- package/repos/effect/packages/effect/src/unstable/sql/SqlStream.ts +81 -0
- package/repos/effect/packages/effect/src/unstable/sql/Statement.ts +1500 -0
- package/repos/effect/packages/effect/src/unstable/sql/index.ts +50 -0
- package/repos/effect/packages/effect/src/unstable/workers/Transferable.ts +191 -0
- package/repos/effect/packages/effect/src/unstable/workers/Worker.ts +245 -0
- package/repos/effect/packages/effect/src/unstable/workers/WorkerError.ts +148 -0
- package/repos/effect/packages/effect/src/unstable/workers/WorkerRunner.ts +57 -0
- package/repos/effect/packages/effect/src/unstable/workers/index.ts +25 -0
- package/repos/effect/packages/effect/src/unstable/workflow/Activity.ts +322 -0
- package/repos/effect/packages/effect/src/unstable/workflow/DurableClock.ts +117 -0
- package/repos/effect/packages/effect/src/unstable/workflow/DurableDeferred.ts +653 -0
- package/repos/effect/packages/effect/src/unstable/workflow/DurableQueue.ts +360 -0
- package/repos/effect/packages/effect/src/unstable/workflow/Workflow.ts +898 -0
- package/repos/effect/packages/effect/src/unstable/workflow/WorkflowEngine.ts +759 -0
- package/repos/effect/packages/effect/src/unstable/workflow/WorkflowProxy.ts +212 -0
- package/repos/effect/packages/effect/src/unstable/workflow/WorkflowProxyServer.ts +151 -0
- package/repos/effect/packages/effect/src/unstable/workflow/index.ts +45 -0
- package/repos/effect/packages/effect/src/unstable/workflow/internal/crypto.ts +15 -0
- package/repos/effect/packages/effect/test/Array.test.ts +1579 -0
- package/repos/effect/packages/effect/test/AtomRef.test.ts +27 -0
- package/repos/effect/packages/effect/test/BigDecimal.test.ts +525 -0
- package/repos/effect/packages/effect/test/BigInt.test.ts +57 -0
- package/repos/effect/packages/effect/test/Boolean.test.ts +289 -0
- package/repos/effect/packages/effect/test/Brand.test.ts +160 -0
- package/repos/effect/packages/effect/test/Cache.test.ts +1423 -0
- package/repos/effect/packages/effect/test/Cause.test.ts +834 -0
- package/repos/effect/packages/effect/test/Channel.test.ts +556 -0
- package/repos/effect/packages/effect/test/Chunk.test.ts +874 -0
- package/repos/effect/packages/effect/test/Combiner.test.ts +42 -0
- package/repos/effect/packages/effect/test/Config.test.ts +1416 -0
- package/repos/effect/packages/effect/test/ConfigProvider.test.ts +726 -0
- package/repos/effect/packages/effect/test/Cron.test.ts +401 -0
- package/repos/effect/packages/effect/test/Crypto.test.ts +86 -0
- package/repos/effect/packages/effect/test/Data.test.ts +269 -0
- package/repos/effect/packages/effect/test/DateTime.test.ts +953 -0
- package/repos/effect/packages/effect/test/Deferred.test.ts +165 -0
- package/repos/effect/packages/effect/test/Duration.test.ts +679 -0
- package/repos/effect/packages/effect/test/Effect.test.ts +2658 -0
- package/repos/effect/packages/effect/test/EffectEager.test.ts +678 -0
- package/repos/effect/packages/effect/test/EffectKeepAlive.test.ts +71 -0
- package/repos/effect/packages/effect/test/Equal.test.ts +1278 -0
- package/repos/effect/packages/effect/test/Equivalence.test.ts +170 -0
- package/repos/effect/packages/effect/test/ExecutionPlan.test.ts +117 -0
- package/repos/effect/packages/effect/test/Exit.test.ts +12 -0
- package/repos/effect/packages/effect/test/Fiber.test.ts +9 -0
- package/repos/effect/packages/effect/test/FiberHandle.test.ts +146 -0
- package/repos/effect/packages/effect/test/FiberMap.test.ts +171 -0
- package/repos/effect/packages/effect/test/FiberSet.test.ts +119 -0
- package/repos/effect/packages/effect/test/Formatter.test.ts +247 -0
- package/repos/effect/packages/effect/test/Function.test.ts +333 -0
- package/repos/effect/packages/effect/test/Graph.test.ts +3505 -0
- package/repos/effect/packages/effect/test/HashMap.test.ts +618 -0
- package/repos/effect/packages/effect/test/HashSet.test.ts +298 -0
- package/repos/effect/packages/effect/test/HttpClient.test.ts +131 -0
- package/repos/effect/packages/effect/test/Iterable.test.ts +486 -0
- package/repos/effect/packages/effect/test/JsonPatch.test.ts +948 -0
- package/repos/effect/packages/effect/test/JsonPointer.test.ts +353 -0
- package/repos/effect/packages/effect/test/JsonSchema.test.ts +1253 -0
- package/repos/effect/packages/effect/test/Latch.test.ts +21 -0
- package/repos/effect/packages/effect/test/Layer.test.ts +648 -0
- package/repos/effect/packages/effect/test/LayerMap.test.ts +98 -0
- package/repos/effect/packages/effect/test/LogLevel.test.ts +28 -0
- package/repos/effect/packages/effect/test/Logger.test.ts +154 -0
- package/repos/effect/packages/effect/test/ManagedRuntime.test.ts +58 -0
- package/repos/effect/packages/effect/test/Match.test.ts +27 -0
- package/repos/effect/packages/effect/test/Metric.test.ts +682 -0
- package/repos/effect/packages/effect/test/Migrator.test.ts +69 -0
- package/repos/effect/packages/effect/test/MutableHashMap.test.ts +309 -0
- package/repos/effect/packages/effect/test/MutableHashSet.test.ts +10 -0
- package/repos/effect/packages/effect/test/MutableList.test.ts +58 -0
- package/repos/effect/packages/effect/test/Newtype.test.ts +90 -0
- package/repos/effect/packages/effect/test/Number.test.ts +422 -0
- package/repos/effect/packages/effect/test/Optic.test.ts +452 -0
- package/repos/effect/packages/effect/test/Option.test.ts +564 -0
- package/repos/effect/packages/effect/test/Order.test.ts +163 -0
- package/repos/effect/packages/effect/test/Ordering.test.ts +18 -0
- package/repos/effect/packages/effect/test/PartitionedSemaphore.test.ts +74 -0
- package/repos/effect/packages/effect/test/Pathfinding.test.ts +426 -0
- package/repos/effect/packages/effect/test/Pool.test.ts +422 -0
- package/repos/effect/packages/effect/test/Predicate.test.ts +555 -0
- package/repos/effect/packages/effect/test/PubSub.test.ts +538 -0
- package/repos/effect/packages/effect/test/Queue.test.ts +317 -0
- package/repos/effect/packages/effect/test/Random.test.ts +238 -0
- package/repos/effect/packages/effect/test/RcMap.test.ts +237 -0
- package/repos/effect/packages/effect/test/RcRef.test.ts +97 -0
- package/repos/effect/packages/effect/test/Record.test.ts +395 -0
- package/repos/effect/packages/effect/test/Redacted.test.ts +59 -0
- package/repos/effect/packages/effect/test/Reducer.test.ts +12 -0
- package/repos/effect/packages/effect/test/Ref.test.ts +187 -0
- package/repos/effect/packages/effect/test/Request.test.ts +305 -0
- package/repos/effect/packages/effect/test/Resource.test.ts +59 -0
- package/repos/effect/packages/effect/test/Result.test.ts +517 -0
- package/repos/effect/packages/effect/test/Schedule.test.ts +395 -0
- package/repos/effect/packages/effect/test/Scheduler.test.ts +70 -0
- package/repos/effect/packages/effect/test/Scope.test.ts +19 -0
- package/repos/effect/packages/effect/test/ScopedCache.test.ts +2316 -0
- package/repos/effect/packages/effect/test/ScopedRef.test.ts +80 -0
- package/repos/effect/packages/effect/test/Semaphore.test.ts +469 -0
- package/repos/effect/packages/effect/test/Sink.test.ts +230 -0
- package/repos/effect/packages/effect/test/Stream.test.ts +4712 -0
- package/repos/effect/packages/effect/test/String.test.ts +690 -0
- package/repos/effect/packages/effect/test/Struct.test.ts +216 -0
- package/repos/effect/packages/effect/test/SubscriptionRef.test.ts +90 -0
- package/repos/effect/packages/effect/test/Symbol.test.ts +50 -0
- package/repos/effect/packages/effect/test/SynchronizedRef.test.ts +105 -0
- package/repos/effect/packages/effect/test/TestClock.test.ts +71 -0
- package/repos/effect/packages/effect/test/Tracer.test.ts +410 -0
- package/repos/effect/packages/effect/test/Trie.test.ts +531 -0
- package/repos/effect/packages/effect/test/Tuple.test.ts +127 -0
- package/repos/effect/packages/effect/test/TxChunk.test.ts +342 -0
- package/repos/effect/packages/effect/test/TxDeferred.test.ts +197 -0
- package/repos/effect/packages/effect/test/TxHashMap.test.ts +963 -0
- package/repos/effect/packages/effect/test/TxHashSet.test.ts +442 -0
- package/repos/effect/packages/effect/test/TxPriorityQueue.test.ts +187 -0
- package/repos/effect/packages/effect/test/TxPubSub.test.ts +391 -0
- package/repos/effect/packages/effect/test/TxQueue.test.ts +1260 -0
- package/repos/effect/packages/effect/test/TxReentrantLock.test.ts +413 -0
- package/repos/effect/packages/effect/test/TxSemaphore.test.ts +283 -0
- package/repos/effect/packages/effect/test/TxSubscriptionRef.test.ts +197 -0
- package/repos/effect/packages/effect/test/UndefinedOr.test.ts +65 -0
- package/repos/effect/packages/effect/test/cluster/ClusterWorkflowEngine.test.ts +652 -0
- package/repos/effect/packages/effect/test/cluster/Entity.test.ts +81 -0
- package/repos/effect/packages/effect/test/cluster/K8sHttpClient.test.ts +34 -0
- package/repos/effect/packages/effect/test/cluster/MessageStorage.test.ts +196 -0
- package/repos/effect/packages/effect/test/cluster/Sharding.test.ts +578 -0
- package/repos/effect/packages/effect/test/cluster/TestEntity.ts +132 -0
- package/repos/effect/packages/effect/test/reactivity/AsyncResult.test.ts +41 -0
- package/repos/effect/packages/effect/test/reactivity/Atom.test.ts +2551 -0
- package/repos/effect/packages/effect/test/reactivity/AtomHttpApi.test.ts +86 -0
- package/repos/effect/packages/effect/test/reactivity/AtomRpc.test.ts +70 -0
- package/repos/effect/packages/effect/test/rpc/Rpc.test.ts +73 -0
- package/repos/effect/packages/effect/test/rpc/RpcClient.test.ts +58 -0
- package/repos/effect/packages/effect/test/rpc/RpcSerialization.test.ts +171 -0
- package/repos/effect/packages/effect/test/schema/HMR.test.ts +72 -0
- package/repos/effect/packages/effect/test/schema/Schema.test.ts +9133 -0
- package/repos/effect/packages/effect/test/schema/SchemaAST.test.ts +280 -0
- package/repos/effect/packages/effect/test/schema/SchemaGetter.test.ts +383 -0
- package/repos/effect/packages/effect/test/schema/SchemaIssue.test.ts +9 -0
- package/repos/effect/packages/effect/test/schema/SchemaParser.test.ts +323 -0
- package/repos/effect/packages/effect/test/schema/fixtures/HMR-Class.ts +5 -0
- package/repos/effect/packages/effect/test/schema/fixtures/HMR-sanity-check.ts +3 -0
- package/repos/effect/packages/effect/test/schema/representation/fromASTs.test.ts +820 -0
- package/repos/effect/packages/effect/test/schema/representation/fromJsonSchemaDocument.test.ts +2137 -0
- package/repos/effect/packages/effect/test/schema/representation/toCodeDocument.test.ts +2089 -0
- package/repos/effect/packages/effect/test/schema/representation/toJsonSchemaMultiDocument.test.ts +39 -0
- package/repos/effect/packages/effect/test/schema/representation/toSchema.test.ts +506 -0
- package/repos/effect/packages/effect/test/schema/toArbitrary.test.ts +1693 -0
- package/repos/effect/packages/effect/test/schema/toCodec.test.ts +3149 -0
- package/repos/effect/packages/effect/test/schema/toDifferJsonPatch.test.ts +239 -0
- package/repos/effect/packages/effect/test/schema/toEquivalence.test.ts +519 -0
- package/repos/effect/packages/effect/test/schema/toFormatter.test.ts +565 -0
- package/repos/effect/packages/effect/test/schema/toIso.test.ts +394 -0
- package/repos/effect/packages/effect/test/schema/toJsonSchemaDocument.test.ts +3630 -0
- package/repos/effect/packages/effect/test/schema/toStandardJSONSchemaV1.test.ts +126 -0
- package/repos/effect/packages/effect/test/schema/toStandardSchemaV1.test.ts +495 -0
- package/repos/effect/packages/effect/test/schema/v3-v4.test.ts +250 -0
- package/repos/effect/packages/effect/test/testing/TestSchema.test.ts +78 -0
- package/repos/effect/packages/effect/test/unstable/ai/AiError.test.ts +823 -0
- package/repos/effect/packages/effect/test/unstable/ai/AnthropicStructuredOutput.test.ts +593 -0
- package/repos/effect/packages/effect/test/unstable/ai/Chat.test.ts +147 -0
- package/repos/effect/packages/effect/test/unstable/ai/EmbeddingModel.test.ts +185 -0
- package/repos/effect/packages/effect/test/unstable/ai/LanguageModel.test.ts +1714 -0
- package/repos/effect/packages/effect/test/unstable/ai/LanguageModelTrackerLifecycle.test.ts +413 -0
- package/repos/effect/packages/effect/test/unstable/ai/McpServer.test.ts +82 -0
- package/repos/effect/packages/effect/test/unstable/ai/Model.test.ts +16 -0
- package/repos/effect/packages/effect/test/unstable/ai/OpenAiStructuredOutput.test.ts +723 -0
- package/repos/effect/packages/effect/test/unstable/ai/Prompt.test.ts +346 -0
- package/repos/effect/packages/effect/test/unstable/ai/ResponseIdTracker.test.ts +424 -0
- package/repos/effect/packages/effect/test/unstable/ai/Tool.test.ts +1264 -0
- package/repos/effect/packages/effect/test/unstable/ai/utils.ts +68 -0
- package/repos/effect/packages/effect/test/unstable/cli/Arguments.test.ts +390 -0
- package/repos/effect/packages/effect/test/unstable/cli/Command.test.ts +1801 -0
- package/repos/effect/packages/effect/test/unstable/cli/Errors.test.ts +150 -0
- package/repos/effect/packages/effect/test/unstable/cli/Help.test.ts +572 -0
- package/repos/effect/packages/effect/test/unstable/cli/LogLevel.test.ts +202 -0
- package/repos/effect/packages/effect/test/unstable/cli/Param.test.ts +391 -0
- package/repos/effect/packages/effect/test/unstable/cli/Primitive.test.ts +321 -0
- package/repos/effect/packages/effect/test/unstable/cli/Prompt.test.ts +597 -0
- package/repos/effect/packages/effect/test/unstable/cli/completions/completions.test.ts +656 -0
- package/repos/effect/packages/effect/test/unstable/cli/completions/descriptor.test.ts +245 -0
- package/repos/effect/packages/effect/test/unstable/cli/fixtures/ComprehensiveCli.ts +422 -0
- package/repos/effect/packages/effect/test/unstable/cli/services/MockTerminal.ts +135 -0
- package/repos/effect/packages/effect/test/unstable/cli/services/TestActions.ts +36 -0
- package/repos/effect/packages/effect/test/unstable/encoding/Ndjson.test.ts +18 -0
- package/repos/effect/packages/effect/test/unstable/encoding/Sse.test.ts +62 -0
- package/repos/effect/packages/effect/test/unstable/eventlog/EventJournal.test.ts +25 -0
- package/repos/effect/packages/effect/test/unstable/eventlog/EventLog.test.ts +104 -0
- package/repos/effect/packages/effect/test/unstable/eventlog/EventLogIdentityDerivation.test.ts +85 -0
- package/repos/effect/packages/effect/test/unstable/eventlog/EventLogRemote.test.ts +176 -0
- package/repos/effect/packages/effect/test/unstable/eventlog/EventLogSessionAuth.test.ts +130 -0
- package/repos/effect/packages/effect/test/unstable/eventlog/SqlEventLogServerUnencryptedStorageTest.ts +169 -0
- package/repos/effect/packages/effect/test/unstable/http/Cookies.test.ts +80 -0
- package/repos/effect/packages/effect/test/unstable/http/Headers.test.ts +73 -0
- package/repos/effect/packages/effect/test/unstable/http/HttpClient.test.ts +306 -0
- package/repos/effect/packages/effect/test/unstable/http/HttpClientRequest.test.ts +164 -0
- package/repos/effect/packages/effect/test/unstable/http/HttpEffect.test.ts +254 -0
- package/repos/effect/packages/effect/test/unstable/http/HttpMiddleware.test.ts +57 -0
- package/repos/effect/packages/effect/test/unstable/http/HttpServerError.test.ts +121 -0
- package/repos/effect/packages/effect/test/unstable/http/HttpServerRequest.test.ts +157 -0
- package/repos/effect/packages/effect/test/unstable/http/HttpServerResponse.test.ts +76 -0
- package/repos/effect/packages/effect/test/unstable/http/Multipart.test.ts +69 -0
- package/repos/effect/packages/effect/test/unstable/http/Url.test.ts +98 -0
- package/repos/effect/packages/effect/test/unstable/http/UrlParams.test.ts +30 -0
- package/repos/effect/packages/effect/test/unstable/httpapi/HttpApiBuilder.test.ts +186 -0
- package/repos/effect/packages/effect/test/unstable/httpapi/HttpApiClient.test.ts +446 -0
- package/repos/effect/packages/effect/test/unstable/httpapi/HttpApiEndpoint.test.ts +160 -0
- package/repos/effect/packages/effect/test/unstable/httpapi/HttpApiSchema.test.ts +108 -0
- package/repos/effect/packages/effect/test/unstable/httpapi/HttpApiSecurity.test.ts +41 -0
- package/repos/effect/packages/effect/test/unstable/httpapi/OpenApi.test.ts +39 -0
- package/repos/effect/packages/effect/test/unstable/observability/OtlpConfig.test.ts +151 -0
- package/repos/effect/packages/effect/test/unstable/observability/OtlpExporter.test.ts +108 -0
- package/repos/effect/packages/effect/test/unstable/observability/OtlpMetrics.test.ts +518 -0
- package/repos/effect/packages/effect/test/unstable/observability/OtlpResource.test.ts +84 -0
- package/repos/effect/packages/effect/test/unstable/observability/PrometheusMetrics.test.ts +417 -0
- package/repos/effect/packages/effect/test/unstable/persistence/KeyValueStore.test.ts +164 -0
- package/repos/effect/packages/effect/test/unstable/persistence/KeyValueStoreTest.ts +85 -0
- package/repos/effect/packages/effect/test/unstable/persistence/PersistedCache.test.ts +4 -0
- package/repos/effect/packages/effect/test/unstable/persistence/PersistedCacheTest.ts +111 -0
- package/repos/effect/packages/effect/test/unstable/persistence/PersistedQueue.test.ts +4 -0
- package/repos/effect/packages/effect/test/unstable/persistence/PersistedQueueTest.ts +106 -0
- package/repos/effect/packages/effect/test/unstable/persistence/RateLimiter.test.ts +145 -0
- package/repos/effect/packages/effect/test/unstable/persistence/Redis.test.ts +43 -0
- package/repos/effect/packages/effect/test/unstable/process/ChildProcess.test.ts +352 -0
- package/repos/effect/packages/effect/test/unstable/schema/VariantSchema.test.ts +72 -0
- package/repos/effect/packages/effect/test/unstable/sql/SqlError.test.ts +228 -0
- package/repos/effect/packages/effect/test/unstable/sql/SqlSchema.test.ts +168 -0
- package/repos/effect/packages/effect/test/unstable/workers/WorkerError.test.ts +90 -0
- package/repos/effect/packages/effect/test/unstable/workflow/DurableQueue.test.ts +105 -0
- package/repos/effect/packages/effect/test/unstable/workflow/WorkflowEngine.test.ts +60 -0
- package/repos/effect/packages/effect/test/utils/assert.ts +182 -0
- package/repos/effect/packages/effect/test/utils/chunkCoordination.ts +36 -0
- package/repos/effect/packages/effect/test/utils/counter.ts +54 -0
- package/repos/effect/packages/effect/tsconfig.json +8 -0
- package/repos/effect/packages/effect/typetest/AiError.tst.ts +49 -0
- package/repos/effect/packages/effect/typetest/Array.tst.ts +1289 -0
- package/repos/effect/packages/effect/typetest/Brand.tst.ts +51 -0
- package/repos/effect/packages/effect/typetest/Channel.tst.ts +112 -0
- package/repos/effect/packages/effect/typetest/Config.tst.ts +31 -0
- package/repos/effect/packages/effect/typetest/Data.tst.ts +121 -0
- package/repos/effect/packages/effect/typetest/Effect.tst.ts +976 -0
- package/repos/effect/packages/effect/typetest/Equivalence.tst.ts +19 -0
- package/repos/effect/packages/effect/typetest/Newtype.tst.ts +72 -0
- package/repos/effect/packages/effect/typetest/Optic.tst.ts +130 -0
- package/repos/effect/packages/effect/typetest/Option.tst.ts +72 -0
- package/repos/effect/packages/effect/typetest/Order.tst.ts +19 -0
- package/repos/effect/packages/effect/typetest/Predicate.tst.ts +251 -0
- package/repos/effect/packages/effect/typetest/Result.tst.ts +353 -0
- package/repos/effect/packages/effect/typetest/Schedule.tst.ts +21 -0
- package/repos/effect/packages/effect/typetest/Stream.tst.ts +197 -0
- package/repos/effect/packages/effect/typetest/Struct.tst.ts +422 -0
- package/repos/effect/packages/effect/typetest/Tuple.tst.ts +177 -0
- package/repos/effect/packages/effect/typetest/Types.tst.ts +364 -0
- package/repos/effect/packages/effect/typetest/VariantSchema.tst.ts +76 -0
- package/repos/effect/packages/effect/typetest/schema/Array.tst.ts +46 -0
- package/repos/effect/packages/effect/typetest/schema/Literals.tst.ts +58 -0
- package/repos/effect/packages/effect/typetest/schema/Record.tst.ts +145 -0
- package/repos/effect/packages/effect/typetest/schema/Schema.tst.ts +1854 -0
- package/repos/effect/packages/effect/typetest/schema/Struct.tst.ts +745 -0
- package/repos/effect/packages/effect/typetest/schema/Tuple.tst.ts +199 -0
- package/repos/effect/packages/effect/typetest/schema/Union.tst.ts +198 -0
- package/repos/effect/packages/effect/typetest/schema/api.tst.ts +276 -0
- package/repos/effect/packages/effect/typetest/schema/toArbitrary.tst.ts +65 -0
- package/repos/effect/packages/effect/typetest/schema/toIso.tst.ts +282 -0
- package/repos/effect/packages/effect/typetest/unstable/ai/LanguageModel.tst.ts +191 -0
- package/repos/effect/packages/effect/typetest/unstable/ai/Tool.tst.ts +33 -0
- package/repos/effect/packages/effect/typetest/unstable/cli/Command.tst.ts +124 -0
- package/repos/effect/packages/effect/typetest/unstable/cli/Param.tst.ts +20 -0
- package/repos/effect/packages/effect/typetest/unstable/cli/Prompt.tst.ts +97 -0
- package/repos/effect/packages/effect/typetest/unstable/encoding/Ndjson.tst.ts +24 -0
- package/repos/effect/packages/effect/typetest/unstable/http/HttpClient.tst.ts +143 -0
- package/repos/effect/packages/effect/typetest/unstable/httpapi/HttpApiBuilder.tst.ts +98 -0
- package/repos/effect/packages/effect/typetest/unstable/httpapi/HttpApiClient.tst.ts +677 -0
- package/repos/effect/packages/effect/typetest/unstable/httpapi/HttpApiEndpoint.tst.ts +466 -0
- package/repos/effect/packages/effect/typetest/unstable/httpapi/HttpApiMiddleware.tst.ts +90 -0
- package/repos/effect/packages/effect/typetest/unstable/httpapi/HttpApiSchema.tst.ts +135 -0
- package/repos/effect/packages/effect/typetest/unstable/reactivity/AsyncResult.tst.ts +65 -0
- package/repos/effect/packages/effect/typetest/unstable/reactivity/AtomHttpApi.tst.ts +63 -0
- package/repos/effect/packages/effect/typetest/unstable/rpc/Rpc.tst.ts +74 -0
- package/repos/effect/packages/effect/typetest/unstable/rpc/RpcGroup.tst.ts +61 -0
- package/repos/effect/packages/effect/typetest/unstable/rpc/RpcMiddleware.tst.ts +41 -0
- package/repos/effect/packages/effect/typetest/unstable/rpc/RpcServer.tst.ts +26 -0
- package/repos/effect/packages/effect/typetest/unstable/sql/SqlSchema.tst.ts +75 -0
- package/repos/effect/packages/effect/typetest/unstable/workflow/Workflow.tst.ts +16 -0
- package/repos/effect/packages/effect/vitest.config.ts +11 -0
- package/repos/effect/packages/opentelemetry/CHANGELOG.md +620 -0
- package/repos/effect/packages/opentelemetry/LICENSE +21 -0
- package/repos/effect/packages/opentelemetry/README.md +5 -0
- package/repos/effect/packages/opentelemetry/docgen.json +30 -0
- package/repos/effect/packages/opentelemetry/package.json +126 -0
- package/repos/effect/packages/opentelemetry/src/Logger.ts +193 -0
- package/repos/effect/packages/opentelemetry/src/Metrics.ts +138 -0
- package/repos/effect/packages/opentelemetry/src/NodeSdk.ts +162 -0
- package/repos/effect/packages/opentelemetry/src/Resource.ts +147 -0
- package/repos/effect/packages/opentelemetry/src/Tracer.ts +594 -0
- package/repos/effect/packages/opentelemetry/src/WebSdk.ts +140 -0
- package/repos/effect/packages/opentelemetry/src/index.ts +35 -0
- package/repos/effect/packages/opentelemetry/src/internal/attributes.ts +28 -0
- package/repos/effect/packages/opentelemetry/src/internal/metrics.ts +463 -0
- package/repos/effect/packages/opentelemetry/src/internal/utilities.ts +5 -0
- package/repos/effect/packages/opentelemetry/test/Logger.test.ts +122 -0
- package/repos/effect/packages/opentelemetry/test/Metrics.test.ts +339 -0
- package/repos/effect/packages/opentelemetry/test/Tracer.test.ts +167 -0
- package/repos/effect/packages/opentelemetry/tsconfig.json +8 -0
- package/repos/effect/packages/opentelemetry/vitest.config.ts +6 -0
- package/repos/effect/packages/platform-browser/CHANGELOG.md +637 -0
- package/repos/effect/packages/platform-browser/LICENSE +21 -0
- package/repos/effect/packages/platform-browser/README.md +1 -0
- package/repos/effect/packages/platform-browser/docgen.json +21 -0
- package/repos/effect/packages/platform-browser/package.json +74 -0
- package/repos/effect/packages/platform-browser/src/BrowserCrypto.ts +97 -0
- package/repos/effect/packages/platform-browser/src/BrowserHttpClient.ts +430 -0
- package/repos/effect/packages/platform-browser/src/BrowserKeyValueStore.ts +177 -0
- package/repos/effect/packages/platform-browser/src/BrowserPersistence.ts +334 -0
- package/repos/effect/packages/platform-browser/src/BrowserRuntime.ts +53 -0
- package/repos/effect/packages/platform-browser/src/BrowserSocket.ts +52 -0
- package/repos/effect/packages/platform-browser/src/BrowserStream.ts +56 -0
- package/repos/effect/packages/platform-browser/src/BrowserWorker.ts +98 -0
- package/repos/effect/packages/platform-browser/src/BrowserWorkerRunner.ts +199 -0
- package/repos/effect/packages/platform-browser/src/Clipboard.ts +143 -0
- package/repos/effect/packages/platform-browser/src/Geolocation.ts +233 -0
- package/repos/effect/packages/platform-browser/src/IndexedDb.ts +113 -0
- package/repos/effect/packages/platform-browser/src/IndexedDbDatabase.ts +648 -0
- package/repos/effect/packages/platform-browser/src/IndexedDbQueryBuilder.ts +2032 -0
- package/repos/effect/packages/platform-browser/src/IndexedDbTable.ts +260 -0
- package/repos/effect/packages/platform-browser/src/IndexedDbVersion.ts +138 -0
- package/repos/effect/packages/platform-browser/src/Permissions.ts +146 -0
- package/repos/effect/packages/platform-browser/src/index.ts +90 -0
- package/repos/effect/packages/platform-browser/test/BrowserCrypto.test.ts +74 -0
- package/repos/effect/packages/platform-browser/test/BrowserHttpClient.test.ts +91 -0
- package/repos/effect/packages/platform-browser/test/BrowserKeyValueStore.test.ts +23 -0
- package/repos/effect/packages/platform-browser/test/BrowserPersistence.test.ts +209 -0
- package/repos/effect/packages/platform-browser/test/BrowserPersistencePersistedCache.test.ts +29 -0
- package/repos/effect/packages/platform-browser/test/IndexedDbDatabase.test.ts +253 -0
- package/repos/effect/packages/platform-browser/test/IndexedDbQueryBuilder.test.ts +1459 -0
- package/repos/effect/packages/platform-browser/test/IndexedDbTable.test.ts +101 -0
- package/repos/effect/packages/platform-browser/test/IndexedDbVersion.test.ts +50 -0
- package/repos/effect/packages/platform-browser/test/Permissions.test.ts +12 -0
- package/repos/effect/packages/platform-browser/test/RpcWorker.test.ts +19 -0
- package/repos/effect/packages/platform-browser/test/fixtures/rpc-e2e.ts +141 -0
- package/repos/effect/packages/platform-browser/test/fixtures/rpc-schemas.ts +157 -0
- package/repos/effect/packages/platform-browser/test/fixtures/rpc-worker.ts +12 -0
- package/repos/effect/packages/platform-browser/tsconfig.json +8 -0
- package/repos/effect/packages/platform-browser/vitest.config.ts +17 -0
- package/repos/effect/packages/platform-browser/vitest.setup.ts +5 -0
- package/repos/effect/packages/platform-bun/CHANGELOG.md +691 -0
- package/repos/effect/packages/platform-bun/LICENSE +21 -0
- package/repos/effect/packages/platform-bun/README.md +7 -0
- package/repos/effect/packages/platform-bun/docgen.json +20 -0
- package/repos/effect/packages/platform-bun/package.json +73 -0
- package/repos/effect/packages/platform-bun/src/BunChildProcessSpawner.ts +6 -0
- package/repos/effect/packages/platform-bun/src/BunClusterHttp.ts +174 -0
- package/repos/effect/packages/platform-bun/src/BunClusterSocket.ts +153 -0
- package/repos/effect/packages/platform-bun/src/BunCrypto.ts +24 -0
- package/repos/effect/packages/platform-bun/src/BunFileSystem.ts +20 -0
- package/repos/effect/packages/platform-bun/src/BunHttpClient.ts +9 -0
- package/repos/effect/packages/platform-bun/src/BunHttpPlatform.ts +50 -0
- package/repos/effect/packages/platform-bun/src/BunHttpServer.ts +600 -0
- package/repos/effect/packages/platform-bun/src/BunHttpServerRequest.ts +19 -0
- package/repos/effect/packages/platform-bun/src/BunMultipart.ts +54 -0
- package/repos/effect/packages/platform-bun/src/BunPath.ts +37 -0
- package/repos/effect/packages/platform-bun/src/BunRedis.ts +88 -0
- package/repos/effect/packages/platform-bun/src/BunRuntime.ts +52 -0
- package/repos/effect/packages/platform-bun/src/BunServices.ts +49 -0
- package/repos/effect/packages/platform-bun/src/BunSink.ts +8 -0
- package/repos/effect/packages/platform-bun/src/BunSocket.ts +54 -0
- package/repos/effect/packages/platform-bun/src/BunSocketServer.ts +8 -0
- package/repos/effect/packages/platform-bun/src/BunStdio.ts +22 -0
- package/repos/effect/packages/platform-bun/src/BunStream.ts +68 -0
- package/repos/effect/packages/platform-bun/src/BunTerminal.ts +32 -0
- package/repos/effect/packages/platform-bun/src/BunWorker.ts +92 -0
- package/repos/effect/packages/platform-bun/src/BunWorkerRunner.ts +113 -0
- package/repos/effect/packages/platform-bun/src/index.ts +115 -0
- package/repos/effect/packages/platform-bun/tsconfig.json +12 -0
- package/repos/effect/packages/platform-node/CHANGELOG.md +695 -0
- package/repos/effect/packages/platform-node/LICENSE +21 -0
- package/repos/effect/packages/platform-node/README.md +7 -0
- package/repos/effect/packages/platform-node/docgen.json +24 -0
- package/repos/effect/packages/platform-node/package.json +82 -0
- package/repos/effect/packages/platform-node/src/Mime.ts +25 -0
- package/repos/effect/packages/platform-node/src/NodeChildProcessSpawner.ts +6 -0
- package/repos/effect/packages/platform-node/src/NodeClusterHttp.ts +155 -0
- package/repos/effect/packages/platform-node/src/NodeClusterSocket.ts +176 -0
- package/repos/effect/packages/platform-node/src/NodeCrypto.ts +24 -0
- package/repos/effect/packages/platform-node/src/NodeFileSystem.ts +21 -0
- package/repos/effect/packages/platform-node/src/NodeHttpClient.ts +664 -0
- package/repos/effect/packages/platform-node/src/NodeHttpIncomingMessage.ts +141 -0
- package/repos/effect/packages/platform-node/src/NodeHttpPlatform.ts +70 -0
- package/repos/effect/packages/platform-node/src/NodeHttpServer.ts +646 -0
- package/repos/effect/packages/platform-node/src/NodeHttpServerRequest.ts +33 -0
- package/repos/effect/packages/platform-node/src/NodeMultipart.ts +183 -0
- package/repos/effect/packages/platform-node/src/NodePath.ts +40 -0
- package/repos/effect/packages/platform-node/src/NodeRedis.ts +92 -0
- package/repos/effect/packages/platform-node/src/NodeRuntime.ts +53 -0
- package/repos/effect/packages/platform-node/src/NodeServices.ts +50 -0
- package/repos/effect/packages/platform-node/src/NodeSink.ts +8 -0
- package/repos/effect/packages/platform-node/src/NodeSocket.ts +72 -0
- package/repos/effect/packages/platform-node/src/NodeSocketServer.ts +8 -0
- package/repos/effect/packages/platform-node/src/NodeStdio.ts +22 -0
- package/repos/effect/packages/platform-node/src/NodeStream.ts +8 -0
- package/repos/effect/packages/platform-node/src/NodeTerminal.ts +32 -0
- package/repos/effect/packages/platform-node/src/NodeWorker.ts +121 -0
- package/repos/effect/packages/platform-node/src/NodeWorkerRunner.ts +110 -0
- package/repos/effect/packages/platform-node/src/Undici.ts +29 -0
- package/repos/effect/packages/platform-node/src/index.ts +130 -0
- package/repos/effect/packages/platform-node/test/HttpApi.test.ts +1831 -0
- package/repos/effect/packages/platform-node/test/HttpStaticServer.test.ts +253 -0
- package/repos/effect/packages/platform-node/test/HttpStaticServerConditional.test.ts +296 -0
- package/repos/effect/packages/platform-node/test/NodeCrypto.test.ts +59 -0
- package/repos/effect/packages/platform-node/test/NodeHttpClient.test.ts +157 -0
- package/repos/effect/packages/platform-node/test/NodeHttpPlatform.test.ts +51 -0
- package/repos/effect/packages/platform-node/test/NodeHttpServer.test.ts +598 -0
- package/repos/effect/packages/platform-node/test/NodeRedis.test.ts +31 -0
- package/repos/effect/packages/platform-node/test/NodeSocket.test.ts +153 -0
- package/repos/effect/packages/platform-node/test/OpenApi.test.ts +1573 -0
- package/repos/effect/packages/platform-node/test/RpcServer.test.ts +213 -0
- package/repos/effect/packages/platform-node/test/__snapshots__/HttpApi.test.ts.snap +715 -0
- package/repos/effect/packages/platform-node/test/cluster/MessageStorageTest.ts +196 -0
- package/repos/effect/packages/platform-node/test/cluster/SocketRunner.test.ts +120 -0
- package/repos/effect/packages/platform-node/test/cluster/SqlMessageStorage.test.ts +222 -0
- package/repos/effect/packages/platform-node/test/cluster/SqlRunnerStorage.test.ts +101 -0
- package/repos/effect/packages/platform-node/test/fixtures/http-static-server/conditional.txt +1 -0
- package/repos/effect/packages/platform-node/test/fixtures/http-static-server/custom/home.html +1 -0
- package/repos/effect/packages/platform-node/test/fixtures/http-static-server/file.binx +1 -0
- package/repos/effect/packages/platform-node/test/fixtures/http-static-server/guide/index.html +1 -0
- package/repos/effect/packages/platform-node/test/fixtures/http-static-server/hello.txt +1 -0
- package/repos/effect/packages/platform-node/test/fixtures/http-static-server/index.html +1 -0
- package/repos/effect/packages/platform-node/test/fixtures/http-static-server/range.txt +1 -0
- package/repos/effect/packages/platform-node/test/fixtures/http-static-server-outside.txt +1 -0
- package/repos/effect/packages/platform-node/test/fixtures/mysql2-utils.ts +64 -0
- package/repos/effect/packages/platform-node/test/fixtures/pg-utils.ts +39 -0
- package/repos/effect/packages/platform-node/test/fixtures/rpc-e2e.ts +149 -0
- package/repos/effect/packages/platform-node/test/fixtures/rpc-schemas.ts +175 -0
- package/repos/effect/packages/platform-node/test/fixtures/text.txt +1 -0
- package/repos/effect/packages/platform-node/tsconfig.json +12 -0
- package/repos/effect/packages/platform-node/vitest.config.ts +6 -0
- package/repos/effect/packages/platform-node-shared/CHANGELOG.md +617 -0
- package/repos/effect/packages/platform-node-shared/LICENSE +21 -0
- package/repos/effect/packages/platform-node-shared/README.md +7 -0
- package/repos/effect/packages/platform-node-shared/docgen.json +38 -0
- package/repos/effect/packages/platform-node-shared/package.json +76 -0
- package/repos/effect/packages/platform-node-shared/src/NodeChildProcessSpawner.ts +713 -0
- package/repos/effect/packages/platform-node-shared/src/NodeClusterSocket.ts +70 -0
- package/repos/effect/packages/platform-node-shared/src/NodeCrypto.ts +60 -0
- package/repos/effect/packages/platform-node-shared/src/NodeFileSystem.ts +652 -0
- package/repos/effect/packages/platform-node-shared/src/NodePath.ts +80 -0
- package/repos/effect/packages/platform-node-shared/src/NodeRuntime.ts +59 -0
- package/repos/effect/packages/platform-node-shared/src/NodeSink.ts +116 -0
- package/repos/effect/packages/platform-node-shared/src/NodeSocket.ts +269 -0
- package/repos/effect/packages/platform-node-shared/src/NodeSocketServer.ts +301 -0
- package/repos/effect/packages/platform-node-shared/src/NodeStdio.ts +67 -0
- package/repos/effect/packages/platform-node-shared/src/NodeStream.ts +445 -0
- package/repos/effect/packages/platform-node-shared/src/NodeTerminal.ts +129 -0
- package/repos/effect/packages/platform-node-shared/src/index.ts +65 -0
- package/repos/effect/packages/platform-node-shared/src/internal/utils.ts +51 -0
- package/repos/effect/packages/platform-node-shared/test/NodeChildProcessSpawner.test.ts +1069 -0
- package/repos/effect/packages/platform-node-shared/test/NodeFileSystem.test.ts +214 -0
- package/repos/effect/packages/platform-node-shared/test/NodeSink.test.ts +153 -0
- package/repos/effect/packages/platform-node-shared/test/NodeStream.test.ts +173 -0
- package/repos/effect/packages/platform-node-shared/test/fixtures/bash/no-permissions.sh +3 -0
- package/repos/effect/packages/platform-node-shared/test/fixtures/bash/parent-exits-early.sh +31 -0
- package/repos/effect/packages/platform-node-shared/test/fixtures/bash/spawn-children.sh +32 -0
- package/repos/effect/packages/platform-node-shared/test/fixtures/config/SHOUTING +1 -0
- package/repos/effect/packages/platform-node-shared/test/fixtures/config/integer +1 -0
- package/repos/effect/packages/platform-node-shared/test/fixtures/config/nested/config +1 -0
- package/repos/effect/packages/platform-node-shared/test/fixtures/config/secret +1 -0
- package/repos/effect/packages/platform-node-shared/test/fixtures/helloworld.tar.gz +0 -0
- package/repos/effect/packages/platform-node-shared/test/fixtures/text.txt +1 -0
- package/repos/effect/packages/platform-node-shared/tsconfig.json +11 -0
- package/repos/effect/packages/platform-node-shared/vitest.config.ts +6 -0
- package/repos/effect/packages/sql/clickhouse/CHANGELOG.md +681 -0
- package/repos/effect/packages/sql/clickhouse/LICENSE +21 -0
- package/repos/effect/packages/sql/clickhouse/README.md +7 -0
- package/repos/effect/packages/sql/clickhouse/docgen.json +24 -0
- package/repos/effect/packages/sql/clickhouse/package.json +72 -0
- package/repos/effect/packages/sql/clickhouse/src/ClickhouseClient.ts +546 -0
- package/repos/effect/packages/sql/clickhouse/src/ClickhouseMigrator.ts +51 -0
- package/repos/effect/packages/sql/clickhouse/src/index.ts +15 -0
- package/repos/effect/packages/sql/clickhouse/test/Client.test.ts +6 -0
- package/repos/effect/packages/sql/clickhouse/test/SqlErrorClassification.test.ts +75 -0
- package/repos/effect/packages/sql/clickhouse/tsconfig.json +12 -0
- package/repos/effect/packages/sql/clickhouse/vitest.config.ts +6 -0
- package/repos/effect/packages/sql/d1/CHANGELOG.md +597 -0
- package/repos/effect/packages/sql/d1/LICENSE +21 -0
- package/repos/effect/packages/sql/d1/README.md +7 -0
- package/repos/effect/packages/sql/d1/docgen.json +24 -0
- package/repos/effect/packages/sql/d1/package.json +75 -0
- package/repos/effect/packages/sql/d1/src/D1Client.ts +249 -0
- package/repos/effect/packages/sql/d1/src/index.ts +10 -0
- package/repos/effect/packages/sql/d1/test/Client.test.ts +65 -0
- package/repos/effect/packages/sql/d1/test/Resolver.test.ts +176 -0
- package/repos/effect/packages/sql/d1/test/utils.ts +38 -0
- package/repos/effect/packages/sql/d1/tsconfig.json +8 -0
- package/repos/effect/packages/sql/d1/vitest.config.ts +6 -0
- package/repos/effect/packages/sql/libsql/CHANGELOG.md +601 -0
- package/repos/effect/packages/sql/libsql/LICENSE +21 -0
- package/repos/effect/packages/sql/libsql/README.md +7 -0
- package/repos/effect/packages/sql/libsql/docgen.json +24 -0
- package/repos/effect/packages/sql/libsql/package.json +73 -0
- package/repos/effect/packages/sql/libsql/src/LibsqlClient.ts +381 -0
- package/repos/effect/packages/sql/libsql/src/LibsqlMigrator.ts +46 -0
- package/repos/effect/packages/sql/libsql/src/index.ts +15 -0
- package/repos/effect/packages/sql/libsql/test/Client.test.ts +106 -0
- package/repos/effect/packages/sql/libsql/test/Resolver.test.ts +177 -0
- package/repos/effect/packages/sql/libsql/test/util.ts +54 -0
- package/repos/effect/packages/sql/libsql/tsconfig.json +9 -0
- package/repos/effect/packages/sql/libsql/vitest.config.ts +6 -0
- package/repos/effect/packages/sql/mssql/CHANGELOG.md +601 -0
- package/repos/effect/packages/sql/mssql/LICENSE +21 -0
- package/repos/effect/packages/sql/mssql/README.md +7 -0
- package/repos/effect/packages/sql/mssql/docgen.json +24 -0
- package/repos/effect/packages/sql/mssql/package.json +70 -0
- package/repos/effect/packages/sql/mssql/src/MssqlClient.ts +732 -0
- package/repos/effect/packages/sql/mssql/src/MssqlMigrator.ts +45 -0
- package/repos/effect/packages/sql/mssql/src/Parameter.ts +64 -0
- package/repos/effect/packages/sql/mssql/src/Procedure.ts +213 -0
- package/repos/effect/packages/sql/mssql/src/index.ts +32 -0
- package/repos/effect/packages/sql/mssql/test/Client.test.ts +91 -0
- package/repos/effect/packages/sql/mssql/test/SqlErrorClassification.test.ts +206 -0
- package/repos/effect/packages/sql/mssql/tsconfig.json +8 -0
- package/repos/effect/packages/sql/mssql/vitest.config.ts +6 -0
- package/repos/effect/packages/sql/mysql2/CHANGELOG.md +603 -0
- package/repos/effect/packages/sql/mysql2/LICENSE +21 -0
- package/repos/effect/packages/sql/mysql2/README.md +7 -0
- package/repos/effect/packages/sql/mysql2/docgen.json +24 -0
- package/repos/effect/packages/sql/mysql2/package.json +71 -0
- package/repos/effect/packages/sql/mysql2/src/MysqlClient.ts +517 -0
- package/repos/effect/packages/sql/mysql2/src/MysqlMigrator.ts +102 -0
- package/repos/effect/packages/sql/mysql2/src/index.ts +15 -0
- package/repos/effect/packages/sql/mysql2/test/Client.test.ts +34 -0
- package/repos/effect/packages/sql/mysql2/test/KeyValueStore.test.ts +16 -0
- package/repos/effect/packages/sql/mysql2/test/Model.test.ts +227 -0
- package/repos/effect/packages/sql/mysql2/test/MysqlClient.test.ts +35 -0
- package/repos/effect/packages/sql/mysql2/test/Persistence.test.ts +22 -0
- package/repos/effect/packages/sql/mysql2/test/SqlErrorClassification.test.ts +133 -0
- package/repos/effect/packages/sql/mysql2/test/SqlEventLogServerUnencrypted.test.ts +7 -0
- package/repos/effect/packages/sql/mysql2/test/utils.ts +64 -0
- package/repos/effect/packages/sql/mysql2/tsconfig.json +9 -0
- package/repos/effect/packages/sql/mysql2/vitest.config.ts +6 -0
- package/repos/effect/packages/sql/pg/CHANGELOG.md +3432 -0
- package/repos/effect/packages/sql/pg/LICENSE +21 -0
- package/repos/effect/packages/sql/pg/README.md +7 -0
- package/repos/effect/packages/sql/pg/docgen.json +24 -0
- package/repos/effect/packages/sql/pg/package.json +77 -0
- package/repos/effect/packages/sql/pg/src/PgClient.ts +947 -0
- package/repos/effect/packages/sql/pg/src/PgMigrator.ts +120 -0
- package/repos/effect/packages/sql/pg/src/index.ts +15 -0
- package/repos/effect/packages/sql/pg/test/Client.test.ts +373 -0
- package/repos/effect/packages/sql/pg/test/KeyValueStore.test.ts +16 -0
- package/repos/effect/packages/sql/pg/test/Persistence.test.ts +20 -0
- package/repos/effect/packages/sql/pg/test/SqlErrorClassification.test.ts +81 -0
- package/repos/effect/packages/sql/pg/test/SqlEventLogServerUnencrypted.test.ts +7 -0
- package/repos/effect/packages/sql/pg/test/TransactionAcquire.test.ts +52 -0
- package/repos/effect/packages/sql/pg/test/utils.ts +49 -0
- package/repos/effect/packages/sql/pg/tsconfig.json +9 -0
- package/repos/effect/packages/sql/pg/vitest.config.ts +6 -0
- package/repos/effect/packages/sql/pglite/CHANGELOG.md +198 -0
- package/repos/effect/packages/sql/pglite/LICENSE +21 -0
- package/repos/effect/packages/sql/pglite/README.md +7 -0
- package/repos/effect/packages/sql/pglite/docgen.json +24 -0
- package/repos/effect/packages/sql/pglite/package.json +74 -0
- package/repos/effect/packages/sql/pglite/src/PgliteClient.ts +503 -0
- package/repos/effect/packages/sql/pglite/src/PgliteMigrator.ts +44 -0
- package/repos/effect/packages/sql/pglite/src/index.ts +15 -0
- package/repos/effect/packages/sql/pglite/test/Client.test.ts +149 -0
- package/repos/effect/packages/sql/pglite/test/Migrator.test.ts +45 -0
- package/repos/effect/packages/sql/pglite/test/SqlErrorClassification.test.ts +56 -0
- package/repos/effect/packages/sql/pglite/test/Transaction.test.ts +62 -0
- package/repos/effect/packages/sql/pglite/tsconfig.json +8 -0
- package/repos/effect/packages/sql/pglite/vitest.config.ts +6 -0
- package/repos/effect/packages/sql/sqlite-bun/CHANGELOG.md +601 -0
- package/repos/effect/packages/sql/sqlite-bun/LICENSE +21 -0
- package/repos/effect/packages/sql/sqlite-bun/README.md +7 -0
- package/repos/effect/packages/sql/sqlite-bun/docgen.json +24 -0
- package/repos/effect/packages/sql/sqlite-bun/package.json +69 -0
- package/repos/effect/packages/sql/sqlite-bun/src/SqliteClient.ts +262 -0
- package/repos/effect/packages/sql/sqlite-bun/src/SqliteMigrator.ts +90 -0
- package/repos/effect/packages/sql/sqlite-bun/src/index.ts +15 -0
- package/repos/effect/packages/sql/sqlite-bun/test/Client.test.ts +6 -0
- package/repos/effect/packages/sql/sqlite-bun/tsconfig.json +11 -0
- package/repos/effect/packages/sql/sqlite-bun/vitest.config.ts +6 -0
- package/repos/effect/packages/sql/sqlite-do/CHANGELOG.md +601 -0
- package/repos/effect/packages/sql/sqlite-do/LICENSE +21 -0
- package/repos/effect/packages/sql/sqlite-do/README.md +7 -0
- package/repos/effect/packages/sql/sqlite-do/docgen.json +24 -0
- package/repos/effect/packages/sql/sqlite-do/package.json +68 -0
- package/repos/effect/packages/sql/sqlite-do/src/SqliteClient.ts +249 -0
- package/repos/effect/packages/sql/sqlite-do/src/SqliteMigrator.ts +45 -0
- package/repos/effect/packages/sql/sqlite-do/src/index.ts +15 -0
- package/repos/effect/packages/sql/sqlite-do/test/Client.test.ts +24 -0
- package/repos/effect/packages/sql/sqlite-do/tsconfig.json +8 -0
- package/repos/effect/packages/sql/sqlite-do/vitest.config.ts +6 -0
- package/repos/effect/packages/sql/sqlite-node/CHANGELOG.md +3415 -0
- package/repos/effect/packages/sql/sqlite-node/LICENSE +21 -0
- package/repos/effect/packages/sql/sqlite-node/README.md +7 -0
- package/repos/effect/packages/sql/sqlite-node/docgen.json +24 -0
- package/repos/effect/packages/sql/sqlite-node/package.json +72 -0
- package/repos/effect/packages/sql/sqlite-node/src/SqliteClient.ts +312 -0
- package/repos/effect/packages/sql/sqlite-node/src/SqliteMigrator.ts +90 -0
- package/repos/effect/packages/sql/sqlite-node/src/index.ts +15 -0
- package/repos/effect/packages/sql/sqlite-node/test/Client.test.ts +75 -0
- package/repos/effect/packages/sql/sqlite-node/test/KeyValueStore.test.ts +29 -0
- package/repos/effect/packages/sql/sqlite-node/test/Persistence.test.ts +109 -0
- package/repos/effect/packages/sql/sqlite-node/test/Resolver.test.ts +183 -0
- package/repos/effect/packages/sql/sqlite-node/test/SqlEventJournal.test.ts +84 -0
- package/repos/effect/packages/sql/sqlite-node/test/SqlEventLogServerEncrypted.test.ts +249 -0
- package/repos/effect/packages/sql/sqlite-node/test/SqlEventLogServerUnencrypted.test.ts +110 -0
- package/repos/effect/packages/sql/sqlite-node/test/SqliteMigrator.test.ts +48 -0
- package/repos/effect/packages/sql/sqlite-node/tsconfig.json +8 -0
- package/repos/effect/packages/sql/sqlite-node/vitest.config.ts +6 -0
- package/repos/effect/packages/sql/sqlite-react-native/CHANGELOG.md +601 -0
- package/repos/effect/packages/sql/sqlite-react-native/LICENSE +21 -0
- package/repos/effect/packages/sql/sqlite-react-native/README.md +7 -0
- package/repos/effect/packages/sql/sqlite-react-native/docgen.json +24 -0
- package/repos/effect/packages/sql/sqlite-react-native/package.json +69 -0
- package/repos/effect/packages/sql/sqlite-react-native/src/SqliteClient.ts +354 -0
- package/repos/effect/packages/sql/sqlite-react-native/src/SqliteMigrator.ts +55 -0
- package/repos/effect/packages/sql/sqlite-react-native/src/index.ts +15 -0
- package/repos/effect/packages/sql/sqlite-react-native/test/Client.test.ts +6 -0
- package/repos/effect/packages/sql/sqlite-react-native/tsconfig.json +8 -0
- package/repos/effect/packages/sql/sqlite-react-native/vitest.config.ts +6 -0
- package/repos/effect/packages/sql/sqlite-wasm/CHANGELOG.md +601 -0
- package/repos/effect/packages/sql/sqlite-wasm/LICENSE +21 -0
- package/repos/effect/packages/sql/sqlite-wasm/README.md +7 -0
- package/repos/effect/packages/sql/sqlite-wasm/docgen.json +24 -0
- package/repos/effect/packages/sql/sqlite-wasm/package.json +69 -0
- package/repos/effect/packages/sql/sqlite-wasm/src/OpfsWorker.ts +118 -0
- package/repos/effect/packages/sql/sqlite-wasm/src/SqliteClient.ts +551 -0
- package/repos/effect/packages/sql/sqlite-wasm/src/SqliteMigrator.ts +55 -0
- package/repos/effect/packages/sql/sqlite-wasm/src/index.ts +14 -0
- package/repos/effect/packages/sql/sqlite-wasm/src/internal/opfsWorker.ts +7 -0
- package/repos/effect/packages/sql/sqlite-wasm/src/sqlite-wasm.d.ts +47 -0
- package/repos/effect/packages/sql/sqlite-wasm/test/Client.test.ts +6 -0
- package/repos/effect/packages/sql/sqlite-wasm/tsconfig.json +8 -0
- package/repos/effect/packages/sql/sqlite-wasm/vitest.config.ts +6 -0
- package/repos/effect/packages/tools/ai-codegen/codegen.schema.json +92 -0
- package/repos/effect/packages/tools/ai-codegen/docgen.json +4 -0
- package/repos/effect/packages/tools/ai-codegen/package.json +61 -0
- package/repos/effect/packages/tools/ai-codegen/src/Config.ts +292 -0
- package/repos/effect/packages/tools/ai-codegen/src/Discovery.ts +197 -0
- package/repos/effect/packages/tools/ai-codegen/src/Generator.ts +183 -0
- package/repos/effect/packages/tools/ai-codegen/src/Glob.ts +56 -0
- package/repos/effect/packages/tools/ai-codegen/src/PostProcess.ts +157 -0
- package/repos/effect/packages/tools/ai-codegen/src/SpecFetcher.ts +154 -0
- package/repos/effect/packages/tools/ai-codegen/src/bin.ts +10 -0
- package/repos/effect/packages/tools/ai-codegen/src/main.ts +237 -0
- package/repos/effect/packages/tools/ai-codegen/tsconfig.json +15 -0
- package/repos/effect/packages/tools/ai-docgen/docgen.json +4 -0
- package/repos/effect/packages/tools/ai-docgen/package.json +60 -0
- package/repos/effect/packages/tools/ai-docgen/src/Glob.ts +48 -0
- package/repos/effect/packages/tools/ai-docgen/src/main.ts +186 -0
- package/repos/effect/packages/tools/ai-docgen/tsconfig.json +14 -0
- package/repos/effect/packages/tools/bundle/docgen.json +4 -0
- package/repos/effect/packages/tools/bundle/fixtures/basic.ts +3 -0
- package/repos/effect/packages/tools/bundle/fixtures/batching.ts +25 -0
- package/repos/effect/packages/tools/bundle/fixtures/brand.ts +5 -0
- package/repos/effect/packages/tools/bundle/fixtures/cache.ts +10 -0
- package/repos/effect/packages/tools/bundle/fixtures/config.ts +13 -0
- package/repos/effect/packages/tools/bundle/fixtures/differ.ts +9 -0
- package/repos/effect/packages/tools/bundle/fixtures/http-client.ts +12 -0
- package/repos/effect/packages/tools/bundle/fixtures/logger.ts +5 -0
- package/repos/effect/packages/tools/bundle/fixtures/metric.ts +13 -0
- package/repos/effect/packages/tools/bundle/fixtures/optic.ts +6 -0
- package/repos/effect/packages/tools/bundle/fixtures/pubsub.ts +22 -0
- package/repos/effect/packages/tools/bundle/fixtures/queue.ts +18 -0
- package/repos/effect/packages/tools/bundle/fixtures/schedule.ts +9 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema-fromJsonSchemaDocument.ts +16 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema-representation-roundtrip.ts +16 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema-string-transformation.ts +20 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema-string.ts +8 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema-template-literal.ts +8 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema-toArbitraryLazy.ts +9 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema-toCodeDocument.ts +12 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema-toCodecJson.ts +9 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema-toEquivalence.ts +9 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema-toFormatter.ts +9 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema-toJsonSchemaDocument.ts +9 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema-toRepresentation.ts +9 -0
- package/repos/effect/packages/tools/bundle/fixtures/schema.ts +12 -0
- package/repos/effect/packages/tools/bundle/fixtures/stm.ts +21 -0
- package/repos/effect/packages/tools/bundle/fixtures/stream.ts +7 -0
- package/repos/effect/packages/tools/bundle/package.json +52 -0
- package/repos/effect/packages/tools/bundle/src/Cli.ts +104 -0
- package/repos/effect/packages/tools/bundle/src/Fixtures.ts +51 -0
- package/repos/effect/packages/tools/bundle/src/Plugins.ts +131 -0
- package/repos/effect/packages/tools/bundle/src/Reporter.ts +200 -0
- package/repos/effect/packages/tools/bundle/src/Rollup.ts +179 -0
- package/repos/effect/packages/tools/bundle/src/bin.ts +23 -0
- package/repos/effect/packages/tools/bundle/tsconfig.fixtures.json +13 -0
- package/repos/effect/packages/tools/bundle/tsconfig.json +9 -0
- package/repos/effect/packages/tools/bundle/tsconfig.src.json +13 -0
- package/repos/effect/packages/tools/jsdocs/docgen.json +4 -0
- package/repos/effect/packages/tools/jsdocs/package.json +64 -0
- package/repos/effect/packages/tools/jsdocs/src/Jsdocs.ts +3303 -0
- package/repos/effect/packages/tools/jsdocs/src/bin.ts +23 -0
- package/repos/effect/packages/tools/jsdocs/test/jsdocs.test.ts +979 -0
- package/repos/effect/packages/tools/jsdocs/tsconfig.json +8 -0
- package/repos/effect/packages/tools/jsdocs/vitest.config.ts +6 -0
- package/repos/effect/packages/tools/openapi-generator/CHANGELOG.md +691 -0
- package/repos/effect/packages/tools/openapi-generator/LICENSE +21 -0
- package/repos/effect/packages/tools/openapi-generator/docgen.json +4 -0
- package/repos/effect/packages/tools/openapi-generator/package.json +78 -0
- package/repos/effect/packages/tools/openapi-generator/src/HttpApiTransformer.ts +552 -0
- package/repos/effect/packages/tools/openapi-generator/src/JsonSchemaGenerator.ts +319 -0
- package/repos/effect/packages/tools/openapi-generator/src/OpenApiGenerator.ts +1201 -0
- package/repos/effect/packages/tools/openapi-generator/src/OpenApiPatch.ts +539 -0
- package/repos/effect/packages/tools/openapi-generator/src/OpenApiTransformer.ts +1019 -0
- package/repos/effect/packages/tools/openapi-generator/src/ParsedOperation.ts +277 -0
- package/repos/effect/packages/tools/openapi-generator/src/Utils.ts +111 -0
- package/repos/effect/packages/tools/openapi-generator/src/bin.ts +10 -0
- package/repos/effect/packages/tools/openapi-generator/src/main.ts +116 -0
- package/repos/effect/packages/tools/openapi-generator/test/JsonSchemaGenerator.test.ts +173 -0
- package/repos/effect/packages/tools/openapi-generator/test/OpenApiGenerator.test.ts +2130 -0
- package/repos/effect/packages/tools/openapi-generator/test/OpenApiGeneratorCli.test.ts +147 -0
- package/repos/effect/packages/tools/openapi-generator/test/OpenApiPatch.test.ts +380 -0
- package/repos/effect/packages/tools/openapi-generator/test/Utils.test.ts +33 -0
- package/repos/effect/packages/tools/openapi-generator/test/fixtures/cli-basic-spec.json +35 -0
- package/repos/effect/packages/tools/openapi-generator/test/fixtures/cli-warning-spec.json +57 -0
- package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/invalid-op.json +7 -0
- package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/missing-path.json +6 -0
- package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/missing-value.json +6 -0
- package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/valid-add.json +8 -0
- package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/valid-multiple.json +17 -0
- package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/valid-patch.yaml +6 -0
- package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/valid-remove.json +6 -0
- package/repos/effect/packages/tools/openapi-generator/test/fixtures/patches/valid-replace.json +7 -0
- package/repos/effect/packages/tools/openapi-generator/tsconfig.json +9 -0
- package/repos/effect/packages/tools/openapi-generator/vitest.config.ts +6 -0
- package/repos/effect/packages/tools/oxc/docgen.json +4 -0
- package/repos/effect/packages/tools/oxc/oxlintrc.json +83 -0
- package/repos/effect/packages/tools/oxc/package.json +72 -0
- package/repos/effect/packages/tools/oxc/src/oxlint/index.ts +18 -0
- package/repos/effect/packages/tools/oxc/src/oxlint/rules/jsdocs.ts +108 -0
- package/repos/effect/packages/tools/oxc/src/oxlint/rules/no-bigint-literals.ts +25 -0
- package/repos/effect/packages/tools/oxc/src/oxlint/rules/no-import-from-barrel-package.ts +144 -0
- package/repos/effect/packages/tools/oxc/src/oxlint/rules/no-js-extension-imports.ts +73 -0
- package/repos/effect/packages/tools/oxc/src/oxlint/rules/no-opaque-instance-fields.ts +92 -0
- package/repos/effect/packages/tools/oxc/test/jsdocs.test.ts +75 -0
- package/repos/effect/packages/tools/oxc/test/no-import-from-barrel-package.test.ts +182 -0
- package/repos/effect/packages/tools/oxc/test/no-js-extension-imports.test.ts +120 -0
- package/repos/effect/packages/tools/oxc/test/no-opaque-instance-fields.test.ts +276 -0
- package/repos/effect/packages/tools/oxc/test/utils.ts +61 -0
- package/repos/effect/packages/tools/oxc/tsconfig.json +8 -0
- package/repos/effect/packages/tools/oxc/vitest.config.ts +6 -0
- package/repos/effect/packages/tools/utils/docgen.json +4 -0
- package/repos/effect/packages/tools/utils/package.json +59 -0
- package/repos/effect/packages/tools/utils/src/Codegen.ts +214 -0
- package/repos/effect/packages/tools/utils/src/Glob.ts +61 -0
- package/repos/effect/packages/tools/utils/src/bin.ts +16 -0
- package/repos/effect/packages/tools/utils/src/commands/codegen.ts +44 -0
- package/repos/effect/packages/tools/utils/tsconfig.json +9 -0
- package/repos/effect/packages/vitest/CHANGELOG.md +601 -0
- package/repos/effect/packages/vitest/LICENSE +21 -0
- package/repos/effect/packages/vitest/README.md +320 -0
- package/repos/effect/packages/vitest/docgen.json +24 -0
- package/repos/effect/packages/vitest/package.json +60 -0
- package/repos/effect/packages/vitest/src/index.ts +259 -0
- package/repos/effect/packages/vitest/src/internal/internal.ts +374 -0
- package/repos/effect/packages/vitest/src/utils.ts +321 -0
- package/repos/effect/packages/vitest/test/index.test.ts +222 -0
- package/repos/effect/packages/vitest/test/isolation.test.ts +105 -0
- package/repos/effect/packages/vitest/test/nested-isolation.test.ts +212 -0
- package/repos/effect/packages/vitest/tsconfig.json +11 -0
- package/repos/effect/packages/vitest/typetest/index.tst.ts +56 -0
- package/repos/effect/packages/vitest/vitest.config.ts +6 -0
- package/repos/effect/patches/@changesets__assemble-release-plan.patch +26 -0
- package/repos/effect/patches/@changesets__get-github-info.patch +44 -0
- package/repos/effect/pnpm-lock.yaml +13483 -0
- package/repos/effect/pnpm-workspace.yaml +10 -0
- package/repos/effect/scripts/bundle-compare.sh +42 -0
- package/repos/effect/scripts/check-cookbook-schedule.ts +390 -0
- package/repos/effect/scripts/circular.mjs +26 -0
- package/repos/effect/scripts/clean.mjs +19 -0
- package/repos/effect/scripts/codemod.mjs +22 -0
- package/repos/effect/scripts/codemods/jsdoc.ts +79 -0
- package/repos/effect/scripts/docs.mjs +64 -0
- package/repos/effect/scripts/package-scalar.mjs +14 -0
- package/repos/effect/scripts/package-swagger.mjs +23 -0
- package/repos/effect/scripts/package.json +22 -0
- package/repos/effect/scripts/tsconfig.json +18 -0
- package/repos/effect/scripts/version.mjs +9 -0
- package/repos/effect/scripts/version.template.txt +2 -0
- package/repos/effect/scripts/worktree-setup.sh +27 -0
- package/repos/effect/stats.txt +30 -0
- package/repos/effect/tsconfig.base.json +46 -0
- package/repos/effect/tsconfig.json +128 -0
- package/repos/effect/tsconfig.packages.json +39 -0
- package/repos/effect/tstyche.json +7 -0
- package/repos/effect/vitest.config.ts +31 -0
- package/repos/effect/vitest.setup.ts +4 -0
- package/repos/effect/vitest.shared.ts +61 -0
- package/repos/effect.subtree.json +16 -0
|
@@ -0,0 +1,2922 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Works with absolute instants, UTC date-times, zoned date-times, and time
|
|
3
|
+
* zones.
|
|
4
|
+
*
|
|
5
|
+
* A `DateTime` always represents an absolute point in time with epoch
|
|
6
|
+
* milliseconds. It may also carry a `TimeZone` for calendar parts, formatting,
|
|
7
|
+
* and zone-aware transformations. This module includes constructors, time-zone
|
|
8
|
+
* helpers, comparisons, date arithmetic, current-time effects, and formatting
|
|
9
|
+
* functions.
|
|
10
|
+
*
|
|
11
|
+
* @since 3.6.0
|
|
12
|
+
*/
|
|
13
|
+
import type { IllegalArgumentError } from "./Cause.ts"
|
|
14
|
+
import * as Context from "./Context.ts"
|
|
15
|
+
import type * as Duration from "./Duration.ts"
|
|
16
|
+
import * as Effect from "./Effect.ts"
|
|
17
|
+
import type * as Equ from "./Equivalence.ts"
|
|
18
|
+
import { dual, flow, type LazyArg } from "./Function.ts"
|
|
19
|
+
import type { Inspectable } from "./Inspectable.ts"
|
|
20
|
+
import * as Internal from "./internal/dateTime.ts"
|
|
21
|
+
import { provideService } from "./internal/effect.ts"
|
|
22
|
+
import * as Layer from "./Layer.ts"
|
|
23
|
+
import type * as Option from "./Option.ts"
|
|
24
|
+
import type * as order from "./Order.ts"
|
|
25
|
+
import type { Pipeable } from "./Pipeable.ts"
|
|
26
|
+
|
|
27
|
+
const TypeId = Internal.TypeId
|
|
28
|
+
const TimeZoneTypeId = Internal.TimeZoneTypeId
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* A `DateTime` represents a point in time. It can optionally have a time zone
|
|
32
|
+
* associated with it.
|
|
33
|
+
*
|
|
34
|
+
* @category models
|
|
35
|
+
* @since 3.6.0
|
|
36
|
+
*/
|
|
37
|
+
export type DateTime = Utc | Zoned
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Represents a `DateTime` stored as an absolute UTC instant with no associated
|
|
41
|
+
* time zone.
|
|
42
|
+
*
|
|
43
|
+
* **Details**
|
|
44
|
+
*
|
|
45
|
+
* Use `DateTime.isUtc` to narrow a `DateTime` to this variant.
|
|
46
|
+
*
|
|
47
|
+
* @category models
|
|
48
|
+
* @since 3.6.0
|
|
49
|
+
*/
|
|
50
|
+
export interface Utc extends DateTime.Proto {
|
|
51
|
+
readonly _tag: "Utc"
|
|
52
|
+
readonly epochMilliseconds: number
|
|
53
|
+
partsUtc: DateTime.PartsWithWeekday | undefined
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Represents a `DateTime` with an associated `TimeZone`.
|
|
58
|
+
*
|
|
59
|
+
* **Details**
|
|
60
|
+
*
|
|
61
|
+
* A zoned value still represents an absolute instant through
|
|
62
|
+
* `epochMilliseconds`, while the time zone is used for wall-clock parts,
|
|
63
|
+
* formatting, and zone-aware transformations.
|
|
64
|
+
*
|
|
65
|
+
* @category models
|
|
66
|
+
* @since 3.6.0
|
|
67
|
+
*/
|
|
68
|
+
export interface Zoned extends DateTime.Proto {
|
|
69
|
+
readonly _tag: "Zoned"
|
|
70
|
+
readonly epochMilliseconds: number
|
|
71
|
+
readonly zone: TimeZone
|
|
72
|
+
adjustedEpochMilliseconds: number | undefined
|
|
73
|
+
partsAdjusted: DateTime.PartsWithWeekday | undefined
|
|
74
|
+
partsUtc: DateTime.PartsWithWeekday | undefined
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Companion namespace containing the public helper types used by `DateTime`
|
|
79
|
+
* constructors, parts APIs, formatting, and date/time arithmetic.
|
|
80
|
+
*
|
|
81
|
+
* @since 3.6.0
|
|
82
|
+
*/
|
|
83
|
+
export declare namespace DateTime {
|
|
84
|
+
/**
|
|
85
|
+
* Input accepted by `DateTime.make`, `DateTime.makeUnsafe`, and the zoned
|
|
86
|
+
* constructors.
|
|
87
|
+
*
|
|
88
|
+
* **Details**
|
|
89
|
+
*
|
|
90
|
+
* Includes existing `DateTime` values, partial date parts, epoch-millisecond
|
|
91
|
+
* objects, epoch milliseconds, JavaScript `Date` instances, and parseable date
|
|
92
|
+
* strings.
|
|
93
|
+
*
|
|
94
|
+
* @category models
|
|
95
|
+
* @since 3.6.0
|
|
96
|
+
*/
|
|
97
|
+
export type Input = DateTime | Partial<Parts> | Instant | InstantWithZone | Date | number | string
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Type-level helper used by constructors to preserve a zoned input.
|
|
101
|
+
*
|
|
102
|
+
* **Details**
|
|
103
|
+
*
|
|
104
|
+
* When the input type is `DateTime.Zoned`, the result type is
|
|
105
|
+
* `DateTime.Zoned`; otherwise the result type is `DateTime.Utc`.
|
|
106
|
+
*
|
|
107
|
+
* @category models
|
|
108
|
+
* @since 3.6.0
|
|
109
|
+
*/
|
|
110
|
+
export type PreserveZone<A extends DateTime.Input> = A extends Zoned ? Zoned : Utc
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Date and time unit name accepted by `DateTime` rounding and arithmetic
|
|
114
|
+
* APIs.
|
|
115
|
+
*
|
|
116
|
+
* **Details**
|
|
117
|
+
*
|
|
118
|
+
* Includes both singular units, such as `"day"`, and plural units, such as
|
|
119
|
+
* `"days"`.
|
|
120
|
+
*
|
|
121
|
+
* @category models
|
|
122
|
+
* @since 3.6.0
|
|
123
|
+
*/
|
|
124
|
+
export type Unit = UnitSingular | UnitPlural
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Singular date and time unit names used by rounding APIs such as
|
|
128
|
+
* `DateTime.startOf`, `DateTime.endOf`, and `DateTime.nearest`.
|
|
129
|
+
*
|
|
130
|
+
* @category models
|
|
131
|
+
* @since 3.6.0
|
|
132
|
+
*/
|
|
133
|
+
export type UnitSingular =
|
|
134
|
+
| "millisecond"
|
|
135
|
+
| "second"
|
|
136
|
+
| "minute"
|
|
137
|
+
| "hour"
|
|
138
|
+
| "day"
|
|
139
|
+
| "week"
|
|
140
|
+
| "month"
|
|
141
|
+
| "year"
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Plural date and time unit names used by `DateTime.PartsForMath` for
|
|
145
|
+
* amount-based arithmetic.
|
|
146
|
+
*
|
|
147
|
+
* @category models
|
|
148
|
+
* @since 3.6.0
|
|
149
|
+
*/
|
|
150
|
+
export type UnitPlural =
|
|
151
|
+
| "milliseconds"
|
|
152
|
+
| "seconds"
|
|
153
|
+
| "minutes"
|
|
154
|
+
| "hours"
|
|
155
|
+
| "days"
|
|
156
|
+
| "weeks"
|
|
157
|
+
| "months"
|
|
158
|
+
| "years"
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Calendar and time components of a `DateTime`, including the weekday.
|
|
162
|
+
*
|
|
163
|
+
* **Details**
|
|
164
|
+
*
|
|
165
|
+
* `month` is one-based (`1` for January through `12` for December), and
|
|
166
|
+
* `weekDay` follows JavaScript `Date#getUTCDay` numbering (`0` for Sunday
|
|
167
|
+
* through `6` for Saturday).
|
|
168
|
+
*
|
|
169
|
+
* @category models
|
|
170
|
+
* @since 3.6.0
|
|
171
|
+
*/
|
|
172
|
+
export interface PartsWithWeekday {
|
|
173
|
+
readonly millisecond: number
|
|
174
|
+
readonly second: number
|
|
175
|
+
readonly minute: number
|
|
176
|
+
readonly hour: number
|
|
177
|
+
readonly day: number
|
|
178
|
+
readonly weekDay: number
|
|
179
|
+
readonly month: number
|
|
180
|
+
readonly year: number
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Calendar and time components of a `DateTime`, without weekday information.
|
|
185
|
+
*
|
|
186
|
+
* **Details**
|
|
187
|
+
*
|
|
188
|
+
* `month` is one-based (`1` for January through `12` for December).
|
|
189
|
+
*
|
|
190
|
+
* @category models
|
|
191
|
+
* @since 3.6.0
|
|
192
|
+
*/
|
|
193
|
+
export interface Parts {
|
|
194
|
+
readonly millisecond: number
|
|
195
|
+
readonly second: number
|
|
196
|
+
readonly minute: number
|
|
197
|
+
readonly hour: number
|
|
198
|
+
readonly day: number
|
|
199
|
+
readonly month: number
|
|
200
|
+
readonly year: number
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Plural amount fields accepted by `DateTime.add` and `DateTime.subtract`.
|
|
205
|
+
*
|
|
206
|
+
* **Details**
|
|
207
|
+
*
|
|
208
|
+
* Each field represents the number of units to add or subtract for that part.
|
|
209
|
+
*
|
|
210
|
+
* @category models
|
|
211
|
+
* @since 3.6.0
|
|
212
|
+
*/
|
|
213
|
+
export interface PartsForMath {
|
|
214
|
+
readonly milliseconds: number
|
|
215
|
+
readonly seconds: number
|
|
216
|
+
readonly minutes: number
|
|
217
|
+
readonly hours: number
|
|
218
|
+
readonly days: number
|
|
219
|
+
readonly weeks: number
|
|
220
|
+
readonly months: number
|
|
221
|
+
readonly years: number
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Object input representing an absolute instant as milliseconds since the Unix
|
|
226
|
+
* epoch.
|
|
227
|
+
*
|
|
228
|
+
* @category models
|
|
229
|
+
* @since 4.0.0
|
|
230
|
+
*/
|
|
231
|
+
export interface Instant {
|
|
232
|
+
readonly epochMilliseconds: number
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Object input representing an absolute instant plus a time zone identifier.
|
|
237
|
+
*
|
|
238
|
+
* **Details**
|
|
239
|
+
*
|
|
240
|
+
* `DateTime.makeZoned` and `DateTime.makeZonedUnsafe` use `timeZoneId` when
|
|
241
|
+
* no explicit `timeZone` option is supplied.
|
|
242
|
+
*
|
|
243
|
+
* @category models
|
|
244
|
+
* @since 4.0.0
|
|
245
|
+
*/
|
|
246
|
+
export interface InstantWithZone {
|
|
247
|
+
readonly timeZoneId: string
|
|
248
|
+
readonly epochMilliseconds: number
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Shared protocol implemented by all `DateTime` values.
|
|
253
|
+
*
|
|
254
|
+
* **Details**
|
|
255
|
+
*
|
|
256
|
+
* Provides the `DateTime` type identifier along with pipe and inspection
|
|
257
|
+
* support.
|
|
258
|
+
*
|
|
259
|
+
* @category models
|
|
260
|
+
* @since 3.6.0
|
|
261
|
+
*/
|
|
262
|
+
export interface Proto extends Pipeable, Inspectable {
|
|
263
|
+
readonly [TypeId]: typeof TypeId
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Represents a time zone used by `DateTime.Zoned`.
|
|
269
|
+
*
|
|
270
|
+
* **Details**
|
|
271
|
+
*
|
|
272
|
+
* A `TimeZone` is either a fixed offset from UTC or a named IANA time zone.
|
|
273
|
+
*
|
|
274
|
+
* @category models
|
|
275
|
+
* @since 3.6.0
|
|
276
|
+
*/
|
|
277
|
+
export type TimeZone = TimeZone.Offset | TimeZone.Named
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Companion namespace containing the public variant and protocol types for
|
|
281
|
+
* `TimeZone`.
|
|
282
|
+
*
|
|
283
|
+
* @since 3.6.0
|
|
284
|
+
*/
|
|
285
|
+
export declare namespace TimeZone {
|
|
286
|
+
/**
|
|
287
|
+
* Shared protocol implemented by all `TimeZone` values.
|
|
288
|
+
*
|
|
289
|
+
* **Details**
|
|
290
|
+
*
|
|
291
|
+
* Provides the `TimeZone` type identifier and inspection support.
|
|
292
|
+
*
|
|
293
|
+
* @category models
|
|
294
|
+
* @since 3.6.0
|
|
295
|
+
*/
|
|
296
|
+
export interface Proto extends Inspectable {
|
|
297
|
+
readonly [TimeZoneTypeId]: typeof TimeZoneTypeId
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Fixed-offset time zone.
|
|
302
|
+
*
|
|
303
|
+
* **Details**
|
|
304
|
+
*
|
|
305
|
+
* The `offset` is measured in milliseconds from UTC. Positive offsets are
|
|
306
|
+
* ahead of UTC, and negative offsets are behind UTC.
|
|
307
|
+
*
|
|
308
|
+
* @category models
|
|
309
|
+
* @since 3.6.0
|
|
310
|
+
*/
|
|
311
|
+
export interface Offset extends Proto {
|
|
312
|
+
readonly _tag: "Offset"
|
|
313
|
+
readonly offset: number
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Named IANA time zone.
|
|
318
|
+
*
|
|
319
|
+
* **Details**
|
|
320
|
+
*
|
|
321
|
+
* The `id` field contains the resolved time zone identifier, such as
|
|
322
|
+
* `"Europe/London"` or `"America/New_York"`.
|
|
323
|
+
*
|
|
324
|
+
* @category models
|
|
325
|
+
* @since 3.6.0
|
|
326
|
+
*/
|
|
327
|
+
export interface Named extends Proto {
|
|
328
|
+
readonly _tag: "Named"
|
|
329
|
+
readonly id: string
|
|
330
|
+
/** @internal */
|
|
331
|
+
readonly format: Intl.DateTimeFormat
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* A `Disambiguation` is used to resolve ambiguities when a `DateTime` is
|
|
337
|
+
* ambiguous, such as during a daylight saving time transition.
|
|
338
|
+
*
|
|
339
|
+
* **Details**
|
|
340
|
+
*
|
|
341
|
+
* For more information, see the [Temporal documentation](https://tc39.es/proposal-temporal/docs/timezone.html#ambiguity-due-to-dst-or-other-time-zone-offset-changes)
|
|
342
|
+
*
|
|
343
|
+
* - `"compatible"`: (default) Behavior matching Temporal API and legacy JavaScript Date and moment.js.
|
|
344
|
+
* For repeated times, chooses the earlier occurrence. For gap times, chooses the later interpretation.
|
|
345
|
+
*
|
|
346
|
+
* - `"earlier"`: For repeated times, always choose the earlier occurrence.
|
|
347
|
+
* For gap times, choose the time before the gap.
|
|
348
|
+
*
|
|
349
|
+
* - `"later"`: For repeated times, always choose the later occurrence.
|
|
350
|
+
* For gap times, choose the time after the gap.
|
|
351
|
+
*
|
|
352
|
+
* - `"reject"`: Throw an `RangeError` when encountering ambiguous or non-existent times.
|
|
353
|
+
*
|
|
354
|
+
* **Example** (Resolving ambiguous local times)
|
|
355
|
+
*
|
|
356
|
+
* ```ts
|
|
357
|
+
* import { DateTime } from "effect"
|
|
358
|
+
*
|
|
359
|
+
* // Fall-back example: 01:30 on Nov 2, 2025 in New York happens twice
|
|
360
|
+
* const ambiguousTime = { year: 2025, month: 11, day: 2, hours: 1, minutes: 30 }
|
|
361
|
+
* const timeZone = DateTime.zoneMakeNamedUnsafe("America/New_York")
|
|
362
|
+
*
|
|
363
|
+
* DateTime.makeZoned(ambiguousTime, {
|
|
364
|
+
* timeZone,
|
|
365
|
+
* adjustForTimeZone: true,
|
|
366
|
+
* disambiguation: "earlier"
|
|
367
|
+
* })
|
|
368
|
+
* // Earlier occurrence (DST time): 2025-11-02T05:30:00.000Z
|
|
369
|
+
*
|
|
370
|
+
* DateTime.makeZoned(ambiguousTime, {
|
|
371
|
+
* timeZone,
|
|
372
|
+
* adjustForTimeZone: true,
|
|
373
|
+
* disambiguation: "later"
|
|
374
|
+
* })
|
|
375
|
+
* // Later occurrence (standard time): 2025-11-02T06:30:00.000Z
|
|
376
|
+
*
|
|
377
|
+
* // Gap example: 02:30 on Mar 9, 2025 in New York doesn't exist
|
|
378
|
+
* const gapTime = { year: 2025, month: 3, day: 9, hours: 2, minutes: 30 }
|
|
379
|
+
*
|
|
380
|
+
* DateTime.makeZoned(gapTime, {
|
|
381
|
+
* timeZone,
|
|
382
|
+
* adjustForTimeZone: true,
|
|
383
|
+
* disambiguation: "earlier"
|
|
384
|
+
* })
|
|
385
|
+
* // Time before gap: 2025-03-09T06:30:00.000Z (01:30 EST)
|
|
386
|
+
*
|
|
387
|
+
* DateTime.makeZoned(gapTime, {
|
|
388
|
+
* timeZone,
|
|
389
|
+
* adjustForTimeZone: true,
|
|
390
|
+
* disambiguation: "later"
|
|
391
|
+
* })
|
|
392
|
+
* // Time after gap: 2025-03-09T07:30:00.000Z (03:30 EDT)
|
|
393
|
+
* ```
|
|
394
|
+
*
|
|
395
|
+
* @category models
|
|
396
|
+
* @since 3.18.0
|
|
397
|
+
*/
|
|
398
|
+
export type Disambiguation = "compatible" | "earlier" | "later" | "reject"
|
|
399
|
+
|
|
400
|
+
// =============================================================================
|
|
401
|
+
// guards
|
|
402
|
+
// =============================================================================
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* Checks whether a value is a `DateTime`.
|
|
406
|
+
*
|
|
407
|
+
* **When to use**
|
|
408
|
+
*
|
|
409
|
+
* Use to narrow an unknown value before treating it as a `DateTime`.
|
|
410
|
+
*
|
|
411
|
+
* @see {@link isUtc} for narrowing a known `DateTime` to UTC
|
|
412
|
+
* @see {@link isZoned} for narrowing a known `DateTime` to zoned
|
|
413
|
+
*
|
|
414
|
+
* @category guards
|
|
415
|
+
* @since 3.6.0
|
|
416
|
+
*/
|
|
417
|
+
export const isDateTime: (u: unknown) => u is DateTime = Internal.isDateTime
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Checks whether a value is a `TimeZone`.
|
|
421
|
+
*
|
|
422
|
+
* **When to use**
|
|
423
|
+
*
|
|
424
|
+
* Use to narrow unknown input to any `TimeZone` before passing it to APIs that
|
|
425
|
+
* accept either fixed-offset or named time zones.
|
|
426
|
+
*
|
|
427
|
+
* @see {@link isTimeZoneOffset} for narrowing to fixed-offset time zones
|
|
428
|
+
* @see {@link isTimeZoneNamed} for narrowing to named time zones
|
|
429
|
+
*
|
|
430
|
+
* @category guards
|
|
431
|
+
* @since 3.6.0
|
|
432
|
+
*/
|
|
433
|
+
export const isTimeZone: (u: unknown) => u is TimeZone = Internal.isTimeZone
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Checks whether a value is an offset-based `TimeZone`.
|
|
437
|
+
*
|
|
438
|
+
* **When to use**
|
|
439
|
+
*
|
|
440
|
+
* Use when you need to narrow an unknown or union `TimeZone` value to the
|
|
441
|
+
* fixed-offset variant before reading its offset in milliseconds.
|
|
442
|
+
*
|
|
443
|
+
* @see {@link isTimeZone} for checking either time zone variant
|
|
444
|
+
* @see {@link isTimeZoneNamed} for narrowing to named time zones
|
|
445
|
+
*
|
|
446
|
+
* @category guards
|
|
447
|
+
* @since 3.6.0
|
|
448
|
+
*/
|
|
449
|
+
export const isTimeZoneOffset: (u: unknown) => u is TimeZone.Offset = Internal.isTimeZoneOffset
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* Checks whether a value is a named `TimeZone` (IANA time zone).
|
|
453
|
+
*
|
|
454
|
+
* **When to use**
|
|
455
|
+
*
|
|
456
|
+
* Use to narrow an unknown value to the `TimeZone.Named` variant before
|
|
457
|
+
* reading named-zone fields such as `id`.
|
|
458
|
+
*
|
|
459
|
+
* @see {@link isTimeZone} for checking either time zone variant
|
|
460
|
+
* @see {@link isTimeZoneOffset} for narrowing to fixed-offset time zones
|
|
461
|
+
*
|
|
462
|
+
* @category guards
|
|
463
|
+
* @since 3.6.0
|
|
464
|
+
*/
|
|
465
|
+
export const isTimeZoneNamed: (u: unknown) => u is TimeZone.Named = Internal.isTimeZoneNamed
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* Checks whether a `DateTime` is a UTC `DateTime` (no time zone information).
|
|
469
|
+
*
|
|
470
|
+
* **When to use**
|
|
471
|
+
*
|
|
472
|
+
* Use to narrow a `DateTime` before passing it to code that requires a UTC
|
|
473
|
+
* value without an associated time zone.
|
|
474
|
+
*
|
|
475
|
+
* @see {@link isZoned} for narrowing to zoned date-times
|
|
476
|
+
* @see {@link match} for handling both UTC and zoned cases
|
|
477
|
+
*
|
|
478
|
+
* @category guards
|
|
479
|
+
* @since 3.6.0
|
|
480
|
+
*/
|
|
481
|
+
export const isUtc: (self: DateTime) => self is Utc = Internal.isUtc
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* Checks whether a `DateTime` is a zoned `DateTime` (has time zone information).
|
|
485
|
+
*
|
|
486
|
+
* **When to use**
|
|
487
|
+
*
|
|
488
|
+
* Use to narrow a known `DateTime` before reading its zone or passing it to
|
|
489
|
+
* APIs that require `DateTime.Zoned`.
|
|
490
|
+
*
|
|
491
|
+
* @see {@link isUtc} for narrowing to UTC date-times
|
|
492
|
+
* @see {@link match} for handling both UTC and zoned cases
|
|
493
|
+
*
|
|
494
|
+
* @category guards
|
|
495
|
+
* @since 3.6.0
|
|
496
|
+
*/
|
|
497
|
+
export const isZoned: (self: DateTime) => self is Zoned = Internal.isZoned
|
|
498
|
+
|
|
499
|
+
// =============================================================================
|
|
500
|
+
// instances
|
|
501
|
+
// =============================================================================
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Provides an `Equivalence` for comparing two `DateTime` values for equality.
|
|
505
|
+
*
|
|
506
|
+
* **Details**
|
|
507
|
+
*
|
|
508
|
+
* Two `DateTime` values are considered equivalent if they represent the same
|
|
509
|
+
* point in time, regardless of their time zone.
|
|
510
|
+
*
|
|
511
|
+
* **Example** (Comparing DateTime values for equivalence)
|
|
512
|
+
*
|
|
513
|
+
* ```ts
|
|
514
|
+
* import { DateTime } from "effect"
|
|
515
|
+
*
|
|
516
|
+
* const utc = DateTime.makeUnsafe("2024-01-01T12:00:00Z")
|
|
517
|
+
* const zoned = DateTime.makeZonedUnsafe("2024-01-01T12:00:00Z", {
|
|
518
|
+
* timeZone: "Europe/London"
|
|
519
|
+
* })
|
|
520
|
+
*
|
|
521
|
+
* console.log(DateTime.Equivalence(utc, zoned)) // true
|
|
522
|
+
* ```
|
|
523
|
+
*
|
|
524
|
+
* @category instances
|
|
525
|
+
* @since 3.6.0
|
|
526
|
+
*/
|
|
527
|
+
export const Equivalence: Equ.Equivalence<DateTime> = Internal.Equivalence
|
|
528
|
+
|
|
529
|
+
/**
|
|
530
|
+
* Provides an `Order` for comparing and sorting `DateTime` values.
|
|
531
|
+
*
|
|
532
|
+
* **Details**
|
|
533
|
+
*
|
|
534
|
+
* `DateTime` values are ordered by their epoch milliseconds, so earlier times
|
|
535
|
+
* come before later times regardless of time zone.
|
|
536
|
+
*
|
|
537
|
+
* **Example** (Sorting DateTime values chronologically)
|
|
538
|
+
*
|
|
539
|
+
* ```ts
|
|
540
|
+
* import { Array, DateTime } from "effect"
|
|
541
|
+
*
|
|
542
|
+
* const dates = [
|
|
543
|
+
* DateTime.makeUnsafe("2024-03-01"),
|
|
544
|
+
* DateTime.makeUnsafe("2024-01-01"),
|
|
545
|
+
* DateTime.makeUnsafe("2024-02-01")
|
|
546
|
+
* ]
|
|
547
|
+
*
|
|
548
|
+
* const sorted = Array.sort(dates, DateTime.Order)
|
|
549
|
+
* // Results in chronological order: 2024-01-01, 2024-02-01, 2024-03-01
|
|
550
|
+
* ```
|
|
551
|
+
*
|
|
552
|
+
* @category instances
|
|
553
|
+
* @since 3.6.0
|
|
554
|
+
*/
|
|
555
|
+
export const Order: order.Order<DateTime> = Internal.Order
|
|
556
|
+
|
|
557
|
+
/**
|
|
558
|
+
* Returns a `DateTime` constrained between a minimum and maximum value.
|
|
559
|
+
*
|
|
560
|
+
* **Details**
|
|
561
|
+
*
|
|
562
|
+
* If the `DateTime` is before the minimum, the minimum is returned.
|
|
563
|
+
* If the `DateTime` is after the maximum, the maximum is returned.
|
|
564
|
+
* Otherwise, the original `DateTime` is returned.
|
|
565
|
+
*
|
|
566
|
+
* **Example** (Clamping DateTime values)
|
|
567
|
+
*
|
|
568
|
+
* ```ts
|
|
569
|
+
* import { DateTime } from "effect"
|
|
570
|
+
*
|
|
571
|
+
* const min = DateTime.makeUnsafe("2024-01-01")
|
|
572
|
+
* const max = DateTime.makeUnsafe("2024-12-31")
|
|
573
|
+
* const date = DateTime.makeUnsafe("2025-06-15")
|
|
574
|
+
*
|
|
575
|
+
* const clamped = DateTime.clamp(date, { minimum: min, maximum: max })
|
|
576
|
+
* // clamped equals max (2024-12-31)
|
|
577
|
+
* ```
|
|
578
|
+
*
|
|
579
|
+
* @category ordering
|
|
580
|
+
* @since 3.6.0
|
|
581
|
+
*/
|
|
582
|
+
export const clamp: {
|
|
583
|
+
<Min extends DateTime, Max extends DateTime>(
|
|
584
|
+
options: { readonly minimum: Min; readonly maximum: Max }
|
|
585
|
+
): <A extends DateTime>(self: A) => A | Min | Max
|
|
586
|
+
<A extends DateTime, Min extends DateTime, Max extends DateTime>(
|
|
587
|
+
self: A,
|
|
588
|
+
options: { readonly minimum: Min; readonly maximum: Max }
|
|
589
|
+
): A | Min | Max
|
|
590
|
+
} = Internal.clamp
|
|
591
|
+
|
|
592
|
+
// =============================================================================
|
|
593
|
+
// constructors
|
|
594
|
+
// =============================================================================
|
|
595
|
+
|
|
596
|
+
/**
|
|
597
|
+
* Create a `DateTime` from a `Date`.
|
|
598
|
+
*
|
|
599
|
+
* **Details**
|
|
600
|
+
*
|
|
601
|
+
* If the `Date` is invalid, an `IllegalArgumentError` will be thrown.
|
|
602
|
+
*
|
|
603
|
+
* **Example** (Creating DateTime values from Dates)
|
|
604
|
+
*
|
|
605
|
+
* ```ts
|
|
606
|
+
* import { DateTime } from "effect"
|
|
607
|
+
*
|
|
608
|
+
* const date = new Date("2024-01-01T12:00:00Z")
|
|
609
|
+
* const dateTime = DateTime.fromDateUnsafe(date)
|
|
610
|
+
*
|
|
611
|
+
* console.log(DateTime.formatIso(dateTime)) // "2024-01-01T12:00:00.000Z"
|
|
612
|
+
* ```
|
|
613
|
+
*
|
|
614
|
+
* @category constructors
|
|
615
|
+
* @since 4.0.0
|
|
616
|
+
*/
|
|
617
|
+
export const fromDateUnsafe: (date: Date) => Utc = Internal.fromDateUnsafe
|
|
618
|
+
|
|
619
|
+
/**
|
|
620
|
+
* Create a `DateTime` from supported input values.
|
|
621
|
+
*
|
|
622
|
+
* **When to use**
|
|
623
|
+
*
|
|
624
|
+
* Use when creating a `DateTime` from trusted input and construction failures
|
|
625
|
+
* should throw an `IllegalArgumentError` instead of returning `Option.none`.
|
|
626
|
+
*
|
|
627
|
+
* **Details**
|
|
628
|
+
*
|
|
629
|
+
* - A `DateTime`
|
|
630
|
+
* - A `Date` instance (invalid dates will throw an `IllegalArgumentError`)
|
|
631
|
+
* - The `number` of milliseconds since the Unix epoch
|
|
632
|
+
* - An object with the parts of a date
|
|
633
|
+
* - A `string` that can be parsed by `Date.parse`
|
|
634
|
+
*
|
|
635
|
+
* **Example** (Creating DateTime values unsafely)
|
|
636
|
+
*
|
|
637
|
+
* ```ts
|
|
638
|
+
* import { DateTime } from "effect"
|
|
639
|
+
*
|
|
640
|
+
* // from Date
|
|
641
|
+
* const fromDate = DateTime.makeUnsafe(new Date("2024-01-01T12:00:00Z"))
|
|
642
|
+
* console.log(DateTime.formatIso(fromDate)) // "2024-01-01T12:00:00.000Z"
|
|
643
|
+
*
|
|
644
|
+
* // from parts
|
|
645
|
+
* const fromParts = DateTime.makeUnsafe({ year: 2024 })
|
|
646
|
+
* console.log(DateTime.formatIso(fromParts)) // "2024-01-01T00:00:00.000Z"
|
|
647
|
+
*
|
|
648
|
+
* // from string
|
|
649
|
+
* const fromString = DateTime.makeUnsafe("2024-01-01")
|
|
650
|
+
* console.log(DateTime.formatIso(fromString)) // "2024-01-01T00:00:00.000Z"
|
|
651
|
+
* ```
|
|
652
|
+
*
|
|
653
|
+
* @category constructors
|
|
654
|
+
* @since 4.0.0
|
|
655
|
+
*/
|
|
656
|
+
export const makeUnsafe: <A extends DateTime.Input>(input: A) => DateTime.PreserveZone<A> = Internal.makeUnsafe
|
|
657
|
+
|
|
658
|
+
/**
|
|
659
|
+
* Create a `DateTime.Zoned` using `DateTime.makeUnsafe` and a time zone.
|
|
660
|
+
*
|
|
661
|
+
* **When to use**
|
|
662
|
+
*
|
|
663
|
+
* Use when the date/time input and zone options are trusted and invalid or
|
|
664
|
+
* rejected ambiguous times should throw instead of returning `Option.none`.
|
|
665
|
+
*
|
|
666
|
+
* **Details**
|
|
667
|
+
*
|
|
668
|
+
* The input is treated as UTC and then the time zone is attached, unless
|
|
669
|
+
* `adjustForTimeZone` is set to `true`. In that case, the input is treated as
|
|
670
|
+
* already in the time zone.
|
|
671
|
+
*
|
|
672
|
+
* When `adjustForTimeZone` is true and ambiguous times occur during DST transitions,
|
|
673
|
+
* the `disambiguation` option controls how to resolve the ambiguity:
|
|
674
|
+
* - `compatible` (default): Choose earlier time for repeated times, later for gaps
|
|
675
|
+
* - `earlier`: Always choose the earlier of two possible times
|
|
676
|
+
* - `later`: Always choose the later of two possible times
|
|
677
|
+
* - `reject`: Throw an error when ambiguous times are encountered
|
|
678
|
+
*
|
|
679
|
+
* **Example** (Creating zoned DateTime values unsafely)
|
|
680
|
+
*
|
|
681
|
+
* ```ts
|
|
682
|
+
* import { DateTime } from "effect"
|
|
683
|
+
*
|
|
684
|
+
* const zoned = DateTime.makeZonedUnsafe("2024-06-15T14:30:00Z", {
|
|
685
|
+
* timeZone: "Europe/London"
|
|
686
|
+
* })
|
|
687
|
+
*
|
|
688
|
+
* console.log(DateTime.formatIsoZoned(zoned)) // "2024-06-15T15:30:00.000+01:00[Europe/London]"
|
|
689
|
+
* ```
|
|
690
|
+
*
|
|
691
|
+
* @category constructors
|
|
692
|
+
* @since 4.0.0
|
|
693
|
+
*/
|
|
694
|
+
export const makeZonedUnsafe: (input: DateTime.Input, options?: {
|
|
695
|
+
readonly timeZone?: number | string | TimeZone | undefined
|
|
696
|
+
readonly adjustForTimeZone?: boolean | undefined
|
|
697
|
+
readonly disambiguation?: Disambiguation | undefined
|
|
698
|
+
}) => Zoned = Internal.makeZonedUnsafe
|
|
699
|
+
|
|
700
|
+
/**
|
|
701
|
+
* Creates a `DateTime.Zoned` safely from an input and a time zone.
|
|
702
|
+
*
|
|
703
|
+
* **Details**
|
|
704
|
+
*
|
|
705
|
+
* By default, the input is interpreted as a UTC instant and the time zone is
|
|
706
|
+
* attached without changing that instant. When `adjustForTimeZone` is `true`,
|
|
707
|
+
* the input is interpreted as wall-clock time in the target zone.
|
|
708
|
+
*
|
|
709
|
+
* When `adjustForTimeZone` is `true`, `disambiguation` controls
|
|
710
|
+
* daylight-saving gaps and repeated times:
|
|
711
|
+
*
|
|
712
|
+
* - `"compatible"` (default): chooses the earlier occurrence for repeated
|
|
713
|
+
* times and the later interpretation for gaps
|
|
714
|
+
* - `"earlier"`: chooses the earlier possible instant
|
|
715
|
+
* - `"later"`: chooses the later possible instant
|
|
716
|
+
* - `"reject"`: rejects ambiguous or nonexistent wall-clock times
|
|
717
|
+
*
|
|
718
|
+
* Returns `Some` when construction succeeds, or `None` when the input, time
|
|
719
|
+
* zone, or disambiguation cannot be resolved.
|
|
720
|
+
*
|
|
721
|
+
* **Example** (Creating optional zoned DateTime values)
|
|
722
|
+
*
|
|
723
|
+
* ```ts
|
|
724
|
+
* import { DateTime } from "effect"
|
|
725
|
+
*
|
|
726
|
+
* const result = DateTime.makeZoned("2024-06-15T14:30:00Z", {
|
|
727
|
+
* timeZone: "Europe/London"
|
|
728
|
+
* })
|
|
729
|
+
*
|
|
730
|
+
* console.log(result._tag) // "Some"
|
|
731
|
+
* if (result._tag === "Some") {
|
|
732
|
+
* console.log(DateTime.formatIsoZoned(result.value)) // "2024-06-15T15:30:00.000+01:00[Europe/London]"
|
|
733
|
+
* }
|
|
734
|
+
* ```
|
|
735
|
+
*
|
|
736
|
+
* @category constructors
|
|
737
|
+
* @since 3.6.0
|
|
738
|
+
*/
|
|
739
|
+
export const makeZoned: (
|
|
740
|
+
input: DateTime.Input,
|
|
741
|
+
options?: {
|
|
742
|
+
readonly timeZone?: number | string | TimeZone | undefined
|
|
743
|
+
readonly adjustForTimeZone?: boolean | undefined
|
|
744
|
+
readonly disambiguation?: Disambiguation | undefined
|
|
745
|
+
}
|
|
746
|
+
) => Option.Option<Zoned> = Internal.makeZoned
|
|
747
|
+
|
|
748
|
+
/**
|
|
749
|
+
* Creates a `DateTime` safely from supported input values.
|
|
750
|
+
*
|
|
751
|
+
* **Details**
|
|
752
|
+
*
|
|
753
|
+
* - A `DateTime`
|
|
754
|
+
* - A JavaScript `Date`
|
|
755
|
+
* - The number of milliseconds since the Unix epoch
|
|
756
|
+
* - An object with date and time parts
|
|
757
|
+
* - A string that can be parsed as a date
|
|
758
|
+
*
|
|
759
|
+
* Returns `Some` with the constructed `DateTime` when the input is valid, or
|
|
760
|
+
* `None` when construction would fail, including invalid `Date` instances or
|
|
761
|
+
* unparseable strings.
|
|
762
|
+
*
|
|
763
|
+
* **Example** (Creating optional DateTime values)
|
|
764
|
+
*
|
|
765
|
+
* ```ts
|
|
766
|
+
* import { DateTime } from "effect"
|
|
767
|
+
*
|
|
768
|
+
* // from Date
|
|
769
|
+
* const fromDate = DateTime.make(new Date("2024-01-01T12:00:00Z"))
|
|
770
|
+
* console.log(fromDate._tag) // "Some"
|
|
771
|
+
*
|
|
772
|
+
* // from parts
|
|
773
|
+
* const fromParts = DateTime.make({ year: 2024 })
|
|
774
|
+
* console.log(fromParts._tag) // "Some"
|
|
775
|
+
*
|
|
776
|
+
* // from string
|
|
777
|
+
* const fromString = DateTime.make("2024-01-01")
|
|
778
|
+
* console.log(fromString._tag) // "Some"
|
|
779
|
+
*
|
|
780
|
+
* const invalid = DateTime.make("not a date")
|
|
781
|
+
* console.log(invalid._tag) // "None"
|
|
782
|
+
* ```
|
|
783
|
+
*
|
|
784
|
+
* @category constructors
|
|
785
|
+
* @since 3.6.0
|
|
786
|
+
*/
|
|
787
|
+
export const make: <A extends DateTime.Input>(input: A) => Option.Option<DateTime.PreserveZone<A>> = Internal.make
|
|
788
|
+
|
|
789
|
+
/**
|
|
790
|
+
* Parses an ISO zoned date-time string into a `DateTime.Zoned` safely.
|
|
791
|
+
*
|
|
792
|
+
* **Details**
|
|
793
|
+
*
|
|
794
|
+
* Accepts named-zone strings such as
|
|
795
|
+
* `YYYY-MM-DDTHH:mm:ss.sss+HH:MM[Time/Zone]` and offset-only strings such as
|
|
796
|
+
* `YYYY-MM-DDTHH:mm:ss.sss+HH:MM`. Returns `None` when the input cannot be
|
|
797
|
+
* parsed.
|
|
798
|
+
*
|
|
799
|
+
* **Example** (Parsing zoned DateTime strings)
|
|
800
|
+
*
|
|
801
|
+
* ```ts
|
|
802
|
+
* import { DateTime } from "effect"
|
|
803
|
+
*
|
|
804
|
+
* const result1 = DateTime.makeZonedFromString(
|
|
805
|
+
* "2024-01-01T12:00:00+02:00[Europe/Berlin]"
|
|
806
|
+
* )
|
|
807
|
+
* console.log(result1._tag === "Some") // true
|
|
808
|
+
*
|
|
809
|
+
* const result2 = DateTime.makeZonedFromString("2024-01-01T12:00:00Z")
|
|
810
|
+
* console.log(result2._tag === "Some") // true
|
|
811
|
+
*
|
|
812
|
+
* const invalid = DateTime.makeZonedFromString("invalid")
|
|
813
|
+
* console.log(invalid._tag === "None") // true
|
|
814
|
+
* ```
|
|
815
|
+
*
|
|
816
|
+
* @category constructors
|
|
817
|
+
* @since 3.6.0
|
|
818
|
+
*/
|
|
819
|
+
export const makeZonedFromString: (input: string) => Option.Option<Zoned> = Internal.makeZonedFromString
|
|
820
|
+
|
|
821
|
+
/**
|
|
822
|
+
* Gets the current time using the `Clock` service and convert it to a `DateTime`.
|
|
823
|
+
*
|
|
824
|
+
* **Example** (Getting the current DateTime)
|
|
825
|
+
*
|
|
826
|
+
* ```ts
|
|
827
|
+
* import { DateTime, Effect } from "effect"
|
|
828
|
+
*
|
|
829
|
+
* Effect.gen(function*() {
|
|
830
|
+
* const now = yield* DateTime.nowAsDate
|
|
831
|
+
* console.log(now instanceof Date) // true
|
|
832
|
+
* })
|
|
833
|
+
* ```
|
|
834
|
+
*
|
|
835
|
+
* @category constructors
|
|
836
|
+
* @since 3.6.0
|
|
837
|
+
*/
|
|
838
|
+
export const now: Effect.Effect<Utc> = Internal.now
|
|
839
|
+
|
|
840
|
+
/**
|
|
841
|
+
* Gets the current time from the `Clock` service and returns it as a
|
|
842
|
+
* JavaScript `Date`.
|
|
843
|
+
*
|
|
844
|
+
* **Example** (Getting the current Date)
|
|
845
|
+
*
|
|
846
|
+
* ```ts
|
|
847
|
+
* import { DateTime, Effect } from "effect"
|
|
848
|
+
*
|
|
849
|
+
* Effect.gen(function*() {
|
|
850
|
+
* const now = yield* DateTime.now
|
|
851
|
+
* })
|
|
852
|
+
* ```
|
|
853
|
+
*
|
|
854
|
+
* @category constructors
|
|
855
|
+
* @since 3.14.0
|
|
856
|
+
*/
|
|
857
|
+
export const nowAsDate: Effect.Effect<Date> = Internal.nowAsDate
|
|
858
|
+
|
|
859
|
+
/**
|
|
860
|
+
* Gets the current time using `Date.now`.
|
|
861
|
+
*
|
|
862
|
+
* **When to use**
|
|
863
|
+
*
|
|
864
|
+
* Use when synchronous wall-clock access outside an Effect program is
|
|
865
|
+
* acceptable and testability through the `Clock` service is not needed.
|
|
866
|
+
*
|
|
867
|
+
* **Details**
|
|
868
|
+
*
|
|
869
|
+
* This is a synchronous version of `now` that directly uses `Date.now()`
|
|
870
|
+
* instead of the Effect `Clock` service.
|
|
871
|
+
*
|
|
872
|
+
* **Example** (Getting the current DateTime unsafely)
|
|
873
|
+
*
|
|
874
|
+
* ```ts
|
|
875
|
+
* import { DateTime } from "effect"
|
|
876
|
+
*
|
|
877
|
+
* const now = DateTime.nowUnsafe()
|
|
878
|
+
* console.log(DateTime.formatIso(now))
|
|
879
|
+
* ```
|
|
880
|
+
*
|
|
881
|
+
* @category constructors
|
|
882
|
+
* @since 4.0.0
|
|
883
|
+
*/
|
|
884
|
+
export const nowUnsafe: LazyArg<Utc> = Internal.nowUnsafe
|
|
885
|
+
|
|
886
|
+
// =============================================================================
|
|
887
|
+
// time zones
|
|
888
|
+
// =============================================================================
|
|
889
|
+
|
|
890
|
+
/**
|
|
891
|
+
* Converts a `DateTime` to a UTC `DateTime`.
|
|
892
|
+
*
|
|
893
|
+
* **When to use**
|
|
894
|
+
*
|
|
895
|
+
* Use to represent the same instant in UTC instead of its current time zone.
|
|
896
|
+
*
|
|
897
|
+
* **Details**
|
|
898
|
+
*
|
|
899
|
+
* The returned value keeps the same epoch milliseconds and changes only the
|
|
900
|
+
* `DateTime` representation to UTC.
|
|
901
|
+
*
|
|
902
|
+
* **Example** (Converting DateTime values to UTC)
|
|
903
|
+
*
|
|
904
|
+
* ```ts
|
|
905
|
+
* import { DateTime } from "effect"
|
|
906
|
+
*
|
|
907
|
+
* const now = DateTime.makeZonedUnsafe({ year: 2024 }, {
|
|
908
|
+
* timeZone: "Europe/London"
|
|
909
|
+
* })
|
|
910
|
+
*
|
|
911
|
+
* // set as UTC
|
|
912
|
+
* const utc: DateTime.Utc = DateTime.toUtc(now)
|
|
913
|
+
* ```
|
|
914
|
+
*
|
|
915
|
+
* @category time zones
|
|
916
|
+
* @since 3.13.0
|
|
917
|
+
*/
|
|
918
|
+
export const toUtc: (self: DateTime) => Utc = Internal.toUtc
|
|
919
|
+
|
|
920
|
+
/**
|
|
921
|
+
* Sets the time zone of a `DateTime`, returning a new `DateTime.Zoned`.
|
|
922
|
+
*
|
|
923
|
+
* **Example** (Setting time zones)
|
|
924
|
+
*
|
|
925
|
+
* ```ts
|
|
926
|
+
* import { DateTime, Effect } from "effect"
|
|
927
|
+
*
|
|
928
|
+
* Effect.gen(function*() {
|
|
929
|
+
* const now = yield* DateTime.now
|
|
930
|
+
* const zone = DateTime.zoneMakeNamedUnsafe("Europe/London")
|
|
931
|
+
*
|
|
932
|
+
* // set the time zone
|
|
933
|
+
* const zoned: DateTime.Zoned = DateTime.setZone(now, zone)
|
|
934
|
+
* })
|
|
935
|
+
* ```
|
|
936
|
+
*
|
|
937
|
+
* @category time zones
|
|
938
|
+
* @since 3.6.0
|
|
939
|
+
*/
|
|
940
|
+
export const setZone: {
|
|
941
|
+
(zone: TimeZone, options?: {
|
|
942
|
+
readonly adjustForTimeZone?: boolean | undefined
|
|
943
|
+
readonly disambiguation?: Disambiguation | undefined
|
|
944
|
+
}): (self: DateTime) => Zoned
|
|
945
|
+
(self: DateTime, zone: TimeZone, options?: {
|
|
946
|
+
readonly adjustForTimeZone?: boolean | undefined
|
|
947
|
+
readonly disambiguation?: Disambiguation | undefined
|
|
948
|
+
}): Zoned
|
|
949
|
+
} = Internal.setZone
|
|
950
|
+
|
|
951
|
+
/**
|
|
952
|
+
* Adds a fixed offset time zone to a `DateTime`.
|
|
953
|
+
*
|
|
954
|
+
* **Details**
|
|
955
|
+
*
|
|
956
|
+
* The offset is in milliseconds.
|
|
957
|
+
*
|
|
958
|
+
* **Example** (Setting fixed-offset time zones)
|
|
959
|
+
*
|
|
960
|
+
* ```ts
|
|
961
|
+
* import { DateTime, Effect } from "effect"
|
|
962
|
+
*
|
|
963
|
+
* Effect.gen(function*() {
|
|
964
|
+
* const now = yield* DateTime.now
|
|
965
|
+
*
|
|
966
|
+
* // set the offset time zone in milliseconds
|
|
967
|
+
* const zoned: DateTime.Zoned = DateTime.setZoneOffset(now, 3 * 60 * 60 * 1000)
|
|
968
|
+
* })
|
|
969
|
+
* ```
|
|
970
|
+
*
|
|
971
|
+
* @category time zones
|
|
972
|
+
* @since 3.6.0
|
|
973
|
+
*/
|
|
974
|
+
export const setZoneOffset: {
|
|
975
|
+
(offset: number, options?: {
|
|
976
|
+
readonly adjustForTimeZone?: boolean | undefined
|
|
977
|
+
readonly disambiguation?: Disambiguation | undefined
|
|
978
|
+
}): (self: DateTime) => Zoned
|
|
979
|
+
(self: DateTime, offset: number, options?: {
|
|
980
|
+
readonly adjustForTimeZone?: boolean | undefined
|
|
981
|
+
readonly disambiguation?: Disambiguation | undefined
|
|
982
|
+
}): Zoned
|
|
983
|
+
} = Internal.setZoneOffset
|
|
984
|
+
|
|
985
|
+
/**
|
|
986
|
+
* Attempts to create a named time zone from an IANA time zone identifier.
|
|
987
|
+
*
|
|
988
|
+
* **When to use**
|
|
989
|
+
*
|
|
990
|
+
* Use when the IANA zone id is trusted and invalid zones should throw instead
|
|
991
|
+
* of returning `Option.none` or failing in `Effect`.
|
|
992
|
+
*
|
|
993
|
+
* **Details**
|
|
994
|
+
*
|
|
995
|
+
* If the time zone is invalid, an `IllegalArgumentError` will be thrown.
|
|
996
|
+
*
|
|
997
|
+
* **Example** (Creating named time zones unsafely)
|
|
998
|
+
*
|
|
999
|
+
* ```ts
|
|
1000
|
+
* import { DateTime } from "effect"
|
|
1001
|
+
*
|
|
1002
|
+
* const londonZone = DateTime.zoneMakeNamedUnsafe("Europe/London")
|
|
1003
|
+
* console.log(DateTime.zoneToString(londonZone)) // "Europe/London"
|
|
1004
|
+
*
|
|
1005
|
+
* const tokyoZone = DateTime.zoneMakeNamedUnsafe("Asia/Tokyo")
|
|
1006
|
+
* console.log(DateTime.zoneToString(tokyoZone)) // "Asia/Tokyo"
|
|
1007
|
+
*
|
|
1008
|
+
* // This would throw an IllegalArgumentError:
|
|
1009
|
+
* // DateTime.zoneMakeNamedUnsafe("Invalid/Zone")
|
|
1010
|
+
* ```
|
|
1011
|
+
*
|
|
1012
|
+
* @category time zones
|
|
1013
|
+
* @since 4.0.0
|
|
1014
|
+
*/
|
|
1015
|
+
export const zoneMakeNamedUnsafe: (zoneId: string) => TimeZone.Named = Internal.zoneMakeNamedUnsafe
|
|
1016
|
+
|
|
1017
|
+
/**
|
|
1018
|
+
* Create a fixed offset time zone.
|
|
1019
|
+
*
|
|
1020
|
+
* **Details**
|
|
1021
|
+
*
|
|
1022
|
+
* The offset is specified in milliseconds from UTC. Positive values are
|
|
1023
|
+
* ahead of UTC, negative values are behind UTC.
|
|
1024
|
+
*
|
|
1025
|
+
* **Example** (Creating fixed-offset time zones)
|
|
1026
|
+
*
|
|
1027
|
+
* ```ts
|
|
1028
|
+
* import { DateTime } from "effect"
|
|
1029
|
+
*
|
|
1030
|
+
* // Create a time zone with +3 hours offset
|
|
1031
|
+
* const zone = DateTime.zoneMakeOffset(3 * 60 * 60 * 1000)
|
|
1032
|
+
*
|
|
1033
|
+
* const dt = DateTime.makeZonedUnsafe("2024-01-01T12:00:00Z", {
|
|
1034
|
+
* timeZone: zone
|
|
1035
|
+
* })
|
|
1036
|
+
* ```
|
|
1037
|
+
*
|
|
1038
|
+
* @category time zones
|
|
1039
|
+
* @since 3.6.0
|
|
1040
|
+
*/
|
|
1041
|
+
export const zoneMakeOffset: (offset: number) => TimeZone.Offset = Internal.zoneMakeOffset
|
|
1042
|
+
|
|
1043
|
+
/**
|
|
1044
|
+
* Creates a named time zone safely from an IANA time zone identifier.
|
|
1045
|
+
*
|
|
1046
|
+
* **Details**
|
|
1047
|
+
*
|
|
1048
|
+
* If the time zone is invalid, `None` will be returned.
|
|
1049
|
+
*
|
|
1050
|
+
* **Example** (Creating optional named time zones)
|
|
1051
|
+
*
|
|
1052
|
+
* ```ts
|
|
1053
|
+
* import { DateTime } from "effect"
|
|
1054
|
+
*
|
|
1055
|
+
* const validZone = DateTime.zoneMakeNamed("Europe/London")
|
|
1056
|
+
* console.log(validZone._tag === "Some") // true
|
|
1057
|
+
*
|
|
1058
|
+
* const invalidZone = DateTime.zoneMakeNamed("Invalid/Zone")
|
|
1059
|
+
* console.log(invalidZone._tag === "None") // true
|
|
1060
|
+
* ```
|
|
1061
|
+
*
|
|
1062
|
+
* @category time zones
|
|
1063
|
+
* @since 3.6.0
|
|
1064
|
+
*/
|
|
1065
|
+
export const zoneMakeNamed: (zoneId: string) => Option.Option<TimeZone.Named> = Internal.zoneMakeNamed
|
|
1066
|
+
|
|
1067
|
+
/**
|
|
1068
|
+
* Creates a named time zone effectfully from an IANA time zone identifier.
|
|
1069
|
+
*
|
|
1070
|
+
* **When to use**
|
|
1071
|
+
*
|
|
1072
|
+
* Use when invalid IANA zone ids should fail in the Effect error channel
|
|
1073
|
+
* instead of returning `Option.none` or throwing.
|
|
1074
|
+
*
|
|
1075
|
+
* **Example** (Creating named time zones effectfully)
|
|
1076
|
+
*
|
|
1077
|
+
* ```ts
|
|
1078
|
+
* import { DateTime, Effect } from "effect"
|
|
1079
|
+
*
|
|
1080
|
+
* const program = Effect.gen(function*() {
|
|
1081
|
+
* const zone = yield* DateTime.zoneMakeNamedEffect("Europe/London")
|
|
1082
|
+
* const now = yield* DateTime.now
|
|
1083
|
+
* return DateTime.setZone(now, zone)
|
|
1084
|
+
* })
|
|
1085
|
+
* ```
|
|
1086
|
+
*
|
|
1087
|
+
* @category time zones
|
|
1088
|
+
* @since 3.6.0
|
|
1089
|
+
*/
|
|
1090
|
+
export const zoneMakeNamedEffect: (zoneId: string) => Effect.Effect<TimeZone.Named, IllegalArgumentError> =
|
|
1091
|
+
Internal.zoneMakeNamedEffect
|
|
1092
|
+
|
|
1093
|
+
/**
|
|
1094
|
+
* Create a named time zone from the system's local time zone.
|
|
1095
|
+
*
|
|
1096
|
+
* **Details**
|
|
1097
|
+
*
|
|
1098
|
+
* This uses the system's configured time zone, which may vary depending
|
|
1099
|
+
* on the runtime environment.
|
|
1100
|
+
*
|
|
1101
|
+
* **Example** (Creating local time zones)
|
|
1102
|
+
*
|
|
1103
|
+
* ```ts
|
|
1104
|
+
* import { DateTime } from "effect"
|
|
1105
|
+
*
|
|
1106
|
+
* const localZone = DateTime.zoneMakeLocal()
|
|
1107
|
+
* console.log(DateTime.zoneToString(localZone)) // Output depends on system time zone
|
|
1108
|
+
* ```
|
|
1109
|
+
*
|
|
1110
|
+
* @category time zones
|
|
1111
|
+
* @since 3.6.0
|
|
1112
|
+
*/
|
|
1113
|
+
export const zoneMakeLocal: () => TimeZone.Named = Internal.zoneMakeLocal
|
|
1114
|
+
|
|
1115
|
+
/**
|
|
1116
|
+
* Tries to parse a `TimeZone` from a string safely.
|
|
1117
|
+
*
|
|
1118
|
+
* **Details**
|
|
1119
|
+
*
|
|
1120
|
+
* Supports both IANA time zone identifiers and offset formats like "+03:00".
|
|
1121
|
+
*
|
|
1122
|
+
* **Example** (Parsing time zones)
|
|
1123
|
+
*
|
|
1124
|
+
* ```ts
|
|
1125
|
+
* import { DateTime } from "effect"
|
|
1126
|
+
*
|
|
1127
|
+
* const namedZone = DateTime.zoneFromString("Europe/London")
|
|
1128
|
+
* const offsetZone = DateTime.zoneFromString("+03:00")
|
|
1129
|
+
* const invalid = DateTime.zoneFromString("invalid")
|
|
1130
|
+
*
|
|
1131
|
+
* console.log(namedZone._tag === "Some") // true
|
|
1132
|
+
* console.log(offsetZone._tag === "Some") // true
|
|
1133
|
+
* console.log(invalid._tag === "None") // true
|
|
1134
|
+
* ```
|
|
1135
|
+
*
|
|
1136
|
+
* @category time zones
|
|
1137
|
+
* @since 3.6.0
|
|
1138
|
+
*/
|
|
1139
|
+
export const zoneFromString: (zone: string) => Option.Option<TimeZone> = Internal.zoneFromString
|
|
1140
|
+
|
|
1141
|
+
/**
|
|
1142
|
+
* Formats a `TimeZone` as a string.
|
|
1143
|
+
*
|
|
1144
|
+
* **Example** (Formatting time zones)
|
|
1145
|
+
*
|
|
1146
|
+
* ```ts
|
|
1147
|
+
* import { DateTime } from "effect"
|
|
1148
|
+
*
|
|
1149
|
+
* // Outputs "+03:00"
|
|
1150
|
+
* DateTime.zoneToString(DateTime.zoneMakeOffset(3 * 60 * 60 * 1000))
|
|
1151
|
+
*
|
|
1152
|
+
* // Outputs "Europe/London"
|
|
1153
|
+
* DateTime.zoneToString(DateTime.zoneMakeNamedUnsafe("Europe/London"))
|
|
1154
|
+
* ```
|
|
1155
|
+
*
|
|
1156
|
+
* @category time zones
|
|
1157
|
+
* @since 3.6.0
|
|
1158
|
+
*/
|
|
1159
|
+
export const zoneToString: (self: TimeZone) => string = Internal.zoneToString
|
|
1160
|
+
|
|
1161
|
+
/**
|
|
1162
|
+
* Sets the time zone of a `DateTime` safely from an IANA time zone identifier. If the
|
|
1163
|
+
* time zone is invalid, `None` will be returned.
|
|
1164
|
+
*
|
|
1165
|
+
* **Example** (Setting named time zones safely)
|
|
1166
|
+
*
|
|
1167
|
+
* ```ts
|
|
1168
|
+
* import { DateTime, Effect } from "effect"
|
|
1169
|
+
*
|
|
1170
|
+
* Effect.gen(function*() {
|
|
1171
|
+
* const now = yield* DateTime.now
|
|
1172
|
+
* // set the time zone, returns an Option
|
|
1173
|
+
* DateTime.setZoneNamed(now, "Europe/London")
|
|
1174
|
+
* })
|
|
1175
|
+
* ```
|
|
1176
|
+
*
|
|
1177
|
+
* @category time zones
|
|
1178
|
+
* @since 3.6.0
|
|
1179
|
+
*/
|
|
1180
|
+
export const setZoneNamed: {
|
|
1181
|
+
(zoneId: string, options?: {
|
|
1182
|
+
readonly adjustForTimeZone?: boolean | undefined
|
|
1183
|
+
readonly disambiguation?: Disambiguation | undefined
|
|
1184
|
+
}): (self: DateTime) => Option.Option<Zoned>
|
|
1185
|
+
(self: DateTime, zoneId: string, options?: {
|
|
1186
|
+
readonly adjustForTimeZone?: boolean | undefined
|
|
1187
|
+
readonly disambiguation?: Disambiguation | undefined
|
|
1188
|
+
}): Option.Option<Zoned>
|
|
1189
|
+
} = Internal.setZoneNamed
|
|
1190
|
+
|
|
1191
|
+
/**
|
|
1192
|
+
* Sets the time zone of a `DateTime` from an IANA time zone identifier. If the
|
|
1193
|
+
* time zone is invalid, an `IllegalArgumentError` will be thrown.
|
|
1194
|
+
*
|
|
1195
|
+
* **Example** (Setting named time zones unsafely)
|
|
1196
|
+
*
|
|
1197
|
+
* ```ts
|
|
1198
|
+
* import { DateTime, Effect } from "effect"
|
|
1199
|
+
*
|
|
1200
|
+
* Effect.gen(function*() {
|
|
1201
|
+
* const now = yield* DateTime.now
|
|
1202
|
+
* // set the time zone
|
|
1203
|
+
* DateTime.setZoneNamedUnsafe(now, "Europe/London")
|
|
1204
|
+
* })
|
|
1205
|
+
* ```
|
|
1206
|
+
*
|
|
1207
|
+
* @category time zones
|
|
1208
|
+
* @since 4.0.0
|
|
1209
|
+
*/
|
|
1210
|
+
export const setZoneNamedUnsafe: {
|
|
1211
|
+
(zoneId: string, options?: {
|
|
1212
|
+
readonly adjustForTimeZone?: boolean | undefined
|
|
1213
|
+
readonly disambiguation?: Disambiguation | undefined
|
|
1214
|
+
}): (self: DateTime) => Zoned
|
|
1215
|
+
(self: DateTime, zoneId: string, options?: {
|
|
1216
|
+
readonly adjustForTimeZone?: boolean | undefined
|
|
1217
|
+
readonly disambiguation?: Disambiguation | undefined
|
|
1218
|
+
}): Zoned
|
|
1219
|
+
} = Internal.setZoneNamedUnsafe
|
|
1220
|
+
|
|
1221
|
+
// =============================================================================
|
|
1222
|
+
// comparisons
|
|
1223
|
+
// =============================================================================
|
|
1224
|
+
|
|
1225
|
+
/**
|
|
1226
|
+
* Computes the difference between two `DateTime` values, returning a
|
|
1227
|
+
* `Duration` representing the amount of time between them.
|
|
1228
|
+
*
|
|
1229
|
+
* **Details**
|
|
1230
|
+
*
|
|
1231
|
+
* If `other` is *after* `self`, the result will be a positive `Duration`. If
|
|
1232
|
+
* `other` is *before* `self`, the result will be a negative `Duration`. If they
|
|
1233
|
+
* are equal, the result will be a `Duration` of zero.
|
|
1234
|
+
*
|
|
1235
|
+
* **Example** (Measuring distance between DateTime values)
|
|
1236
|
+
*
|
|
1237
|
+
* ```ts
|
|
1238
|
+
* import { DateTime, Effect } from "effect"
|
|
1239
|
+
*
|
|
1240
|
+
* Effect.gen(function*() {
|
|
1241
|
+
* const now = yield* DateTime.now
|
|
1242
|
+
* const other = DateTime.add(now, { minutes: 1 })
|
|
1243
|
+
*
|
|
1244
|
+
* // returns Duration.minutes(1)
|
|
1245
|
+
* DateTime.distance(now, other)
|
|
1246
|
+
* })
|
|
1247
|
+
* ```
|
|
1248
|
+
*
|
|
1249
|
+
* @category comparisons
|
|
1250
|
+
* @since 3.6.0
|
|
1251
|
+
*/
|
|
1252
|
+
export const distance: {
|
|
1253
|
+
(other: DateTime): (self: DateTime) => Duration.Duration
|
|
1254
|
+
(self: DateTime, other: DateTime): Duration.Duration
|
|
1255
|
+
} = Internal.distance
|
|
1256
|
+
|
|
1257
|
+
/**
|
|
1258
|
+
* Returns the earlier of two `DateTime` values.
|
|
1259
|
+
*
|
|
1260
|
+
* **Example** (Selecting the earlier DateTime)
|
|
1261
|
+
*
|
|
1262
|
+
* ```ts
|
|
1263
|
+
* import { DateTime } from "effect"
|
|
1264
|
+
*
|
|
1265
|
+
* const date1 = DateTime.makeUnsafe("2024-01-01")
|
|
1266
|
+
* const date2 = DateTime.makeUnsafe("2024-02-01")
|
|
1267
|
+
*
|
|
1268
|
+
* const earlier = DateTime.min(date1, date2)
|
|
1269
|
+
* // earlier equals date1 (2024-01-01)
|
|
1270
|
+
* ```
|
|
1271
|
+
*
|
|
1272
|
+
* @category comparisons
|
|
1273
|
+
* @since 3.6.0
|
|
1274
|
+
*/
|
|
1275
|
+
export const min: {
|
|
1276
|
+
<That extends DateTime>(that: That): <Self extends DateTime>(self: Self) => Self | That
|
|
1277
|
+
<Self extends DateTime, That extends DateTime>(self: Self, that: That): Self | That
|
|
1278
|
+
} = Internal.min
|
|
1279
|
+
|
|
1280
|
+
/**
|
|
1281
|
+
* Returns the later of two `DateTime` values.
|
|
1282
|
+
*
|
|
1283
|
+
* **Example** (Selecting the later DateTime)
|
|
1284
|
+
*
|
|
1285
|
+
* ```ts
|
|
1286
|
+
* import { DateTime } from "effect"
|
|
1287
|
+
*
|
|
1288
|
+
* const date1 = DateTime.makeUnsafe("2024-01-01")
|
|
1289
|
+
* const date2 = DateTime.makeUnsafe("2024-02-01")
|
|
1290
|
+
*
|
|
1291
|
+
* const later = DateTime.max(date1, date2)
|
|
1292
|
+
* // later equals date2 (2024-02-01)
|
|
1293
|
+
* ```
|
|
1294
|
+
*
|
|
1295
|
+
* @category comparisons
|
|
1296
|
+
* @since 3.6.0
|
|
1297
|
+
*/
|
|
1298
|
+
export const max: {
|
|
1299
|
+
<That extends DateTime>(that: That): <Self extends DateTime>(self: Self) => Self | That
|
|
1300
|
+
<Self extends DateTime, That extends DateTime>(self: Self, that: That): Self | That
|
|
1301
|
+
} = Internal.max
|
|
1302
|
+
|
|
1303
|
+
/**
|
|
1304
|
+
* Checks whether the first `DateTime` is after the second `DateTime`.
|
|
1305
|
+
*
|
|
1306
|
+
* **Example** (Checking whether a DateTime is later)
|
|
1307
|
+
*
|
|
1308
|
+
* ```ts
|
|
1309
|
+
* import { DateTime } from "effect"
|
|
1310
|
+
*
|
|
1311
|
+
* const date1 = DateTime.makeUnsafe("2024-02-01")
|
|
1312
|
+
* const date2 = DateTime.makeUnsafe("2024-01-01")
|
|
1313
|
+
*
|
|
1314
|
+
* console.log(DateTime.isGreaterThan(date1, date2)) // true
|
|
1315
|
+
* console.log(DateTime.isGreaterThan(date2, date1)) // false
|
|
1316
|
+
* ```
|
|
1317
|
+
*
|
|
1318
|
+
* @category comparisons
|
|
1319
|
+
* @since 4.0.0
|
|
1320
|
+
*/
|
|
1321
|
+
export const isGreaterThan: {
|
|
1322
|
+
(that: DateTime): (self: DateTime) => boolean
|
|
1323
|
+
(self: DateTime, that: DateTime): boolean
|
|
1324
|
+
} = Internal.isGreaterThan
|
|
1325
|
+
|
|
1326
|
+
/**
|
|
1327
|
+
* Checks whether the first `DateTime` is after or equal to the second `DateTime`.
|
|
1328
|
+
*
|
|
1329
|
+
* **Example** (Checking whether a DateTime is later or equal)
|
|
1330
|
+
*
|
|
1331
|
+
* ```ts
|
|
1332
|
+
* import { DateTime } from "effect"
|
|
1333
|
+
*
|
|
1334
|
+
* const date1 = DateTime.makeUnsafe("2024-01-01")
|
|
1335
|
+
* const date2 = DateTime.makeUnsafe("2024-01-01")
|
|
1336
|
+
* const date3 = DateTime.makeUnsafe("2024-02-01")
|
|
1337
|
+
*
|
|
1338
|
+
* console.log(DateTime.isGreaterThanOrEqualTo(date1, date2)) // true
|
|
1339
|
+
* console.log(DateTime.isGreaterThanOrEqualTo(date3, date1)) // true
|
|
1340
|
+
* console.log(DateTime.isGreaterThanOrEqualTo(date1, date3)) // false
|
|
1341
|
+
* ```
|
|
1342
|
+
*
|
|
1343
|
+
* @category comparisons
|
|
1344
|
+
* @since 4.0.0
|
|
1345
|
+
*/
|
|
1346
|
+
export const isGreaterThanOrEqualTo: {
|
|
1347
|
+
(that: DateTime): (self: DateTime) => boolean
|
|
1348
|
+
(self: DateTime, that: DateTime): boolean
|
|
1349
|
+
} = Internal.isGreaterThanOrEqualTo
|
|
1350
|
+
|
|
1351
|
+
/**
|
|
1352
|
+
* Checks whether the first `DateTime` is before the second `DateTime`.
|
|
1353
|
+
*
|
|
1354
|
+
* **Example** (Checking whether a DateTime is earlier)
|
|
1355
|
+
*
|
|
1356
|
+
* ```ts
|
|
1357
|
+
* import { DateTime } from "effect"
|
|
1358
|
+
*
|
|
1359
|
+
* const date1 = DateTime.makeUnsafe("2024-01-01")
|
|
1360
|
+
* const date2 = DateTime.makeUnsafe("2024-02-01")
|
|
1361
|
+
*
|
|
1362
|
+
* console.log(DateTime.isLessThan(date1, date2)) // true
|
|
1363
|
+
* console.log(DateTime.isLessThan(date2, date1)) // false
|
|
1364
|
+
* ```
|
|
1365
|
+
*
|
|
1366
|
+
* @category comparisons
|
|
1367
|
+
* @since 4.0.0
|
|
1368
|
+
*/
|
|
1369
|
+
export const isLessThan: {
|
|
1370
|
+
(that: DateTime): (self: DateTime) => boolean
|
|
1371
|
+
(self: DateTime, that: DateTime): boolean
|
|
1372
|
+
} = Internal.isLessThan
|
|
1373
|
+
|
|
1374
|
+
/**
|
|
1375
|
+
* Checks whether the first `DateTime` is before or equal to the second `DateTime`.
|
|
1376
|
+
*
|
|
1377
|
+
* **Example** (Checking whether a DateTime is earlier or equal)
|
|
1378
|
+
*
|
|
1379
|
+
* ```ts
|
|
1380
|
+
* import { DateTime } from "effect"
|
|
1381
|
+
*
|
|
1382
|
+
* const date1 = DateTime.makeUnsafe("2024-01-01")
|
|
1383
|
+
* const date2 = DateTime.makeUnsafe("2024-01-01")
|
|
1384
|
+
* const date3 = DateTime.makeUnsafe("2024-02-01")
|
|
1385
|
+
*
|
|
1386
|
+
* console.log(DateTime.isLessThanOrEqualTo(date1, date2)) // true
|
|
1387
|
+
* console.log(DateTime.isLessThanOrEqualTo(date1, date3)) // true
|
|
1388
|
+
* console.log(DateTime.isLessThanOrEqualTo(date3, date1)) // false
|
|
1389
|
+
* ```
|
|
1390
|
+
*
|
|
1391
|
+
* @category comparisons
|
|
1392
|
+
* @since 4.0.0
|
|
1393
|
+
*/
|
|
1394
|
+
export const isLessThanOrEqualTo: {
|
|
1395
|
+
(that: DateTime): (self: DateTime) => boolean
|
|
1396
|
+
(self: DateTime, that: DateTime): boolean
|
|
1397
|
+
} = Internal.isLessThanOrEqualTo
|
|
1398
|
+
|
|
1399
|
+
/**
|
|
1400
|
+
* Checks whether a `DateTime` is between two other `DateTime` values (inclusive).
|
|
1401
|
+
*
|
|
1402
|
+
* **Example** (Checking whether a DateTime is within bounds)
|
|
1403
|
+
*
|
|
1404
|
+
* ```ts
|
|
1405
|
+
* import { DateTime } from "effect"
|
|
1406
|
+
*
|
|
1407
|
+
* const min = DateTime.makeUnsafe("2024-01-01")
|
|
1408
|
+
* const max = DateTime.makeUnsafe("2024-12-31")
|
|
1409
|
+
* const date = DateTime.makeUnsafe("2024-06-15")
|
|
1410
|
+
*
|
|
1411
|
+
* console.log(DateTime.between(date, { minimum: min, maximum: max })) // true
|
|
1412
|
+
* ```
|
|
1413
|
+
*
|
|
1414
|
+
* @category comparisons
|
|
1415
|
+
* @since 3.6.0
|
|
1416
|
+
*/
|
|
1417
|
+
export const between: {
|
|
1418
|
+
(options: { minimum: DateTime; maximum: DateTime }): (self: DateTime) => boolean
|
|
1419
|
+
(self: DateTime, options: { minimum: DateTime; maximum: DateTime }): boolean
|
|
1420
|
+
} = Internal.between
|
|
1421
|
+
|
|
1422
|
+
/**
|
|
1423
|
+
* Checks effectfully if a `DateTime` is in the future compared to the current time.
|
|
1424
|
+
*
|
|
1425
|
+
* **Details**
|
|
1426
|
+
*
|
|
1427
|
+
* This is an effectful operation that uses the current time from the `Clock` service.
|
|
1428
|
+
*
|
|
1429
|
+
* **Example** (Checking future DateTime values effectfully)
|
|
1430
|
+
*
|
|
1431
|
+
* ```ts
|
|
1432
|
+
* import { DateTime, Effect } from "effect"
|
|
1433
|
+
*
|
|
1434
|
+
* const program = Effect.gen(function*() {
|
|
1435
|
+
* const futureDate = DateTime.add(yield* DateTime.now, { hours: 1 })
|
|
1436
|
+
* const isFuture = yield* DateTime.isFuture(futureDate)
|
|
1437
|
+
* console.log(isFuture) // true
|
|
1438
|
+
* })
|
|
1439
|
+
* ```
|
|
1440
|
+
*
|
|
1441
|
+
* @category comparisons
|
|
1442
|
+
* @since 3.6.0
|
|
1443
|
+
*/
|
|
1444
|
+
export const isFuture: (self: DateTime) => Effect.Effect<boolean> = Internal.isFuture
|
|
1445
|
+
|
|
1446
|
+
/**
|
|
1447
|
+
* Checks synchronously if a `DateTime` is in the future compared to the current time.
|
|
1448
|
+
*
|
|
1449
|
+
* **When to use**
|
|
1450
|
+
*
|
|
1451
|
+
* Use when checking whether a `DateTime` is in the future with a synchronous
|
|
1452
|
+
* live-clock read and `Clock`-based testability is not needed.
|
|
1453
|
+
*
|
|
1454
|
+
* **Details**
|
|
1455
|
+
*
|
|
1456
|
+
* This is a synchronous version that uses `Date.now()` directly.
|
|
1457
|
+
*
|
|
1458
|
+
* **Example** (Checking future DateTime values unsafely)
|
|
1459
|
+
*
|
|
1460
|
+
* ```ts
|
|
1461
|
+
* import { DateTime } from "effect"
|
|
1462
|
+
*
|
|
1463
|
+
* const now = DateTime.nowUnsafe()
|
|
1464
|
+
* const futureDate = DateTime.add(now, { hours: 1 })
|
|
1465
|
+
*
|
|
1466
|
+
* console.log(DateTime.isFutureUnsafe(futureDate)) // true
|
|
1467
|
+
* console.log(DateTime.isFutureUnsafe(now)) // false
|
|
1468
|
+
* ```
|
|
1469
|
+
*
|
|
1470
|
+
* @category comparisons
|
|
1471
|
+
* @since 4.0.0
|
|
1472
|
+
*/
|
|
1473
|
+
export const isFutureUnsafe: (self: DateTime) => boolean = Internal.isFutureUnsafe
|
|
1474
|
+
|
|
1475
|
+
/**
|
|
1476
|
+
* Checks effectfully if a `DateTime` is in the past compared to the current time.
|
|
1477
|
+
*
|
|
1478
|
+
* **Details**
|
|
1479
|
+
*
|
|
1480
|
+
* This is an effectful operation that uses the current time from the `Clock` service.
|
|
1481
|
+
*
|
|
1482
|
+
* **Example** (Checking past DateTime values effectfully)
|
|
1483
|
+
*
|
|
1484
|
+
* ```ts
|
|
1485
|
+
* import { DateTime, Effect } from "effect"
|
|
1486
|
+
*
|
|
1487
|
+
* const program = Effect.gen(function*() {
|
|
1488
|
+
* const pastDate = DateTime.subtract(yield* DateTime.now, { hours: 1 })
|
|
1489
|
+
* const isPast = yield* DateTime.isPast(pastDate)
|
|
1490
|
+
* console.log(isPast) // true
|
|
1491
|
+
* })
|
|
1492
|
+
* ```
|
|
1493
|
+
*
|
|
1494
|
+
* @category comparisons
|
|
1495
|
+
* @since 3.6.0
|
|
1496
|
+
*/
|
|
1497
|
+
export const isPast: (self: DateTime) => Effect.Effect<boolean> = Internal.isPast
|
|
1498
|
+
|
|
1499
|
+
/**
|
|
1500
|
+
* Checks synchronously if a `DateTime` is in the past compared to the current time.
|
|
1501
|
+
*
|
|
1502
|
+
* **When to use**
|
|
1503
|
+
*
|
|
1504
|
+
* Use when checking whether a `DateTime` is in the past with a synchronous
|
|
1505
|
+
* live-clock read and `Clock`-based testability is not needed.
|
|
1506
|
+
*
|
|
1507
|
+
* **Details**
|
|
1508
|
+
*
|
|
1509
|
+
* This is a synchronous version that uses `Date.now()` directly.
|
|
1510
|
+
*
|
|
1511
|
+
* **Example** (Checking past DateTime values unsafely)
|
|
1512
|
+
*
|
|
1513
|
+
* ```ts
|
|
1514
|
+
* import { DateTime } from "effect"
|
|
1515
|
+
*
|
|
1516
|
+
* const now = DateTime.nowUnsafe()
|
|
1517
|
+
* const pastDate = DateTime.subtract(now, { hours: 1 })
|
|
1518
|
+
*
|
|
1519
|
+
* console.log(DateTime.isPastUnsafe(pastDate)) // true
|
|
1520
|
+
* console.log(DateTime.isPastUnsafe(now)) // false
|
|
1521
|
+
* ```
|
|
1522
|
+
*
|
|
1523
|
+
* @category comparisons
|
|
1524
|
+
* @since 4.0.0
|
|
1525
|
+
*/
|
|
1526
|
+
export const isPastUnsafe: (self: DateTime) => boolean = Internal.isPastUnsafe
|
|
1527
|
+
|
|
1528
|
+
// =============================================================================
|
|
1529
|
+
// conversions
|
|
1530
|
+
// =============================================================================
|
|
1531
|
+
|
|
1532
|
+
/**
|
|
1533
|
+
* Gets the UTC `Date` of a `DateTime`.
|
|
1534
|
+
*
|
|
1535
|
+
* **Details**
|
|
1536
|
+
*
|
|
1537
|
+
* This always returns the UTC representation, ignoring any time zone information.
|
|
1538
|
+
*
|
|
1539
|
+
* **Example** (Converting DateTime values to UTC Dates)
|
|
1540
|
+
*
|
|
1541
|
+
* ```ts
|
|
1542
|
+
* import { DateTime } from "effect"
|
|
1543
|
+
*
|
|
1544
|
+
* const dt = DateTime.makeZonedUnsafe("2024-01-01T12:00:00Z", {
|
|
1545
|
+
* timeZone: "Europe/London"
|
|
1546
|
+
* })
|
|
1547
|
+
*
|
|
1548
|
+
* const utcDate = DateTime.toDateUtc(dt)
|
|
1549
|
+
* console.log(utcDate.toISOString()) // "2024-01-01T12:00:00.000Z"
|
|
1550
|
+
* ```
|
|
1551
|
+
*
|
|
1552
|
+
* @category converting
|
|
1553
|
+
* @since 3.6.0
|
|
1554
|
+
*/
|
|
1555
|
+
export const toDateUtc: (self: DateTime) => Date = Internal.toDateUtc
|
|
1556
|
+
|
|
1557
|
+
/**
|
|
1558
|
+
* Converts a `DateTime` to a `Date`, applying the time zone first.
|
|
1559
|
+
*
|
|
1560
|
+
* **Details**
|
|
1561
|
+
*
|
|
1562
|
+
* For `DateTime.Zoned`, this adjusts for the time zone before converting.
|
|
1563
|
+
* For `DateTime.Utc`, this is equivalent to `toDateUtc`.
|
|
1564
|
+
*
|
|
1565
|
+
* **Example** (Converting DateTime values to Dates)
|
|
1566
|
+
*
|
|
1567
|
+
* ```ts
|
|
1568
|
+
* import { DateTime } from "effect"
|
|
1569
|
+
*
|
|
1570
|
+
* const utc = DateTime.makeUnsafe("2024-01-01T12:00:00Z")
|
|
1571
|
+
* const zoned = DateTime.makeZonedUnsafe("2024-01-01T12:00:00Z", {
|
|
1572
|
+
* timeZone: "Europe/London"
|
|
1573
|
+
* })
|
|
1574
|
+
*
|
|
1575
|
+
* console.log(DateTime.toDate(utc).toISOString())
|
|
1576
|
+
* console.log(DateTime.toDate(zoned).toISOString())
|
|
1577
|
+
* ```
|
|
1578
|
+
*
|
|
1579
|
+
* @category converting
|
|
1580
|
+
* @since 3.6.0
|
|
1581
|
+
*/
|
|
1582
|
+
export const toDate: (self: DateTime) => Date = Internal.toDate
|
|
1583
|
+
|
|
1584
|
+
/**
|
|
1585
|
+
* Computes the time zone offset of a `DateTime.Zoned` in milliseconds.
|
|
1586
|
+
*
|
|
1587
|
+
* **Details**
|
|
1588
|
+
*
|
|
1589
|
+
* Returns the offset from UTC in milliseconds. Positive values indicate
|
|
1590
|
+
* time zones ahead of UTC, negative values indicate time zones behind UTC.
|
|
1591
|
+
*
|
|
1592
|
+
* **Example** (Reading zoned offsets)
|
|
1593
|
+
*
|
|
1594
|
+
* ```ts
|
|
1595
|
+
* import { DateTime } from "effect"
|
|
1596
|
+
*
|
|
1597
|
+
* const zoned = DateTime.makeZonedUnsafe("2024-01-01T12:00:00Z", {
|
|
1598
|
+
* timeZone: "Europe/London"
|
|
1599
|
+
* })
|
|
1600
|
+
*
|
|
1601
|
+
* const offset = DateTime.zonedOffset(zoned)
|
|
1602
|
+
* console.log(offset) // 0 (London is UTC+0 in winter)
|
|
1603
|
+
* ```
|
|
1604
|
+
*
|
|
1605
|
+
* @category converting
|
|
1606
|
+
* @since 3.6.0
|
|
1607
|
+
*/
|
|
1608
|
+
export const zonedOffset: (self: Zoned) => number = Internal.zonedOffset
|
|
1609
|
+
|
|
1610
|
+
/**
|
|
1611
|
+
* Formats the time zone offset of a `DateTime.Zoned` as an ISO string.
|
|
1612
|
+
*
|
|
1613
|
+
* **Details**
|
|
1614
|
+
*
|
|
1615
|
+
* The offset is formatted as "±HH:MM".
|
|
1616
|
+
*
|
|
1617
|
+
* **Example** (Formatting zoned offsets)
|
|
1618
|
+
*
|
|
1619
|
+
* ```ts
|
|
1620
|
+
* import { DateTime } from "effect"
|
|
1621
|
+
*
|
|
1622
|
+
* const zoned = DateTime.makeZonedUnsafe("2024-01-01T12:00:00Z", {
|
|
1623
|
+
* timeZone: DateTime.zoneMakeOffset(3 * 60 * 60 * 1000) // +3 hours
|
|
1624
|
+
* })
|
|
1625
|
+
*
|
|
1626
|
+
* const offsetString = DateTime.zonedOffsetIso(zoned)
|
|
1627
|
+
* console.log(offsetString) // "+03:00"
|
|
1628
|
+
* ```
|
|
1629
|
+
*
|
|
1630
|
+
* @category converting
|
|
1631
|
+
* @since 3.6.0
|
|
1632
|
+
*/
|
|
1633
|
+
export const zonedOffsetIso: (self: Zoned) => string = Internal.zonedOffsetIso
|
|
1634
|
+
|
|
1635
|
+
/**
|
|
1636
|
+
* Gets the milliseconds since the Unix epoch of a `DateTime`.
|
|
1637
|
+
*
|
|
1638
|
+
* **Details**
|
|
1639
|
+
*
|
|
1640
|
+
* This returns the UTC timestamp regardless of any time zone information.
|
|
1641
|
+
*
|
|
1642
|
+
* **Example** (Reading epoch milliseconds)
|
|
1643
|
+
*
|
|
1644
|
+
* ```ts
|
|
1645
|
+
* import { DateTime } from "effect"
|
|
1646
|
+
*
|
|
1647
|
+
* const dt = DateTime.makeUnsafe("2024-01-01T00:00:00Z")
|
|
1648
|
+
* const epochMillis = DateTime.toEpochMillis(dt)
|
|
1649
|
+
*
|
|
1650
|
+
* console.log(epochMillis) // 1704067200000
|
|
1651
|
+
* ```
|
|
1652
|
+
*
|
|
1653
|
+
* @category converting
|
|
1654
|
+
* @since 3.6.0
|
|
1655
|
+
*/
|
|
1656
|
+
export const toEpochMillis: (self: DateTime) => number = Internal.toEpochMillis
|
|
1657
|
+
|
|
1658
|
+
/**
|
|
1659
|
+
* Removes the time aspect of a `DateTime`, first adjusting for the time
|
|
1660
|
+
* zone. It will return a `DateTime.Utc` only containing the date.
|
|
1661
|
+
*
|
|
1662
|
+
* **Example** (Removing time components)
|
|
1663
|
+
*
|
|
1664
|
+
* ```ts
|
|
1665
|
+
* import { DateTime } from "effect"
|
|
1666
|
+
*
|
|
1667
|
+
* // returns "2024-01-01T00:00:00Z"
|
|
1668
|
+
* DateTime.makeZonedUnsafe("2024-01-01T05:00:00Z", {
|
|
1669
|
+
* timeZone: "Pacific/Auckland",
|
|
1670
|
+
* adjustForTimeZone: true
|
|
1671
|
+
* }).pipe(
|
|
1672
|
+
* DateTime.removeTime,
|
|
1673
|
+
* DateTime.formatIso
|
|
1674
|
+
* )
|
|
1675
|
+
* ```
|
|
1676
|
+
*
|
|
1677
|
+
* @category converting
|
|
1678
|
+
* @since 3.6.0
|
|
1679
|
+
*/
|
|
1680
|
+
export const removeTime: (self: DateTime) => Utc = Internal.removeTime
|
|
1681
|
+
|
|
1682
|
+
// =============================================================================
|
|
1683
|
+
// parts
|
|
1684
|
+
// =============================================================================
|
|
1685
|
+
|
|
1686
|
+
/**
|
|
1687
|
+
* Gets the time-zone-adjusted parts of a `DateTime` as an object.
|
|
1688
|
+
*
|
|
1689
|
+
* **Details**
|
|
1690
|
+
*
|
|
1691
|
+
* The parts will be time zone adjusted if the `DateTime` is zoned.
|
|
1692
|
+
*
|
|
1693
|
+
* **Example** (Reading DateTime parts)
|
|
1694
|
+
*
|
|
1695
|
+
* ```ts
|
|
1696
|
+
* import { DateTime } from "effect"
|
|
1697
|
+
*
|
|
1698
|
+
* const dt = DateTime.makeUnsafe("2024-01-01T12:30:45.123Z")
|
|
1699
|
+
* const parts = DateTime.toParts(dt)
|
|
1700
|
+
*
|
|
1701
|
+
* console.log(parts)
|
|
1702
|
+
* // {
|
|
1703
|
+
* // year: 2024,
|
|
1704
|
+
* // month: 1,
|
|
1705
|
+
* // day: 1,
|
|
1706
|
+
* // hours: 12,
|
|
1707
|
+
* // minutes: 30,
|
|
1708
|
+
* // seconds: 45,
|
|
1709
|
+
* // millis: 123,
|
|
1710
|
+
* // weekDay: 1 // Monday
|
|
1711
|
+
* // }
|
|
1712
|
+
* ```
|
|
1713
|
+
*
|
|
1714
|
+
* @category parts
|
|
1715
|
+
* @since 3.6.0
|
|
1716
|
+
*/
|
|
1717
|
+
export const toParts: (self: DateTime) => DateTime.PartsWithWeekday = Internal.toParts
|
|
1718
|
+
|
|
1719
|
+
/**
|
|
1720
|
+
* Gets the UTC parts of a `DateTime` as an object.
|
|
1721
|
+
*
|
|
1722
|
+
* **Details**
|
|
1723
|
+
*
|
|
1724
|
+
* The parts will always be in UTC, ignoring any time zone information.
|
|
1725
|
+
*
|
|
1726
|
+
* **Example** (Reading UTC DateTime parts)
|
|
1727
|
+
*
|
|
1728
|
+
* ```ts
|
|
1729
|
+
* import { DateTime } from "effect"
|
|
1730
|
+
*
|
|
1731
|
+
* const zoned = DateTime.makeZonedUnsafe("2024-01-01T12:30:45.123Z", {
|
|
1732
|
+
* timeZone: "Europe/London"
|
|
1733
|
+
* })
|
|
1734
|
+
* const parts = DateTime.toPartsUtc(zoned)
|
|
1735
|
+
*
|
|
1736
|
+
* console.log(parts)
|
|
1737
|
+
* // Always returns UTC parts regardless of time zone
|
|
1738
|
+
* ```
|
|
1739
|
+
*
|
|
1740
|
+
* @category parts
|
|
1741
|
+
* @since 3.6.0
|
|
1742
|
+
*/
|
|
1743
|
+
export const toPartsUtc: (self: DateTime) => DateTime.PartsWithWeekday = Internal.toPartsUtc
|
|
1744
|
+
|
|
1745
|
+
/**
|
|
1746
|
+
* Gets one UTC part of a `DateTime` as a number.
|
|
1747
|
+
*
|
|
1748
|
+
* **Details**
|
|
1749
|
+
*
|
|
1750
|
+
* The part will be in the UTC time zone.
|
|
1751
|
+
*
|
|
1752
|
+
* **Example** (Reading UTC DateTime parts by key)
|
|
1753
|
+
*
|
|
1754
|
+
* ```ts
|
|
1755
|
+
* import { DateTime } from "effect"
|
|
1756
|
+
*
|
|
1757
|
+
* const dateTime = DateTime.makeUnsafe({ year: 2024 })
|
|
1758
|
+
* const year = DateTime.getPartUtc(dateTime, "year")
|
|
1759
|
+
* console.log(year) // 2024
|
|
1760
|
+
* ```
|
|
1761
|
+
*
|
|
1762
|
+
* @category parts
|
|
1763
|
+
* @since 3.6.0
|
|
1764
|
+
*/
|
|
1765
|
+
export const getPartUtc: {
|
|
1766
|
+
(part: keyof DateTime.PartsWithWeekday): (self: DateTime) => number
|
|
1767
|
+
(self: DateTime, part: keyof DateTime.PartsWithWeekday): number
|
|
1768
|
+
} = Internal.getPartUtc
|
|
1769
|
+
|
|
1770
|
+
/**
|
|
1771
|
+
* Gets one time-zone-adjusted part of a `DateTime` as a number.
|
|
1772
|
+
*
|
|
1773
|
+
* **Details**
|
|
1774
|
+
*
|
|
1775
|
+
* The part will be time zone adjusted.
|
|
1776
|
+
*
|
|
1777
|
+
* **Example** (Reading DateTime parts by key)
|
|
1778
|
+
*
|
|
1779
|
+
* ```ts
|
|
1780
|
+
* import { DateTime } from "effect"
|
|
1781
|
+
*
|
|
1782
|
+
* const dateTime = DateTime.makeZonedUnsafe({ year: 2024 }, {
|
|
1783
|
+
* timeZone: "Europe/London"
|
|
1784
|
+
* })
|
|
1785
|
+
* const year = DateTime.getPart(dateTime, "year")
|
|
1786
|
+
* console.log(year) // 2024
|
|
1787
|
+
* ```
|
|
1788
|
+
*
|
|
1789
|
+
* @category parts
|
|
1790
|
+
* @since 3.6.0
|
|
1791
|
+
*/
|
|
1792
|
+
export const getPart: {
|
|
1793
|
+
(part: keyof DateTime.PartsWithWeekday): (self: DateTime) => number
|
|
1794
|
+
(self: DateTime, part: keyof DateTime.PartsWithWeekday): number
|
|
1795
|
+
} = Internal.getPart
|
|
1796
|
+
|
|
1797
|
+
/**
|
|
1798
|
+
* Sets time-zone-adjusted parts on a `DateTime`.
|
|
1799
|
+
*
|
|
1800
|
+
* **Details**
|
|
1801
|
+
*
|
|
1802
|
+
* The date will be time zone adjusted for `DateTime.Zoned`.
|
|
1803
|
+
*
|
|
1804
|
+
* **Example** (Updating DateTime parts)
|
|
1805
|
+
*
|
|
1806
|
+
* ```ts
|
|
1807
|
+
* import { DateTime } from "effect"
|
|
1808
|
+
*
|
|
1809
|
+
* const dt = DateTime.makeUnsafe("2024-01-01T12:00:00Z")
|
|
1810
|
+
* const updated = DateTime.setParts(dt, {
|
|
1811
|
+
* year: 2025,
|
|
1812
|
+
* month: 6,
|
|
1813
|
+
* day: 15
|
|
1814
|
+
* })
|
|
1815
|
+
*
|
|
1816
|
+
* console.log(DateTime.formatIso(updated)) // "2025-06-15T12:00:00.000Z"
|
|
1817
|
+
* ```
|
|
1818
|
+
*
|
|
1819
|
+
* @category parts
|
|
1820
|
+
* @since 3.6.0
|
|
1821
|
+
*/
|
|
1822
|
+
export const setParts: {
|
|
1823
|
+
(parts: Partial<DateTime.PartsWithWeekday>): <A extends DateTime>(self: A) => A
|
|
1824
|
+
<A extends DateTime>(self: A, parts: Partial<DateTime.PartsWithWeekday>): A
|
|
1825
|
+
} = Internal.setParts
|
|
1826
|
+
|
|
1827
|
+
/**
|
|
1828
|
+
* Sets UTC parts on a `DateTime`.
|
|
1829
|
+
*
|
|
1830
|
+
* **Details**
|
|
1831
|
+
*
|
|
1832
|
+
* The parts are always interpreted as UTC, ignoring any time zone information.
|
|
1833
|
+
*
|
|
1834
|
+
* **Example** (Updating UTC DateTime parts)
|
|
1835
|
+
*
|
|
1836
|
+
* ```ts
|
|
1837
|
+
* import { DateTime } from "effect"
|
|
1838
|
+
*
|
|
1839
|
+
* const dt = DateTime.makeUnsafe("2024-01-01T12:00:00Z")
|
|
1840
|
+
* const updated = DateTime.setPartsUtc(dt, {
|
|
1841
|
+
* year: 2025,
|
|
1842
|
+
* hour: 18
|
|
1843
|
+
* })
|
|
1844
|
+
*
|
|
1845
|
+
* console.log(DateTime.formatIso(updated)) // "2025-01-01T18:00:00.000Z"
|
|
1846
|
+
* ```
|
|
1847
|
+
*
|
|
1848
|
+
* @category parts
|
|
1849
|
+
* @since 3.6.0
|
|
1850
|
+
*/
|
|
1851
|
+
export const setPartsUtc: {
|
|
1852
|
+
(parts: Partial<DateTime.PartsWithWeekday>): <A extends DateTime>(self: A) => A
|
|
1853
|
+
<A extends DateTime>(self: A, parts: Partial<DateTime.PartsWithWeekday>): A
|
|
1854
|
+
} = Internal.setPartsUtc
|
|
1855
|
+
|
|
1856
|
+
// =============================================================================
|
|
1857
|
+
// current time zone
|
|
1858
|
+
// =============================================================================
|
|
1859
|
+
|
|
1860
|
+
/**
|
|
1861
|
+
* Context service that supplies the ambient `TimeZone` for APIs that work in
|
|
1862
|
+
* the current zone, such as `DateTime.setZoneCurrent` and
|
|
1863
|
+
* `DateTime.nowInCurrentZone`.
|
|
1864
|
+
*
|
|
1865
|
+
* **Details**
|
|
1866
|
+
*
|
|
1867
|
+
* Provide it with `DateTime.withCurrentZone`, one of the `withCurrentZone*`
|
|
1868
|
+
* helpers, or one of the `layerCurrentZone*` layers.
|
|
1869
|
+
*
|
|
1870
|
+
* **Example** (Accessing the current time zone service)
|
|
1871
|
+
*
|
|
1872
|
+
* ```ts
|
|
1873
|
+
* import { DateTime, Effect } from "effect"
|
|
1874
|
+
*
|
|
1875
|
+
* const program = Effect.gen(function*() {
|
|
1876
|
+
* // Access the current time zone service
|
|
1877
|
+
* const zone = yield* DateTime.CurrentTimeZone
|
|
1878
|
+
* console.log(DateTime.zoneToString(zone))
|
|
1879
|
+
* })
|
|
1880
|
+
*
|
|
1881
|
+
* // Provide a time zone
|
|
1882
|
+
* const layer = DateTime.layerCurrentZoneNamed("Europe/London")
|
|
1883
|
+
* Effect.provide(program, layer)
|
|
1884
|
+
* ```
|
|
1885
|
+
*
|
|
1886
|
+
* @category current time zone
|
|
1887
|
+
* @since 3.11.0
|
|
1888
|
+
*/
|
|
1889
|
+
export class CurrentTimeZone extends Context.Service<CurrentTimeZone, TimeZone>()(
|
|
1890
|
+
"effect/DateTime/CurrentTimeZone"
|
|
1891
|
+
) {}
|
|
1892
|
+
|
|
1893
|
+
/**
|
|
1894
|
+
* Sets the time zone of a `DateTime` to the current time zone, which is
|
|
1895
|
+
* determined by the `CurrentTimeZone` service.
|
|
1896
|
+
*
|
|
1897
|
+
* **Example** (Setting the current time zone)
|
|
1898
|
+
*
|
|
1899
|
+
* ```ts
|
|
1900
|
+
* import { DateTime, Effect } from "effect"
|
|
1901
|
+
*
|
|
1902
|
+
* Effect.gen(function*() {
|
|
1903
|
+
* const now = yield* DateTime.now
|
|
1904
|
+
*
|
|
1905
|
+
* // set the time zone to "Europe/London"
|
|
1906
|
+
* const zoned = yield* DateTime.setZoneCurrent(now)
|
|
1907
|
+
* }).pipe(DateTime.withCurrentZoneNamed("Europe/London"))
|
|
1908
|
+
* ```
|
|
1909
|
+
*
|
|
1910
|
+
* @category current time zone
|
|
1911
|
+
* @since 3.6.0
|
|
1912
|
+
*/
|
|
1913
|
+
export const setZoneCurrent = (self: DateTime): Effect.Effect<Zoned, never, CurrentTimeZone> =>
|
|
1914
|
+
Effect.map(CurrentTimeZone, (zone) => setZone(self, zone))
|
|
1915
|
+
|
|
1916
|
+
/**
|
|
1917
|
+
* Provides the `CurrentTimeZone` to an effect.
|
|
1918
|
+
*
|
|
1919
|
+
* **Example** (Providing the current time zone)
|
|
1920
|
+
*
|
|
1921
|
+
* ```ts
|
|
1922
|
+
* import { DateTime, Effect } from "effect"
|
|
1923
|
+
*
|
|
1924
|
+
* const zone = DateTime.zoneMakeNamedUnsafe("Europe/London")
|
|
1925
|
+
*
|
|
1926
|
+
* Effect.gen(function*() {
|
|
1927
|
+
* const now = yield* DateTime.nowInCurrentZone
|
|
1928
|
+
* }).pipe(DateTime.withCurrentZone(zone))
|
|
1929
|
+
* ```
|
|
1930
|
+
*
|
|
1931
|
+
* @category current time zone
|
|
1932
|
+
* @since 3.6.0
|
|
1933
|
+
*/
|
|
1934
|
+
export const withCurrentZone: {
|
|
1935
|
+
(value: TimeZone): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, CurrentTimeZone>>
|
|
1936
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, value: TimeZone): Effect.Effect<A, E, Exclude<R, CurrentTimeZone>>
|
|
1937
|
+
} = provideService(CurrentTimeZone)
|
|
1938
|
+
|
|
1939
|
+
/**
|
|
1940
|
+
* Provides the `CurrentTimeZone` to an effect, using the system's local time
|
|
1941
|
+
* zone.
|
|
1942
|
+
*
|
|
1943
|
+
* **Example** (Providing the local time zone)
|
|
1944
|
+
*
|
|
1945
|
+
* ```ts
|
|
1946
|
+
* import { DateTime, Effect } from "effect"
|
|
1947
|
+
*
|
|
1948
|
+
* Effect.gen(function*() {
|
|
1949
|
+
* // will use the system's local time zone
|
|
1950
|
+
* const now = yield* DateTime.nowInCurrentZone
|
|
1951
|
+
* }).pipe(DateTime.withCurrentZoneLocal)
|
|
1952
|
+
* ```
|
|
1953
|
+
*
|
|
1954
|
+
* @category current time zone
|
|
1955
|
+
* @since 3.6.0
|
|
1956
|
+
*/
|
|
1957
|
+
export const withCurrentZoneLocal = <A, E, R>(
|
|
1958
|
+
effect: Effect.Effect<A, E, R>
|
|
1959
|
+
): Effect.Effect<A, E, Exclude<R, CurrentTimeZone>> =>
|
|
1960
|
+
Effect.provideServiceEffect(effect, CurrentTimeZone, Effect.sync(zoneMakeLocal))
|
|
1961
|
+
|
|
1962
|
+
/**
|
|
1963
|
+
* Provides the `CurrentTimeZone` to an effect, using an offset.
|
|
1964
|
+
*
|
|
1965
|
+
* **Example** (Providing a fixed-offset time zone)
|
|
1966
|
+
*
|
|
1967
|
+
* ```ts
|
|
1968
|
+
* import { DateTime, Effect } from "effect"
|
|
1969
|
+
*
|
|
1970
|
+
* Effect.gen(function*() {
|
|
1971
|
+
* const zone = yield* DateTime.CurrentTimeZone
|
|
1972
|
+
* console.log(DateTime.zoneToString(zone)) // "+03:00"
|
|
1973
|
+
* }).pipe(DateTime.withCurrentZoneOffset(3 * 60 * 60 * 1000))
|
|
1974
|
+
* ```
|
|
1975
|
+
*
|
|
1976
|
+
* @category current time zone
|
|
1977
|
+
* @since 3.6.0
|
|
1978
|
+
*/
|
|
1979
|
+
export const withCurrentZoneOffset: {
|
|
1980
|
+
(offset: number): <A, E, R>(
|
|
1981
|
+
effect: Effect.Effect<A, E, R>
|
|
1982
|
+
) => Effect.Effect<A, E, Exclude<R, CurrentTimeZone>>
|
|
1983
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, offset: number): Effect.Effect<A, E, Exclude<R, CurrentTimeZone>>
|
|
1984
|
+
} = dual(
|
|
1985
|
+
2,
|
|
1986
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, offset: number): Effect.Effect<A, E, Exclude<R, CurrentTimeZone>> =>
|
|
1987
|
+
Effect.provideService(effect, CurrentTimeZone, zoneMakeOffset(offset))
|
|
1988
|
+
)
|
|
1989
|
+
|
|
1990
|
+
/**
|
|
1991
|
+
* Provides the `CurrentTimeZone` to an effect using an IANA time zone
|
|
1992
|
+
* identifier.
|
|
1993
|
+
*
|
|
1994
|
+
* **Details**
|
|
1995
|
+
*
|
|
1996
|
+
* If the time zone is invalid, it will fail with an `IllegalArgumentError`.
|
|
1997
|
+
*
|
|
1998
|
+
* **Example** (Providing a named time zone)
|
|
1999
|
+
*
|
|
2000
|
+
* ```ts
|
|
2001
|
+
* import { DateTime, Effect } from "effect"
|
|
2002
|
+
*
|
|
2003
|
+
* Effect.gen(function*() {
|
|
2004
|
+
* // will use the "Europe/London" time zone
|
|
2005
|
+
* const now = yield* DateTime.nowInCurrentZone
|
|
2006
|
+
* }).pipe(DateTime.withCurrentZoneNamed("Europe/London"))
|
|
2007
|
+
* ```
|
|
2008
|
+
*
|
|
2009
|
+
* @category current time zone
|
|
2010
|
+
* @since 3.6.0
|
|
2011
|
+
*/
|
|
2012
|
+
export const withCurrentZoneNamed: {
|
|
2013
|
+
(zone: string): <A, E, R>(
|
|
2014
|
+
effect: Effect.Effect<A, E, R>
|
|
2015
|
+
) => Effect.Effect<A, E | IllegalArgumentError, Exclude<R, CurrentTimeZone>>
|
|
2016
|
+
<A, E, R>(
|
|
2017
|
+
effect: Effect.Effect<A, E, R>,
|
|
2018
|
+
zone: string
|
|
2019
|
+
): Effect.Effect<A, E | IllegalArgumentError, Exclude<R, CurrentTimeZone>>
|
|
2020
|
+
} = dual(
|
|
2021
|
+
2,
|
|
2022
|
+
<A, E, R>(
|
|
2023
|
+
effect: Effect.Effect<A, E, R>,
|
|
2024
|
+
zone: string
|
|
2025
|
+
): Effect.Effect<A, E | IllegalArgumentError, Exclude<R, CurrentTimeZone>> =>
|
|
2026
|
+
Effect.provideServiceEffect(effect, CurrentTimeZone, zoneMakeNamedEffect(zone))
|
|
2027
|
+
)
|
|
2028
|
+
|
|
2029
|
+
/**
|
|
2030
|
+
* Gets the current time as a `DateTime.Zoned`, using the `CurrentTimeZone`.
|
|
2031
|
+
*
|
|
2032
|
+
* **Example** (Getting the current time in the current zone)
|
|
2033
|
+
*
|
|
2034
|
+
* ```ts
|
|
2035
|
+
* import { DateTime, Effect } from "effect"
|
|
2036
|
+
*
|
|
2037
|
+
* Effect.gen(function*() {
|
|
2038
|
+
* // will use the "Europe/London" time zone
|
|
2039
|
+
* const now = yield* DateTime.nowInCurrentZone
|
|
2040
|
+
* }).pipe(DateTime.withCurrentZoneNamed("Europe/London"))
|
|
2041
|
+
* ```
|
|
2042
|
+
*
|
|
2043
|
+
* @category current time zone
|
|
2044
|
+
* @since 3.6.0
|
|
2045
|
+
*/
|
|
2046
|
+
export const nowInCurrentZone: Effect.Effect<Zoned, never, CurrentTimeZone> = Effect.flatMap(now, setZoneCurrent)
|
|
2047
|
+
|
|
2048
|
+
// =============================================================================
|
|
2049
|
+
// mapping
|
|
2050
|
+
// =============================================================================
|
|
2051
|
+
|
|
2052
|
+
/**
|
|
2053
|
+
* Modifies a `DateTime` with a mutable local `Date` copy.
|
|
2054
|
+
*
|
|
2055
|
+
* **When to use**
|
|
2056
|
+
*
|
|
2057
|
+
* Use to adjust calendar fields in the `DateTime`'s own time zone with an
|
|
2058
|
+
* existing `Date` mutation API.
|
|
2059
|
+
*
|
|
2060
|
+
* **Details**
|
|
2061
|
+
*
|
|
2062
|
+
* The `Date` will first have the time zone applied if possible, and then be
|
|
2063
|
+
* converted back to a `DateTime` within the same time zone.
|
|
2064
|
+
*
|
|
2065
|
+
* Supports `disambiguation` when the new wall clock time is ambiguous.
|
|
2066
|
+
*
|
|
2067
|
+
* **Example** (Mutating DateTime values with Dates)
|
|
2068
|
+
*
|
|
2069
|
+
* ```ts
|
|
2070
|
+
* import { DateTime } from "effect"
|
|
2071
|
+
*
|
|
2072
|
+
* const dt = DateTime.makeUnsafe("2024-01-01T12:00:00Z")
|
|
2073
|
+
*
|
|
2074
|
+
* const modified = DateTime.mutate(dt, (date) => {
|
|
2075
|
+
* date.setHours(15) // Set to 3 PM
|
|
2076
|
+
* date.setMinutes(30) // Set to 30 minutes
|
|
2077
|
+
* })
|
|
2078
|
+
*
|
|
2079
|
+
* console.log(DateTime.formatIso(modified)) // "2024-01-01T15:30:00.000Z"
|
|
2080
|
+
* ```
|
|
2081
|
+
*
|
|
2082
|
+
* @category mapping
|
|
2083
|
+
* @since 3.6.0
|
|
2084
|
+
*/
|
|
2085
|
+
export const mutate: {
|
|
2086
|
+
(
|
|
2087
|
+
f: (date: Date) => void,
|
|
2088
|
+
options?: {
|
|
2089
|
+
readonly disambiguation?: Disambiguation | undefined
|
|
2090
|
+
}
|
|
2091
|
+
): <A extends DateTime>(self: A) => A
|
|
2092
|
+
<A extends DateTime>(
|
|
2093
|
+
self: A,
|
|
2094
|
+
f: (date: Date) => void,
|
|
2095
|
+
options?: {
|
|
2096
|
+
readonly disambiguation?: Disambiguation | undefined
|
|
2097
|
+
}
|
|
2098
|
+
): A
|
|
2099
|
+
} = Internal.mutate
|
|
2100
|
+
|
|
2101
|
+
/**
|
|
2102
|
+
* Modifies a `DateTime` with a mutable UTC `Date` copy.
|
|
2103
|
+
*
|
|
2104
|
+
* **When to use**
|
|
2105
|
+
*
|
|
2106
|
+
* Use to adjust the instant with an existing `Date` mutation API that works on
|
|
2107
|
+
* UTC calendar fields.
|
|
2108
|
+
*
|
|
2109
|
+
* **Example** (Mutating DateTime values with UTC Dates)
|
|
2110
|
+
*
|
|
2111
|
+
* ```ts
|
|
2112
|
+
* import { DateTime } from "effect"
|
|
2113
|
+
*
|
|
2114
|
+
* const dt = DateTime.makeZonedUnsafe("2024-01-01T12:00:00Z", {
|
|
2115
|
+
* timeZone: "Europe/London"
|
|
2116
|
+
* })
|
|
2117
|
+
*
|
|
2118
|
+
* const modified = DateTime.mutateUtc(dt, (date) => {
|
|
2119
|
+
* date.setUTCHours(18) // Set UTC time to 6 PM
|
|
2120
|
+
* })
|
|
2121
|
+
*
|
|
2122
|
+
* console.log(DateTime.formatIso(modified)) // "2024-01-01T18:00:00.000Z"
|
|
2123
|
+
* ```
|
|
2124
|
+
*
|
|
2125
|
+
* @category mapping
|
|
2126
|
+
* @since 3.6.0
|
|
2127
|
+
*/
|
|
2128
|
+
export const mutateUtc: {
|
|
2129
|
+
(f: (date: Date) => void): <A extends DateTime>(self: A) => A
|
|
2130
|
+
<A extends DateTime>(self: A, f: (date: Date) => void): A
|
|
2131
|
+
} = Internal.mutateUtc
|
|
2132
|
+
|
|
2133
|
+
/**
|
|
2134
|
+
* Transforms a `DateTime` by applying a function to the number of milliseconds
|
|
2135
|
+
* since the Unix epoch.
|
|
2136
|
+
*
|
|
2137
|
+
* **Example** (Mapping epoch milliseconds)
|
|
2138
|
+
*
|
|
2139
|
+
* ```ts
|
|
2140
|
+
* import { DateTime } from "effect"
|
|
2141
|
+
*
|
|
2142
|
+
* // add 10 milliseconds
|
|
2143
|
+
* DateTime.makeUnsafe(0).pipe(
|
|
2144
|
+
* DateTime.mapEpochMillis((millis) => millis + 10)
|
|
2145
|
+
* )
|
|
2146
|
+
* ```
|
|
2147
|
+
*
|
|
2148
|
+
* @category mapping
|
|
2149
|
+
* @since 3.6.0
|
|
2150
|
+
*/
|
|
2151
|
+
export const mapEpochMillis: {
|
|
2152
|
+
(f: (millis: number) => number): <A extends DateTime>(self: A) => A
|
|
2153
|
+
<A extends DateTime>(self: A, f: (millis: number) => number): A
|
|
2154
|
+
} = Internal.mapEpochMillis
|
|
2155
|
+
|
|
2156
|
+
/**
|
|
2157
|
+
* Applies a function to a JavaScript `Date` representing the `DateTime` and
|
|
2158
|
+
* returns the function's result.
|
|
2159
|
+
*
|
|
2160
|
+
* **Details**
|
|
2161
|
+
*
|
|
2162
|
+
* The callback receives the time-zone-adjusted wall-clock date for
|
|
2163
|
+
* `DateTime.Zoned` values. Use `DateTime.withDateUtc` when the callback should
|
|
2164
|
+
* receive the UTC instant.
|
|
2165
|
+
*
|
|
2166
|
+
* **Example** (Applying time zone adjusted Dates)
|
|
2167
|
+
*
|
|
2168
|
+
* ```ts
|
|
2169
|
+
* import { DateTime } from "effect"
|
|
2170
|
+
*
|
|
2171
|
+
* // get the time zone adjusted date in milliseconds
|
|
2172
|
+
* DateTime.makeZonedUnsafe(0, { timeZone: "Europe/London" }).pipe(
|
|
2173
|
+
* DateTime.withDate((date) => date.getTime())
|
|
2174
|
+
* )
|
|
2175
|
+
* ```
|
|
2176
|
+
*
|
|
2177
|
+
* @category mapping
|
|
2178
|
+
* @since 3.6.0
|
|
2179
|
+
*/
|
|
2180
|
+
export const withDate: {
|
|
2181
|
+
<A>(f: (date: Date) => A): (self: DateTime) => A
|
|
2182
|
+
<A>(self: DateTime, f: (date: Date) => A): A
|
|
2183
|
+
} = Internal.withDate
|
|
2184
|
+
|
|
2185
|
+
/**
|
|
2186
|
+
* Applies a function to a JavaScript `Date` representing the `DateTime`'s UTC
|
|
2187
|
+
* instant and returns the function's result.
|
|
2188
|
+
*
|
|
2189
|
+
* **Details**
|
|
2190
|
+
*
|
|
2191
|
+
* This ignores any associated time zone. Use `DateTime.withDate` when the
|
|
2192
|
+
* callback should receive the time-zone-adjusted wall-clock date.
|
|
2193
|
+
*
|
|
2194
|
+
* **Example** (Applying UTC Dates)
|
|
2195
|
+
*
|
|
2196
|
+
* ```ts
|
|
2197
|
+
* import { DateTime } from "effect"
|
|
2198
|
+
*
|
|
2199
|
+
* // get the date in milliseconds
|
|
2200
|
+
* DateTime.makeUnsafe(0).pipe(
|
|
2201
|
+
* DateTime.withDateUtc((date) => date.getTime())
|
|
2202
|
+
* )
|
|
2203
|
+
* ```
|
|
2204
|
+
*
|
|
2205
|
+
* @category mapping
|
|
2206
|
+
* @since 3.6.0
|
|
2207
|
+
*/
|
|
2208
|
+
export const withDateUtc: {
|
|
2209
|
+
<A>(f: (date: Date) => A): (self: DateTime) => A
|
|
2210
|
+
<A>(self: DateTime, f: (date: Date) => A): A
|
|
2211
|
+
} = Internal.withDateUtc
|
|
2212
|
+
|
|
2213
|
+
/**
|
|
2214
|
+
* Pattern match on a `DateTime` to handle `Utc` and `Zoned` cases differently.
|
|
2215
|
+
*
|
|
2216
|
+
* **Example** (Pattern matching DateTime variants)
|
|
2217
|
+
*
|
|
2218
|
+
* ```ts
|
|
2219
|
+
* import { DateTime } from "effect"
|
|
2220
|
+
*
|
|
2221
|
+
* const dt1 = DateTime.makeUnsafe("2024-01-01T12:00:00Z") // Utc
|
|
2222
|
+
* const dt2 = DateTime.makeZonedUnsafe("2024-06-15T14:30:00Z", {
|
|
2223
|
+
* timeZone: "Europe/London"
|
|
2224
|
+
* }) // Zoned
|
|
2225
|
+
*
|
|
2226
|
+
* const result1 = DateTime.match(dt1, {
|
|
2227
|
+
* onUtc: (utc) => `UTC: ${DateTime.formatIso(utc)}`,
|
|
2228
|
+
* onZoned: (zoned) => `Zoned: ${DateTime.formatIsoZoned(zoned)}`
|
|
2229
|
+
* })
|
|
2230
|
+
*
|
|
2231
|
+
* const result2 = DateTime.match(dt2, {
|
|
2232
|
+
* onUtc: (utc) => `UTC: ${DateTime.formatIso(utc)}`,
|
|
2233
|
+
* onZoned: (zoned) => `Zoned: ${DateTime.formatIsoZoned(zoned)}`
|
|
2234
|
+
* })
|
|
2235
|
+
*
|
|
2236
|
+
* console.log(result1) // "UTC: 2024-01-01T12:00:00.000Z"
|
|
2237
|
+
* console.log(result2) // "Zoned: 2024-06-15T15:30:00.000+01:00[Europe/London]"
|
|
2238
|
+
* ```
|
|
2239
|
+
*
|
|
2240
|
+
* @category mapping
|
|
2241
|
+
* @since 3.6.0
|
|
2242
|
+
*/
|
|
2243
|
+
export const match: {
|
|
2244
|
+
<A, B>(options: {
|
|
2245
|
+
readonly onUtc: (_: Utc) => A
|
|
2246
|
+
readonly onZoned: (_: Zoned) => B
|
|
2247
|
+
}): (self: DateTime) => A | B
|
|
2248
|
+
<A, B>(self: DateTime, options: {
|
|
2249
|
+
readonly onUtc: (_: Utc) => A
|
|
2250
|
+
readonly onZoned: (_: Zoned) => B
|
|
2251
|
+
}): A | B
|
|
2252
|
+
} = Internal.match
|
|
2253
|
+
|
|
2254
|
+
// =============================================================================
|
|
2255
|
+
// math
|
|
2256
|
+
// =============================================================================
|
|
2257
|
+
|
|
2258
|
+
/**
|
|
2259
|
+
* Adds the given `Duration` to a `DateTime`.
|
|
2260
|
+
*
|
|
2261
|
+
* **When to use**
|
|
2262
|
+
*
|
|
2263
|
+
* Use to move a `DateTime` by an elapsed duration such as minutes, seconds, or
|
|
2264
|
+
* milliseconds.
|
|
2265
|
+
*
|
|
2266
|
+
* **Details**
|
|
2267
|
+
*
|
|
2268
|
+
* The duration is converted to milliseconds and added to the epoch
|
|
2269
|
+
* milliseconds. Zoned values keep their original time zone.
|
|
2270
|
+
*
|
|
2271
|
+
* **Gotchas**
|
|
2272
|
+
*
|
|
2273
|
+
* This is elapsed-time arithmetic, not calendar-aware local date arithmetic.
|
|
2274
|
+
* Use `add` when adding days, weeks, months, or years should account for the
|
|
2275
|
+
* date/time zone rules.
|
|
2276
|
+
*
|
|
2277
|
+
* **Example** (Adding durations)
|
|
2278
|
+
*
|
|
2279
|
+
* ```ts
|
|
2280
|
+
* import { DateTime } from "effect"
|
|
2281
|
+
*
|
|
2282
|
+
* // add 5 minutes
|
|
2283
|
+
* DateTime.makeUnsafe(0).pipe(
|
|
2284
|
+
* DateTime.addDuration("5 minutes")
|
|
2285
|
+
* )
|
|
2286
|
+
* ```
|
|
2287
|
+
*
|
|
2288
|
+
* @see {@link add} for calendar-aware date/time part arithmetic
|
|
2289
|
+
* @see {@link subtractDuration} for subtracting an elapsed duration
|
|
2290
|
+
*
|
|
2291
|
+
* @category math
|
|
2292
|
+
* @since 3.6.0
|
|
2293
|
+
*/
|
|
2294
|
+
export const addDuration: {
|
|
2295
|
+
(duration: Duration.Input): <A extends DateTime>(self: A) => A
|
|
2296
|
+
<A extends DateTime>(self: A, duration: Duration.Input): A
|
|
2297
|
+
} = Internal.addDuration
|
|
2298
|
+
|
|
2299
|
+
/**
|
|
2300
|
+
* Subtracts the given `Duration` from a `DateTime`.
|
|
2301
|
+
*
|
|
2302
|
+
* **Example** (Subtracting durations)
|
|
2303
|
+
*
|
|
2304
|
+
* ```ts
|
|
2305
|
+
* import { DateTime } from "effect"
|
|
2306
|
+
*
|
|
2307
|
+
* // subtract 5 minutes
|
|
2308
|
+
* DateTime.makeUnsafe(0).pipe(
|
|
2309
|
+
* DateTime.subtractDuration("5 minutes")
|
|
2310
|
+
* )
|
|
2311
|
+
* ```
|
|
2312
|
+
*
|
|
2313
|
+
* @category math
|
|
2314
|
+
* @since 3.6.0
|
|
2315
|
+
*/
|
|
2316
|
+
export const subtractDuration: {
|
|
2317
|
+
(duration: Duration.Input): <A extends DateTime>(self: A) => A
|
|
2318
|
+
<A extends DateTime>(self: A, duration: Duration.Input): A
|
|
2319
|
+
} = Internal.subtractDuration
|
|
2320
|
+
|
|
2321
|
+
/**
|
|
2322
|
+
* Adds the given `amount` of `unit` to a `DateTime`.
|
|
2323
|
+
*
|
|
2324
|
+
* **Details**
|
|
2325
|
+
*
|
|
2326
|
+
* The time zone is taken into account when adding days, weeks, months, and
|
|
2327
|
+
* years.
|
|
2328
|
+
*
|
|
2329
|
+
* **Example** (Adding date and time parts)
|
|
2330
|
+
*
|
|
2331
|
+
* ```ts
|
|
2332
|
+
* import { DateTime } from "effect"
|
|
2333
|
+
*
|
|
2334
|
+
* // add 5 minutes
|
|
2335
|
+
* DateTime.makeUnsafe(0).pipe(
|
|
2336
|
+
* DateTime.add({ minutes: 5 })
|
|
2337
|
+
* )
|
|
2338
|
+
* ```
|
|
2339
|
+
*
|
|
2340
|
+
* @category math
|
|
2341
|
+
* @since 3.6.0
|
|
2342
|
+
*/
|
|
2343
|
+
export const add: {
|
|
2344
|
+
(parts: Partial<DateTime.PartsForMath>): <A extends DateTime>(self: A) => A
|
|
2345
|
+
<A extends DateTime>(self: A, parts: Partial<DateTime.PartsForMath>): A
|
|
2346
|
+
} = Internal.add
|
|
2347
|
+
|
|
2348
|
+
/**
|
|
2349
|
+
* Subtracts the given `amount` of `unit` from a `DateTime`.
|
|
2350
|
+
*
|
|
2351
|
+
* **Example** (Subtracting date and time parts)
|
|
2352
|
+
*
|
|
2353
|
+
* ```ts
|
|
2354
|
+
* import { DateTime } from "effect"
|
|
2355
|
+
*
|
|
2356
|
+
* // subtract 5 minutes
|
|
2357
|
+
* DateTime.makeUnsafe(0).pipe(
|
|
2358
|
+
* DateTime.subtract({ minutes: 5 })
|
|
2359
|
+
* )
|
|
2360
|
+
* ```
|
|
2361
|
+
*
|
|
2362
|
+
* @category math
|
|
2363
|
+
* @since 3.6.0
|
|
2364
|
+
*/
|
|
2365
|
+
export const subtract: {
|
|
2366
|
+
(parts: Partial<DateTime.PartsForMath>): <A extends DateTime>(self: A) => A
|
|
2367
|
+
<A extends DateTime>(self: A, parts: Partial<DateTime.PartsForMath>): A
|
|
2368
|
+
} = Internal.subtract
|
|
2369
|
+
|
|
2370
|
+
/**
|
|
2371
|
+
* Converts a `DateTime` to the start of the given `part`.
|
|
2372
|
+
*
|
|
2373
|
+
* **Details**
|
|
2374
|
+
*
|
|
2375
|
+
* If the part is `week`, the `weekStartsOn` option can be used to specify the
|
|
2376
|
+
* day of the week that the week starts on. The default is 0 (Sunday).
|
|
2377
|
+
*
|
|
2378
|
+
* **Example** (Rounding down DateTime values)
|
|
2379
|
+
*
|
|
2380
|
+
* ```ts
|
|
2381
|
+
* import { DateTime } from "effect"
|
|
2382
|
+
*
|
|
2383
|
+
* // returns "2024-01-01T00:00:00Z"
|
|
2384
|
+
* DateTime.makeUnsafe("2024-01-01T12:00:00Z").pipe(
|
|
2385
|
+
* DateTime.startOf("day"),
|
|
2386
|
+
* DateTime.formatIso
|
|
2387
|
+
* )
|
|
2388
|
+
* ```
|
|
2389
|
+
*
|
|
2390
|
+
* @category math
|
|
2391
|
+
* @since 3.6.0
|
|
2392
|
+
*/
|
|
2393
|
+
export const startOf: {
|
|
2394
|
+
(
|
|
2395
|
+
part: DateTime.UnitSingular,
|
|
2396
|
+
options?: { readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined }
|
|
2397
|
+
): <A extends DateTime>(self: A) => A
|
|
2398
|
+
<A extends DateTime>(
|
|
2399
|
+
self: A,
|
|
2400
|
+
part: DateTime.UnitSingular,
|
|
2401
|
+
options?: { readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined }
|
|
2402
|
+
): A
|
|
2403
|
+
} = Internal.startOf
|
|
2404
|
+
|
|
2405
|
+
/**
|
|
2406
|
+
* Converts a `DateTime` to the end of the given `part`.
|
|
2407
|
+
*
|
|
2408
|
+
* **Details**
|
|
2409
|
+
*
|
|
2410
|
+
* If the part is `week`, the `weekStartsOn` option can be used to specify the
|
|
2411
|
+
* day of the week that the week starts on. The default is 0 (Sunday).
|
|
2412
|
+
*
|
|
2413
|
+
* **Example** (Rounding up DateTime values)
|
|
2414
|
+
*
|
|
2415
|
+
* ```ts
|
|
2416
|
+
* import { DateTime } from "effect"
|
|
2417
|
+
*
|
|
2418
|
+
* // returns "2024-01-01T23:59:59.999Z"
|
|
2419
|
+
* DateTime.makeUnsafe("2024-01-01T12:00:00Z").pipe(
|
|
2420
|
+
* DateTime.endOf("day"),
|
|
2421
|
+
* DateTime.formatIso
|
|
2422
|
+
* )
|
|
2423
|
+
* ```
|
|
2424
|
+
*
|
|
2425
|
+
* @category math
|
|
2426
|
+
* @since 3.6.0
|
|
2427
|
+
*/
|
|
2428
|
+
export const endOf: {
|
|
2429
|
+
(
|
|
2430
|
+
part: DateTime.UnitSingular,
|
|
2431
|
+
options?: { readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined }
|
|
2432
|
+
): <A extends DateTime>(self: A) => A
|
|
2433
|
+
<A extends DateTime>(
|
|
2434
|
+
self: A,
|
|
2435
|
+
part: DateTime.UnitSingular,
|
|
2436
|
+
options?: { readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined }
|
|
2437
|
+
): A
|
|
2438
|
+
} = Internal.endOf
|
|
2439
|
+
|
|
2440
|
+
/**
|
|
2441
|
+
* Converts a `DateTime` to the nearest given `part`.
|
|
2442
|
+
*
|
|
2443
|
+
* **Details**
|
|
2444
|
+
*
|
|
2445
|
+
* If the part is `week`, the `weekStartsOn` option can be used to specify the
|
|
2446
|
+
* day of the week that the week starts on. The default is 0 (Sunday).
|
|
2447
|
+
*
|
|
2448
|
+
* **Example** (Rounding DateTime values to nearest units)
|
|
2449
|
+
*
|
|
2450
|
+
* ```ts
|
|
2451
|
+
* import { DateTime } from "effect"
|
|
2452
|
+
*
|
|
2453
|
+
* // returns "2024-01-02T00:00:00Z"
|
|
2454
|
+
* DateTime.makeUnsafe("2024-01-01T12:01:00Z").pipe(
|
|
2455
|
+
* DateTime.nearest("day"),
|
|
2456
|
+
* DateTime.formatIso
|
|
2457
|
+
* )
|
|
2458
|
+
* ```
|
|
2459
|
+
*
|
|
2460
|
+
* @category math
|
|
2461
|
+
* @since 3.6.0
|
|
2462
|
+
*/
|
|
2463
|
+
export const nearest: {
|
|
2464
|
+
(
|
|
2465
|
+
part: DateTime.UnitSingular,
|
|
2466
|
+
options?: { readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined }
|
|
2467
|
+
): <A extends DateTime>(self: A) => A
|
|
2468
|
+
<A extends DateTime>(
|
|
2469
|
+
self: A,
|
|
2470
|
+
part: DateTime.UnitSingular,
|
|
2471
|
+
options?: { readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined }
|
|
2472
|
+
): A
|
|
2473
|
+
} = Internal.nearest
|
|
2474
|
+
|
|
2475
|
+
// =============================================================================
|
|
2476
|
+
// formatting
|
|
2477
|
+
// =============================================================================
|
|
2478
|
+
|
|
2479
|
+
/**
|
|
2480
|
+
* Formats a `DateTime` with `Intl.DateTimeFormat`.
|
|
2481
|
+
*
|
|
2482
|
+
* **Details**
|
|
2483
|
+
*
|
|
2484
|
+
* Unless a `timeZone` option is supplied, UTC values are formatted in UTC and
|
|
2485
|
+
* zoned values are formatted in their named zone or fixed-offset zone.
|
|
2486
|
+
*
|
|
2487
|
+
* Fixed-offset zones depend on runtime support for offset `timeZone`
|
|
2488
|
+
* identifiers. When unsupported, formatting falls back to UTC with the
|
|
2489
|
+
* `DateTime` adjusted to the offset.
|
|
2490
|
+
*
|
|
2491
|
+
* **Example** (Formatting DateTime values with Intl options)
|
|
2492
|
+
*
|
|
2493
|
+
* ```ts
|
|
2494
|
+
* import { DateTime } from "effect"
|
|
2495
|
+
*
|
|
2496
|
+
* const dt = DateTime.makeZonedUnsafe("2024-06-15T14:30:00Z", {
|
|
2497
|
+
* timeZone: "Europe/London"
|
|
2498
|
+
* })
|
|
2499
|
+
*
|
|
2500
|
+
* const formatted = DateTime.format(dt, {
|
|
2501
|
+
* dateStyle: "full",
|
|
2502
|
+
* timeStyle: "short",
|
|
2503
|
+
* locale: "en-US"
|
|
2504
|
+
* })
|
|
2505
|
+
*
|
|
2506
|
+
* console.log(formatted) // "Saturday, June 15, 2024 at 3:30 PM"
|
|
2507
|
+
* ```
|
|
2508
|
+
*
|
|
2509
|
+
* @category formatting
|
|
2510
|
+
* @since 3.6.0
|
|
2511
|
+
*/
|
|
2512
|
+
export const format: {
|
|
2513
|
+
(
|
|
2514
|
+
options?:
|
|
2515
|
+
| Intl.DateTimeFormatOptions & {
|
|
2516
|
+
readonly locale?: string | undefined
|
|
2517
|
+
}
|
|
2518
|
+
| undefined
|
|
2519
|
+
): (self: DateTime) => string
|
|
2520
|
+
(
|
|
2521
|
+
self: DateTime,
|
|
2522
|
+
options?:
|
|
2523
|
+
| Intl.DateTimeFormatOptions & {
|
|
2524
|
+
readonly locale?: string | undefined
|
|
2525
|
+
}
|
|
2526
|
+
| undefined
|
|
2527
|
+
): string
|
|
2528
|
+
} = Internal.format
|
|
2529
|
+
|
|
2530
|
+
/**
|
|
2531
|
+
* Formats a `DateTime` with `Intl.DateTimeFormat` using the system local time
|
|
2532
|
+
* zone and locale.
|
|
2533
|
+
*
|
|
2534
|
+
* **Example** (Formatting DateTime values locally)
|
|
2535
|
+
*
|
|
2536
|
+
* ```ts
|
|
2537
|
+
* import { DateTime } from "effect"
|
|
2538
|
+
*
|
|
2539
|
+
* const dt = DateTime.makeUnsafe("2024-06-15T14:30:00Z")
|
|
2540
|
+
*
|
|
2541
|
+
* // Uses system local time zone and locale
|
|
2542
|
+
* const local = DateTime.formatLocal(dt, {
|
|
2543
|
+
* year: "numeric",
|
|
2544
|
+
* month: "long",
|
|
2545
|
+
* day: "numeric",
|
|
2546
|
+
* hour: "2-digit",
|
|
2547
|
+
* minute: "2-digit"
|
|
2548
|
+
* })
|
|
2549
|
+
*
|
|
2550
|
+
* console.log(local) // Output depends on system locale/timezone
|
|
2551
|
+
* ```
|
|
2552
|
+
*
|
|
2553
|
+
* @category formatting
|
|
2554
|
+
* @since 3.6.0
|
|
2555
|
+
*/
|
|
2556
|
+
export const formatLocal: {
|
|
2557
|
+
(
|
|
2558
|
+
options?:
|
|
2559
|
+
| Intl.DateTimeFormatOptions & {
|
|
2560
|
+
readonly locale?: string | undefined
|
|
2561
|
+
}
|
|
2562
|
+
| undefined
|
|
2563
|
+
): (self: DateTime) => string
|
|
2564
|
+
(
|
|
2565
|
+
self: DateTime,
|
|
2566
|
+
options?:
|
|
2567
|
+
| Intl.DateTimeFormatOptions & {
|
|
2568
|
+
readonly locale?: string | undefined
|
|
2569
|
+
}
|
|
2570
|
+
| undefined
|
|
2571
|
+
): string
|
|
2572
|
+
} = Internal.formatLocal
|
|
2573
|
+
|
|
2574
|
+
/**
|
|
2575
|
+
* Formats a `DateTime` with `Intl.DateTimeFormat` using the UTC time zone.
|
|
2576
|
+
*
|
|
2577
|
+
* **Details**
|
|
2578
|
+
*
|
|
2579
|
+
* This forces the time zone to be UTC.
|
|
2580
|
+
*
|
|
2581
|
+
* **Example** (Formatting DateTime values in UTC)
|
|
2582
|
+
*
|
|
2583
|
+
* ```ts
|
|
2584
|
+
* import { DateTime } from "effect"
|
|
2585
|
+
*
|
|
2586
|
+
* const dt = DateTime.makeZonedUnsafe("2024-06-15T14:30:00Z", {
|
|
2587
|
+
* timeZone: "Europe/London"
|
|
2588
|
+
* })
|
|
2589
|
+
*
|
|
2590
|
+
* // Force UTC formatting regardless of time zone
|
|
2591
|
+
* const utcFormatted = DateTime.formatUtc(dt, {
|
|
2592
|
+
* year: "numeric",
|
|
2593
|
+
* month: "2-digit",
|
|
2594
|
+
* day: "2-digit",
|
|
2595
|
+
* hour: "2-digit",
|
|
2596
|
+
* minute: "2-digit",
|
|
2597
|
+
* timeZoneName: "short"
|
|
2598
|
+
* })
|
|
2599
|
+
*
|
|
2600
|
+
* console.log(utcFormatted) // "06/15/2024, 02:30 PM UTC"
|
|
2601
|
+
* ```
|
|
2602
|
+
*
|
|
2603
|
+
* @category formatting
|
|
2604
|
+
* @since 3.6.0
|
|
2605
|
+
*/
|
|
2606
|
+
export const formatUtc: {
|
|
2607
|
+
(
|
|
2608
|
+
options?:
|
|
2609
|
+
| Intl.DateTimeFormatOptions & {
|
|
2610
|
+
readonly locale?: string | undefined
|
|
2611
|
+
}
|
|
2612
|
+
| undefined
|
|
2613
|
+
): (self: DateTime) => string
|
|
2614
|
+
(
|
|
2615
|
+
self: DateTime,
|
|
2616
|
+
options?:
|
|
2617
|
+
| Intl.DateTimeFormatOptions & {
|
|
2618
|
+
readonly locale?: string | undefined
|
|
2619
|
+
}
|
|
2620
|
+
| undefined
|
|
2621
|
+
): string
|
|
2622
|
+
} = Internal.formatUtc
|
|
2623
|
+
|
|
2624
|
+
/**
|
|
2625
|
+
* Formats a `DateTime` as a string using the `Intl.DateTimeFormat` API.
|
|
2626
|
+
*
|
|
2627
|
+
* **When to use**
|
|
2628
|
+
*
|
|
2629
|
+
* Use when you already have an `Intl.DateTimeFormat` and want it to control the
|
|
2630
|
+
* locale, time zone, and formatting options.
|
|
2631
|
+
*
|
|
2632
|
+
* **Details**
|
|
2633
|
+
*
|
|
2634
|
+
* The formatter receives the `DateTime` epoch milliseconds. Any time zone
|
|
2635
|
+
* conversion comes from the supplied formatter.
|
|
2636
|
+
*
|
|
2637
|
+
* **Example** (Formatting DateTime values with custom formatters)
|
|
2638
|
+
*
|
|
2639
|
+
* ```ts
|
|
2640
|
+
* import { DateTime } from "effect"
|
|
2641
|
+
*
|
|
2642
|
+
* const dt = DateTime.makeUnsafe("2024-06-15T14:30:00Z")
|
|
2643
|
+
*
|
|
2644
|
+
* // Create a custom formatter
|
|
2645
|
+
* const formatter = new Intl.DateTimeFormat("de-DE", {
|
|
2646
|
+
* year: "numeric",
|
|
2647
|
+
* month: "long",
|
|
2648
|
+
* day: "numeric",
|
|
2649
|
+
* hour: "2-digit",
|
|
2650
|
+
* minute: "2-digit",
|
|
2651
|
+
* timeZone: "Europe/Berlin"
|
|
2652
|
+
* })
|
|
2653
|
+
*
|
|
2654
|
+
* const formatted = DateTime.formatIntl(dt, formatter)
|
|
2655
|
+
* console.log(formatted.length > 0) // true
|
|
2656
|
+
* ```
|
|
2657
|
+
*
|
|
2658
|
+
* @see {@link formatUtc} for formatting with options forced to UTC
|
|
2659
|
+
* @see {@link formatIso} for stable ISO formatting
|
|
2660
|
+
*
|
|
2661
|
+
* @category formatting
|
|
2662
|
+
* @since 3.6.0
|
|
2663
|
+
*/
|
|
2664
|
+
export const formatIntl: {
|
|
2665
|
+
(format: Intl.DateTimeFormat): (self: DateTime) => string
|
|
2666
|
+
(self: DateTime, format: Intl.DateTimeFormat): string
|
|
2667
|
+
} = Internal.formatIntl
|
|
2668
|
+
|
|
2669
|
+
/**
|
|
2670
|
+
* Formats a `DateTime` as a UTC ISO string.
|
|
2671
|
+
*
|
|
2672
|
+
* **Details**
|
|
2673
|
+
*
|
|
2674
|
+
* Always returns the UTC representation in ISO 8601 format, ignoring any time zone.
|
|
2675
|
+
*
|
|
2676
|
+
* **Example** (Formatting DateTime values as ISO strings)
|
|
2677
|
+
*
|
|
2678
|
+
* ```ts
|
|
2679
|
+
* import { DateTime } from "effect"
|
|
2680
|
+
*
|
|
2681
|
+
* const dt = DateTime.makeUnsafe("2024-01-01T12:30:45.123Z")
|
|
2682
|
+
* console.log(DateTime.formatIso(dt)) // "2024-01-01T12:30:45.123Z"
|
|
2683
|
+
*
|
|
2684
|
+
* const zoned = DateTime.makeZonedUnsafe("2024-01-01T12:30:45.123Z", {
|
|
2685
|
+
* timeZone: "Europe/London"
|
|
2686
|
+
* })
|
|
2687
|
+
* console.log(DateTime.formatIso(zoned)) // "2024-01-01T12:30:45.123Z"
|
|
2688
|
+
* ```
|
|
2689
|
+
*
|
|
2690
|
+
* @category formatting
|
|
2691
|
+
* @since 3.6.0
|
|
2692
|
+
*/
|
|
2693
|
+
export const formatIso: (self: DateTime) => string = Internal.formatIso
|
|
2694
|
+
|
|
2695
|
+
/**
|
|
2696
|
+
* Formats a `DateTime` as a time zone adjusted ISO date string.
|
|
2697
|
+
*
|
|
2698
|
+
* **Details**
|
|
2699
|
+
*
|
|
2700
|
+
* Returns only the date part (YYYY-MM-DD) after applying time zone adjustments.
|
|
2701
|
+
*
|
|
2702
|
+
* **Example** (Formatting DateTime values as ISO dates)
|
|
2703
|
+
*
|
|
2704
|
+
* ```ts
|
|
2705
|
+
* import { DateTime } from "effect"
|
|
2706
|
+
*
|
|
2707
|
+
* const dt = DateTime.makeUnsafe("2024-01-01T23:30:00Z")
|
|
2708
|
+
* console.log(DateTime.formatIsoDate(dt)) // "2024-01-01"
|
|
2709
|
+
*
|
|
2710
|
+
* const zoned = DateTime.makeZonedUnsafe("2024-01-01T23:30:00Z", {
|
|
2711
|
+
* timeZone: "Pacific/Auckland" // UTC+12/13
|
|
2712
|
+
* })
|
|
2713
|
+
* console.log(DateTime.formatIsoDate(zoned)) // "2024-01-02" (next day in Auckland)
|
|
2714
|
+
* ```
|
|
2715
|
+
*
|
|
2716
|
+
* @category formatting
|
|
2717
|
+
* @since 3.6.0
|
|
2718
|
+
*/
|
|
2719
|
+
export const formatIsoDate: (self: DateTime) => string = Internal.formatIsoDate
|
|
2720
|
+
|
|
2721
|
+
/**
|
|
2722
|
+
* Formats a `DateTime` as a UTC ISO date string.
|
|
2723
|
+
*
|
|
2724
|
+
* **Details**
|
|
2725
|
+
*
|
|
2726
|
+
* Returns only the date part (YYYY-MM-DD) in UTC, ignoring any time zone.
|
|
2727
|
+
*
|
|
2728
|
+
* **Example** (Formatting DateTime values as UTC ISO dates)
|
|
2729
|
+
*
|
|
2730
|
+
* ```ts
|
|
2731
|
+
* import { DateTime } from "effect"
|
|
2732
|
+
*
|
|
2733
|
+
* const dt = DateTime.makeUnsafe("2024-01-01T23:30:00Z")
|
|
2734
|
+
* console.log(DateTime.formatIsoDateUtc(dt)) // "2024-01-01"
|
|
2735
|
+
*
|
|
2736
|
+
* const zoned = DateTime.makeZonedUnsafe("2024-01-01T23:30:00Z", {
|
|
2737
|
+
* timeZone: "Pacific/Auckland"
|
|
2738
|
+
* })
|
|
2739
|
+
* console.log(DateTime.formatIsoDateUtc(zoned)) // "2024-01-01" (always UTC)
|
|
2740
|
+
* ```
|
|
2741
|
+
*
|
|
2742
|
+
* @category formatting
|
|
2743
|
+
* @since 3.6.0
|
|
2744
|
+
*/
|
|
2745
|
+
export const formatIsoDateUtc: (self: DateTime) => string = Internal.formatIsoDateUtc
|
|
2746
|
+
|
|
2747
|
+
/**
|
|
2748
|
+
* Formats a `DateTime.Zoned` as an ISO string with an offset.
|
|
2749
|
+
*
|
|
2750
|
+
* **Details**
|
|
2751
|
+
*
|
|
2752
|
+
* For `DateTime.Utc`, returns the same as `formatIso`. For `DateTime.Zoned`,
|
|
2753
|
+
* includes the time zone offset in the format.
|
|
2754
|
+
*
|
|
2755
|
+
* **Example** (Formatting DateTime values with offsets)
|
|
2756
|
+
*
|
|
2757
|
+
* ```ts
|
|
2758
|
+
* import { DateTime } from "effect"
|
|
2759
|
+
*
|
|
2760
|
+
* const utc = DateTime.makeUnsafe("2024-01-01T12:00:00Z")
|
|
2761
|
+
* console.log(DateTime.formatIsoOffset(utc)) // "2024-01-01T12:00:00.000Z"
|
|
2762
|
+
*
|
|
2763
|
+
* const zoned = DateTime.makeZonedUnsafe("2024-01-01T12:00:00Z", {
|
|
2764
|
+
* timeZone: DateTime.zoneMakeOffset(3 * 60 * 60 * 1000)
|
|
2765
|
+
* })
|
|
2766
|
+
* console.log(DateTime.formatIsoOffset(zoned)) // "2024-01-01T15:00:00.000+03:00"
|
|
2767
|
+
* ```
|
|
2768
|
+
*
|
|
2769
|
+
* @category formatting
|
|
2770
|
+
* @since 3.6.0
|
|
2771
|
+
*/
|
|
2772
|
+
export const formatIsoOffset: (self: DateTime) => string = Internal.formatIsoOffset
|
|
2773
|
+
|
|
2774
|
+
/**
|
|
2775
|
+
* Formats a `DateTime.Zoned` as a string.
|
|
2776
|
+
*
|
|
2777
|
+
* **Details**
|
|
2778
|
+
*
|
|
2779
|
+
* It uses the format: `YYYY-MM-DDTHH:mm:ss.sss+HH:MM[Time/Zone]`.
|
|
2780
|
+
*
|
|
2781
|
+
* **Example** (Formatting zoned DateTime values)
|
|
2782
|
+
*
|
|
2783
|
+
* ```ts
|
|
2784
|
+
* import { DateTime } from "effect"
|
|
2785
|
+
*
|
|
2786
|
+
* const zoned = DateTime.makeZonedUnsafe("2024-06-15T14:30:45.123Z", {
|
|
2787
|
+
* timeZone: "Europe/London"
|
|
2788
|
+
* })
|
|
2789
|
+
*
|
|
2790
|
+
* const formatted = DateTime.formatIsoZoned(zoned)
|
|
2791
|
+
* console.log(formatted) // "2024-06-15T15:30:45.123+01:00[Europe/London]"
|
|
2792
|
+
*
|
|
2793
|
+
* const offsetZone = DateTime.makeZonedUnsafe("2024-06-15T14:30:45.123Z", {
|
|
2794
|
+
* timeZone: DateTime.zoneMakeOffset(3 * 60 * 60 * 1000)
|
|
2795
|
+
* })
|
|
2796
|
+
*
|
|
2797
|
+
* const offsetFormatted = DateTime.formatIsoZoned(offsetZone)
|
|
2798
|
+
* console.log(offsetFormatted) // "2024-06-15T17:30:45.123+03:00"
|
|
2799
|
+
* ```
|
|
2800
|
+
*
|
|
2801
|
+
* @category formatting
|
|
2802
|
+
* @since 3.6.0
|
|
2803
|
+
*/
|
|
2804
|
+
export const formatIsoZoned: (self: Zoned) => string = Internal.formatIsoZoned
|
|
2805
|
+
|
|
2806
|
+
/**
|
|
2807
|
+
* Create a Layer from the given time zone.
|
|
2808
|
+
*
|
|
2809
|
+
* **Details**
|
|
2810
|
+
*
|
|
2811
|
+
* This layer provides the `CurrentTimeZone` service with the specified time zone.
|
|
2812
|
+
*
|
|
2813
|
+
* **Example** (Providing current time zone layers)
|
|
2814
|
+
*
|
|
2815
|
+
* ```ts
|
|
2816
|
+
* import { DateTime, Effect } from "effect"
|
|
2817
|
+
*
|
|
2818
|
+
* const zone = DateTime.zoneMakeNamedUnsafe("Europe/London")
|
|
2819
|
+
* const layer = DateTime.layerCurrentZone(zone)
|
|
2820
|
+
*
|
|
2821
|
+
* const program = Effect.gen(function*() {
|
|
2822
|
+
* const now = yield* DateTime.nowInCurrentZone
|
|
2823
|
+
* return DateTime.formatIsoZoned(now)
|
|
2824
|
+
* })
|
|
2825
|
+
*
|
|
2826
|
+
* // Use the layer to provide the time zone
|
|
2827
|
+
* Effect.provide(program, layer)
|
|
2828
|
+
* ```
|
|
2829
|
+
*
|
|
2830
|
+
* @category current time zone
|
|
2831
|
+
* @since 3.6.0
|
|
2832
|
+
*/
|
|
2833
|
+
export const layerCurrentZone: (resource: NoInfer<TimeZone>) => Layer.Layer<CurrentTimeZone> = Layer.succeed(
|
|
2834
|
+
CurrentTimeZone
|
|
2835
|
+
)
|
|
2836
|
+
|
|
2837
|
+
/**
|
|
2838
|
+
* Create a Layer from the given time zone offset.
|
|
2839
|
+
*
|
|
2840
|
+
* **Details**
|
|
2841
|
+
*
|
|
2842
|
+
* This layer provides the `CurrentTimeZone` service with a fixed offset time zone.
|
|
2843
|
+
*
|
|
2844
|
+
* **Example** (Providing fixed-offset time zone layers)
|
|
2845
|
+
*
|
|
2846
|
+
* ```ts
|
|
2847
|
+
* import { DateTime, Effect } from "effect"
|
|
2848
|
+
*
|
|
2849
|
+
* // Create a layer for UTC+3
|
|
2850
|
+
* const layer = DateTime.layerCurrentZoneOffset(3 * 60 * 60 * 1000)
|
|
2851
|
+
*
|
|
2852
|
+
* const program = Effect.gen(function*() {
|
|
2853
|
+
* const now = yield* DateTime.nowInCurrentZone
|
|
2854
|
+
* return DateTime.formatIsoZoned(now)
|
|
2855
|
+
* })
|
|
2856
|
+
*
|
|
2857
|
+
* Effect.provide(program, layer)
|
|
2858
|
+
* ```
|
|
2859
|
+
*
|
|
2860
|
+
* @category current time zone
|
|
2861
|
+
* @since 3.6.0
|
|
2862
|
+
*/
|
|
2863
|
+
export const layerCurrentZoneOffset = (offset: number): Layer.Layer<CurrentTimeZone> =>
|
|
2864
|
+
Layer.succeed(CurrentTimeZone)(Internal.zoneMakeOffset(offset))
|
|
2865
|
+
|
|
2866
|
+
/**
|
|
2867
|
+
* Create a Layer from the given IANA time zone identifier.
|
|
2868
|
+
*
|
|
2869
|
+
* **Details**
|
|
2870
|
+
*
|
|
2871
|
+
* This layer provides the `CurrentTimeZone` service with a named time zone.
|
|
2872
|
+
* If the time zone identifier is invalid, the layer will fail.
|
|
2873
|
+
*
|
|
2874
|
+
* **Example** (Providing named time zone layers)
|
|
2875
|
+
*
|
|
2876
|
+
* ```ts
|
|
2877
|
+
* import { DateTime, Effect } from "effect"
|
|
2878
|
+
*
|
|
2879
|
+
* const layer = DateTime.layerCurrentZoneNamed("Europe/London")
|
|
2880
|
+
*
|
|
2881
|
+
* const program = Effect.gen(function*() {
|
|
2882
|
+
* const now = yield* DateTime.nowInCurrentZone
|
|
2883
|
+
* return DateTime.formatIsoZoned(now)
|
|
2884
|
+
* })
|
|
2885
|
+
*
|
|
2886
|
+
* Effect.provide(program, layer)
|
|
2887
|
+
* ```
|
|
2888
|
+
*
|
|
2889
|
+
* @category current time zone
|
|
2890
|
+
* @since 3.6.0
|
|
2891
|
+
*/
|
|
2892
|
+
export const layerCurrentZoneNamed: (zoneId: string) => Layer.Layer<
|
|
2893
|
+
CurrentTimeZone,
|
|
2894
|
+
IllegalArgumentError
|
|
2895
|
+
> = flow(Internal.zoneMakeNamedEffect, Layer.effect(CurrentTimeZone))
|
|
2896
|
+
|
|
2897
|
+
/**
|
|
2898
|
+
* Create a Layer from the system's local time zone.
|
|
2899
|
+
*
|
|
2900
|
+
* **Details**
|
|
2901
|
+
*
|
|
2902
|
+
* This layer provides the `CurrentTimeZone` service using the system's
|
|
2903
|
+
* configured local time zone.
|
|
2904
|
+
*
|
|
2905
|
+
* **Example** (Providing local time zone layers)
|
|
2906
|
+
*
|
|
2907
|
+
* ```ts
|
|
2908
|
+
* import { DateTime, Effect } from "effect"
|
|
2909
|
+
*
|
|
2910
|
+
* const program = Effect.gen(function*() {
|
|
2911
|
+
* const now = yield* DateTime.nowInCurrentZone
|
|
2912
|
+
* return DateTime.formatIsoZoned(now)
|
|
2913
|
+
* })
|
|
2914
|
+
*
|
|
2915
|
+
* // Use the system's local time zone
|
|
2916
|
+
* Effect.provide(program, DateTime.layerCurrentZoneLocal)
|
|
2917
|
+
* ```
|
|
2918
|
+
*
|
|
2919
|
+
* @category current time zone
|
|
2920
|
+
* @since 3.6.0
|
|
2921
|
+
*/
|
|
2922
|
+
export const layerCurrentZoneLocal: Layer.Layer<CurrentTimeZone> = Layer.sync(CurrentTimeZone)(zoneMakeLocal)
|