effect 4.0.7 → 4.1.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/README.md +31 -1
- package/THIRD_PARTY_NOTICES.md +62 -0
- package/dist/BigDecimal.d.ts +139 -7
- package/dist/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +86 -14
- 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 +9 -3
- 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/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 +164 -7
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +11 -1
- package/dist/Effect.js.map +1 -1
- package/dist/Equal.d.ts +2 -2
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +3 -3
- package/dist/Equal.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/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 +3 -2
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +5 -4
- package/dist/Hash.js.map +1 -1
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +11 -8
- package/dist/Iterable.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/Path.d.ts.map +1 -1
- package/dist/Path.js +5 -1
- package/dist/Path.js.map +1 -1
- package/dist/Pool.d.ts +51 -0
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +61 -10
- package/dist/Pool.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/Schedule.d.ts +18 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +7 -2
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +668 -42
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +652 -1
- package/dist/Schema.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/SchemaRepresentation.d.ts +18 -2
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +20 -2
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +10 -5
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +8 -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 +40 -0
- package/dist/Semaphore.js.map +1 -1
- package/dist/Stream.d.ts +13 -4
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +9 -0
- package/dist/Stream.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/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/McpClient.d.ts +171 -19
- package/dist/ai/McpClient.d.ts.map +1 -1
- package/dist/ai/McpClient.js +277 -66
- package/dist/ai/McpClient.js.map +1 -1
- package/dist/ai/McpSchema.d.ts +108 -0
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpSchema.js +99 -0
- package/dist/ai/McpSchema.js.map +1 -1
- package/dist/ai/McpServer.d.ts +744 -29
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +763 -136
- 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.map +1 -1
- package/dist/ai/Prompt.js +20 -11
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +1 -25
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +1 -10
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +19 -1
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js +5 -7
- package/dist/ai/Tool.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 +89 -15
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +7 -6
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +7 -6
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +7 -6
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +7 -6
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +60 -17
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +25 -0
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +8 -6
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpSkills.d.ts +2 -0
- package/dist/ai/internal/mcpSkills.d.ts.map +1 -0
- package/dist/ai/internal/mcpSkills.js +428 -0
- package/dist/ai/internal/mcpSkills.js.map +1 -0
- package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
- package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
- package/dist/cli/Argument.d.ts +6 -0
- package/dist/cli/Argument.d.ts.map +1 -1
- package/dist/cli/Argument.js +2 -0
- package/dist/cli/Argument.js.map +1 -1
- package/dist/cli/CliOutput.d.ts +65 -1
- package/dist/cli/CliOutput.d.ts.map +1 -1
- package/dist/cli/CliOutput.js +94 -37
- package/dist/cli/CliOutput.js.map +1 -1
- package/dist/cli/Command.d.ts +23 -0
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +8 -0
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Flag.d.ts +107 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +37 -0
- package/dist/cli/Flag.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 +6 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +2 -0
- 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/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 +15 -5
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/Reply.d.ts +1 -1
- package/dist/cluster/Reply.d.ts.map +1 -1
- package/dist/cluster/Reply.js.map +1 -1
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +93 -28
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +72 -6
- 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/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 +23 -8
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +15 -7
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/crypto/Aead.d.ts +323 -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 +236 -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 +324 -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 +341 -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 +390 -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 +278 -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 +449 -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 +80 -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 +171 -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/encoding/Base64Url.d.ts.map +1 -1
- package/dist/encoding/Base64Url.js +29 -5
- 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/Ndjson.d.ts +5 -4
- package/dist/encoding/Ndjson.d.ts.map +1 -1
- package/dist/encoding/Ndjson.js +6 -5
- package/dist/encoding/Ndjson.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 +3 -1
- package/dist/encoding/Sse.d.ts.map +1 -1
- package/dist/encoding/Sse.js +5 -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 +104 -16
- 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 +126 -4
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +207 -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 +10 -1
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +45 -22
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +336 -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/EventLogServerUnencrypted.d.ts +17 -0
- package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.js +14 -2
- package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.d.ts +26 -3
- package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.js +63 -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.js +2 -2
- 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/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/graphql/GraphQLClient.d.ts +3 -1
- package/dist/graphql/GraphQLClient.d.ts.map +1 -1
- package/dist/graphql/GraphQLClient.js.map +1 -1
- package/dist/graphql/GraphQLClientError.d.ts +14 -9
- package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
- package/dist/graphql/GraphQLClientError.js +14 -21
- package/dist/graphql/GraphQLClientError.js.map +1 -1
- package/dist/graphql/GraphQLProtocol.d.ts +12 -3
- package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
- package/dist/graphql/GraphQLProtocol.js +4 -1
- package/dist/graphql/GraphQLProtocol.js.map +1 -1
- package/dist/http/Cookies.d.ts +172 -0
- package/dist/http/Cookies.d.ts.map +1 -1
- package/dist/http/Cookies.js +143 -1
- 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 +268 -15
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +140 -7
- package/dist/http/HttpClient.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 +2 -3
- 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/HttpServerRequest.d.ts +5 -2
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +44 -39
- 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/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/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/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/decompression.js +3 -2
- package/dist/http/internal/decompression.js.map +1 -1
- package/dist/http/internal/mimeTypes.d.ts +4 -1
- package/dist/http/internal/mimeTypes.d.ts.map +1 -1
- package/dist/http/internal/mimeTypes.js +4 -1
- package/dist/http/internal/mimeTypes.js.map +1 -1
- package/dist/http/internal/urlParams.js +8 -0
- package/dist/http/internal/urlParams.js.map +1 -1
- package/dist/http-api/HttpApiBuilder.js +19 -5
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +63 -0
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +51 -0
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +14 -5
- 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 +76 -14
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +54 -1
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- 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/dateTime.js +49 -24
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +35 -14
- package/dist/internal/effect.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 +808 -0
- package/dist/internal/glob.js.map +1 -0
- package/dist/internal/graphql.js +21 -7
- package/dist/internal/graphql.js.map +1 -1
- package/dist/internal/graphqlHeaders.d.ts +7 -0
- package/dist/internal/graphqlHeaders.d.ts.map +1 -1
- package/dist/internal/graphqlHeaders.js +11 -0
- package/dist/internal/graphqlHeaders.js.map +1 -1
- package/dist/internal/matcher.js +10 -0
- 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/request.js +29 -42
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.js +7 -8
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +6 -3
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- 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/jose/JoseError.d.ts +285 -0
- package/dist/jose/JoseError.d.ts.map +1 -0
- package/dist/jose/JoseError.js +269 -0
- package/dist/jose/JoseError.js.map +1 -0
- package/dist/jose/Jwe.d.ts +128 -0
- package/dist/jose/Jwe.d.ts.map +1 -0
- package/dist/jose/Jwe.js +134 -0
- package/dist/jose/Jwe.js.map +1 -0
- package/dist/jose/Jwk.d.ts +597 -0
- package/dist/jose/Jwk.d.ts.map +1 -0
- package/dist/jose/Jwk.js +503 -0
- package/dist/jose/Jwk.js.map +1 -0
- package/dist/jose/Jwks.d.ts +236 -0
- package/dist/jose/Jwks.d.ts.map +1 -0
- package/dist/jose/Jwks.js +306 -0
- package/dist/jose/Jwks.js.map +1 -0
- package/dist/jose/Jws.d.ts +177 -0
- package/dist/jose/Jws.d.ts.map +1 -0
- package/dist/jose/Jws.js +183 -0
- package/dist/jose/Jws.js.map +1 -0
- package/dist/jose/Jwt.d.ts +270 -0
- package/dist/jose/Jwt.d.ts.map +1 -0
- package/dist/jose/Jwt.js +293 -0
- package/dist/jose/Jwt.js.map +1 -0
- package/dist/jose/index.d.ts +51 -0
- package/dist/jose/index.d.ts.map +1 -0
- package/dist/jose/index.js +52 -0
- package/dist/jose/index.js.map +1 -0
- package/dist/jose/internal/compact.d.ts +2 -0
- package/dist/jose/internal/compact.d.ts.map +1 -0
- package/dist/jose/internal/compact.js +179 -0
- package/dist/jose/internal/compact.js.map +1 -0
- package/dist/net/Host.d.ts.map +1 -1
- package/dist/net/Host.js +5 -10
- package/dist/net/Host.js.map +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/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/OtlpSerialization.d.ts +1 -1
- package/dist/observability/OtlpSerialization.d.ts.map +1 -1
- package/dist/observability/OtlpSerialization.js +10 -4
- package/dist/observability/OtlpSerialization.js.map +1 -1
- package/dist/observability/internal/otlpProtobuf.js +3 -3
- package/dist/observability/internal/otlpProtobuf.js.map +1 -1
- package/dist/observability/internal/protobuf.js +6 -0
- package/dist/observability/internal/protobuf.js.map +1 -1
- package/dist/persistence/CircuitBreaker.d.ts +98 -38
- package/dist/persistence/CircuitBreaker.d.ts.map +1 -1
- package/dist/persistence/CircuitBreaker.js +67 -29
- package/dist/persistence/CircuitBreaker.js.map +1 -1
- 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/RateLimiter.d.ts +8 -0
- package/dist/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/persistence/RateLimiter.js +63 -12
- package/dist/persistence/RateLimiter.js.map +1 -1
- package/dist/persistence/index.d.ts +1 -1
- package/dist/persistence/index.js +1 -1
- package/dist/process/ChildProcess.d.ts +207 -67
- 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 +5 -0
- package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
- 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/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 +17 -7
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/rpc/Rpc.d.ts +1 -1
- package/dist/rpc/Rpc.d.ts.map +1 -1
- package/dist/rpc/Rpc.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +28 -1
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +78 -27
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcMessage.d.ts +13 -3
- 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.map +1 -1
- package/dist/rpc/RpcSerialization.js +6 -0
- 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 -66
- package/dist/rpc/RpcServer.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 +9 -20
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +20 -53
- 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 +38 -3
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +9 -12
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/Statement.d.ts +61 -9
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +24 -33
- 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/Workflow.d.ts +4 -0
- package/dist/workflow/Workflow.d.ts.map +1 -1
- package/dist/workflow/Workflow.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +5 -0
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/dist/workflow/internal/crypto.js +9 -8
- package/dist/workflow/internal/crypto.js.map +1 -1
- package/package.json +7 -1
- package/src/BigDecimal.ts +173 -16
- package/src/Channel.ts +17 -11
- package/src/Config.ts +7 -1
- package/src/Context.ts +34 -10
- package/src/Cron.ts +178 -29
- package/src/Duration.ts +140 -0
- package/src/Effect.ts +914 -85
- package/src/Equal.ts +3 -3
- package/src/FileSystem.ts +65 -4
- package/src/Glob.ts +205 -0
- package/src/Hash.ts +5 -4
- package/src/Iterable.ts +8 -5
- package/src/Match.ts +127 -0
- package/src/Path.ts +6 -1
- package/src/Pool.ts +75 -16
- package/src/Random.ts +3 -3
- package/src/RcMap.ts +5 -1
- package/src/Schedule.ts +26 -3
- package/src/Schema.ts +1191 -63
- package/src/SchemaGetter.ts +27 -11
- package/src/SchemaRepresentation.ts +23 -2
- package/src/SchemaTransformation.ts +10 -5
- package/src/ScopedCache.ts +5 -9
- package/src/Semaphore.ts +141 -0
- package/src/Stream.ts +15 -6
- package/src/Terminal.ts +19 -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/McpClient.ts +488 -91
- package/src/ai/McpSchema.ts +119 -0
- package/src/ai/McpServer.ts +1525 -319
- package/src/ai/McpTest.ts +380 -0
- package/src/ai/Prompt.ts +16 -11
- package/src/ai/Response.ts +2 -22
- package/src/ai/Tool.ts +32 -18
- package/src/ai/index.ts +6 -0
- package/src/ai/internal/mcpCore.ts +243 -56
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +7 -8
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +7 -8
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +7 -8
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +7 -8
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +56 -17
- package/src/ai/internal/mcpProtocol.ts +44 -0
- package/src/ai/internal/mcpRuntime.ts +15 -8
- package/src/ai/internal/mcpSkills.ts +480 -0
- package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
- package/src/cli/Argument.ts +6 -0
- package/src/cli/CliOutput.ts +117 -49
- package/src/cli/Command.ts +23 -0
- package/src/cli/Flag.ts +107 -0
- package/src/cli/HelpDoc.ts +18 -1
- package/src/cli/Param.ts +6 -0
- package/src/cli/Primitive.ts +16 -1
- package/src/cli/Prompt.ts +1 -0
- package/src/cli/internal/help.ts +21 -9
- package/src/cluster/ClusterWorkflowEngine.ts +22 -8
- package/src/cluster/Reply.ts +1 -1
- package/src/cluster/Sharding.ts +96 -26
- package/src/cluster/ShardingConfig.ts +41 -3
- package/src/cluster/SingleRunner.ts +3 -3
- package/src/cluster/SqlMessageStorage.ts +49 -17
- package/src/cluster/SqlRunnerStorage.ts +37 -27
- package/src/cluster/internal/entityManager.ts +24 -10
- 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 +741 -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 +84 -0
- package/src/crypto/index.ts +78 -0
- package/src/crypto/internal/asymmetric.ts +330 -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 +242 -0
- package/src/crypto/internal/md5.ts +170 -0
- package/src/crypto/internal/webCrypto.ts +150 -0
- package/src/encoding/Base64Url.ts +32 -5
- package/src/encoding/Csv.ts +1298 -0
- package/src/encoding/Hex.ts +3 -2
- package/src/encoding/Ndjson.ts +6 -5
- package/src/encoding/SchemaBinary.ts +40 -4
- package/src/encoding/Sse.ts +5 -3
- package/src/encoding/Toml.ts +85 -20
- 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 +347 -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 +54 -20
- package/src/eventlog/EventLogServerEncrypted.ts +1135 -67
- package/src/eventlog/EventLogServerUnencrypted.ts +19 -2
- package/src/eventlog/EventLogSessionAuth.ts +82 -70
- package/src/eventlog/EventRow.ts +12 -3
- package/src/eventlog/SqlEventJournal.ts +2 -2
- 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/identityRootSecretDerivation.ts +93 -123
- package/src/eventlog/internal/remoteCompaction.ts +92 -0
- package/src/graphql/GraphQLClient.ts +3 -1
- package/src/graphql/GraphQLClientError.ts +15 -22
- package/src/graphql/GraphQLProtocol.ts +12 -3
- package/src/http/Cookies.ts +281 -1
- package/src/http/FetchHttpClient.ts +88 -16
- package/src/http/HttpClient.ts +299 -33
- package/src/http/HttpClientRequest.ts +12 -9
- package/src/http/HttpClientResponse.ts +3 -2
- package/src/http/HttpMethod.ts +10 -2
- package/src/http/HttpServerRequest.ts +76 -53
- package/src/http/HttpServerResponse.ts +3 -2
- package/src/http/HttpTraceContext.ts +7 -4
- package/src/http/ProblemDetails.ts +149 -0
- package/src/http/index.ts +6 -0
- package/src/http/internal/decompression.ts +4 -4
- package/src/http/internal/mimeTypes.ts +4 -1
- package/src/http/internal/urlParams.ts +8 -0
- package/src/http-api/HttpApiBuilder.ts +24 -12
- package/src/http-api/HttpApiClient.ts +67 -1
- package/src/http-api/HttpApiEndpoint.ts +14 -5
- package/src/http-api/HttpApiError.ts +250 -0
- package/src/http-api/HttpApiMiddleware.ts +95 -1
- package/src/http-api/HttpApiSchema.ts +106 -15
- package/src/index.ts +6 -6
- package/src/internal/dateTime.ts +54 -24
- package/src/internal/effect.ts +40 -18
- package/src/internal/glob.ts +952 -0
- package/src/internal/graphql.ts +27 -9
- package/src/internal/graphqlHeaders.ts +13 -0
- package/src/internal/matcher.ts +17 -0
- package/src/internal/persistence.ts +11 -0
- package/src/internal/rcRef.ts +4 -1
- package/src/internal/request.ts +51 -58
- package/src/internal/schema/fromJsonSchemaDocument.ts +11 -10
- package/src/internal/schema/toCodeDocument.ts +7 -3
- 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/jose/JoseError.ts +329 -0
- package/src/jose/Jwe.ts +196 -0
- package/src/jose/Jwk.ts +777 -0
- package/src/jose/Jwks.ts +418 -0
- package/src/jose/Jws.ts +312 -0
- package/src/jose/Jwt.ts +493 -0
- package/src/jose/index.ts +58 -0
- package/src/jose/internal/compact.ts +195 -0
- package/src/net/Host.ts +5 -10
- package/src/observability/Otlp.ts +21 -4
- package/src/observability/OtlpResource.ts +9 -1
- package/src/observability/OtlpSerialization.ts +13 -5
- package/src/observability/internal/otlpProtobuf.ts +6 -6
- package/src/observability/internal/protobuf.ts +10 -0
- package/src/persistence/CircuitBreaker.ts +113 -48
- package/src/persistence/KeyValueStore.ts +219 -22
- package/src/persistence/PersistedQueue.ts +128 -59
- package/src/persistence/Persistence.ts +20 -13
- package/src/persistence/RateLimiter.ts +84 -15
- package/src/persistence/index.ts +1 -1
- package/src/process/ChildProcess.ts +255 -260
- package/src/process/ChildProcessSpawner.ts +5 -0
- package/src/process/CommandLine.ts +630 -0
- package/src/process/index.ts +6 -0
- package/src/reactivity/Atom.ts +5 -5
- package/src/reactivity/AtomRegistry.ts +20 -9
- package/src/rpc/Rpc.ts +3 -1
- package/src/rpc/RpcClient.ts +94 -38
- package/src/rpc/RpcMessage.ts +13 -3
- package/src/rpc/RpcSerialization.ts +3 -0
- package/src/rpc/RpcServer.ts +176 -78
- package/src/schema/Model.ts +26 -3
- package/src/sql/Migrator.ts +38 -80
- package/src/sql/MigratorFileSystem.ts +71 -0
- package/src/sql/SqlClient.ts +45 -24
- package/src/sql/Statement.ts +60 -29
- package/src/sql/index.ts +1 -1
- package/src/testing/index.ts +0 -6
- package/src/workflow/Workflow.ts +4 -0
- package/src/workflow/WorkflowEngine.ts +5 -0
- 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/internal/graphql.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isReadonlyArrayNonEmpty, type NonEmptyReadonlyArray } from "../Array.ts"
|
|
2
|
+
import * as Clock from "../Clock.ts"
|
|
2
3
|
import * as Context from "../Context.ts"
|
|
3
4
|
import * as Effect from "../Effect.ts"
|
|
4
5
|
import type * as GraphQL from "../graphql/GraphQL.ts"
|
|
@@ -10,10 +11,12 @@ import {
|
|
|
10
11
|
GraphQLClientError,
|
|
11
12
|
type GraphQLError,
|
|
12
13
|
type Reason,
|
|
13
|
-
ResponseError
|
|
14
|
+
ResponseError,
|
|
15
|
+
TransportError
|
|
14
16
|
} from "../graphql/GraphQLClientError.ts"
|
|
15
17
|
import type { ExecutionResult, GraphQLProtocol, GraphQLRequest } from "../graphql/GraphQLProtocol.ts"
|
|
16
18
|
import * as Schema from "../Schema.ts"
|
|
19
|
+
import { parseRetryAfter } from "./graphqlHeaders.ts"
|
|
17
20
|
|
|
18
21
|
/**
|
|
19
22
|
* Builds a response error with raw data and transport metadata.
|
|
@@ -32,6 +35,10 @@ export const responseError = (
|
|
|
32
35
|
...(result?.headers === undefined ? {} : { headers: result.headers })
|
|
33
36
|
})
|
|
34
37
|
|
|
38
|
+
/** A result without an HTTP status, such as a graphql-ws event, counts as 2xx. */
|
|
39
|
+
const isStatusOk = (result: ExecutionResult): boolean =>
|
|
40
|
+
result.status === undefined || (result.status >= 200 && result.status < 300)
|
|
41
|
+
|
|
35
42
|
/**
|
|
36
43
|
* Raw responses for partial results, used by resolvers to preserve error
|
|
37
44
|
* metadata. Mock client results have no entry.
|
|
@@ -210,27 +217,38 @@ export const makeCodec = <Op extends GraphQL.Any>(operation: Op) => {
|
|
|
210
217
|
Effect.catch(decode(data), schemaFail((description) => new DecodeError({ description })))
|
|
211
218
|
|
|
212
219
|
// GraphQL requires errors when data is null or missing. Check before decoding,
|
|
213
|
-
// since schemas such as Schema.Json accept null.
|
|
220
|
+
// since schemas such as Schema.Json accept null. A non-2xx result never
|
|
221
|
+
// succeeds: without errors it is a TransportError carrying the HTTP metadata.
|
|
214
222
|
const failResponse = (result: ExecutionResult): Effect.Effect<never, GraphQLClientError> => {
|
|
215
223
|
const errors = result.errors ?? []
|
|
216
|
-
return Effect.fail(fail(
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
)
|
|
224
|
+
if (isReadonlyArrayNonEmpty(errors)) return Effect.fail(fail(responseError(result, errors)))
|
|
225
|
+
if (isStatusOk(result)) {
|
|
226
|
+
return Effect.fail(fail(new DecodeError({ description: "data is null or missing without errors" })))
|
|
227
|
+
}
|
|
228
|
+
return Clock.clockWith((clock) =>
|
|
229
|
+
Effect.fail(fail(
|
|
230
|
+
new TransportError({
|
|
231
|
+
description: `HTTP ${result.status} response without GraphQL errors`,
|
|
232
|
+
status: result.status,
|
|
233
|
+
headers: result.headers,
|
|
234
|
+
retryAfter: parseRetryAfter(result.headers?.["retry-after"], clock.currentTimeMillisUnsafe())
|
|
235
|
+
})
|
|
236
|
+
))
|
|
237
|
+
)
|
|
221
238
|
}
|
|
222
239
|
|
|
223
240
|
const decodeStrict = (
|
|
224
241
|
result: ExecutionResult
|
|
225
242
|
): Effect.Effect<GraphQL.Result<Op>, GraphQLClientError, Op["result"]["DecodingServices"]> =>
|
|
226
|
-
isReadonlyArrayNonEmpty(result.errors ?? []) || result.data === null ||
|
|
243
|
+
!isStatusOk(result) || isReadonlyArrayNonEmpty(result.errors ?? []) || result.data === null ||
|
|
244
|
+
result.data === undefined
|
|
227
245
|
? failResponse(result)
|
|
228
246
|
: decodeData(result.data)
|
|
229
247
|
|
|
230
248
|
const decodePartial = (
|
|
231
249
|
result: ExecutionResult
|
|
232
250
|
): Effect.Effect<PartialResult<GraphQL.Result<Op>>, GraphQLClientError, Op["result"]["DecodingServices"]> => {
|
|
233
|
-
if (result.data === null || result.data === undefined) return failResponse(result)
|
|
251
|
+
if (!isStatusOk(result) || result.data === null || result.data === undefined) return failResponse(result)
|
|
234
252
|
return Effect.map(decodeData(result.data), (data): PartialResult<GraphQL.Result<Op>> => {
|
|
235
253
|
const partial = { data, errors: result.errors ?? [] }
|
|
236
254
|
partialResponses.set(partial, result)
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type * as Duration from "../Duration.ts"
|
|
1
2
|
import * as Headers from "../http/Headers.ts"
|
|
3
|
+
import * as Result from "../Result.ts"
|
|
2
4
|
import * as Schema from "../Schema.ts"
|
|
3
5
|
import * as SchemaGetter from "../SchemaGetter.ts"
|
|
4
6
|
|
|
@@ -9,3 +11,14 @@ export const HeadersSchema = Schema.Record(Schema.String, Schema.String).pipe(
|
|
|
9
11
|
encode: SchemaGetter.transform((headers) => ({ ...headers }))
|
|
10
12
|
})
|
|
11
13
|
)
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Parses a `Retry-After` header value, either whole seconds or an HTTP date,
|
|
17
|
+
* into a `Duration` measured from `now` (epoch milliseconds). Anything else,
|
|
18
|
+
* such as `1.5` or `-1`, yields `undefined`.
|
|
19
|
+
*/
|
|
20
|
+
export const parseRetryAfter = (value: string | undefined, now: number): Duration.Duration | undefined => {
|
|
21
|
+
if (value === undefined) return undefined
|
|
22
|
+
const retryAfter = Headers.parseRetryAfter(value)
|
|
23
|
+
return Result.isSuccess(retryAfter) ? Headers.retryAfterDelay(retryAfter.success, now) : undefined
|
|
24
|
+
}
|
package/src/internal/matcher.ts
CHANGED
|
@@ -511,6 +511,23 @@ export const tags = discriminators("_tag")
|
|
|
511
511
|
/** @internal */
|
|
512
512
|
export const tagsExhaustive = discriminatorsExhaustive("_tag")
|
|
513
513
|
|
|
514
|
+
/** @internal */
|
|
515
|
+
export const literals = (fields: object) => {
|
|
516
|
+
const predicate = makeWhen(
|
|
517
|
+
(arg: any) =>
|
|
518
|
+
(typeof arg === "string" || typeof arg === "number") && Object.hasOwn(fields, arg) &&
|
|
519
|
+
(fields as any)[arg] !== undefined,
|
|
520
|
+
(data: any) => (fields as any)[data](data)
|
|
521
|
+
)
|
|
522
|
+
return (self: any): any => self.add(predicate)
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
/** @internal */
|
|
526
|
+
export const literalsExhaustive = (fields: object) => {
|
|
527
|
+
const addCases = literals(fields)
|
|
528
|
+
return (matcher: any): any => exhaustive(addCases(matcher))
|
|
529
|
+
}
|
|
530
|
+
|
|
514
531
|
/** @internal */
|
|
515
532
|
export const not = <
|
|
516
533
|
R,
|
|
@@ -1,2 +1,13 @@
|
|
|
1
1
|
/** @internal */
|
|
2
2
|
export const sqlCleanupBatchSize = 1000
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Key prefix for a persistence store. The store id is escaped so the namespace
|
|
6
|
+
* always ends at its first `:`, and distinct store / key pairs never collide.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export const storeNamespace = (storeId: string): string => `${storeId.replace(/%/g, "%25").replace(/:/g, "%3A")}:`
|
|
11
|
+
|
|
12
|
+
/** @internal */
|
|
13
|
+
export const escapeRedisGlob = (pattern: string): string => pattern.replace(/[\\*?[\]]/g, "\\$&")
|
package/src/internal/rcRef.ts
CHANGED
|
@@ -225,7 +225,10 @@ const release = <A, E>(self: RcRefImpl<A, E>, state: State.Acquired<A>): Effect.
|
|
|
225
225
|
Effect.flatMap(restore(Effect.sleep(idleTimeToLive)), () => {
|
|
226
226
|
if (self.state === state && state.refCount === 0) {
|
|
227
227
|
self.state = stateEmpty
|
|
228
|
-
return Scope.close(state.scope, Exit.void)
|
|
228
|
+
return Effect.ignoreCause(Scope.close(state.scope, Exit.void), {
|
|
229
|
+
log: "Unhandled",
|
|
230
|
+
message: "Unhandled error in RcRef finalizer"
|
|
231
|
+
})
|
|
229
232
|
}
|
|
230
233
|
return Effect.void
|
|
231
234
|
})
|
package/src/internal/request.ts
CHANGED
|
@@ -96,10 +96,10 @@ const makeBatchMap = (resolver: RequestResolver<any>): BatchMap => {
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
interface Batch {
|
|
99
|
-
key: unknown
|
|
100
|
-
context: Context.Context<never>
|
|
101
|
-
resolver: RequestResolver<any>
|
|
102
|
-
map: BatchMap
|
|
99
|
+
readonly key: unknown
|
|
100
|
+
readonly context: Context.Context<never>
|
|
101
|
+
readonly resolver: RequestResolver<any>
|
|
102
|
+
readonly map: BatchMap
|
|
103
103
|
readonly entrySet: Set<Request.Entry<any>>
|
|
104
104
|
readonly entries: Set<Request.Entry<any>>
|
|
105
105
|
readonly delayEffect: Effect<void>
|
|
@@ -107,9 +107,53 @@ interface Batch {
|
|
|
107
107
|
fiber?: Fiber<unknown, unknown> | undefined
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
const batchPool: Array<Batch> = []
|
|
111
110
|
const pendingBatches = new WeakMap<RequestResolver<any>, BatchMap>()
|
|
112
111
|
|
|
112
|
+
// Batches are built outside `addEntry` so their callbacks do not share a closure
|
|
113
|
+
// context with per-request entries, which would keep completed requests alive.
|
|
114
|
+
const makeBatch = (
|
|
115
|
+
key: unknown,
|
|
116
|
+
context: Context.Context<never>,
|
|
117
|
+
resolver: RequestResolver<any>,
|
|
118
|
+
map: BatchMap
|
|
119
|
+
): Batch => {
|
|
120
|
+
const batch: Batch = {
|
|
121
|
+
key,
|
|
122
|
+
context,
|
|
123
|
+
resolver,
|
|
124
|
+
map,
|
|
125
|
+
entrySet: new Set(),
|
|
126
|
+
entries: new Set(),
|
|
127
|
+
delayEffect: effect.flatMap(
|
|
128
|
+
withFiber((delayFiber) => {
|
|
129
|
+
// Reentrant delay callbacks may fill the batch and interrupt this fiber.
|
|
130
|
+
batch.fiber = delayFiber
|
|
131
|
+
return batch.resolver.delay
|
|
132
|
+
}),
|
|
133
|
+
(_) => runBatch(batch)
|
|
134
|
+
) as Effect<void>,
|
|
135
|
+
run: effect.onExit(
|
|
136
|
+
effect.suspend(() =>
|
|
137
|
+
batch.resolver.runAll(Array.from(batch.entries) as NonEmptyArray<Request.Entry<any>>, batch.key)
|
|
138
|
+
),
|
|
139
|
+
(exit) => {
|
|
140
|
+
for (const entry of batch.entrySet) {
|
|
141
|
+
entry.completeUnsafe(
|
|
142
|
+
exit._tag === "Success"
|
|
143
|
+
? exitDie(
|
|
144
|
+
new Error("Effect.request: RequestResolver did not complete request", { cause: entry.request })
|
|
145
|
+
)
|
|
146
|
+
: exit
|
|
147
|
+
)
|
|
148
|
+
}
|
|
149
|
+
batch.entries.clear()
|
|
150
|
+
return effect.void
|
|
151
|
+
}
|
|
152
|
+
)
|
|
153
|
+
}
|
|
154
|
+
return batch
|
|
155
|
+
}
|
|
156
|
+
|
|
113
157
|
const addEntry = <A extends Request.Any>(
|
|
114
158
|
resolver: RequestResolver<A>,
|
|
115
159
|
request: A,
|
|
@@ -146,58 +190,7 @@ const addEntry = <A extends Request.Any>(
|
|
|
146
190
|
batch = batchMap.get(key)
|
|
147
191
|
const isNewBatch = batch === undefined
|
|
148
192
|
if (!batch) {
|
|
149
|
-
|
|
150
|
-
batch = batchPool.pop()!
|
|
151
|
-
batch.key = key
|
|
152
|
-
batch.context = fiber.context
|
|
153
|
-
batch.resolver = resolver
|
|
154
|
-
batch.map = batchMap
|
|
155
|
-
} else {
|
|
156
|
-
const newBatch: Batch = {
|
|
157
|
-
key,
|
|
158
|
-
context: fiber.context,
|
|
159
|
-
resolver,
|
|
160
|
-
map: batchMap,
|
|
161
|
-
entrySet: new Set(),
|
|
162
|
-
entries: new Set(),
|
|
163
|
-
delayEffect: effect.flatMap(
|
|
164
|
-
withFiber((delayFiber) => {
|
|
165
|
-
// Reentrant delay callbacks may fill the batch and interrupt this fiber.
|
|
166
|
-
newBatch.fiber = delayFiber
|
|
167
|
-
return newBatch.resolver.delay
|
|
168
|
-
}),
|
|
169
|
-
(_) => runBatch(newBatch)
|
|
170
|
-
) as Effect<void>,
|
|
171
|
-
run: effect.onExit(
|
|
172
|
-
effect.suspend(() =>
|
|
173
|
-
newBatch.resolver.runAll(Array.from(newBatch.entries) as NonEmptyArray<Request.Entry<any>>, newBatch.key)
|
|
174
|
-
),
|
|
175
|
-
(exit) => {
|
|
176
|
-
for (const entry of newBatch.entrySet) {
|
|
177
|
-
entry.completeUnsafe(
|
|
178
|
-
exit._tag === "Success"
|
|
179
|
-
? exitDie(
|
|
180
|
-
new Error("Effect.request: RequestResolver did not complete request", { cause: entry.request })
|
|
181
|
-
)
|
|
182
|
-
: exit
|
|
183
|
-
)
|
|
184
|
-
}
|
|
185
|
-
newBatch.entries.clear()
|
|
186
|
-
if (batchPool.length < 128) {
|
|
187
|
-
newBatch.entrySet.clear()
|
|
188
|
-
newBatch.key = undefined
|
|
189
|
-
newBatch.context = undefined as any
|
|
190
|
-
newBatch.fiber = undefined
|
|
191
|
-
newBatch.resolver = undefined as any
|
|
192
|
-
newBatch.map = undefined as any
|
|
193
|
-
batchPool.push(newBatch)
|
|
194
|
-
}
|
|
195
|
-
return effect.void
|
|
196
|
-
}
|
|
197
|
-
)
|
|
198
|
-
}
|
|
199
|
-
batch = newBatch
|
|
200
|
-
}
|
|
193
|
+
batch = makeBatch(key, fiber.context, resolver, batchMap)
|
|
201
194
|
batchMap.set(key, batch)
|
|
202
195
|
}
|
|
203
196
|
|
|
@@ -205,7 +198,7 @@ const addEntry = <A extends Request.Any>(
|
|
|
205
198
|
batch.entries.add(entry)
|
|
206
199
|
if (isNewBatch) {
|
|
207
200
|
const delayFiber = effect.runForkWith(fiber.context)(batch.delayEffect, { scheduler: fiber.cache.scheduler })
|
|
208
|
-
// A synchronous delay may have already run
|
|
201
|
+
// A synchronous delay may have already run this batch.
|
|
209
202
|
if (completed || batchMap.get(key) !== batch) return entry
|
|
210
203
|
batch.fiber = delayFiber
|
|
211
204
|
}
|
|
@@ -755,8 +755,9 @@ export function fromJsonSchemaMultiDocument(
|
|
|
755
755
|
return out
|
|
756
756
|
}
|
|
757
757
|
case "Union":
|
|
758
|
-
|
|
759
|
-
|
|
758
|
+
// Finite primitive literal sets intersect without expansion, so they can be duplicated across branches.
|
|
759
|
+
return !isLiteralSet(representation) &&
|
|
760
|
+
(representation.types.length > 1 || representation.types.some(hasChoices))
|
|
760
761
|
case "Arrays":
|
|
761
762
|
return representation.elements.some((element) => hasChoices(element.type)) ||
|
|
762
763
|
representation.rest.some(hasChoices)
|
|
@@ -796,18 +797,20 @@ export function fromJsonSchemaMultiDocument(
|
|
|
796
797
|
return representation.literal
|
|
797
798
|
}
|
|
798
799
|
|
|
800
|
+
function isLiteralSet(union: ImportedUnion): boolean {
|
|
801
|
+
return (union.options?.mode ?? "anyOf") === "anyOf" &&
|
|
802
|
+
union.types.every((type) => literalValue(type) !== undefined)
|
|
803
|
+
}
|
|
804
|
+
|
|
799
805
|
function intersectLiteralUnions(
|
|
800
806
|
left: ImportedUnion,
|
|
801
807
|
right: ImportedUnion,
|
|
802
808
|
path: Path
|
|
803
809
|
): ImportedJsonSchemaRepresentation | undefined {
|
|
804
|
-
if ((left
|
|
805
|
-
|
|
806
|
-
}
|
|
807
|
-
const rightByValue = new Map<string | number | boolean | null, ImportedJsonSchemaRepresentation>()
|
|
810
|
+
if (!isLiteralSet(left) || !isLiteralSet(right)) return undefined
|
|
811
|
+
const rightByValue = new Map<ReturnType<typeof literalValue>, ImportedJsonSchemaRepresentation>()
|
|
808
812
|
for (const representation of right.types) {
|
|
809
813
|
const value = literalValue(representation)
|
|
810
|
-
if (value === undefined) return undefined
|
|
811
814
|
const previous = rightByValue.get(value)
|
|
812
815
|
rightByValue.set(value, {
|
|
813
816
|
...representation,
|
|
@@ -816,9 +819,7 @@ export function fromJsonSchemaMultiDocument(
|
|
|
816
819
|
}
|
|
817
820
|
const types: Array<ImportedJsonSchemaRepresentation> = []
|
|
818
821
|
for (const representation of left.types) {
|
|
819
|
-
const
|
|
820
|
-
if (value === undefined) return undefined
|
|
821
|
-
const match = rightByValue.get(value)
|
|
822
|
+
const match = rightByValue.get(literalValue(representation))
|
|
822
823
|
if (match !== undefined) types.push(intersect(representation, annotate(match, right), path))
|
|
823
824
|
}
|
|
824
825
|
return makeUnion(left, types)
|
|
@@ -16,6 +16,10 @@ export function makeCode(runtime: string, Type: string): SchemaRepresentation.Co
|
|
|
16
16
|
return { runtime, Type }
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
function formatObjectLiteralKey(key: PropertyKey, formatted = formatPropertyKey(key)): string {
|
|
20
|
+
return key === "__proto__" ? `[${formatted}]` : formatted
|
|
21
|
+
}
|
|
22
|
+
|
|
19
23
|
function renderEmittableAnnotation(input: unknown): string | undefined {
|
|
20
24
|
if (
|
|
21
25
|
input === null ||
|
|
@@ -43,7 +47,7 @@ function renderEmittableAnnotation(input: unknown): string | undefined {
|
|
|
43
47
|
for (const [key, value] of Object.entries(input)) {
|
|
44
48
|
const rendered = renderEmittableAnnotation(value)
|
|
45
49
|
if (rendered === undefined) return undefined
|
|
46
|
-
entries.push(`${
|
|
50
|
+
entries.push(`${formatObjectLiteralKey(key)}: ${rendered}`)
|
|
47
51
|
}
|
|
48
52
|
return entries.length === 0 ? "{}" : `{ ${entries.join(", ")} }`
|
|
49
53
|
}
|
|
@@ -63,7 +67,7 @@ function renderAnnotations(
|
|
|
63
67
|
for (const [key, value] of Object.entries(annotations)) {
|
|
64
68
|
if (InternalAnnotations.annotationExcludedKeys.has(key)) continue
|
|
65
69
|
const rendered = renderEmittableAnnotation(value)
|
|
66
|
-
if (rendered !== undefined) entries.push(`${
|
|
70
|
+
if (rendered !== undefined) entries.push(`${formatObjectLiteralKey(key)}: ${rendered}`)
|
|
67
71
|
}
|
|
68
72
|
return entries.length === 0 ? undefined : `{ ${entries.join(", ")} }`
|
|
69
73
|
}
|
|
@@ -499,7 +503,7 @@ export function toCodeDocument(
|
|
|
499
503
|
if (property.isMutable) runtime = `Schema.mutableKey(${runtime})`
|
|
500
504
|
if (property.isOptional) runtime = `Schema.optionalKey(${runtime})`
|
|
501
505
|
runtime += runtimeAnnotate(property.annotations, "annotateKey")
|
|
502
|
-
const runtimeName = property.name
|
|
506
|
+
const runtimeName = formatObjectLiteralKey(property.name, name)
|
|
503
507
|
const typeName = `${property.isMutable ? "" : "readonly "}${name}${property.isOptional ? "?" : ""}`
|
|
504
508
|
return {
|
|
505
509
|
code: makeCode(`${runtimeName}: ${runtime}`, `${typeName}: ${type.Type}`)
|
package/src/internal/trie.ts
CHANGED
|
@@ -21,6 +21,7 @@ type TraversalFilter<K, V> = (k: K, v: V) => boolean
|
|
|
21
21
|
/** @internal */
|
|
22
22
|
export interface TrieImpl<in out V> extends TR.Trie<V> {
|
|
23
23
|
readonly _root: Node<V> | undefined
|
|
24
|
+
readonly _empty: Entry<V> | undefined
|
|
24
25
|
readonly _count: number
|
|
25
26
|
}
|
|
26
27
|
|
|
@@ -70,15 +71,17 @@ const TrieProto: TR.Trie<unknown> = {
|
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
|
|
73
|
-
const makeImpl = <V>(root: Node<V> | undefined): TrieImpl<V> => {
|
|
74
|
+
const makeImpl = <V>(root: Node<V> | undefined, emptyEntry: Entry<V> | undefined): TrieImpl<V> => {
|
|
74
75
|
const trie = Object.create(TrieProto)
|
|
75
76
|
trie._root = root
|
|
76
|
-
trie.
|
|
77
|
+
trie._empty = emptyEntry
|
|
78
|
+
trie._count = (root?.count ?? 0) + (emptyEntry === undefined ? 0 : 1)
|
|
77
79
|
return trie
|
|
78
80
|
}
|
|
79
81
|
|
|
80
82
|
class TrieIterator<in out V, out T> implements IterableIterator<T> {
|
|
81
83
|
stack: Array<[Node<V>, string, boolean]> = []
|
|
84
|
+
emptyEntry: Entry<V> | undefined
|
|
82
85
|
readonly f: TraversalMap<string, V, T>
|
|
83
86
|
readonly filter: TraversalFilter<string, V>
|
|
84
87
|
|
|
@@ -89,6 +92,7 @@ class TrieIterator<in out V, out T> implements IterableIterator<T> {
|
|
|
89
92
|
) {
|
|
90
93
|
this.f = f
|
|
91
94
|
this.filter = filter
|
|
95
|
+
this.emptyEntry = trie._empty
|
|
92
96
|
const root = trie._root !== undefined ? trie._root : undefined
|
|
93
97
|
if (root !== undefined) {
|
|
94
98
|
this.stack.push([root, "", false])
|
|
@@ -96,6 +100,13 @@ class TrieIterator<in out V, out T> implements IterableIterator<T> {
|
|
|
96
100
|
}
|
|
97
101
|
|
|
98
102
|
next(): IteratorResult<T> {
|
|
103
|
+
const emptyEntry = this.emptyEntry
|
|
104
|
+
if (emptyEntry !== undefined) {
|
|
105
|
+
this.emptyEntry = undefined
|
|
106
|
+
if (this.filter("", emptyEntry.value)) {
|
|
107
|
+
return { done: false, value: this.f("", emptyEntry.value) }
|
|
108
|
+
}
|
|
109
|
+
}
|
|
99
110
|
while (this.stack.length > 0) {
|
|
100
111
|
const [node, keyString, isAdded] = this.stack.pop()!
|
|
101
112
|
|
|
@@ -140,7 +151,7 @@ export const isTrie: {
|
|
|
140
151
|
} = (u: unknown): u is TR.Trie<unknown> => hasProperty(u, TrieTypeId)
|
|
141
152
|
|
|
142
153
|
/** @internal */
|
|
143
|
-
export const empty = <V = never>(): TR.Trie<V> => makeImpl<V>(undefined)
|
|
154
|
+
export const empty = <V = never>(): TR.Trie<V> => makeImpl<V>(undefined, undefined)
|
|
144
155
|
|
|
145
156
|
/** @internal */
|
|
146
157
|
export const fromIterable = <V>(entries: Iterable<readonly [string, V]>) => {
|
|
@@ -163,7 +174,7 @@ export const insert = dual<
|
|
|
163
174
|
<V>(key: string, value: V) => (self: TR.Trie<V>) => TR.Trie<V>,
|
|
164
175
|
<V>(self: TR.Trie<V>, key: string, value: V) => TR.Trie<V>
|
|
165
176
|
>(3, <V>(self: TR.Trie<V>, key: string, value: V) => {
|
|
166
|
-
if (key.length === 0) return self
|
|
177
|
+
if (key.length === 0) return makeImpl((self as TrieImpl<V>)._root, { value })
|
|
167
178
|
|
|
168
179
|
// -1:left | 0:mid | 1:right
|
|
169
180
|
const dStack: Array<Ordering.Ordering> = []
|
|
@@ -255,11 +266,11 @@ export const insert = dual<
|
|
|
255
266
|
}
|
|
256
267
|
|
|
257
268
|
nStack[0].count = count
|
|
258
|
-
return makeImpl(nStack[0])
|
|
269
|
+
return makeImpl(nStack[0], (self as TrieImpl<V>)._empty)
|
|
259
270
|
})
|
|
260
271
|
|
|
261
272
|
/** @internal */
|
|
262
|
-
export const size = <V>(self: TR.Trie<V>): number => (self as TrieImpl<V>).
|
|
273
|
+
export const size = <V>(self: TR.Trie<V>): number => (self as TrieImpl<V>)._count
|
|
263
274
|
|
|
264
275
|
/** @internal */
|
|
265
276
|
export const isEmpty = <V>(self: TR.Trie<V>): boolean => size(self) === 0
|
|
@@ -394,8 +405,12 @@ export const get = dual<
|
|
|
394
405
|
>(
|
|
395
406
|
2,
|
|
396
407
|
<V>(self: TR.Trie<V>, key: string) => {
|
|
408
|
+
if (key.length === 0) {
|
|
409
|
+
const emptyEntry = (self as TrieImpl<V>)._empty
|
|
410
|
+
return emptyEntry === undefined ? Option.none() : Option.some(emptyEntry.value)
|
|
411
|
+
}
|
|
397
412
|
let n: Node<V> | undefined = (self as TrieImpl<V>)._root
|
|
398
|
-
if (n === undefined
|
|
413
|
+
if (n === undefined) return Option.none()
|
|
399
414
|
let cIndex = 0
|
|
400
415
|
while (cIndex < key.length) {
|
|
401
416
|
const c = key[cIndex]
|
|
@@ -453,8 +468,11 @@ export const remove = dual<
|
|
|
453
468
|
>(
|
|
454
469
|
2,
|
|
455
470
|
<V>(self: TR.Trie<V>, key: string) => {
|
|
471
|
+
if (key.length === 0) {
|
|
472
|
+
return (self as TrieImpl<V>)._empty === undefined ? self : makeImpl((self as TrieImpl<V>)._root, undefined)
|
|
473
|
+
}
|
|
456
474
|
let n: Node<V> | undefined = (self as TrieImpl<V>)._root
|
|
457
|
-
if (n === undefined
|
|
475
|
+
if (n === undefined) return self
|
|
458
476
|
|
|
459
477
|
const count = n.count - 1
|
|
460
478
|
// -1:left | 0:mid | 1:right
|
|
@@ -554,7 +572,7 @@ export const remove = dual<
|
|
|
554
572
|
}
|
|
555
573
|
|
|
556
574
|
nStack[0].count = count
|
|
557
|
-
return makeImpl(nStack[0])
|
|
575
|
+
return makeImpl(nStack[0], (self as TrieImpl<V>)._empty)
|
|
558
576
|
}
|
|
559
577
|
)
|
|
560
578
|
|
|
@@ -589,8 +607,12 @@ export const modify = dual<
|
|
|
589
607
|
>(
|
|
590
608
|
3,
|
|
591
609
|
<V>(self: TR.Trie<V>, key: string, f: (v: V) => V): TR.Trie<V> => {
|
|
610
|
+
if (key.length === 0) {
|
|
611
|
+
const emptyEntry = (self as TrieImpl<V>)._empty
|
|
612
|
+
return emptyEntry === undefined ? self : makeImpl((self as TrieImpl<V>)._root, { value: f(emptyEntry.value) })
|
|
613
|
+
}
|
|
592
614
|
let n: Node<V> | undefined = (self as TrieImpl<V>)._root
|
|
593
|
-
if (n === undefined
|
|
615
|
+
if (n === undefined) return self
|
|
594
616
|
|
|
595
617
|
// -1:left | 0:mid | 1:right
|
|
596
618
|
const dStack: Array<Ordering.Ordering> = []
|
|
@@ -689,7 +711,7 @@ export const modify = dual<
|
|
|
689
711
|
}
|
|
690
712
|
}
|
|
691
713
|
|
|
692
|
-
return makeImpl(nStack[0])
|
|
714
|
+
return makeImpl(nStack[0], (self as TrieImpl<V>)._empty)
|
|
693
715
|
}
|
|
694
716
|
)
|
|
695
717
|
|
|
@@ -700,9 +722,12 @@ export const longestPrefixOf = dual<
|
|
|
700
722
|
>(
|
|
701
723
|
2,
|
|
702
724
|
<V>(self: TR.Trie<V>, key: string): Option.Option<[string, V]> => {
|
|
725
|
+
const emptyEntry = (self as TrieImpl<V>)._empty
|
|
726
|
+
let longestPrefixNode: Option.Option<[string, V]> = emptyEntry === undefined
|
|
727
|
+
? Option.none()
|
|
728
|
+
: Option.some(["", emptyEntry.value])
|
|
703
729
|
let n: Node<V> | undefined = (self as TrieImpl<V>)._root
|
|
704
|
-
if (n === undefined || key.length === 0) return
|
|
705
|
-
let longestPrefixNode: Option.Option<[string, V]> = Option.none()
|
|
730
|
+
if (n === undefined || key.length === 0) return longestPrefixNode
|
|
706
731
|
let cIndex = 0
|
|
707
732
|
while (cIndex < key.length) {
|
|
708
733
|
const c = key[cIndex]
|
|
@@ -735,10 +760,14 @@ export const longestPrefixOf = dual<
|
|
|
735
760
|
}
|
|
736
761
|
)
|
|
737
762
|
|
|
763
|
+
interface Entry<V> {
|
|
764
|
+
readonly value: V
|
|
765
|
+
}
|
|
766
|
+
|
|
738
767
|
interface Node<V> {
|
|
739
768
|
key: string
|
|
740
769
|
count: number
|
|
741
|
-
value?:
|
|
770
|
+
value?: Entry<V> | undefined
|
|
742
771
|
left?: Node<V> | undefined
|
|
743
772
|
mid?: Node<V> | undefined
|
|
744
773
|
right?: Node<V> | undefined
|
package/src/internal/ulid.ts
CHANGED
|
@@ -28,3 +28,47 @@ export const ulidString = (timestampMillis: number, bytes: Uint8Array): string =
|
|
|
28
28
|
|
|
29
29
|
return out
|
|
30
30
|
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Makes a ULID generator in the ULID spec's monotonic mode: within a
|
|
34
|
+
* millisecond, or when the clock moves back, the 80-bit random part of the last
|
|
35
|
+
* ULID is incremented. The ordering ends at the maximum timestamp, 2^48 − 1 ms,
|
|
36
|
+
* which overflow cannot advance. `randomBytes` is only called for fresh
|
|
37
|
+
* randomness.
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export const makeMonotonic = () => {
|
|
42
|
+
let lastTimestamp = -1
|
|
43
|
+
const random = new Uint8Array(10)
|
|
44
|
+
return (timestampMillis: number, randomBytes: () => Uint8Array): string => {
|
|
45
|
+
const timestamp = timestampMillis >= 0 ? Math.min(Math.trunc(timestampMillis), maxTimestamp) : 0
|
|
46
|
+
if (timestamp > lastTimestamp) {
|
|
47
|
+
lastTimestamp = timestamp
|
|
48
|
+
random.set(randomBytes())
|
|
49
|
+
} else if (!increment(random)) {
|
|
50
|
+
lastTimestamp = Math.min(lastTimestamp + 1, maxTimestamp)
|
|
51
|
+
random.set(randomBytes())
|
|
52
|
+
}
|
|
53
|
+
return ulidString(lastTimestamp, random)
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Returns false when the bytes overflow, leaving them all zero.
|
|
58
|
+
const increment = (bytes: Uint8Array): boolean => {
|
|
59
|
+
for (let i = bytes.length - 1; i >= 0; i--) {
|
|
60
|
+
if (bytes[i] !== 0xff) {
|
|
61
|
+
bytes[i]++
|
|
62
|
+
return true
|
|
63
|
+
}
|
|
64
|
+
bytes[i] = 0
|
|
65
|
+
}
|
|
66
|
+
return false
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The ULID ordering state shared by every `Date.now()` caller in the realm.
|
|
71
|
+
*
|
|
72
|
+
* @internal
|
|
73
|
+
*/
|
|
74
|
+
export const monotonic = makeMonotonic()
|