effect 4.0.6 → 4.1.0
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/README.md +1 -1
- package/dist/Arbitrary.d.ts +10 -2
- package/dist/Arbitrary.d.ts.map +1 -1
- package/dist/Arbitrary.js +2 -1
- package/dist/Arbitrary.js.map +1 -1
- package/dist/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +3 -0
- package/dist/BigDecimal.js.map +1 -1
- package/dist/Channel.d.ts +12 -6
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +30 -9
- package/dist/Channel.js.map +1 -1
- package/dist/Config.d.ts +7 -1
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js.map +1 -1
- package/dist/Context.d.ts +18 -1
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +27 -8
- package/dist/Context.js.map +1 -1
- package/dist/Cron.d.ts +81 -11
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +101 -26
- package/dist/Cron.js.map +1 -1
- package/dist/Data.d.ts +54 -235
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js.map +1 -1
- package/dist/Duration.d.ts +78 -0
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +123 -0
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +165 -8
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +12 -2
- package/dist/Effect.js.map +1 -1
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +8 -1
- package/dist/Equal.js.map +1 -1
- package/dist/Exit.d.ts +3 -3
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js.map +1 -1
- package/dist/FileSystem.d.ts +59 -4
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +9 -2
- package/dist/FileSystem.js.map +1 -1
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +27 -13
- package/dist/Formatter.js.map +1 -1
- package/dist/Glob.d.ts +165 -0
- package/dist/Glob.d.ts.map +1 -0
- package/dist/Glob.js +127 -0
- package/dist/Glob.js.map +1 -0
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +4 -1
- package/dist/Hash.js.map +1 -1
- package/dist/JsonPatch.js +4 -0
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +13 -40
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Match.d.ts +86 -0
- package/dist/Match.d.ts.map +1 -1
- package/dist/Match.js +72 -0
- package/dist/Match.js.map +1 -1
- package/dist/Metric.d.ts +3 -3
- package/dist/MutableList.d.ts +5 -2
- package/dist/MutableList.d.ts.map +1 -1
- package/dist/MutableList.js +7 -5
- package/dist/MutableList.js.map +1 -1
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +7 -0
- package/dist/MutableRef.js.map +1 -1
- package/dist/PartitionedSemaphore.d.ts +2 -1
- package/dist/PartitionedSemaphore.d.ts.map +1 -1
- package/dist/PartitionedSemaphore.js +22 -12
- package/dist/PartitionedSemaphore.js.map +1 -1
- package/dist/Pool.d.ts +51 -0
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +136 -36
- package/dist/Pool.js.map +1 -1
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +5 -6
- package/dist/PubSub.js.map +1 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +3 -3
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +8 -2
- package/dist/RcMap.js.map +1 -1
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +8 -0
- package/dist/Ref.js.map +1 -1
- package/dist/Schedule.d.ts +18 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +8 -3
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +690 -49
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +687 -28
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +4 -2
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +14 -17
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +6 -1
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +22 -11
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +48 -22
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +33 -10
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +39 -13
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +12 -4
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +15 -5
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +5 -7
- package/dist/ScopedCache.js.map +1 -1
- package/dist/Semaphore.d.ts +130 -0
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +94 -35
- package/dist/Semaphore.js.map +1 -1
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +7 -2
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts +13 -4
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +31 -10
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +3 -0
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +3 -0
- package/dist/String.js.map +1 -1
- package/dist/Terminal.d.ts +18 -1
- package/dist/Terminal.d.ts.map +1 -1
- package/dist/Terminal.js +1 -1
- package/dist/Terminal.js.map +1 -1
- package/dist/Tracer.d.ts +11 -1
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +6 -1
- package/dist/Tracer.js.map +1 -1
- package/dist/ai/AiError.d.ts +43 -116
- package/dist/ai/AiError.d.ts.map +1 -1
- package/dist/ai/AiError.js +53 -72
- package/dist/ai/AiError.js.map +1 -1
- package/dist/ai/Decision.d.ts +196 -15
- package/dist/ai/Decision.d.ts.map +1 -1
- package/dist/ai/Decision.js +130 -0
- package/dist/ai/Decision.js.map +1 -1
- package/dist/ai/DecisionModel.d.ts +54 -13
- package/dist/ai/DecisionModel.d.ts.map +1 -1
- package/dist/ai/DecisionModel.js +123 -12
- package/dist/ai/DecisionModel.js.map +1 -1
- package/dist/ai/LanguageModel.d.ts.map +1 -1
- package/dist/ai/LanguageModel.js +9 -0
- package/dist/ai/LanguageModel.js.map +1 -1
- package/dist/ai/McpSchema.d.ts +110 -110
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpServer.d.ts +630 -29
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +583 -131
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/McpTest.d.ts +130 -0
- package/dist/ai/McpTest.d.ts.map +1 -0
- package/dist/ai/McpTest.js +237 -0
- package/dist/ai/McpTest.js.map +1 -0
- package/dist/ai/Prompt.d.ts +52 -0
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +38 -0
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +17 -28
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +5 -10
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +43 -1
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js +5 -2
- package/dist/ai/Tool.js.map +1 -1
- package/dist/ai/Toolkit.d.ts.map +1 -1
- package/dist/ai/Toolkit.js +8 -1
- package/dist/ai/Toolkit.js.map +1 -1
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +5 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/internal/mcpCore.js +17 -12
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +4 -5
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +4 -5
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +4 -5
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +4 -5
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +18 -10
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +13 -0
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +5 -3
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
- package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
- package/dist/cli/Argument.d.ts +21 -0
- package/dist/cli/Argument.d.ts.map +1 -1
- package/dist/cli/Argument.js +7 -0
- package/dist/cli/Argument.js.map +1 -1
- package/dist/cli/CliError.d.ts +78 -0
- package/dist/cli/CliError.d.ts.map +1 -1
- package/dist/cli/CliError.js +65 -3
- package/dist/cli/CliError.js.map +1 -1
- package/dist/cli/CliOutput.d.ts +220 -7
- package/dist/cli/CliOutput.d.ts.map +1 -1
- package/dist/cli/CliOutput.js +156 -43
- package/dist/cli/CliOutput.js.map +1 -1
- package/dist/cli/Command.d.ts +47 -16
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +67 -29
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +58 -0
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js +49 -9
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/Flag.d.ts +122 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +42 -0
- package/dist/cli/Flag.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +15 -7
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/HelpDoc.d.ts +15 -1
- package/dist/cli/HelpDoc.d.ts.map +1 -1
- package/dist/cli/Param.d.ts +15 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +23 -2
- package/dist/cli/Param.js.map +1 -1
- package/dist/cli/Primitive.d.ts +14 -0
- package/dist/cli/Primitive.d.ts.map +1 -1
- package/dist/cli/Primitive.js +15 -1
- package/dist/cli/Primitive.js.map +1 -1
- package/dist/cli/Prompt.d.ts +1 -0
- package/dist/cli/Prompt.d.ts.map +1 -1
- package/dist/cli/Prompt.js +1 -0
- package/dist/cli/Prompt.js.map +1 -1
- package/dist/cli/TerminalCapabilities.d.ts +3 -2
- package/dist/cli/TerminalCapabilities.d.ts.map +1 -1
- package/dist/cli/TerminalCapabilities.js +3 -1
- package/dist/cli/TerminalCapabilities.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +73 -27
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cli/internal/help.d.ts.map +1 -1
- package/dist/cli/internal/help.js +17 -10
- package/dist/cli/internal/help.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +45 -10
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +23 -45
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js +6 -7
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +151 -49
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +76 -0
- package/dist/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/cluster/ShardingConfig.js +4 -0
- package/dist/cluster/ShardingConfig.js.map +1 -1
- package/dist/cluster/SingleRunner.d.ts +3 -3
- package/dist/cluster/SingleRunner.d.ts.map +1 -1
- package/dist/cluster/SingleRunner.js +1 -1
- package/dist/cluster/Snowflake.d.ts.map +1 -1
- package/dist/cluster/Snowflake.js +3 -7
- package/dist/cluster/Snowflake.js.map +1 -1
- package/dist/cluster/SqlMessageStorage.d.ts +37 -6
- package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/cluster/SqlMessageStorage.js +34 -7
- package/dist/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +109 -46
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +54 -20
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/crypto/Aead.d.ts +322 -0
- package/dist/crypto/Aead.d.ts.map +1 -0
- package/dist/crypto/Aead.js +331 -0
- package/dist/crypto/Aead.js.map +1 -0
- package/dist/crypto/Cipher.d.ts +235 -0
- package/dist/crypto/Cipher.d.ts.map +1 -0
- package/dist/crypto/Cipher.js +233 -0
- package/dist/crypto/Cipher.js.map +1 -0
- package/dist/crypto/CryptoError.d.ts +212 -0
- package/dist/crypto/CryptoError.d.ts.map +1 -0
- package/dist/crypto/CryptoError.js +202 -0
- package/dist/crypto/CryptoError.js.map +1 -0
- package/dist/crypto/Digest.d.ts +143 -0
- package/dist/crypto/Digest.d.ts.map +1 -0
- package/dist/crypto/Digest.js +146 -0
- package/dist/crypto/Digest.js.map +1 -0
- package/dist/crypto/Kdf.d.ts +220 -0
- package/dist/crypto/Kdf.d.ts.map +1 -0
- package/dist/crypto/Kdf.js +212 -0
- package/dist/crypto/Kdf.js.map +1 -0
- package/dist/crypto/KeyAgreement.d.ts +323 -0
- package/dist/crypto/KeyAgreement.d.ts.map +1 -0
- package/dist/crypto/KeyAgreement.js +303 -0
- package/dist/crypto/KeyAgreement.js.map +1 -0
- package/dist/crypto/KeyFormat.d.ts +309 -0
- package/dist/crypto/KeyFormat.d.ts.map +1 -0
- package/dist/crypto/KeyFormat.js +556 -0
- package/dist/crypto/KeyFormat.js.map +1 -0
- package/dist/crypto/KeyWrap.d.ts +389 -0
- package/dist/crypto/KeyWrap.d.ts.map +1 -0
- package/dist/crypto/KeyWrap.js +381 -0
- package/dist/crypto/KeyWrap.js.map +1 -0
- package/dist/crypto/Mac.d.ts +277 -0
- package/dist/crypto/Mac.d.ts.map +1 -0
- package/dist/crypto/Mac.js +288 -0
- package/dist/crypto/Mac.js.map +1 -0
- package/dist/crypto/SecureRandom.d.ts +340 -0
- package/dist/crypto/SecureRandom.d.ts.map +1 -0
- package/dist/crypto/SecureRandom.js +257 -0
- package/dist/crypto/SecureRandom.js.map +1 -0
- package/dist/crypto/Signature.d.ts +448 -0
- package/dist/crypto/Signature.d.ts.map +1 -0
- package/dist/crypto/Signature.js +484 -0
- package/dist/crypto/Signature.js.map +1 -0
- package/dist/crypto/WebCrypto.d.ts +61 -0
- package/dist/crypto/WebCrypto.d.ts.map +1 -0
- package/dist/crypto/WebCrypto.js +63 -0
- package/dist/crypto/WebCrypto.js.map +1 -0
- package/dist/crypto/index.d.ts +65 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +66 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/internal/asymmetric.d.ts +2 -0
- package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
- package/dist/crypto/internal/asymmetric.js +210 -0
- package/dist/crypto/internal/asymmetric.js.map +1 -0
- package/dist/crypto/internal/chacha.d.ts +46 -0
- package/dist/crypto/internal/chacha.d.ts.map +1 -0
- package/dist/crypto/internal/chacha.js +885 -0
- package/dist/crypto/internal/chacha.js.map +1 -0
- package/dist/crypto/internal/der.d.ts +6 -0
- package/dist/crypto/internal/der.d.ts.map +1 -0
- package/dist/crypto/internal/der.js +86 -0
- package/dist/crypto/internal/der.js.map +1 -0
- package/dist/crypto/internal/digest.d.ts +2 -0
- package/dist/crypto/internal/digest.d.ts.map +1 -0
- package/dist/crypto/internal/digest.js +15 -0
- package/dist/crypto/internal/digest.js.map +1 -0
- package/dist/crypto/internal/key.d.ts +2 -0
- package/dist/crypto/internal/key.d.ts.map +1 -0
- package/dist/crypto/internal/key.js +170 -0
- package/dist/crypto/internal/key.js.map +1 -0
- package/dist/crypto/internal/md5.d.ts +39 -0
- package/dist/crypto/internal/md5.d.ts.map +1 -0
- package/dist/crypto/internal/md5.js +179 -0
- package/dist/crypto/internal/md5.js.map +1 -0
- package/dist/crypto/internal/webCrypto.d.ts +2 -0
- package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
- package/dist/crypto/internal/webCrypto.js +111 -0
- package/dist/crypto/internal/webCrypto.js.map +1 -0
- package/dist/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/devtools/DevToolsClient.js +2 -0
- package/dist/devtools/DevToolsClient.js.map +1 -1
- package/dist/encoding/Base64.js +36 -0
- package/dist/encoding/Base64.js.map +1 -1
- package/dist/encoding/Base64Url.d.ts.map +1 -1
- package/dist/encoding/Base64Url.js +3 -2
- package/dist/encoding/Base64Url.js.map +1 -1
- package/dist/encoding/Csv.d.ts +608 -0
- package/dist/encoding/Csv.d.ts.map +1 -0
- package/dist/encoding/Csv.js +718 -0
- package/dist/encoding/Csv.js.map +1 -0
- package/dist/encoding/Hex.d.ts +3 -2
- package/dist/encoding/Hex.d.ts.map +1 -1
- package/dist/encoding/Hex.js +3 -2
- package/dist/encoding/Hex.js.map +1 -1
- package/dist/encoding/SchemaBinary.d.ts.map +1 -1
- package/dist/encoding/SchemaBinary.js +42 -4
- package/dist/encoding/SchemaBinary.js.map +1 -1
- package/dist/encoding/Sse.d.ts.map +1 -1
- package/dist/encoding/Sse.js +3 -3
- package/dist/encoding/Sse.js.map +1 -1
- package/dist/encoding/Toml.d.ts +17 -3
- package/dist/encoding/Toml.d.ts.map +1 -1
- package/dist/encoding/Toml.js +124 -31
- package/dist/encoding/Toml.js.map +1 -1
- package/dist/encoding/Yaml.d.ts +8 -1
- package/dist/encoding/Yaml.d.ts.map +1 -1
- package/dist/encoding/Yaml.js +54 -18
- package/dist/encoding/Yaml.js.map +1 -1
- package/dist/encoding/index.d.ts +5 -0
- package/dist/encoding/index.d.ts.map +1 -1
- package/dist/encoding/index.js +5 -0
- package/dist/encoding/index.js.map +1 -1
- package/dist/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/eventlog/EventJournal.js +6 -3
- package/dist/eventlog/EventJournal.js.map +1 -1
- package/dist/eventlog/EventLog.d.ts +119 -4
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +200 -12
- package/dist/eventlog/EventLog.js.map +1 -1
- package/dist/eventlog/EventLogEncryption.d.ts +41 -4
- package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/eventlog/EventLogEncryption.js +83 -64
- package/dist/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/eventlog/EventLogMessage.d.ts +279 -0
- package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/eventlog/EventLogMessage.js +217 -1
- package/dist/eventlog/EventLogMessage.js.map +1 -1
- package/dist/eventlog/EventLogRemote.d.ts +200 -28
- package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
- package/dist/eventlog/EventLogRemote.js +186 -16
- package/dist/eventlog/EventLogRemote.js.map +1 -1
- package/dist/eventlog/EventLogServer.d.ts +3 -0
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +18 -10
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +326 -5
- package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.js +769 -14
- package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.d.ts +5 -3
- package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.js +41 -64
- package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
- package/dist/eventlog/EventRow.d.ts +4 -0
- package/dist/eventlog/EventRow.d.ts.map +1 -1
- package/dist/eventlog/EventRow.js +12 -2
- package/dist/eventlog/EventRow.js.map +1 -1
- package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/eventlog/SqlEventJournal.js +47 -27
- package/dist/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
- package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
- package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/internal/batches.d.ts +12 -0
- package/dist/eventlog/internal/batches.d.ts.map +1 -0
- package/dist/eventlog/internal/batches.js +26 -0
- package/dist/eventlog/internal/batches.js.map +1 -0
- package/dist/eventlog/internal/compaction.d.ts +38 -0
- package/dist/eventlog/internal/compaction.d.ts.map +1 -0
- package/dist/eventlog/internal/compaction.js +33 -0
- package/dist/eventlog/internal/compaction.js.map +1 -0
- package/dist/eventlog/internal/conflicts.d.ts +0 -1
- package/dist/eventlog/internal/conflicts.d.ts.map +1 -1
- package/dist/eventlog/internal/conflicts.js +0 -3
- package/dist/eventlog/internal/conflicts.js.map +1 -1
- package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
- package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
- package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
- package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
- package/dist/eventlog/internal/remoteCompaction.js +76 -0
- package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
- package/dist/http/Cookies.d.ts +172 -0
- package/dist/http/Cookies.d.ts.map +1 -1
- package/dist/http/Cookies.js +153 -10
- package/dist/http/Cookies.js.map +1 -1
- package/dist/http/FetchHttpClient.d.ts +26 -2
- package/dist/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/http/FetchHttpClient.js +78 -15
- package/dist/http/FetchHttpClient.js.map +1 -1
- package/dist/http/HttpClient.d.ts +502 -8
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +296 -12
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientError.d.ts +8 -1
- package/dist/http/HttpClientError.d.ts.map +1 -1
- package/dist/http/HttpClientError.js +37 -1
- package/dist/http/HttpClientError.js.map +1 -1
- package/dist/http/HttpClientRequest.d.ts +9 -5
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +3 -4
- package/dist/http/HttpClientRequest.js.map +1 -1
- package/dist/http/HttpClientResponse.d.ts.map +1 -1
- package/dist/http/HttpClientResponse.js +3 -2
- package/dist/http/HttpClientResponse.js.map +1 -1
- package/dist/http/HttpMethod.d.ts +7 -1
- package/dist/http/HttpMethod.d.ts.map +1 -1
- package/dist/http/HttpMethod.js +3 -8
- package/dist/http/HttpMethod.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts +1 -1
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +14 -16
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +2 -1
- package/dist/http/HttpRouter.js.map +1 -1
- package/dist/http/HttpServerError.js +2 -2
- package/dist/http/HttpServerError.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts +11 -3
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +77 -25
- package/dist/http/HttpServerRequest.js.map +1 -1
- package/dist/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/http/HttpServerResponse.js +3 -2
- package/dist/http/HttpServerResponse.js.map +1 -1
- package/dist/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.js +48 -21
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/HttpTraceContext.d.ts +2 -1
- package/dist/http/HttpTraceContext.d.ts.map +1 -1
- package/dist/http/HttpTraceContext.js +7 -5
- package/dist/http/HttpTraceContext.js.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.js +3 -3
- package/dist/http/ProblemDetails.d.ts +96 -0
- package/dist/http/ProblemDetails.d.ts.map +1 -0
- package/dist/http/ProblemDetails.js +98 -0
- package/dist/http/ProblemDetails.js.map +1 -0
- package/dist/http/UrlParams.d.ts +3 -1
- package/dist/http/UrlParams.d.ts.map +1 -1
- package/dist/http/UrlParams.js +4 -2
- package/dist/http/UrlParams.js.map +1 -1
- package/dist/http/index.d.ts +5 -0
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +5 -0
- package/dist/http/index.js.map +1 -1
- package/dist/http/internal/compression.js +4 -5
- package/dist/http/internal/compression.js.map +1 -1
- package/dist/http/internal/decompression.js +6 -2
- package/dist/http/internal/decompression.js.map +1 -1
- package/dist/http/internal/httpBody.js +8 -1
- package/dist/http/internal/httpBody.js.map +1 -1
- package/dist/http/internal/urlParams.js +33 -0
- package/dist/http/internal/urlParams.js.map +1 -1
- package/dist/http-api/HttpApi.d.ts +3 -6
- package/dist/http-api/HttpApi.d.ts.map +1 -1
- package/dist/http-api/HttpApi.js +3 -6
- package/dist/http-api/HttpApi.js.map +1 -1
- package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
- package/dist/http-api/HttpApiBuilder.js +43 -13
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +140 -7
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +193 -44
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts +24 -7
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +123 -32
- package/dist/http-api/HttpApiEndpoint.js.map +1 -1
- package/dist/http-api/HttpApiError.d.ts +185 -13
- package/dist/http-api/HttpApiError.d.ts.map +1 -1
- package/dist/http-api/HttpApiError.js +128 -0
- package/dist/http-api/HttpApiError.js.map +1 -1
- package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
- package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
- package/dist/http-api/HttpApiMiddleware.js +85 -1
- package/dist/http-api/HttpApiMiddleware.js.map +1 -1
- package/dist/http-api/HttpApiSchema.d.ts +142 -33
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +123 -59
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/http-api/HttpApiTest.d.ts.map +1 -1
- package/dist/http-api/HttpApiTest.js +3 -2
- package/dist/http-api/HttpApiTest.js.map +1 -1
- package/dist/http-api/OpenApi.d.ts.map +1 -1
- package/dist/http-api/OpenApi.js +25 -16
- package/dist/http-api/OpenApi.js.map +1 -1
- package/dist/http-api/internal/toCodecHttpProperties.d.ts +2 -0
- package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
- package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
- package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/internal/arbitrary/runner.d.ts.map +1 -1
- package/dist/internal/arbitrary/runner.js +120 -44
- package/dist/internal/arbitrary/runner.js.map +1 -1
- package/dist/internal/core.js +2 -0
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/effect.js +46 -27
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/equal.js +14 -0
- package/dist/internal/equal.js.map +1 -1
- package/dist/internal/glob.d.ts +2 -0
- package/dist/internal/glob.d.ts.map +1 -0
- package/dist/internal/glob.js +630 -0
- package/dist/internal/glob.js.map +1 -0
- package/dist/internal/jsonSchema.d.ts +2 -0
- package/dist/internal/jsonSchema.d.ts.map +1 -0
- package/dist/internal/jsonSchema.js +28 -0
- package/dist/internal/jsonSchema.js.map +1 -0
- package/dist/internal/matcher.js +11 -1
- package/dist/internal/matcher.js.map +1 -1
- package/dist/internal/persistence.js +9 -0
- package/dist/internal/persistence.js.map +1 -1
- package/dist/internal/rcRef.js +4 -1
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/internal/schema/compilerRegistry.js +4 -1
- package/dist/internal/schema/compilerRegistry.js.map +1 -1
- package/dist/internal/schema/content.d.ts +2 -0
- package/dist/internal/schema/content.d.ts.map +1 -0
- package/dist/internal/schema/content.js +13 -0
- package/dist/internal/schema/content.js.map +1 -0
- package/dist/internal/schema/fromJsonSchemaDocument.js +173 -185
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/fromRepresentation.js +2 -1
- package/dist/internal/schema/fromRepresentation.js.map +1 -1
- package/dist/internal/schema/standardSchema.js +8 -2
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +9 -6
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toCodec.js +21 -24
- package/dist/internal/schema/toCodec.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +205 -140
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/toRepresentation.js +107 -129
- package/dist/internal/schema/toRepresentation.js.map +1 -1
- package/dist/internal/sql.d.ts +2 -0
- package/dist/internal/sql.d.ts.map +1 -0
- package/dist/internal/sql.js +13 -0
- package/dist/internal/sql.js.map +1 -0
- package/dist/internal/trie.js +42 -13
- package/dist/internal/trie.js.map +1 -1
- package/dist/internal/ulid.js +41 -0
- package/dist/internal/ulid.js.map +1 -1
- package/dist/internal/uuid.js +52 -8
- package/dist/internal/uuid.js.map +1 -1
- package/dist/internal/version.js +1 -1
- package/dist/observability/Otlp.d.ts +15 -4
- package/dist/observability/Otlp.d.ts.map +1 -1
- package/dist/observability/Otlp.js +10 -0
- package/dist/observability/Otlp.js.map +1 -1
- package/dist/observability/OtlpProxy.d.ts +154 -0
- package/dist/observability/OtlpProxy.d.ts.map +1 -0
- package/dist/observability/OtlpProxy.js +235 -0
- package/dist/observability/OtlpProxy.js.map +1 -0
- package/dist/observability/OtlpResource.d.ts +7 -0
- package/dist/observability/OtlpResource.d.ts.map +1 -1
- package/dist/observability/OtlpResource.js +11 -1
- package/dist/observability/OtlpResource.js.map +1 -1
- package/dist/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/observability/OtlpTracer.js +4 -0
- package/dist/observability/OtlpTracer.js.map +1 -1
- package/dist/observability/index.d.ts +5 -0
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +5 -0
- package/dist/observability/index.js.map +1 -1
- package/dist/persistence/CircuitBreaker.d.ts +897 -0
- package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
- package/dist/persistence/CircuitBreaker.js +1165 -0
- package/dist/persistence/CircuitBreaker.js.map +1 -0
- package/dist/persistence/KeyValueStore.d.ts +47 -2
- package/dist/persistence/KeyValueStore.d.ts.map +1 -1
- package/dist/persistence/KeyValueStore.js +129 -18
- package/dist/persistence/KeyValueStore.js.map +1 -1
- package/dist/persistence/PersistedQueue.d.ts +9 -0
- package/dist/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/persistence/PersistedQueue.js +94 -52
- package/dist/persistence/PersistedQueue.js.map +1 -1
- package/dist/persistence/Persistence.d.ts +10 -4
- package/dist/persistence/Persistence.d.ts.map +1 -1
- package/dist/persistence/Persistence.js +18 -11
- package/dist/persistence/Persistence.js.map +1 -1
- package/dist/persistence/Redis.d.ts +78 -2
- package/dist/persistence/Redis.d.ts.map +1 -1
- package/dist/persistence/Redis.js +62 -7
- package/dist/persistence/Redis.js.map +1 -1
- package/dist/persistence/index.d.ts +5 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +5 -0
- package/dist/persistence/index.js.map +1 -1
- package/dist/process/ChildProcess.d.ts +237 -71
- package/dist/process/ChildProcess.d.ts.map +1 -1
- package/dist/process/ChildProcess.js +56 -158
- package/dist/process/ChildProcess.js.map +1 -1
- package/dist/process/ChildProcessSpawner.d.ts +35 -0
- package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/process/ChildProcessSpawner.js +5 -2
- package/dist/process/ChildProcessSpawner.js.map +1 -1
- package/dist/process/CommandLine.d.ts +294 -0
- package/dist/process/CommandLine.d.ts.map +1 -0
- package/dist/process/CommandLine.js +481 -0
- package/dist/process/CommandLine.js.map +1 -0
- package/dist/process/index.d.ts +5 -0
- package/dist/process/index.d.ts.map +1 -1
- package/dist/process/index.js +5 -0
- package/dist/process/index.js.map +1 -1
- package/dist/reactivity/AsyncResult.d.ts +1 -1
- package/dist/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/reactivity/Atom.d.ts +2 -1
- package/dist/reactivity/Atom.d.ts.map +1 -1
- package/dist/reactivity/Atom.js +3 -4
- package/dist/reactivity/Atom.js.map +1 -1
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +16 -1
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +59 -24
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcMessage.d.ts +10 -1
- package/dist/rpc/RpcMessage.d.ts.map +1 -1
- package/dist/rpc/RpcMessage.js +1 -0
- package/dist/rpc/RpcMessage.js.map +1 -1
- package/dist/rpc/RpcSerialization.d.ts +14 -0
- package/dist/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/rpc/RpcSerialization.js +26 -8
- package/dist/rpc/RpcSerialization.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts +31 -0
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +139 -56
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/rpc/RpcTest.d.ts +1 -0
- package/dist/rpc/RpcTest.d.ts.map +1 -1
- package/dist/rpc/RpcTest.js +1 -0
- package/dist/rpc/RpcTest.js.map +1 -1
- package/dist/schema/Model.d.ts +14 -0
- package/dist/schema/Model.d.ts.map +1 -1
- package/dist/schema/Model.js +18 -3
- package/dist/schema/Model.js.map +1 -1
- package/dist/sql/Migrator.d.ts +2 -20
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +13 -55
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/MigratorFileSystem.d.ts +21 -0
- package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
- package/dist/sql/MigratorFileSystem.js +57 -0
- package/dist/sql/MigratorFileSystem.js.map +1 -0
- package/dist/sql/SqlClient.d.ts +9 -4
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +13 -10
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/SqlResolver.d.ts +4 -0
- package/dist/sql/SqlResolver.d.ts.map +1 -1
- package/dist/sql/SqlResolver.js +18 -4
- package/dist/sql/SqlResolver.js.map +1 -1
- package/dist/sql/Statement.d.ts +27 -6
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +21 -15
- package/dist/sql/Statement.js.map +1 -1
- package/dist/sql/index.js +1 -1
- package/dist/testing/index.d.ts +0 -5
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +0 -5
- package/dist/testing/index.js.map +1 -1
- package/dist/workflow/DurableDeferred.d.ts.map +1 -1
- package/dist/workflow/DurableDeferred.js +21 -2
- package/dist/workflow/DurableDeferred.js.map +1 -1
- package/dist/workflow/internal/crypto.js +9 -8
- package/dist/workflow/internal/crypto.js.map +1 -1
- package/package.json +3 -1
- package/src/Arbitrary.ts +10 -2
- package/src/BigDecimal.ts +3 -0
- package/src/Channel.ts +64 -29
- package/src/Config.ts +7 -1
- package/src/Context.ts +34 -10
- package/src/Cron.ts +178 -29
- package/src/Data.ts +60 -265
- package/src/Duration.ts +140 -0
- package/src/Effect.ts +915 -86
- package/src/Equal.ts +8 -1
- package/src/Exit.ts +3 -3
- package/src/FileSystem.ts +65 -4
- package/src/Formatter.ts +28 -13
- package/src/Glob.ts +205 -0
- package/src/Hash.ts +4 -1
- package/src/JsonPatch.ts +4 -0
- package/src/JsonSchema.ts +12 -40
- package/src/Match.ts +127 -0
- package/src/Metric.ts +3 -3
- package/src/MutableList.ts +7 -5
- package/src/MutableRef.ts +8 -1
- package/src/PartitionedSemaphore.ts +24 -13
- package/src/Pool.ts +182 -52
- package/src/PubSub.ts +5 -6
- package/src/Random.ts +3 -3
- package/src/RcMap.ts +5 -1
- package/src/Ref.ts +8 -0
- package/src/Schedule.ts +27 -4
- package/src/Schema.ts +1237 -87
- package/src/SchemaAST.ts +20 -20
- package/src/SchemaGetter.ts +27 -11
- package/src/SchemaParser.ts +51 -18
- package/src/SchemaRepresentation.ts +50 -34
- package/src/SchemaTransformation.ts +17 -5
- package/src/ScopedCache.ts +5 -9
- package/src/Semaphore.ts +208 -40
- package/src/Sink.ts +15 -2
- package/src/Stream.ts +48 -22
- package/src/String.ts +3 -0
- package/src/Terminal.ts +19 -1
- package/src/Tracer.ts +15 -1
- package/src/ai/AiError.ts +56 -80
- package/src/ai/Decision.ts +257 -6
- package/src/ai/DecisionModel.ts +171 -28
- package/src/ai/LanguageModel.ts +9 -0
- package/src/ai/McpServer.ts +1283 -299
- package/src/ai/McpTest.ts +380 -0
- package/src/ai/Prompt.ts +65 -0
- package/src/ai/Response.ts +36 -31
- package/src/ai/Tool.ts +65 -10
- package/src/ai/Toolkit.ts +4 -1
- package/src/ai/index.ts +6 -0
- package/src/ai/internal/mcpCore.ts +78 -44
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +4 -7
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +4 -7
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +4 -7
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +4 -7
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +15 -10
- package/src/ai/internal/mcpProtocol.ts +29 -0
- package/src/ai/internal/mcpRuntime.ts +9 -5
- package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
- package/src/cli/Argument.ts +21 -0
- package/src/cli/CliError.ts +90 -3
- package/src/cli/CliOutput.ts +300 -55
- package/src/cli/Command.ts +76 -41
- package/src/cli/Completions.ts +51 -0
- package/src/cli/Flag.ts +122 -0
- package/src/cli/GlobalFlag.ts +6 -7
- package/src/cli/HelpDoc.ts +18 -1
- package/src/cli/Param.ts +35 -6
- package/src/cli/Primitive.ts +16 -1
- package/src/cli/Prompt.ts +1 -0
- package/src/cli/TerminalCapabilities.ts +6 -3
- package/src/cli/internal/completions/bash.ts +79 -29
- package/src/cli/internal/help.ts +21 -9
- package/src/cluster/ClusterWorkflowEngine.ts +46 -16
- package/src/cluster/MessageStorage.ts +19 -14
- package/src/cluster/Sharding.ts +176 -47
- package/src/cluster/ShardingConfig.ts +43 -0
- package/src/cluster/SingleRunner.ts +3 -3
- package/src/cluster/Snowflake.ts +3 -7
- package/src/cluster/SqlMessageStorage.ts +49 -17
- package/src/cluster/SqlRunnerStorage.ts +143 -70
- package/src/cluster/internal/entityManager.ts +75 -22
- package/src/crypto/Aead.ts +517 -0
- package/src/crypto/Cipher.ts +326 -0
- package/src/crypto/CryptoError.ts +242 -0
- package/src/crypto/Digest.ts +167 -0
- package/src/crypto/Kdf.ts +315 -0
- package/src/crypto/KeyAgreement.ts +489 -0
- package/src/crypto/KeyFormat.ts +712 -0
- package/src/crypto/KeyWrap.ts +639 -0
- package/src/crypto/Mac.ts +386 -0
- package/src/crypto/SecureRandom.ts +459 -0
- package/src/crypto/Signature.ts +673 -0
- package/src/crypto/WebCrypto.ts +64 -0
- package/src/crypto/index.ts +78 -0
- package/src/crypto/internal/asymmetric.ts +329 -0
- package/src/crypto/internal/chacha.ts +1088 -0
- package/src/crypto/internal/der.ts +110 -0
- package/src/crypto/internal/digest.ts +16 -0
- package/src/crypto/internal/key.ts +235 -0
- package/src/crypto/internal/md5.ts +170 -0
- package/src/crypto/internal/webCrypto.ts +150 -0
- package/src/devtools/DevToolsClient.ts +2 -0
- package/src/encoding/Base64.ts +38 -0
- package/src/encoding/Base64Url.ts +5 -2
- package/src/encoding/Csv.ts +1298 -0
- package/src/encoding/Hex.ts +3 -2
- package/src/encoding/SchemaBinary.ts +40 -4
- package/src/encoding/Sse.ts +4 -3
- package/src/encoding/Toml.ts +117 -35
- package/src/encoding/Yaml.ts +61 -18
- package/src/encoding/index.ts +6 -0
- package/src/eventlog/EventJournal.ts +4 -3
- package/src/eventlog/EventLog.ts +340 -15
- package/src/eventlog/EventLogEncryption.ts +118 -110
- package/src/eventlog/EventLogMessage.ts +273 -1
- package/src/eventlog/EventLogRemote.ts +367 -23
- package/src/eventlog/EventLogServer.ts +23 -8
- package/src/eventlog/EventLogServerEncrypted.ts +1130 -67
- package/src/eventlog/EventLogSessionAuth.ts +56 -70
- package/src/eventlog/EventRow.ts +12 -3
- package/src/eventlog/SqlEventJournal.ts +68 -45
- package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
- package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
- package/src/eventlog/internal/batches.ts +30 -0
- package/src/eventlog/internal/compaction.ts +64 -0
- package/src/eventlog/internal/conflicts.ts +0 -4
- package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
- package/src/eventlog/internal/remoteCompaction.ts +92 -0
- package/src/http/Cookies.ts +291 -12
- package/src/http/FetchHttpClient.ts +88 -16
- package/src/http/HttpClient.ts +636 -29
- package/src/http/HttpClientError.ts +35 -1
- package/src/http/HttpClientRequest.ts +21 -10
- package/src/http/HttpClientResponse.ts +3 -2
- package/src/http/HttpMethod.ts +10 -2
- package/src/http/HttpMiddleware.ts +15 -18
- package/src/http/HttpRouter.ts +2 -1
- package/src/http/HttpServerError.ts +2 -2
- package/src/http/HttpServerRequest.ts +101 -30
- package/src/http/HttpServerResponse.ts +3 -2
- package/src/http/HttpStaticServer.ts +51 -22
- package/src/http/HttpTraceContext.ts +7 -4
- package/src/http/MultipartParser/internal/contentType.ts +3 -3
- package/src/http/ProblemDetails.ts +149 -0
- package/src/http/UrlParams.ts +6 -1
- package/src/http/index.ts +6 -0
- package/src/http/internal/compression.ts +4 -5
- package/src/http/internal/decompression.ts +10 -4
- package/src/http/internal/httpBody.ts +10 -2
- package/src/http/internal/urlParams.ts +37 -0
- package/src/http-api/HttpApi.ts +3 -6
- package/src/http-api/HttpApiBuilder.ts +61 -19
- package/src/http-api/HttpApiClient.ts +284 -72
- package/src/http-api/HttpApiEndpoint.ts +135 -35
- package/src/http-api/HttpApiError.ts +250 -0
- package/src/http-api/HttpApiMiddleware.ts +95 -1
- package/src/http-api/HttpApiSchema.ts +236 -52
- package/src/http-api/HttpApiTest.ts +3 -2
- package/src/http-api/OpenApi.ts +20 -17
- package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
- package/src/index.ts +6 -6
- package/src/internal/arbitrary/runner.ts +133 -36
- package/src/internal/core.ts +2 -0
- package/src/internal/effect.ts +58 -34
- package/src/internal/equal.ts +17 -0
- package/src/internal/glob.ts +736 -0
- package/src/internal/jsonSchema.ts +27 -0
- package/src/internal/matcher.ts +18 -1
- package/src/internal/persistence.ts +11 -0
- package/src/internal/rcRef.ts +4 -1
- package/src/internal/schema/compilerRegistry.ts +6 -1
- package/src/internal/schema/content.ts +18 -0
- package/src/internal/schema/fromJsonSchemaDocument.ts +228 -190
- package/src/internal/schema/fromRepresentation.ts +2 -1
- package/src/internal/schema/standardSchema.ts +2 -2
- package/src/internal/schema/toCodeDocument.ts +11 -7
- package/src/internal/schema/toCodec.ts +26 -22
- package/src/internal/schema/toJsonSchemaDocument.ts +189 -167
- package/src/internal/schema/toRepresentation.ts +122 -140
- package/src/internal/sql.ts +14 -0
- package/src/internal/trie.ts +43 -14
- package/src/internal/ulid.ts +44 -0
- package/src/internal/uuid.ts +57 -16
- package/src/internal/version.ts +1 -1
- package/src/observability/Otlp.ts +21 -4
- package/src/observability/OtlpProxy.ts +314 -0
- package/src/observability/OtlpResource.ts +9 -1
- package/src/observability/OtlpTracer.ts +4 -0
- package/src/observability/index.ts +6 -0
- package/src/persistence/CircuitBreaker.ts +1678 -0
- package/src/persistence/KeyValueStore.ts +219 -22
- package/src/persistence/PersistedQueue.ts +128 -59
- package/src/persistence/Persistence.ts +20 -13
- package/src/persistence/Redis.ts +129 -8
- package/src/persistence/index.ts +6 -0
- package/src/process/ChildProcess.ts +285 -264
- package/src/process/ChildProcessSpawner.ts +46 -2
- package/src/process/CommandLine.ts +630 -0
- package/src/process/index.ts +6 -0
- package/src/reactivity/AsyncResult.ts +1 -1
- package/src/reactivity/Atom.ts +5 -5
- package/src/reactivity/AtomRegistry.ts +1 -1
- package/src/rpc/RpcClient.ts +75 -36
- package/src/rpc/RpcMessage.ts +10 -1
- package/src/rpc/RpcSerialization.ts +35 -9
- package/src/rpc/RpcServer.ts +176 -63
- package/src/rpc/RpcTest.ts +3 -0
- package/src/schema/Model.ts +26 -3
- package/src/sql/Migrator.ts +15 -69
- package/src/sql/MigratorFileSystem.ts +71 -0
- package/src/sql/SqlClient.ts +13 -20
- package/src/sql/SqlResolver.ts +23 -9
- package/src/sql/Statement.ts +38 -9
- package/src/sql/index.ts +1 -1
- package/src/testing/index.ts +0 -6
- package/src/workflow/DurableDeferred.ts +23 -6
- package/src/workflow/internal/crypto.ts +15 -11
- package/dist/Crypto.d.ts +0 -244
- package/dist/Crypto.d.ts.map +0 -1
- package/dist/Crypto.js +0 -139
- package/dist/Crypto.js.map +0 -1
- package/dist/testing/TestCrypto.d.ts +0 -73
- package/dist/testing/TestCrypto.d.ts.map +0 -1
- package/dist/testing/TestCrypto.js +0 -87
- package/dist/testing/TestCrypto.js.map +0 -1
- package/src/Crypto.ts +0 -347
- package/src/testing/TestCrypto.ts +0 -94
package/src/Context.ts
CHANGED
|
@@ -642,6 +642,7 @@ interface ContextImpl<in Services> extends Context<Services> {
|
|
|
642
642
|
overlay: Overlay | undefined
|
|
643
643
|
depth: number
|
|
644
644
|
_flat: ReadonlyMap<string, any> | undefined
|
|
645
|
+
maxDepth: number
|
|
645
646
|
}
|
|
646
647
|
|
|
647
648
|
interface Overlay {
|
|
@@ -650,7 +651,6 @@ interface Overlay {
|
|
|
650
651
|
readonly parent: Overlay | undefined
|
|
651
652
|
}
|
|
652
653
|
|
|
653
|
-
const MaxDepth = 8
|
|
654
654
|
// Keep small bases cheap to read; larger bases are worth copying only after
|
|
655
655
|
// enough fall-throughs to amortize the copy.
|
|
656
656
|
const FlattenAfterBaseHits = 8
|
|
@@ -659,7 +659,8 @@ const makeImpl = <Services>(
|
|
|
659
659
|
cacheRoot: ContextImpl<any> | undefined,
|
|
660
660
|
base: ReadonlyMap<string, any>,
|
|
661
661
|
overlay: Overlay | undefined,
|
|
662
|
-
depth: number
|
|
662
|
+
depth: number,
|
|
663
|
+
maxDepth: number
|
|
663
664
|
): ContextImpl<Services> => {
|
|
664
665
|
const self: ContextImpl<Services> = Object.create(Proto)
|
|
665
666
|
self.cacheRoot = cacheRoot ?? self
|
|
@@ -668,6 +669,7 @@ const makeImpl = <Services>(
|
|
|
668
669
|
self.depth = depth
|
|
669
670
|
self._flat = undefined
|
|
670
671
|
self.baseHits = 0
|
|
672
|
+
self.maxDepth = maxDepth
|
|
671
673
|
return self
|
|
672
674
|
}
|
|
673
675
|
|
|
@@ -688,7 +690,7 @@ const flatten = (self: ContextImpl<any>): ReadonlyMap<string, any> => {
|
|
|
688
690
|
const withFlat = <B>(self: Context<any>, f: (map: Map<string, any>) => void): Context<B> => {
|
|
689
691
|
const map = new Map(self.mapUnsafe)
|
|
690
692
|
f(map)
|
|
691
|
-
return
|
|
693
|
+
return makeImpl(undefined, map, undefined, 0, (self as ContextImpl<any>).maxDepth)
|
|
692
694
|
}
|
|
693
695
|
|
|
694
696
|
// A private symbol so user code cannot forge a value that reads as absent
|
|
@@ -720,8 +722,23 @@ const lookup = (self: Context<any>, key: string): unknown => {
|
|
|
720
722
|
* Use when constructing a low-level `Context` from a trusted map whose lifecycle
|
|
721
723
|
* you control.
|
|
722
724
|
*
|
|
725
|
+
* **Details**
|
|
726
|
+
*
|
|
727
|
+
* `options.maxDepth` sets how many `add` calls are kept as overlays before the
|
|
728
|
+
* context is rebased into a flat map (default `8`). Lower values make lookups
|
|
729
|
+
* cheaper, higher values make additions to a large base cheaper. Invalid
|
|
730
|
+
* values fall back to the default.
|
|
731
|
+
*
|
|
732
|
+
* Contexts derived with `add`, `pick`, `omit`, and `merge` keep the setting
|
|
733
|
+
* (`merge` from its first non-empty argument). `make`, `empty`, and `mergeAll`
|
|
734
|
+
* use the default. Layers are combined with `mergeAll`, so apply it to the
|
|
735
|
+
* final context rather than inside a layer.
|
|
736
|
+
*
|
|
723
737
|
* **Gotchas**
|
|
724
738
|
*
|
|
739
|
+
* Excessively large `maxDepth` values can cause stack overflow when overlays
|
|
740
|
+
* are materialized or rebased. Choose a modest value.
|
|
741
|
+
*
|
|
725
742
|
* The provided map is retained without copying and must not be mutated after
|
|
726
743
|
* construction. Prefer `empty`, `make`, `add`, or `merge` for normal Context
|
|
727
744
|
* construction.
|
|
@@ -744,12 +761,18 @@ const lookup = (self: Context<any>, key: string): unknown => {
|
|
|
744
761
|
* @category constructors
|
|
745
762
|
* @since 4.0.0
|
|
746
763
|
*/
|
|
747
|
-
export const makeUnsafe = <Services = never>(
|
|
748
|
-
|
|
764
|
+
export const makeUnsafe = <Services = never>(
|
|
765
|
+
mapUnsafe: ReadonlyMap<string, any>,
|
|
766
|
+
options?: { readonly maxDepth?: number }
|
|
767
|
+
): Context<Services> => {
|
|
768
|
+
const maxDepth = options?.maxDepth
|
|
769
|
+
// NaN or Infinity would never trigger a rebase, so fall back to the default
|
|
770
|
+
return makeImpl(undefined, mapUnsafe, undefined, 0, Number.isInteger(maxDepth) && maxDepth! >= 0 ? maxDepth! : 8)
|
|
771
|
+
}
|
|
749
772
|
|
|
750
773
|
const Proto: Omit<
|
|
751
774
|
ContextImpl<never>,
|
|
752
|
-
"cacheRoot" | "base" | "overlay" | "depth" | "_flat" | "baseHits"
|
|
775
|
+
"cacheRoot" | "base" | "overlay" | "depth" | "_flat" | "baseHits" | "maxDepth"
|
|
753
776
|
> = {
|
|
754
777
|
get mapUnsafe() {
|
|
755
778
|
return flatten(this as any as ContextImpl<any>)
|
|
@@ -1032,19 +1055,20 @@ export const addUnsafe = <Services, I, S>(
|
|
|
1032
1055
|
): Context<Services | I> => {
|
|
1033
1056
|
const impl = self as ContextImpl<Services>
|
|
1034
1057
|
const cacheRoot = cacheKeys.has(key) ? undefined : impl.cacheRoot
|
|
1035
|
-
if (impl.depth >=
|
|
1058
|
+
if (impl.depth >= impl.maxDepth) {
|
|
1036
1059
|
// Avoid mapUnsafe: it would flatten the parent before copying.
|
|
1037
1060
|
const map = new Map(impl._flat ?? impl.base)
|
|
1038
1061
|
if (!impl._flat) applyOverlays(map, impl.overlay)
|
|
1039
1062
|
map.set(key, service)
|
|
1040
|
-
return makeImpl(cacheRoot, map, undefined, 0)
|
|
1063
|
+
return makeImpl(cacheRoot, map, undefined, 0, impl.maxDepth)
|
|
1041
1064
|
}
|
|
1042
1065
|
|
|
1043
1066
|
return makeImpl(
|
|
1044
1067
|
cacheRoot,
|
|
1045
1068
|
impl.base,
|
|
1046
1069
|
{ key, value: service, parent: impl.overlay },
|
|
1047
|
-
impl.depth + 1
|
|
1070
|
+
impl.depth + 1,
|
|
1071
|
+
impl.maxDepth
|
|
1048
1072
|
)
|
|
1049
1073
|
}
|
|
1050
1074
|
|
|
@@ -1993,7 +2017,7 @@ export const pick = <S extends ReadonlyArray<Key<any, any>>>(
|
|
|
1993
2017
|
const value = lookup(self, key)
|
|
1994
2018
|
if (value !== notFound) map.set(key, value)
|
|
1995
2019
|
}
|
|
1996
|
-
return
|
|
2020
|
+
return makeImpl(undefined, map, undefined, 0, (self as ContextImpl<any>).maxDepth)
|
|
1997
2021
|
}
|
|
1998
2022
|
const keep = new Set(services.map((key) => key.key))
|
|
1999
2023
|
return withFlat(self, (map) =>
|
package/src/Cron.ts
CHANGED
|
@@ -28,6 +28,60 @@ import type { Mutable } from "./Types.ts"
|
|
|
28
28
|
|
|
29
29
|
const TypeId = "~effect/Cron"
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Chooses which occurrences of a repeated wall-clock time a `Cron` schedule
|
|
33
|
+
* includes.
|
|
34
|
+
*
|
|
35
|
+
* **When to use**
|
|
36
|
+
*
|
|
37
|
+
* Use to control how a schedule behaves when clocks fall back, for example at
|
|
38
|
+
* the end of daylight saving time, and a range of local times occurs twice.
|
|
39
|
+
*
|
|
40
|
+
* **Details**
|
|
41
|
+
*
|
|
42
|
+
* Despite the name, the policy applies to every repeated local time, not only
|
|
43
|
+
* those caused by daylight saving time. For example, Antarctica/Casey repeated
|
|
44
|
+
* 00:00-02:59 on 2023-03-09 when its standard offset changed from +11:00 to
|
|
45
|
+
* +08:00.
|
|
46
|
+
*
|
|
47
|
+
* - `"earlier"` (default) includes only the first occurrence, before the
|
|
48
|
+
* offset change.
|
|
49
|
+
* - `"later"` includes only the second occurrence, after the offset change.
|
|
50
|
+
* - `"both"` includes both occurrences, in chronological order.
|
|
51
|
+
*
|
|
52
|
+
* Time zones without repeated times, such as UTC or fixed offsets, behave the
|
|
53
|
+
* same under every policy.
|
|
54
|
+
*
|
|
55
|
+
* **Gotchas**
|
|
56
|
+
*
|
|
57
|
+
* The policy does not apply to local times skipped when clocks move forward. A
|
|
58
|
+
* matching time inside such a gap resolves to the instant after the gap, the
|
|
59
|
+
* same under every policy, and near a gap `next` and `prev` are not guaranteed
|
|
60
|
+
* to return the nearest matching instant.
|
|
61
|
+
*
|
|
62
|
+
* **Example** (Running every occurrence of a repeated hour)
|
|
63
|
+
*
|
|
64
|
+
* ```ts import.meta.vitest
|
|
65
|
+
* import { Cron } from "effect"
|
|
66
|
+
*
|
|
67
|
+
* // Europe/Berlin repeats 02:00-02:59 on 2026-10-25, first at +02:00
|
|
68
|
+
* // (00:30Z) and again at +01:00 (01:30Z)
|
|
69
|
+
* const earlier = Cron.parseUnsafe("30 2 * * *", "Europe/Berlin")
|
|
70
|
+
* const both = Cron.parseUnsafe("30 2 * * *", "Europe/Berlin", { onDstOverlap: "both" })
|
|
71
|
+
*
|
|
72
|
+
* Cron.next(earlier, "2026-10-25T00:30:00Z").toISOString() // => "2026-10-26T01:30:00.000Z"
|
|
73
|
+
* Cron.next(both, "2026-10-25T00:30:00Z").toISOString() // => "2026-10-25T01:30:00.000Z"
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @see {@link make} for setting the policy from explicit field constraints
|
|
77
|
+
* @see {@link parse} for setting the policy when parsing an expression
|
|
78
|
+
*
|
|
79
|
+
* @stability stable
|
|
80
|
+
* @category models
|
|
81
|
+
* @since 4.1.0
|
|
82
|
+
*/
|
|
83
|
+
export type DstOverlapPolicy = "earlier" | "later" | "both"
|
|
84
|
+
|
|
31
85
|
/**
|
|
32
86
|
* Represents a cron schedule with time constraints and timezone information.
|
|
33
87
|
*
|
|
@@ -79,6 +133,7 @@ export interface Cron extends Pipeable, Equal.Equal, Inspectable {
|
|
|
79
133
|
readonly days: ReadonlySet<number>
|
|
80
134
|
readonly months: ReadonlySet<number>
|
|
81
135
|
readonly weekdays: ReadonlySet<number>
|
|
136
|
+
readonly onDstOverlap: DstOverlapPolicy
|
|
82
137
|
/** @internal */
|
|
83
138
|
readonly and: boolean
|
|
84
139
|
/** @internal */
|
|
@@ -128,7 +183,8 @@ function toPojo(cron: Cron): Record<string, unknown> {
|
|
|
128
183
|
hours: Arr.fromIterable(cron.hours),
|
|
129
184
|
days: Arr.fromIterable(cron.days),
|
|
130
185
|
months: Arr.fromIterable(cron.months),
|
|
131
|
-
weekdays: Arr.fromIterable(cron.weekdays)
|
|
186
|
+
weekdays: Arr.fromIterable(cron.weekdays),
|
|
187
|
+
onDstOverlap: cron.onDstOverlap
|
|
132
188
|
}
|
|
133
189
|
return out
|
|
134
190
|
}
|
|
@@ -147,7 +203,8 @@ const CronProto = {
|
|
|
147
203
|
Hash.combine(Hash.array(Arr.fromIterable(this.hours))),
|
|
148
204
|
Hash.combine(Hash.array(Arr.fromIterable(this.days))),
|
|
149
205
|
Hash.combine(Hash.array(Arr.fromIterable(this.months))),
|
|
150
|
-
Hash.combine(Hash.array(Arr.fromIterable(this.weekdays)))
|
|
206
|
+
Hash.combine(Hash.array(Arr.fromIterable(this.weekdays))),
|
|
207
|
+
Hash.combine(Hash.hash(this.onDstOverlap))
|
|
151
208
|
)
|
|
152
209
|
},
|
|
153
210
|
toObject(this: Cron) {
|
|
@@ -223,8 +280,9 @@ export const isCron = (u: unknown): u is Cron => hasProperty(u, TypeId)
|
|
|
223
280
|
* time unit unrestricted. If only days or weekdays are restricted, that field
|
|
224
281
|
* must match. When both are restricted, the default matches either field; set
|
|
225
282
|
* `and: true` to require both fields to match. Weekdays range from `0` (Sunday)
|
|
226
|
-
* to `7` (also Sunday).
|
|
227
|
-
*
|
|
283
|
+
* to `7` (also Sunday). `onDstOverlap` chooses which occurrences of repeated
|
|
284
|
+
* local times are included and defaults to `"earlier"`. The constructor throws a
|
|
285
|
+
* `RangeError` when a field contains a non-integer or out-of-range value.
|
|
228
286
|
*
|
|
229
287
|
* **Example** (Creating schedules from constraints)
|
|
230
288
|
*
|
|
@@ -304,6 +362,7 @@ export const make = (values: {
|
|
|
304
362
|
readonly weekdays: Iterable<number>
|
|
305
363
|
readonly and?: boolean | undefined
|
|
306
364
|
readonly tz?: DateTime.TimeZone | undefined
|
|
365
|
+
readonly onDstOverlap?: DstOverlapPolicy | undefined
|
|
307
366
|
}): Cron => {
|
|
308
367
|
const o: Mutable<Cron> = Object.create(CronProto)
|
|
309
368
|
o.seconds = restrictions.seconds(values.seconds ?? [0])
|
|
@@ -314,6 +373,7 @@ export const make = (values: {
|
|
|
314
373
|
o.weekdays = restrictions.weekdays(values.weekdays)
|
|
315
374
|
o.and = values.and === true
|
|
316
375
|
o.tz = Option.fromUndefinedOr(values.tz)
|
|
376
|
+
o.onDstOverlap = values.onDstOverlap ?? "earlier"
|
|
317
377
|
|
|
318
378
|
const seconds = Array.from(o.seconds)
|
|
319
379
|
const minutes = Array.from(o.minutes)
|
|
@@ -529,6 +589,8 @@ export const isCronParseError = (u: unknown): u is CronParseError => hasProperty
|
|
|
529
589
|
* `CronParseError`. When both the day-of-month and weekday fields are
|
|
530
590
|
* restricted, a date matches if either field matches. When either field starts
|
|
531
591
|
* with `*`, both fields must match; an unrestricted field always matches.
|
|
592
|
+
* `options.onDstOverlap` chooses which occurrences of repeated local times are
|
|
593
|
+
* included and defaults to `"earlier"`.
|
|
532
594
|
*
|
|
533
595
|
* **Example** (Parsing cron expressions)
|
|
534
596
|
*
|
|
@@ -549,7 +611,9 @@ export const isCronParseError = (u: unknown): u is CronParseError => hasProperty
|
|
|
549
611
|
* @category constructors
|
|
550
612
|
* @since 2.0.0
|
|
551
613
|
*/
|
|
552
|
-
export const parse = (cron: string, tz?: DateTime.TimeZone | string
|
|
614
|
+
export const parse = (cron: string, tz?: DateTime.TimeZone | string, options?: {
|
|
615
|
+
readonly onDstOverlap?: DstOverlapPolicy | undefined
|
|
616
|
+
}): Result.Result<Cron, CronParseError> => {
|
|
553
617
|
const segments = cron.trim().split(/\s+/).filter(String.isNonEmpty)
|
|
554
618
|
if (segments.length !== 5 && segments.length !== 6) {
|
|
555
619
|
return Result.fail(new CronParseError({ message: `Invalid number of segments in cron expression`, input: cron }))
|
|
@@ -584,7 +648,8 @@ export const parse = (cron: string, tz?: DateTime.TimeZone | string): Result.Res
|
|
|
584
648
|
days: days.values,
|
|
585
649
|
months: months.values,
|
|
586
650
|
weekdays: weekdays.values,
|
|
587
|
-
and: (days.wildcard || weekdays.wildcard) && days.values.size !== 0 && weekdays.values.size !== 0
|
|
651
|
+
and: (days.wildcard || weekdays.wildcard) && days.values.size !== 0 && weekdays.values.size !== 0,
|
|
652
|
+
onDstOverlap: options?.onDstOverlap
|
|
588
653
|
})
|
|
589
654
|
))
|
|
590
655
|
}
|
|
@@ -618,7 +683,9 @@ export const parse = (cron: string, tz?: DateTime.TimeZone | string): Result.Res
|
|
|
618
683
|
* @category constructors
|
|
619
684
|
* @since 4.0.0
|
|
620
685
|
*/
|
|
621
|
-
export const parseUnsafe = (cron: string, tz?: DateTime.TimeZone | string
|
|
686
|
+
export const parseUnsafe = (cron: string, tz?: DateTime.TimeZone | string, options?: {
|
|
687
|
+
readonly onDstOverlap?: DstOverlapPolicy | undefined
|
|
688
|
+
}): Cron => Result.getOrThrow(parse(cron, tz, options))
|
|
622
689
|
|
|
623
690
|
/**
|
|
624
691
|
* Formats a `Cron` instance as a cron expression.
|
|
@@ -630,8 +697,8 @@ export const parseUnsafe = (cron: string, tz?: DateTime.TimeZone | string): Cron
|
|
|
630
697
|
*
|
|
631
698
|
* **Gotchas**
|
|
632
699
|
*
|
|
633
|
-
* Formatting drops the timezone information
|
|
634
|
-
* days and weekdays. Parsing the result is therefore not guaranteed to produce
|
|
700
|
+
* Formatting drops the timezone information, the `onDstOverlap` policy, and
|
|
701
|
+
* the `and` restriction between days and weekdays. Parsing the result is therefore not guaranteed to produce
|
|
635
702
|
* an equivalent schedule.
|
|
636
703
|
*
|
|
637
704
|
* **Example** (Formatting a cron expression)
|
|
@@ -777,7 +844,9 @@ const daysInMonth = (date: Date): number =>
|
|
|
777
844
|
*
|
|
778
845
|
* Searches for the next date and time when the cron schedule should trigger,
|
|
779
846
|
* starting after the specified date/time or after the current time when no
|
|
780
|
-
* date is provided.
|
|
847
|
+
* date is provided. The result is always strictly after the starting point.
|
|
848
|
+
* Repeated local times are included according to the schedule's
|
|
849
|
+
* `onDstOverlap` policy.
|
|
781
850
|
*
|
|
782
851
|
* **Example** (Finding the next occurrence)
|
|
783
852
|
*
|
|
@@ -812,6 +881,8 @@ export const next = (cron: Cron, now?: DateTime.DateTime.Input): Date => {
|
|
|
812
881
|
* **Details**
|
|
813
882
|
*
|
|
814
883
|
* When no date/time is provided, the search starts from the current time.
|
|
884
|
+
* Repeated local times are included according to the schedule's
|
|
885
|
+
* `onDstOverlap` policy.
|
|
815
886
|
*
|
|
816
887
|
* **Gotchas**
|
|
817
888
|
*
|
|
@@ -829,8 +900,28 @@ export const prev = (cron: Cron, now?: DateTime.DateTime.Input): Date => {
|
|
|
829
900
|
}
|
|
830
901
|
|
|
831
902
|
const stepCron = (cron: Cron, now: DateTime.DateTime.Input | undefined, direction: "next" | "prev"): Date => {
|
|
903
|
+
const start = now ?? new Date()
|
|
904
|
+
if (cron.onDstOverlap !== "both") {
|
|
905
|
+
return searchCron(cron, start, direction, cron.onDstOverlap)
|
|
906
|
+
}
|
|
907
|
+
// Both occurrences are eligible, so the result is the nearest of the two
|
|
908
|
+
// single-occurrence searches in the search direction.
|
|
909
|
+
const earlier = searchCron(cron, start, direction, "earlier")
|
|
910
|
+
const later = searchCron(cron, start, direction, "later")
|
|
911
|
+
if (direction === "next") {
|
|
912
|
+
return earlier <= later ? earlier : later
|
|
913
|
+
}
|
|
914
|
+
return earlier >= later ? earlier : later
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
const searchCron = (
|
|
918
|
+
cron: Cron,
|
|
919
|
+
now: DateTime.DateTime.Input,
|
|
920
|
+
direction: "next" | "prev",
|
|
921
|
+
onDstOverlap: "earlier" | "later"
|
|
922
|
+
): Date => {
|
|
832
923
|
const tz = Option.getOrUndefined(cron.tz)
|
|
833
|
-
const zoned = dateTime.makeZonedUnsafe(now
|
|
924
|
+
const zoned = dateTime.makeZonedUnsafe(now, {
|
|
834
925
|
timeZone: tz
|
|
835
926
|
})
|
|
836
927
|
|
|
@@ -844,28 +935,81 @@ const stepCron = (cron: Cron, now: DateTime.DateTime.Input | undefined, directio
|
|
|
844
935
|
(next: number, current: number) => next > current
|
|
845
936
|
|
|
846
937
|
const utc = tz !== undefined && dateTime.isTimeZoneNamed(tz) && tz.id === "UTC"
|
|
847
|
-
|
|
938
|
+
// Going backward, a candidate inside a gap is left in place: it resolves to
|
|
939
|
+
// the instant after the gap, and the range check below rejects it when that
|
|
940
|
+
// instant is not before the input.
|
|
941
|
+
const adjustDst = utc || reverse ? constVoid : (current: Date) => {
|
|
848
942
|
const adjusted = dateTime.makeZonedUnsafe(current, {
|
|
849
943
|
timeZone: zoned.zone,
|
|
850
|
-
adjustForTimeZone: true
|
|
851
|
-
disambiguation: reverse ? "later" : undefined
|
|
944
|
+
adjustForTimeZone: true
|
|
852
945
|
}).pipe(dateTime.toDate)
|
|
853
946
|
|
|
854
947
|
const drift = current.getTime() - adjusted.getTime()
|
|
855
|
-
if (
|
|
856
|
-
current.setTime(
|
|
948
|
+
if (drift > 0) {
|
|
949
|
+
current.setTime(current.getTime() + drift)
|
|
857
950
|
}
|
|
858
951
|
}
|
|
859
952
|
|
|
860
|
-
// Repeated wall times resolve to
|
|
861
|
-
//
|
|
862
|
-
const
|
|
863
|
-
|
|
953
|
+
// Repeated wall times resolve to the occurrence chosen by the policy. Gaps
|
|
954
|
+
// resolve to the instant after the gap under either disambiguation.
|
|
955
|
+
const disambiguation = onDstOverlap === "later" ? "later" : "compatible"
|
|
956
|
+
const resolve = (wallMillis: number) =>
|
|
957
|
+
dateTime.makeZonedUnsafe(wallMillis, {
|
|
864
958
|
timeZone: zoned.zone,
|
|
865
|
-
adjustForTimeZone: true
|
|
866
|
-
|
|
959
|
+
adjustForTimeZone: true,
|
|
960
|
+
disambiguation
|
|
961
|
+
}).epochMilliseconds
|
|
962
|
+
|
|
963
|
+
// Inside a fold, wall-clock order differs from instant order, so a candidate
|
|
964
|
+
// can resolve to an instant on the wrong side of the input.
|
|
965
|
+
const isOutOfRange = utc ? constFalse : reverse ?
|
|
966
|
+
(wallMillis: number) => resolve(wallMillis) >= zoned.epochMilliseconds :
|
|
967
|
+
(wallMillis: number) => resolve(wallMillis) <= zoned.epochMilliseconds
|
|
968
|
+
|
|
969
|
+
// A fold near the input shows as a larger offset a day before it than a day
|
|
970
|
+
// after it (DateTime disambiguation assumes the same single transition).
|
|
971
|
+
// Inside a fold the resolved instant moves in the same direction as the wall
|
|
972
|
+
// time, so the rejected candidates form one interval no longer than the
|
|
973
|
+
// fold: when the wall time one fold length ahead is in range, binary search
|
|
974
|
+
// for the first second in range instead of stepping through the interval.
|
|
975
|
+
// Gaps break that ordering, so they keep stepping one second at a time.
|
|
976
|
+
let foldSeconds: number | undefined
|
|
977
|
+
const skipOutOfRange = (current: Date) => {
|
|
978
|
+
if (foldSeconds === undefined) {
|
|
979
|
+
const offsetAt = (millis: number) =>
|
|
980
|
+
dateTime.zonedOffset(dateTime.makeZonedUnsafe(millis, { timeZone: zoned.zone }))
|
|
981
|
+
foldSeconds = Math.floor(
|
|
982
|
+
(offsetAt(zoned.epochMilliseconds - 86_400_000) - offsetAt(zoned.epochMilliseconds + 86_400_000)) / 1000
|
|
983
|
+
)
|
|
984
|
+
}
|
|
985
|
+
const after = (seconds: number) => current.getTime() + tick * seconds * 1000
|
|
986
|
+
let outOfRange = 0
|
|
987
|
+
let inRange = 1
|
|
988
|
+
if (foldSeconds > 0 && !isOutOfRange(after(foldSeconds))) {
|
|
989
|
+
inRange = foldSeconds
|
|
990
|
+
while (inRange - outOfRange > 1) {
|
|
991
|
+
const mid = outOfRange + Math.floor((inRange - outOfRange) / 2)
|
|
992
|
+
if (isOutOfRange(after(mid))) {
|
|
993
|
+
outOfRange = mid
|
|
994
|
+
} else {
|
|
995
|
+
inRange = mid
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
current.setTime(after(inRange))
|
|
1000
|
+
}
|
|
867
1001
|
|
|
868
1002
|
const result = dateTime.mutate(zoned, (current) => {
|
|
1003
|
+
// When the input is in the occurrence the policy excludes, eligible
|
|
1004
|
+
// instants of the same fold can lie behind its wall time in the search
|
|
1005
|
+
// direction. Start from the wall time of the input under the policy's
|
|
1006
|
+
// offset so they are visited; candidates that resolve on the wrong side
|
|
1007
|
+
// of the input are skipped below.
|
|
1008
|
+
const shift = utc ? 0 : zoned.epochMilliseconds - resolve(current.getTime())
|
|
1009
|
+
if (reverse ? shift > 0 : shift < 0) {
|
|
1010
|
+
current.setTime(current.getTime() + shift)
|
|
1011
|
+
}
|
|
1012
|
+
|
|
869
1013
|
// Start from the nearest whole second strictly past the input in the search
|
|
870
1014
|
// direction. Going backward, a fractional input already has one.
|
|
871
1015
|
const offset = reverse && current.getUTCMilliseconds() > 0 ? 0 : tick
|
|
@@ -1011,8 +1155,8 @@ const stepCron = (cron: Cron, now: DateTime.DateTime.Input | undefined, directio
|
|
|
1011
1155
|
}
|
|
1012
1156
|
}
|
|
1013
1157
|
|
|
1014
|
-
if (
|
|
1015
|
-
|
|
1158
|
+
if (isOutOfRange(current.getTime())) {
|
|
1159
|
+
skipOutOfRange(current)
|
|
1016
1160
|
i = -1 // skipped fold candidates do not count against the search budget
|
|
1017
1161
|
continue
|
|
1018
1162
|
}
|
|
@@ -1021,7 +1165,7 @@ const stepCron = (cron: Cron, now: DateTime.DateTime.Input | undefined, directio
|
|
|
1021
1165
|
}
|
|
1022
1166
|
|
|
1023
1167
|
throw new Error("Unable to find cron date")
|
|
1024
|
-
})
|
|
1168
|
+
}, { disambiguation })
|
|
1025
1169
|
|
|
1026
1170
|
return dateTime.toDateUtc(result)
|
|
1027
1171
|
}
|
|
@@ -1084,7 +1228,8 @@ export const sequence = function*(cron: Cron, now?: DateTime.DateTime.Input): It
|
|
|
1084
1228
|
* **Details**
|
|
1085
1229
|
*
|
|
1086
1230
|
* This comparison checks the optional timezone, the `and` day-matching mode,
|
|
1087
|
-
* seconds, minutes, hours, days, months, and
|
|
1231
|
+
* the `onDstOverlap` policy, seconds, minutes, hours, days, months, and
|
|
1232
|
+
* weekdays.
|
|
1088
1233
|
*
|
|
1089
1234
|
* **Example** (Comparing schedules with equivalence)
|
|
1090
1235
|
*
|
|
@@ -1119,6 +1264,7 @@ export const sequence = function*(cron: Cron, now?: DateTime.DateTime.Input): It
|
|
|
1119
1264
|
export const Equivalence: Equ.Equivalence<Cron> = Equ.make((self, that) =>
|
|
1120
1265
|
Equal.equals(self.tz, that.tz) &&
|
|
1121
1266
|
self.and === that.and &&
|
|
1267
|
+
self.onDstOverlap === that.onDstOverlap &&
|
|
1122
1268
|
restrictionsEquals(self.seconds, that.seconds) &&
|
|
1123
1269
|
restrictionsEquals(self.minutes, that.minutes) &&
|
|
1124
1270
|
restrictionsEquals(self.hours, that.hours) &&
|
|
@@ -1143,7 +1289,8 @@ const restrictionsEquals = (self: ReadonlySet<number>, that: ReadonlySet<number>
|
|
|
1143
1289
|
* **Details**
|
|
1144
1290
|
*
|
|
1145
1291
|
* The comparison checks the optional timezone, the `and` day-matching mode,
|
|
1146
|
-
* seconds, minutes, hours, days, months, and
|
|
1292
|
+
* the `onDstOverlap` policy, seconds, minutes, hours, days, months, and
|
|
1293
|
+
* weekdays.
|
|
1147
1294
|
*
|
|
1148
1295
|
* **Example** (Checking schedule equality)
|
|
1149
1296
|
*
|
|
@@ -1189,7 +1336,8 @@ export const equals: {
|
|
|
1189
1336
|
* **Details**
|
|
1190
1337
|
*
|
|
1191
1338
|
* The comparison checks the optional timezone, the `and` day-matching mode,
|
|
1192
|
-
* seconds, minutes, hours, days, months, and
|
|
1339
|
+
* the `onDstOverlap` policy, seconds, minutes, hours, days, months, and
|
|
1340
|
+
* weekdays.
|
|
1193
1341
|
*
|
|
1194
1342
|
* **Example** (Checking schedule equality)
|
|
1195
1343
|
*
|
|
@@ -1235,7 +1383,8 @@ export const equals: {
|
|
|
1235
1383
|
* **Details**
|
|
1236
1384
|
*
|
|
1237
1385
|
* The comparison checks the optional timezone, the `and` day-matching mode,
|
|
1238
|
-
* seconds, minutes, hours, days, months, and
|
|
1386
|
+
* the `onDstOverlap` policy, seconds, minutes, hours, days, months, and
|
|
1387
|
+
* weekdays.
|
|
1239
1388
|
*
|
|
1240
1389
|
* **Example** (Checking schedule equality)
|
|
1241
1390
|
*
|