effect 4.0.7 → 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/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 +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/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/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/Pool.d.ts +51 -0
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +59 -9
- 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 +666 -41
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +650 -0
- 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 +14 -0
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +16 -0
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +8 -3
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +6 -3
- 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/McpServer.d.ts +630 -29
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +562 -116
- 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/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.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 +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/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +90 -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/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/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/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 +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.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/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 +79 -8
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +65 -5
- 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 +6 -17
- 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/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 +53 -0
- 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/effect.js +25 -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 +630 -0
- package/dist/internal/glob.js.map +1 -0
- 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/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/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/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/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.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 +50 -16
- 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.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 +0 -19
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +3 -48
- 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.map +1 -1
- package/dist/sql/SqlClient.js +5 -9
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/Statement.d.ts +20 -6
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +0 -13
- 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/internal/crypto.js +9 -8
- package/dist/workflow/internal/crypto.js.map +1 -1
- package/package.json +3 -1
- package/src/BigDecimal.ts +3 -0
- 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/FileSystem.ts +65 -4
- package/src/Glob.ts +205 -0
- package/src/Match.ts +127 -0
- package/src/Pool.ts +73 -15
- package/src/Random.ts +3 -3
- package/src/RcMap.ts +5 -1
- package/src/Schedule.ts +26 -3
- package/src/Schema.ts +1189 -62
- package/src/SchemaGetter.ts +27 -11
- package/src/SchemaRepresentation.ts +19 -0
- package/src/SchemaTransformation.ts +8 -3
- 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/McpServer.ts +1269 -286
- package/src/ai/McpTest.ts +380 -0
- package/src/ai/Response.ts +2 -22
- package/src/ai/Tool.ts +27 -8
- 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 +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/Sharding.ts +93 -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/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/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/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 +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 +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/http/Cookies.ts +281 -1
- package/src/http/FetchHttpClient.ts +88 -16
- package/src/http/HttpClient.ts +89 -22
- 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 +15 -30
- 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/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 +105 -14
- package/src/index.ts +6 -6
- package/src/internal/effect.ts +34 -18
- package/src/internal/glob.ts +736 -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/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/observability/Otlp.ts +21 -4
- package/src/observability/OtlpResource.ts +9 -1
- package/src/persistence/KeyValueStore.ts +219 -22
- package/src/persistence/PersistedQueue.ts +128 -59
- package/src/persistence/Persistence.ts +20 -13
- 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 +1 -1
- package/src/rpc/RpcClient.ts +62 -26
- package/src/rpc/RpcMessage.ts +10 -1
- 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 +4 -63
- package/src/sql/MigratorFileSystem.ts +71 -0
- package/src/sql/SqlClient.ts +2 -16
- package/src/sql/Statement.ts +8 -7
- package/src/sql/index.ts +1 -1
- package/src/testing/index.ts +0 -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/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
|
})
|
|
@@ -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()
|
package/src/internal/uuid.ts
CHANGED
|
@@ -18,30 +18,20 @@ export const stringify = (bytes: Uint8Array): string => {
|
|
|
18
18
|
hex[bytes[10]] + hex[bytes[11]] + hex[bytes[12]] + hex[bytes[13]] + hex[bytes[14]] + hex[bytes[15]]
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
const randomBytes = (): Uint8Array<ArrayBuffer> => globalThis.crypto.getRandomValues(new Uint8Array(16))
|
|
22
|
-
|
|
23
|
-
/** @internal */
|
|
24
|
-
export function v4Bytes(): Uint8Array<ArrayBuffer>
|
|
25
|
-
/** @internal */
|
|
26
|
-
export function v4Bytes<A extends ArrayBufferLike>(bytes: Uint8Array<A>): Uint8Array<A>
|
|
27
21
|
/** @internal */
|
|
28
|
-
export
|
|
22
|
+
export const v4Bytes = <A extends ArrayBufferLike>(bytes: Uint8Array<A>): Uint8Array<A> => {
|
|
29
23
|
bytes[6] = (bytes[6] & 0x0f) | 0x40
|
|
30
24
|
bytes[8] = (bytes[8] & 0x3f) | 0x80
|
|
31
25
|
return bytes
|
|
32
26
|
}
|
|
33
27
|
|
|
34
28
|
/** @internal */
|
|
35
|
-
export const v4String = (bytes
|
|
29
|
+
export const v4String = (bytes: Uint8Array): string => stringify(v4Bytes(bytes))
|
|
36
30
|
|
|
37
31
|
const maxV7Timestamp = 2 ** 48 - 1
|
|
38
32
|
|
|
39
33
|
/** @internal */
|
|
40
|
-
export
|
|
41
|
-
/** @internal */
|
|
42
|
-
export function v7Bytes<A extends ArrayBufferLike>(timestampMillis: number, bytes: Uint8Array<A>): Uint8Array<A>
|
|
43
|
-
/** @internal */
|
|
44
|
-
export function v7Bytes(timestampMillis: number, bytes: Uint8Array = randomBytes()): Uint8Array {
|
|
34
|
+
export const v7Bytes = <A extends ArrayBufferLike>(timestampMillis: number, bytes: Uint8Array<A>): Uint8Array<A> => {
|
|
45
35
|
const timestamp = Math.min(Math.max(0, Math.trunc(timestampMillis)), maxV7Timestamp)
|
|
46
36
|
|
|
47
37
|
bytes[0] = Math.floor(timestamp / 2 ** 40)
|
|
@@ -55,6 +45,57 @@ export function v7Bytes(timestampMillis: number, bytes: Uint8Array = randomBytes
|
|
|
55
45
|
return bytes
|
|
56
46
|
}
|
|
57
47
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
48
|
+
const clampV7Timestamp = (timestampMillis: number): number =>
|
|
49
|
+
timestampMillis >= 0 ? Math.min(Math.trunc(timestampMillis), maxV7Timestamp) : 0
|
|
50
|
+
|
|
51
|
+
const maxV7Counter = 2 ** 42 - 1
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Makes a UUIDv7 generator that orders the UUIDs it returns, following RFC
|
|
55
|
+
* 9562 §6.2 Method 1. A 42-bit counter fills the 12 bits of `rand_a` and the
|
|
56
|
+
* top 30 bits of `rand_b`; the last 32 bits stay random. The ordering ends at
|
|
57
|
+
* the maximum timestamp, 2^48 − 1 ms, which counter overflow cannot advance.
|
|
58
|
+
*
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
|
+
export const makeV7Monotonic = () => {
|
|
62
|
+
let lastTimestamp = -1
|
|
63
|
+
let counter = 0
|
|
64
|
+
return <A extends ArrayBufferLike>(timestampMillis: number, bytes: Uint8Array<A>): Uint8Array<A> => {
|
|
65
|
+
const timestamp = clampV7Timestamp(timestampMillis)
|
|
66
|
+
if (timestamp > lastTimestamp) {
|
|
67
|
+
lastTimestamp = timestamp
|
|
68
|
+
counter = seedV7Counter(bytes)
|
|
69
|
+
} else if (counter < maxV7Counter) {
|
|
70
|
+
// The clock stalled or moved back, so keep the last timestamp.
|
|
71
|
+
counter++
|
|
72
|
+
} else {
|
|
73
|
+
lastTimestamp = Math.min(lastTimestamp + 1, maxV7Timestamp)
|
|
74
|
+
counter = seedV7Counter(bytes)
|
|
75
|
+
}
|
|
76
|
+
v7Bytes(lastTimestamp, bytes)
|
|
77
|
+
const high = Math.floor(counter / 2 ** 30)
|
|
78
|
+
const low = counter - high * 2 ** 30
|
|
79
|
+
bytes[6] = 0x70 | (high >>> 8)
|
|
80
|
+
bytes[7] = high & 0xff
|
|
81
|
+
bytes[8] = 0x80 | (low >>> 24)
|
|
82
|
+
bytes[9] = (low >>> 16) & 0xff
|
|
83
|
+
bytes[10] = (low >>> 8) & 0xff
|
|
84
|
+
bytes[11] = low & 0xff
|
|
85
|
+
return bytes
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Clears the counter's top bit, so a millisecond has at least 2^41 increments
|
|
90
|
+
// before it overflows.
|
|
91
|
+
const seedV7Counter = (bytes: Uint8Array): number =>
|
|
92
|
+
(((bytes[6] & 0x07) << 8) | bytes[7]) * 2 ** 30 +
|
|
93
|
+
(((bytes[8] & 0x3f) << 24) | (bytes[9] << 16) | (bytes[10] << 8) | bytes[11])
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* The UUIDv7 ordering state shared by every `Date.now()` or `Clock` caller in
|
|
97
|
+
* the realm that has no `SecureRandom` instance of its own.
|
|
98
|
+
*
|
|
99
|
+
* @internal
|
|
100
|
+
*/
|
|
101
|
+
export const v7Monotonic = makeV7Monotonic()
|
package/src/internal/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** @internal */
|
|
2
|
-
export const version = "4.0
|
|
2
|
+
export const version = "4.1.0"
|
|
@@ -16,6 +16,7 @@ import type * as HttpClient from "../http/HttpClient.ts"
|
|
|
16
16
|
import * as HttpClientRequest from "../http/HttpClientRequest.ts"
|
|
17
17
|
import * as Layer from "../Layer.ts"
|
|
18
18
|
import type * as Tracer from "../Tracer.ts"
|
|
19
|
+
import type * as OtlpExporter from "./OtlpExporter.ts"
|
|
19
20
|
import * as OtlpLogger from "./OtlpLogger.ts"
|
|
20
21
|
import type { AggregationTemporality } from "./OtlpMetrics.ts"
|
|
21
22
|
import * as OtlpMetrics from "./OtlpMetrics.ts"
|
|
@@ -30,6 +31,10 @@ import * as OtlpTracer from "./OtlpTracer.ts"
|
|
|
30
31
|
* The layer sends data to `/v1/logs`, `/v1/metrics`, and `/v1/traces` below
|
|
31
32
|
* `baseUrl` and requires an `OtlpSerialization` implementation.
|
|
32
33
|
*
|
|
34
|
+
* The layer provides the `OtlpExporter.Flusher` shared by all three signals,
|
|
35
|
+
* so one `flush` exports their buffered telemetry, for example before a
|
|
36
|
+
* serverless instance is suspended.
|
|
37
|
+
*
|
|
33
38
|
* @stability unstable
|
|
34
39
|
* @category layers
|
|
35
40
|
* @since 4.0.0
|
|
@@ -56,7 +61,7 @@ export const layer = (options: {
|
|
|
56
61
|
readonly metricsTemporality?: AggregationTemporality | undefined
|
|
57
62
|
readonly tracerExportInterval?: Duration.Input | undefined
|
|
58
63
|
readonly shutdownTimeout?: Duration.Input | undefined
|
|
59
|
-
}): Layer.Layer<
|
|
64
|
+
}): Layer.Layer<OtlpExporter.Flusher, never, HttpClient.HttpClient | OtlpSerialization.OtlpSerialization> => {
|
|
60
65
|
const base = HttpClientRequest.get(options.baseUrl)
|
|
61
66
|
const url = (path: string) => HttpClientRequest.appendUrl(base, path).url
|
|
62
67
|
return Layer.mergeAll(
|
|
@@ -97,6 +102,12 @@ export const layer = (options: {
|
|
|
97
102
|
* Creates a combined OTLP layer for logs, metrics, and traces from
|
|
98
103
|
* OpenTelemetry configuration.
|
|
99
104
|
*
|
|
105
|
+
* **Details**
|
|
106
|
+
*
|
|
107
|
+
* The layer provides the `OtlpExporter.Flusher` shared by all enabled signals.
|
|
108
|
+
* It is provided even when configuration disables every signal, in which case
|
|
109
|
+
* `flush` is a no-op.
|
|
110
|
+
*
|
|
100
111
|
* @stability unstable
|
|
101
112
|
* @category layers
|
|
102
113
|
* @since 4.0.0
|
|
@@ -111,7 +122,7 @@ export const layerFromConfig = (options?: {
|
|
|
111
122
|
readonly tracerContext?: (<X>(primitive: Tracer.EffectPrimitive<X>, span: Tracer.AnySpan) => X) | undefined
|
|
112
123
|
readonly loggerExcludeLogSpans?: boolean | undefined
|
|
113
124
|
readonly loggerMergeWithExisting?: boolean | undefined
|
|
114
|
-
}): Layer.Layer<
|
|
125
|
+
}): Layer.Layer<OtlpExporter.Flusher, never, HttpClient.HttpClient | OtlpSerialization.OtlpSerialization> =>
|
|
115
126
|
Layer.mergeAll(
|
|
116
127
|
OtlpLogger.layerFromConfig({
|
|
117
128
|
resource: options?.resource,
|
|
@@ -160,7 +171,10 @@ export const layerJson: (options: {
|
|
|
160
171
|
readonly metricsTemporality?: AggregationTemporality | undefined
|
|
161
172
|
readonly tracerExportInterval?: Duration.Input | undefined
|
|
162
173
|
readonly shutdownTimeout?: Duration.Input | undefined
|
|
163
|
-
}) => Layer.Layer<
|
|
174
|
+
}) => Layer.Layer<OtlpExporter.Flusher, never, HttpClient.HttpClient> = flow(
|
|
175
|
+
layer,
|
|
176
|
+
Layer.provide(OtlpSerialization.layerJson)
|
|
177
|
+
)
|
|
164
178
|
|
|
165
179
|
/**
|
|
166
180
|
* Creates the combined OTLP logs, metrics, and traces layer using protobuf
|
|
@@ -192,4 +206,7 @@ export const layerProtobuf: (options: {
|
|
|
192
206
|
readonly metricsTemporality?: AggregationTemporality | undefined
|
|
193
207
|
readonly tracerExportInterval?: Duration.Input | undefined
|
|
194
208
|
readonly shutdownTimeout?: Duration.Input | undefined
|
|
195
|
-
}) => Layer.Layer<
|
|
209
|
+
}) => Layer.Layer<OtlpExporter.Flusher, never, HttpClient.HttpClient> = flow(
|
|
210
|
+
layer,
|
|
211
|
+
Layer.provide(OtlpSerialization.layerProtobuf)
|
|
212
|
+
)
|
|
@@ -79,6 +79,13 @@ export const make = (options: {
|
|
|
79
79
|
* precedence over matching attributes in `OTEL_RESOURCE_ATTRIBUTES`. Missing
|
|
80
80
|
* required configuration is converted to a defect.
|
|
81
81
|
*
|
|
82
|
+
* Keys and values in `OTEL_RESOURCE_ATTRIBUTES` are trimmed, then
|
|
83
|
+
* percent-decoded. Entries with an empty value are kept as `""`; entries
|
|
84
|
+
* without `=` or with an empty key are skipped. When a key is repeated as
|
|
85
|
+
* written, the last entry wins and the earlier ones are not decoded. Invalid
|
|
86
|
+
* percent-encoding in the remaining entries is a `ConfigError` and is
|
|
87
|
+
* converted to a defect.
|
|
88
|
+
*
|
|
82
89
|
* @stability unstable
|
|
83
90
|
* @category constructors
|
|
84
91
|
* @since 4.0.0
|
|
@@ -97,7 +104,8 @@ export const fromConfig: (
|
|
|
97
104
|
const env = yield* Config.Record(
|
|
98
105
|
Schema.StringFromUriComponent,
|
|
99
106
|
Schema.StringFromUriComponent,
|
|
100
|
-
"OTEL_RESOURCE_ATTRIBUTES"
|
|
107
|
+
"OTEL_RESOURCE_ATTRIBUTES",
|
|
108
|
+
{ trim: true, keepEmptyValues: true }
|
|
101
109
|
).pipe(Config.withDefault(undefined))
|
|
102
110
|
|
|
103
111
|
const serviceName = options?.serviceName
|