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
|
@@ -17,10 +17,13 @@ import * as Effectable from "../Effectable.ts"
|
|
|
17
17
|
import { dual } from "../Function.ts"
|
|
18
18
|
import type * as PlatformError from "../PlatformError.ts"
|
|
19
19
|
import * as Predicate from "../Predicate.ts"
|
|
20
|
+
import type * as Redacted from "../Redacted.ts"
|
|
21
|
+
import * as Result from "../Result.ts"
|
|
20
22
|
import type * as Scope from "../Scope.ts"
|
|
21
23
|
import type * as Sink from "../Sink.ts"
|
|
22
24
|
import type * as Stream from "../Stream.ts"
|
|
23
25
|
import { type ChildProcessHandle, ChildProcessSpawner } from "./ChildProcessSpawner.ts"
|
|
26
|
+
import * as CommandLine from "./CommandLine.ts"
|
|
24
27
|
|
|
25
28
|
const TypeId = "~effect/process/ChildProcess"
|
|
26
29
|
|
|
@@ -51,7 +54,7 @@ export interface StandardCommand extends
|
|
|
51
54
|
{
|
|
52
55
|
readonly _tag: "StandardCommand"
|
|
53
56
|
readonly command: string
|
|
54
|
-
readonly args: ReadonlyArray<
|
|
57
|
+
readonly args: ReadonlyArray<CommandLine.Word>
|
|
55
58
|
readonly options: CommandOptions
|
|
56
59
|
}
|
|
57
60
|
|
|
@@ -144,7 +147,8 @@ export interface PipeOptions {
|
|
|
144
147
|
* **Details**
|
|
145
148
|
*
|
|
146
149
|
* - `"stdin"` (default): Pipe to stdin of the destination
|
|
147
|
-
* - `"fd3"`, `"fd4"`, etc.: Pipe to a custom file descriptor
|
|
150
|
+
* - `"fd3"`, `"fd4"`, etc.: Pipe to a custom file descriptor. A descriptor
|
|
151
|
+
* configured as `"duplex"` stays duplex.
|
|
148
152
|
*/
|
|
149
153
|
readonly to?: PipeToOption | undefined
|
|
150
154
|
}
|
|
@@ -411,6 +415,23 @@ export type AdditionalFdConfig =
|
|
|
411
415
|
*/
|
|
412
416
|
readonly sink?: Sink.Sink<Uint8Array, Uint8Array, never, PlatformError.PlatformError> | undefined
|
|
413
417
|
}
|
|
418
|
+
| {
|
|
419
|
+
/**
|
|
420
|
+
* The direction of data flow for this file descriptor.
|
|
421
|
+
* - "duplex": Data flows in both directions over the same file descriptor
|
|
422
|
+
* (writable and readable by parent)
|
|
423
|
+
*/
|
|
424
|
+
readonly type: "duplex"
|
|
425
|
+
/**
|
|
426
|
+
* An optional stream to write into the file descriptor. The write side is
|
|
427
|
+
* ended when the stream completes.
|
|
428
|
+
*/
|
|
429
|
+
readonly stream?: Stream.Stream<Uint8Array, PlatformError.PlatformError> | undefined
|
|
430
|
+
/**
|
|
431
|
+
* An optional sink which receives data read from the file descriptor.
|
|
432
|
+
*/
|
|
433
|
+
readonly sink?: Sink.Sink<Uint8Array, Uint8Array, never, PlatformError.PlatformError> | undefined
|
|
434
|
+
}
|
|
414
435
|
|
|
415
436
|
/**
|
|
416
437
|
* Options for command execution.
|
|
@@ -431,14 +452,18 @@ export interface CommandOptions extends KillOptions {
|
|
|
431
452
|
*
|
|
432
453
|
* If `extendEnv` is set to `true`, the value of `env` will be merged with
|
|
433
454
|
* the value of `globalThis.process.env`, prioritizing the values in `env`
|
|
434
|
-
* when conflicts exist.
|
|
455
|
+
* when conflicts exist. A variable set to `undefined` is then removed from
|
|
456
|
+
* the child environment.
|
|
457
|
+
*
|
|
458
|
+
* `Redacted` values are passed to the child unchanged and are never shown in
|
|
459
|
+
* errors.
|
|
435
460
|
*
|
|
436
461
|
* **Gotchas**
|
|
437
462
|
*
|
|
438
463
|
* Without `extendEnv: true`, providing `env` replaces the inherited child
|
|
439
464
|
* environment. The child will not receive `PATH` unless `env` includes it.
|
|
440
465
|
*/
|
|
441
|
-
readonly env?: Record<string, string | undefined> | undefined
|
|
466
|
+
readonly env?: Record<string, string | Redacted.Redacted<string> | undefined> | undefined
|
|
442
467
|
/**
|
|
443
468
|
* If set to `true`, the child process uses both the values in `env` as well
|
|
444
469
|
* as the values in `globalThis.process.env`, prioritizing the values in `env`
|
|
@@ -452,17 +477,45 @@ export interface CommandOptions extends KillOptions {
|
|
|
452
477
|
*/
|
|
453
478
|
readonly extendEnv?: boolean | undefined
|
|
454
479
|
/**
|
|
455
|
-
* If set to `true`, runs the command inside of a shell,
|
|
456
|
-
* on UNIX systems and `cmd.exe` on Windows.
|
|
480
|
+
* If set to `true`, runs the command as a script inside of a shell,
|
|
481
|
+
* defaulting to `/bin/sh` on UNIX systems and `cmd.exe` on Windows.
|
|
457
482
|
*
|
|
458
483
|
* **Details**
|
|
459
484
|
*
|
|
460
485
|
* Can also be set to a string representing the absolute path to a shell to
|
|
461
|
-
* use on the system.
|
|
486
|
+
* use on the system. The command is the whole script; build it with
|
|
487
|
+
* `CommandLine.join` or `CommandLine.quote` when it contains values.
|
|
488
|
+
*
|
|
489
|
+
* This is also the way to run a command configured as shell text, such as
|
|
490
|
+
* the `EDITOR` environment variable. The setting is trusted shell text and
|
|
491
|
+
* runs as written, so use it as the start of the script and quote the values
|
|
492
|
+
* that follow it. Name a POSIX shell, because `shell: true` runs `cmd.exe` on
|
|
493
|
+
* Windows, which POSIX quoting does not protect.
|
|
462
494
|
*
|
|
463
495
|
* **Gotchas**
|
|
464
496
|
*
|
|
465
|
-
*
|
|
497
|
+
* - Running a command with both `shell` and arguments fails with a
|
|
498
|
+
* `BadArgument` error, because shells would join the arguments into the
|
|
499
|
+
* script without quoting them.
|
|
500
|
+
* - On Windows the script runs in `cmd.exe`, which no `CommandLine` format
|
|
501
|
+
* quotes for. `CommandLine.join` with `format: "windows"` is only safe for
|
|
502
|
+
* arguments without `%`, `^`, `&`, `|`, `<` or `>`.
|
|
503
|
+
* - It is generally disadvised to use this option.
|
|
504
|
+
*
|
|
505
|
+
* **Example** (Running a configured editor)
|
|
506
|
+
*
|
|
507
|
+
* ```ts import.meta.vitest
|
|
508
|
+
* import { Result } from "effect"
|
|
509
|
+
* import { ChildProcess, CommandLine } from "effect/process"
|
|
510
|
+
*
|
|
511
|
+
* const editor = "code --wait" // for example, process.env.EDITOR
|
|
512
|
+
* const file = "notes from today.txt"
|
|
513
|
+
*
|
|
514
|
+
* const command = ChildProcess.make(`${editor} ${Result.getOrThrow(CommandLine.quote(file))}`, {
|
|
515
|
+
* shell: "/bin/sh"
|
|
516
|
+
* })
|
|
517
|
+
* command.command // => "code --wait 'notes from today.txt'"
|
|
518
|
+
* ```
|
|
466
519
|
*/
|
|
467
520
|
readonly shell?: boolean | string | undefined
|
|
468
521
|
/**
|
|
@@ -508,11 +561,21 @@ export interface CommandOptions extends KillOptions {
|
|
|
508
561
|
*
|
|
509
562
|
* **Details**
|
|
510
563
|
*
|
|
511
|
-
* Keys
|
|
512
|
-
* index >= 3.
|
|
564
|
+
* Keys use the descriptor index: `"fd3"`, `"fd4"`, etc. (index >= 3).
|
|
513
565
|
*
|
|
514
|
-
*
|
|
515
|
-
*
|
|
566
|
+
* For `"duplex"`, use `getInputFd` to write and `getOutputFd` to read the same
|
|
567
|
+
* descriptor. `pipeTo` preserves duplex targets, replacing only their input.
|
|
568
|
+
*
|
|
569
|
+
* Duplex request/response and half-close are verified on Linux with Node.js
|
|
570
|
+
* and raw Deno `node:child_process` (not Effect's spawner). The same behavior
|
|
571
|
+
* is expected on macOS; Windows request/response is expected but unverified.
|
|
572
|
+
* Half-close is unsupported on Windows and Bun: keep the input open until
|
|
573
|
+
* all responses are read. Bun extra descriptors on Windows are unverified.
|
|
574
|
+
* Native `DenoChildProcessSpawner` does not support additional descriptors.
|
|
575
|
+
*
|
|
576
|
+
* Node.js and Deno children can use `new net.Socket({ fd: 3 })`. Deno children
|
|
577
|
+
* cannot use `node:fs` on the raw descriptor; Bun children cannot use
|
|
578
|
+
* `net.Socket` on it.
|
|
516
579
|
*
|
|
517
580
|
* **Example** (Configuring additional file descriptors)
|
|
518
581
|
*
|
|
@@ -532,31 +595,23 @@ export interface CommandOptions extends KillOptions {
|
|
|
532
595
|
* fd3: { type: "input" }
|
|
533
596
|
* }
|
|
534
597
|
* })
|
|
535
|
-
*
|
|
536
|
-
*
|
|
598
|
+
* // Duplex fd3 - write and read over the same descriptor
|
|
599
|
+
* const cmd3 = ChildProcess.make("my-program", [], {
|
|
600
|
+
* additionalFds: {
|
|
601
|
+
* fd3: { type: "duplex" }
|
|
602
|
+
* }
|
|
603
|
+
* })
|
|
604
|
+
* const result = [
|
|
605
|
+
* cmd1.options.additionalFds?.fd3?.type,
|
|
606
|
+
* cmd2.options.additionalFds?.fd3?.type,
|
|
607
|
+
* cmd3.options.additionalFds?.fd3?.type
|
|
608
|
+
* ]
|
|
609
|
+
* result // => ["output", "input", "duplex"]
|
|
537
610
|
* ```
|
|
538
611
|
*/
|
|
539
612
|
readonly additionalFds?: Record<`fd${number}`, AdditionalFdConfig> | undefined
|
|
540
613
|
}
|
|
541
614
|
|
|
542
|
-
/**
|
|
543
|
-
* Valid template expression item types.
|
|
544
|
-
*
|
|
545
|
-
* @stability unstable
|
|
546
|
-
* @category models
|
|
547
|
-
* @since 4.0.0
|
|
548
|
-
*/
|
|
549
|
-
export type TemplateExpressionItem = string | number | boolean
|
|
550
|
-
|
|
551
|
-
/**
|
|
552
|
-
* Template expression type for interpolated values.
|
|
553
|
-
*
|
|
554
|
-
* @stability unstable
|
|
555
|
-
* @category models
|
|
556
|
-
* @since 4.0.0
|
|
557
|
-
*/
|
|
558
|
-
export type TemplateExpression = TemplateExpressionItem | ReadonlyArray<TemplateExpressionItem>
|
|
559
|
-
|
|
560
615
|
// =============================================================================
|
|
561
616
|
// Constructors
|
|
562
617
|
// =============================================================================
|
|
@@ -600,7 +655,7 @@ export const isPipedCommand = (command: Command): command is PipedCommand => com
|
|
|
600
655
|
|
|
601
656
|
const makeStandardCommand = (
|
|
602
657
|
command: string,
|
|
603
|
-
args: ReadonlyArray<
|
|
658
|
+
args: ReadonlyArray<CommandLine.Word>,
|
|
604
659
|
options: CommandOptions
|
|
605
660
|
): StandardCommand =>
|
|
606
661
|
Object.assign(Object.create(Proto), {
|
|
@@ -632,16 +687,33 @@ const makePipedCommand = (
|
|
|
632
687
|
* 2. Options + template literal: `make({ cwd: "/app" })\`npm run build\``
|
|
633
688
|
* 3. Array form: `make("npm", ["run", "build"], options?)`
|
|
634
689
|
*
|
|
635
|
-
*
|
|
636
|
-
*
|
|
690
|
+
* Templates are split with `CommandLine.template`: quotes group words, each
|
|
691
|
+
* `${}` value is one literal argument, and an argument that contains a
|
|
692
|
+
* `Redacted` value stays `Redacted`. Arguments in the array form can be
|
|
693
|
+
* `Redacted` too.
|
|
694
|
+
*
|
|
695
|
+
* With the `shell` option, the template text is the shell script and is kept
|
|
696
|
+
* as written.
|
|
697
|
+
*
|
|
698
|
+
* **Gotchas**
|
|
699
|
+
*
|
|
700
|
+
* - A template is parsed when `make` is called. Shell syntax such as `|`,
|
|
701
|
+
* `$HOME`, `*` or `~` throws a `CommandLine.CommandLineError`: quote it, or
|
|
702
|
+
* pass the value with `${}`.
|
|
703
|
+
* - A template with the `shell` option cannot contain `${}` values, because
|
|
704
|
+
* their quoting depends on the shell. Build the script with
|
|
705
|
+
* `CommandLine.quote` and pass it as a string.
|
|
706
|
+
* - The program name, the first word, cannot be `Redacted`.
|
|
707
|
+
* - A NUL character in the command, an argument or an `env` value fails with
|
|
708
|
+
* a `BadArgument` error when the command is spawned.
|
|
637
709
|
*
|
|
638
710
|
* **Example** (Creating commands)
|
|
639
711
|
*
|
|
640
712
|
* ```ts import.meta.vitest
|
|
641
713
|
* import { ChildProcess } from "effect/process"
|
|
642
714
|
*
|
|
643
|
-
* // Template literal form
|
|
644
|
-
* const cmd1 = ChildProcess.make`echo "hello"`
|
|
715
|
+
* // Template literal form; quotes group words
|
|
716
|
+
* const cmd1 = ChildProcess.make`echo "hello world"`
|
|
645
717
|
*
|
|
646
718
|
* // With options
|
|
647
719
|
* const cmd2 = ChildProcess.make({ cwd: "/tmp" })`ls -la`
|
|
@@ -649,7 +721,7 @@ const makePipedCommand = (
|
|
|
649
721
|
* // Array form
|
|
650
722
|
* const cmd3 = ChildProcess.make("git", ["status"])
|
|
651
723
|
*
|
|
652
|
-
* const result = [cmd1.
|
|
724
|
+
* const result = [cmd1.args[0], cmd2.options.cwd, cmd3.args[0]] // => ["hello world", "/tmp", "status"]
|
|
653
725
|
* ```
|
|
654
726
|
*
|
|
655
727
|
* @stability unstable
|
|
@@ -667,16 +739,33 @@ export const make: {
|
|
|
667
739
|
* 2. Options + template literal: `make({ cwd: "/app" })\`npm run build\``
|
|
668
740
|
* 3. Array form: `make("npm", ["run", "build"], options?)`
|
|
669
741
|
*
|
|
670
|
-
*
|
|
671
|
-
*
|
|
742
|
+
* Templates are split with `CommandLine.template`: quotes group words, each
|
|
743
|
+
* `${}` value is one literal argument, and an argument that contains a
|
|
744
|
+
* `Redacted` value stays `Redacted`. Arguments in the array form can be
|
|
745
|
+
* `Redacted` too.
|
|
746
|
+
*
|
|
747
|
+
* With the `shell` option, the template text is the shell script and is kept
|
|
748
|
+
* as written.
|
|
749
|
+
*
|
|
750
|
+
* **Gotchas**
|
|
751
|
+
*
|
|
752
|
+
* - A template is parsed when `make` is called. Shell syntax such as `|`,
|
|
753
|
+
* `$HOME`, `*` or `~` throws a `CommandLine.CommandLineError`: quote it, or
|
|
754
|
+
* pass the value with `${}`.
|
|
755
|
+
* - A template with the `shell` option cannot contain `${}` values, because
|
|
756
|
+
* their quoting depends on the shell. Build the script with
|
|
757
|
+
* `CommandLine.quote` and pass it as a string.
|
|
758
|
+
* - The program name, the first word, cannot be `Redacted`.
|
|
759
|
+
* - A NUL character in the command, an argument or an `env` value fails with
|
|
760
|
+
* a `BadArgument` error when the command is spawned.
|
|
672
761
|
*
|
|
673
762
|
* **Example** (Creating commands)
|
|
674
763
|
*
|
|
675
764
|
* ```ts import.meta.vitest
|
|
676
765
|
* import { ChildProcess } from "effect/process"
|
|
677
766
|
*
|
|
678
|
-
* // Template literal form
|
|
679
|
-
* const cmd1 = ChildProcess.make`echo "hello"`
|
|
767
|
+
* // Template literal form; quotes group words
|
|
768
|
+
* const cmd1 = ChildProcess.make`echo "hello world"`
|
|
680
769
|
*
|
|
681
770
|
* // With options
|
|
682
771
|
* const cmd2 = ChildProcess.make({ cwd: "/tmp" })`ls -la`
|
|
@@ -684,7 +773,7 @@ export const make: {
|
|
|
684
773
|
* // Array form
|
|
685
774
|
* const cmd3 = ChildProcess.make("git", ["status"])
|
|
686
775
|
*
|
|
687
|
-
* const result = [cmd1.
|
|
776
|
+
* const result = [cmd1.args[0], cmd2.options.cwd, cmd3.args[0]] // => ["hello world", "/tmp", "status"]
|
|
688
777
|
* ```
|
|
689
778
|
*
|
|
690
779
|
* @stability unstable
|
|
@@ -702,16 +791,33 @@ export const make: {
|
|
|
702
791
|
* 2. Options + template literal: `make({ cwd: "/app" })\`npm run build\``
|
|
703
792
|
* 3. Array form: `make("npm", ["run", "build"], options?)`
|
|
704
793
|
*
|
|
705
|
-
*
|
|
706
|
-
*
|
|
794
|
+
* Templates are split with `CommandLine.template`: quotes group words, each
|
|
795
|
+
* `${}` value is one literal argument, and an argument that contains a
|
|
796
|
+
* `Redacted` value stays `Redacted`. Arguments in the array form can be
|
|
797
|
+
* `Redacted` too.
|
|
798
|
+
*
|
|
799
|
+
* With the `shell` option, the template text is the shell script and is kept
|
|
800
|
+
* as written.
|
|
801
|
+
*
|
|
802
|
+
* **Gotchas**
|
|
803
|
+
*
|
|
804
|
+
* - A template is parsed when `make` is called. Shell syntax such as `|`,
|
|
805
|
+
* `$HOME`, `*` or `~` throws a `CommandLine.CommandLineError`: quote it, or
|
|
806
|
+
* pass the value with `${}`.
|
|
807
|
+
* - A template with the `shell` option cannot contain `${}` values, because
|
|
808
|
+
* their quoting depends on the shell. Build the script with
|
|
809
|
+
* `CommandLine.quote` and pass it as a string.
|
|
810
|
+
* - The program name, the first word, cannot be `Redacted`.
|
|
811
|
+
* - A NUL character in the command, an argument or an `env` value fails with
|
|
812
|
+
* a `BadArgument` error when the command is spawned.
|
|
707
813
|
*
|
|
708
814
|
* **Example** (Creating commands)
|
|
709
815
|
*
|
|
710
816
|
* ```ts import.meta.vitest
|
|
711
817
|
* import { ChildProcess } from "effect/process"
|
|
712
818
|
*
|
|
713
|
-
* // Template literal form
|
|
714
|
-
* const cmd1 = ChildProcess.make`echo "hello"`
|
|
819
|
+
* // Template literal form; quotes group words
|
|
820
|
+
* const cmd1 = ChildProcess.make`echo "hello world"`
|
|
715
821
|
*
|
|
716
822
|
* // With options
|
|
717
823
|
* const cmd2 = ChildProcess.make({ cwd: "/tmp" })`ls -la`
|
|
@@ -719,14 +825,18 @@ export const make: {
|
|
|
719
825
|
* // Array form
|
|
720
826
|
* const cmd3 = ChildProcess.make("git", ["status"])
|
|
721
827
|
*
|
|
722
|
-
* const result = [cmd1.
|
|
828
|
+
* const result = [cmd1.args[0], cmd2.options.cwd, cmd3.args[0]] // => ["hello world", "/tmp", "status"]
|
|
723
829
|
* ```
|
|
724
830
|
*
|
|
725
831
|
* @stability unstable
|
|
726
832
|
* @category constructors
|
|
727
833
|
* @since 4.0.0
|
|
728
834
|
*/
|
|
729
|
-
(
|
|
835
|
+
(
|
|
836
|
+
command: string,
|
|
837
|
+
args: ReadonlyArray<CommandLine.Word>,
|
|
838
|
+
options?: CommandOptions
|
|
839
|
+
): StandardCommand
|
|
730
840
|
/**
|
|
731
841
|
* Create a command from a template literal, options + template, or array form.
|
|
732
842
|
*
|
|
@@ -737,16 +847,33 @@ export const make: {
|
|
|
737
847
|
* 2. Options + template literal: `make({ cwd: "/app" })\`npm run build\``
|
|
738
848
|
* 3. Array form: `make("npm", ["run", "build"], options?)`
|
|
739
849
|
*
|
|
740
|
-
*
|
|
741
|
-
*
|
|
850
|
+
* Templates are split with `CommandLine.template`: quotes group words, each
|
|
851
|
+
* `${}` value is one literal argument, and an argument that contains a
|
|
852
|
+
* `Redacted` value stays `Redacted`. Arguments in the array form can be
|
|
853
|
+
* `Redacted` too.
|
|
854
|
+
*
|
|
855
|
+
* With the `shell` option, the template text is the shell script and is kept
|
|
856
|
+
* as written.
|
|
857
|
+
*
|
|
858
|
+
* **Gotchas**
|
|
859
|
+
*
|
|
860
|
+
* - A template is parsed when `make` is called. Shell syntax such as `|`,
|
|
861
|
+
* `$HOME`, `*` or `~` throws a `CommandLine.CommandLineError`: quote it, or
|
|
862
|
+
* pass the value with `${}`.
|
|
863
|
+
* - A template with the `shell` option cannot contain `${}` values, because
|
|
864
|
+
* their quoting depends on the shell. Build the script with
|
|
865
|
+
* `CommandLine.quote` and pass it as a string.
|
|
866
|
+
* - The program name, the first word, cannot be `Redacted`.
|
|
867
|
+
* - A NUL character in the command, an argument or an `env` value fails with
|
|
868
|
+
* a `BadArgument` error when the command is spawned.
|
|
742
869
|
*
|
|
743
870
|
* **Example** (Creating commands)
|
|
744
871
|
*
|
|
745
872
|
* ```ts import.meta.vitest
|
|
746
873
|
* import { ChildProcess } from "effect/process"
|
|
747
874
|
*
|
|
748
|
-
* // Template literal form
|
|
749
|
-
* const cmd1 = ChildProcess.make`echo "hello"`
|
|
875
|
+
* // Template literal form; quotes group words
|
|
876
|
+
* const cmd1 = ChildProcess.make`echo "hello world"`
|
|
750
877
|
*
|
|
751
878
|
* // With options
|
|
752
879
|
* const cmd2 = ChildProcess.make({ cwd: "/tmp" })`ls -la`
|
|
@@ -754,7 +881,7 @@ export const make: {
|
|
|
754
881
|
* // Array form
|
|
755
882
|
* const cmd3 = ChildProcess.make("git", ["status"])
|
|
756
883
|
*
|
|
757
|
-
* const result = [cmd1.
|
|
884
|
+
* const result = [cmd1.args[0], cmd2.options.cwd, cmd3.args[0]] // => ["hello world", "/tmp", "status"]
|
|
758
885
|
* ```
|
|
759
886
|
*
|
|
760
887
|
* @stability unstable
|
|
@@ -763,7 +890,7 @@ export const make: {
|
|
|
763
890
|
*/
|
|
764
891
|
(options: CommandOptions): (
|
|
765
892
|
templates: TemplateStringsArray,
|
|
766
|
-
...expressions: ReadonlyArray<TemplateExpression>
|
|
893
|
+
...expressions: ReadonlyArray<CommandLine.TemplateExpression>
|
|
767
894
|
) => StandardCommand
|
|
768
895
|
/**
|
|
769
896
|
* Create a command from a template literal, options + template, or array form.
|
|
@@ -775,16 +902,33 @@ export const make: {
|
|
|
775
902
|
* 2. Options + template literal: `make({ cwd: "/app" })\`npm run build\``
|
|
776
903
|
* 3. Array form: `make("npm", ["run", "build"], options?)`
|
|
777
904
|
*
|
|
778
|
-
*
|
|
779
|
-
*
|
|
905
|
+
* Templates are split with `CommandLine.template`: quotes group words, each
|
|
906
|
+
* `${}` value is one literal argument, and an argument that contains a
|
|
907
|
+
* `Redacted` value stays `Redacted`. Arguments in the array form can be
|
|
908
|
+
* `Redacted` too.
|
|
909
|
+
*
|
|
910
|
+
* With the `shell` option, the template text is the shell script and is kept
|
|
911
|
+
* as written.
|
|
912
|
+
*
|
|
913
|
+
* **Gotchas**
|
|
914
|
+
*
|
|
915
|
+
* - A template is parsed when `make` is called. Shell syntax such as `|`,
|
|
916
|
+
* `$HOME`, `*` or `~` throws a `CommandLine.CommandLineError`: quote it, or
|
|
917
|
+
* pass the value with `${}`.
|
|
918
|
+
* - A template with the `shell` option cannot contain `${}` values, because
|
|
919
|
+
* their quoting depends on the shell. Build the script with
|
|
920
|
+
* `CommandLine.quote` and pass it as a string.
|
|
921
|
+
* - The program name, the first word, cannot be `Redacted`.
|
|
922
|
+
* - A NUL character in the command, an argument or an `env` value fails with
|
|
923
|
+
* a `BadArgument` error when the command is spawned.
|
|
780
924
|
*
|
|
781
925
|
* **Example** (Creating commands)
|
|
782
926
|
*
|
|
783
927
|
* ```ts import.meta.vitest
|
|
784
928
|
* import { ChildProcess } from "effect/process"
|
|
785
929
|
*
|
|
786
|
-
* // Template literal form
|
|
787
|
-
* const cmd1 = ChildProcess.make`echo "hello"`
|
|
930
|
+
* // Template literal form; quotes group words
|
|
931
|
+
* const cmd1 = ChildProcess.make`echo "hello world"`
|
|
788
932
|
*
|
|
789
933
|
* // With options
|
|
790
934
|
* const cmd2 = ChildProcess.make({ cwd: "/tmp" })`ls -la`
|
|
@@ -792,7 +936,7 @@ export const make: {
|
|
|
792
936
|
* // Array form
|
|
793
937
|
* const cmd3 = ChildProcess.make("git", ["status"])
|
|
794
938
|
*
|
|
795
|
-
* const result = [cmd1.
|
|
939
|
+
* const result = [cmd1.args[0], cmd2.options.cwd, cmd3.args[0]] // => ["hello world", "/tmp", "status"]
|
|
796
940
|
* ```
|
|
797
941
|
*
|
|
798
942
|
* @stability unstable
|
|
@@ -801,14 +945,14 @@ export const make: {
|
|
|
801
945
|
*/
|
|
802
946
|
(
|
|
803
947
|
templates: TemplateStringsArray,
|
|
804
|
-
...expressions: ReadonlyArray<TemplateExpression>
|
|
948
|
+
...expressions: ReadonlyArray<CommandLine.TemplateExpression>
|
|
805
949
|
): StandardCommand
|
|
806
950
|
} = function make(...args: Array<unknown>): any {
|
|
807
951
|
// Template literal form: make`command`
|
|
808
952
|
if (isTemplateString(args[0])) {
|
|
809
|
-
const [templates, ...expressions] = args as [TemplateStringsArray, ...ReadonlyArray<TemplateExpression>]
|
|
810
|
-
const
|
|
811
|
-
return makeStandardCommand(
|
|
953
|
+
const [templates, ...expressions] = args as [TemplateStringsArray, ...ReadonlyArray<CommandLine.TemplateExpression>]
|
|
954
|
+
const [command, cmdArgs] = parseTemplate(templates, expressions)
|
|
955
|
+
return makeStandardCommand(command, cmdArgs, {})
|
|
812
956
|
}
|
|
813
957
|
|
|
814
958
|
// Options form: make({ cwd: "/tmp" })`command`
|
|
@@ -816,10 +960,13 @@ export const make: {
|
|
|
816
960
|
const options = args[0] as CommandOptions
|
|
817
961
|
return function(
|
|
818
962
|
templates: TemplateStringsArray,
|
|
819
|
-
...expressions: ReadonlyArray<TemplateExpression>
|
|
963
|
+
...expressions: ReadonlyArray<CommandLine.TemplateExpression>
|
|
820
964
|
): StandardCommand {
|
|
821
|
-
|
|
822
|
-
|
|
965
|
+
if (options.shell !== undefined && options.shell !== false) {
|
|
966
|
+
return makeStandardCommand(shellScript(templates, expressions), [], options)
|
|
967
|
+
}
|
|
968
|
+
const [command, cmdArgs] = parseTemplate(templates, expressions)
|
|
969
|
+
return makeStandardCommand(command, cmdArgs, options)
|
|
823
970
|
}
|
|
824
971
|
}
|
|
825
972
|
|
|
@@ -832,7 +979,7 @@ export const make: {
|
|
|
832
979
|
// Standard form with arguments: make("command", ["arg1", "arg2"], options?)
|
|
833
980
|
const [command, cmdArgs = [], options = {}] = args as [
|
|
834
981
|
string,
|
|
835
|
-
ReadonlyArray<
|
|
982
|
+
ReadonlyArray<CommandLine.Word>?,
|
|
836
983
|
CommandOptions?
|
|
837
984
|
]
|
|
838
985
|
return makeStandardCommand(command, cmdArgs, options)
|
|
@@ -966,7 +1113,7 @@ export const pipeTo: {
|
|
|
966
1113
|
* ```ts import.meta.vitest
|
|
967
1114
|
* import { ChildProcess } from "effect/process"
|
|
968
1115
|
*
|
|
969
|
-
* const command = ChildProcess.make`echo
|
|
1116
|
+
* const command = ChildProcess.make`echo foo`
|
|
970
1117
|
*
|
|
971
1118
|
* const prefixed = command.pipe(
|
|
972
1119
|
* ChildProcess.prefix`time`
|
|
@@ -994,7 +1141,7 @@ export const prefix: {
|
|
|
994
1141
|
* ```ts import.meta.vitest
|
|
995
1142
|
* import { ChildProcess } from "effect/process"
|
|
996
1143
|
*
|
|
997
|
-
* const command = ChildProcess.make`echo
|
|
1144
|
+
* const command = ChildProcess.make`echo foo`
|
|
998
1145
|
*
|
|
999
1146
|
* const prefixed = command.pipe(
|
|
1000
1147
|
* ChildProcess.prefix`time`
|
|
@@ -1009,7 +1156,7 @@ export const prefix: {
|
|
|
1009
1156
|
* @category combinators
|
|
1010
1157
|
* @since 4.0.0
|
|
1011
1158
|
*/
|
|
1012
|
-
(command: string, args?: ReadonlyArray<
|
|
1159
|
+
(command: string, args?: ReadonlyArray<CommandLine.Word>): (self: Command) => Command
|
|
1013
1160
|
/**
|
|
1014
1161
|
* Prepends another command to a command.
|
|
1015
1162
|
*
|
|
@@ -1022,7 +1169,7 @@ export const prefix: {
|
|
|
1022
1169
|
* ```ts import.meta.vitest
|
|
1023
1170
|
* import { ChildProcess } from "effect/process"
|
|
1024
1171
|
*
|
|
1025
|
-
* const command = ChildProcess.make`echo
|
|
1172
|
+
* const command = ChildProcess.make`echo foo`
|
|
1026
1173
|
*
|
|
1027
1174
|
* const prefixed = command.pipe(
|
|
1028
1175
|
* ChildProcess.prefix`time`
|
|
@@ -1039,7 +1186,7 @@ export const prefix: {
|
|
|
1039
1186
|
*/
|
|
1040
1187
|
(
|
|
1041
1188
|
templates: TemplateStringsArray,
|
|
1042
|
-
...expressions: ReadonlyArray<TemplateExpression>
|
|
1189
|
+
...expressions: ReadonlyArray<CommandLine.TemplateExpression>
|
|
1043
1190
|
): (self: Command) => Command
|
|
1044
1191
|
/**
|
|
1045
1192
|
* Prepends another command to a command.
|
|
@@ -1053,7 +1200,7 @@ export const prefix: {
|
|
|
1053
1200
|
* ```ts import.meta.vitest
|
|
1054
1201
|
* import { ChildProcess } from "effect/process"
|
|
1055
1202
|
*
|
|
1056
|
-
* const command = ChildProcess.make`echo
|
|
1203
|
+
* const command = ChildProcess.make`echo foo`
|
|
1057
1204
|
*
|
|
1058
1205
|
* const prefixed = command.pipe(
|
|
1059
1206
|
* ChildProcess.prefix`time`
|
|
@@ -1068,7 +1215,7 @@ export const prefix: {
|
|
|
1068
1215
|
* @category combinators
|
|
1069
1216
|
* @since 4.0.0
|
|
1070
1217
|
*/
|
|
1071
|
-
(self: Command, command: string, args?: ReadonlyArray<
|
|
1218
|
+
(self: Command, command: string, args?: ReadonlyArray<CommandLine.Word>): Command
|
|
1072
1219
|
} = function prefix(...args: Array<unknown>): any {
|
|
1073
1220
|
if (isCommand(args[0]) && args.length > 1) {
|
|
1074
1221
|
const [self, ...rest] = args as [Command, ...Array<unknown>]
|
|
@@ -1081,16 +1228,16 @@ export const prefix: {
|
|
|
1081
1228
|
|
|
1082
1229
|
type PrefixSpec = {
|
|
1083
1230
|
readonly command: string
|
|
1084
|
-
readonly args: ReadonlyArray<
|
|
1231
|
+
readonly args: ReadonlyArray<CommandLine.Word>
|
|
1085
1232
|
}
|
|
1086
1233
|
|
|
1087
1234
|
const parsePrefixArgs = (args: ReadonlyArray<unknown>): PrefixSpec => {
|
|
1088
1235
|
if (isTemplateString(args[0])) {
|
|
1089
|
-
const [templates, ...expressions] = args as [TemplateStringsArray, ...ReadonlyArray<TemplateExpression>]
|
|
1090
|
-
const
|
|
1091
|
-
return { command
|
|
1236
|
+
const [templates, ...expressions] = args as [TemplateStringsArray, ...ReadonlyArray<CommandLine.TemplateExpression>]
|
|
1237
|
+
const [command, cmdArgs] = parseTemplate(templates, expressions)
|
|
1238
|
+
return { command, args: cmdArgs }
|
|
1092
1239
|
}
|
|
1093
|
-
const [command, cmdArgs = []] = args as [string, ReadonlyArray<
|
|
1240
|
+
const [command, cmdArgs = []] = args as [string, ReadonlyArray<CommandLine.Word>?]
|
|
1094
1241
|
return { command, args: cmdArgs }
|
|
1095
1242
|
}
|
|
1096
1243
|
|
|
@@ -1239,7 +1386,7 @@ export const setEnv: {
|
|
|
1239
1386
|
* @category combinators
|
|
1240
1387
|
* @since 4.0.0
|
|
1241
1388
|
*/
|
|
1242
|
-
(env: Record<string, string
|
|
1389
|
+
(env: Record<string, string | Redacted.Redacted<string>>): (self: Command) => Command
|
|
1243
1390
|
/**
|
|
1244
1391
|
* Adds environment variables to a command, merging them with any existing
|
|
1245
1392
|
* command environment and overriding duplicate keys.
|
|
@@ -1263,10 +1410,10 @@ export const setEnv: {
|
|
|
1263
1410
|
* @category combinators
|
|
1264
1411
|
* @since 4.0.0
|
|
1265
1412
|
*/
|
|
1266
|
-
(self: Command, env: Record<string, string
|
|
1413
|
+
(self: Command, env: Record<string, string | Redacted.Redacted<string>>): Command
|
|
1267
1414
|
} = dual(
|
|
1268
1415
|
2,
|
|
1269
|
-
(self: Command, env: Record<string, string
|
|
1416
|
+
(self: Command, env: Record<string, string | Redacted.Redacted<string>>): Command => {
|
|
1270
1417
|
switch (self._tag) {
|
|
1271
1418
|
case "StandardCommand": {
|
|
1272
1419
|
const nextEnv = self.options.env === undefined
|
|
@@ -1316,188 +1463,36 @@ export const fdName = (fd: number): string => `fd${fd}`
|
|
|
1316
1463
|
// Template Parsing
|
|
1317
1464
|
// =============================================================================
|
|
1318
1465
|
|
|
1319
|
-
const parseTemplates = (
|
|
1320
|
-
templates: TemplateStringsArray,
|
|
1321
|
-
expressions: ReadonlyArray<TemplateExpression>
|
|
1322
|
-
): ReadonlyArray<string> => {
|
|
1323
|
-
let tokens: ReadonlyArray<string> = []
|
|
1324
|
-
for (const [index, template] of templates.entries()) {
|
|
1325
|
-
tokens = parseTemplate(templates, expressions, tokens, template, index)
|
|
1326
|
-
}
|
|
1327
|
-
return tokens
|
|
1328
|
-
}
|
|
1329
|
-
|
|
1330
1466
|
const parseTemplate = (
|
|
1331
1467
|
templates: TemplateStringsArray,
|
|
1332
|
-
expressions: ReadonlyArray<TemplateExpression
|
|
1333
|
-
|
|
1334
|
-
template
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
throw new Error(`Invalid backslash sequence: ${templates.raw[index]}`)
|
|
1468
|
+
expressions: ReadonlyArray<CommandLine.TemplateExpression>
|
|
1469
|
+
): [command: string, args: Array<CommandLine.Word>] => {
|
|
1470
|
+
const [program = "", ...args] = Result.getOrThrow(CommandLine.template(templates, ...expressions))
|
|
1471
|
+
if (typeof program !== "string") {
|
|
1472
|
+
throw new CommandLine.CommandLineError({
|
|
1473
|
+
reason: "InvalidArgument",
|
|
1474
|
+
message: "The program name of a command cannot be Redacted"
|
|
1475
|
+
})
|
|
1341
1476
|
}
|
|
1342
|
-
|
|
1343
|
-
const { hasLeadingWhitespace, hasTrailingWhitespace, tokens } = splitByWhitespaces(template, rawTemplate)
|
|
1344
|
-
const nextTokens = concatTokens(prevTokens, tokens, hasLeadingWhitespace)
|
|
1345
|
-
|
|
1346
|
-
if (index === expressions.length) {
|
|
1347
|
-
return nextTokens
|
|
1348
|
-
}
|
|
1349
|
-
|
|
1350
|
-
const expression = expressions[index]
|
|
1351
|
-
const expressionTokens = Array.isArray(expression)
|
|
1352
|
-
? expression.map((expression: TemplateExpressionItem) => parseExpression(expression))
|
|
1353
|
-
: [parseExpression(expression as TemplateExpressionItem)]
|
|
1354
|
-
|
|
1355
|
-
return concatTokens(nextTokens, expressionTokens, hasTrailingWhitespace)
|
|
1477
|
+
return [program, args]
|
|
1356
1478
|
}
|
|
1357
1479
|
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
return String(expression) // Convert numbers to strings
|
|
1368
|
-
}
|
|
1369
|
-
|
|
1370
|
-
const DELIMITERS = new Set([" ", "\t", "\r", "\n"])
|
|
1371
|
-
|
|
1372
|
-
/**
|
|
1373
|
-
* Number of characters in backslash escape sequences: \0 \xXX or \uXXXX
|
|
1374
|
-
* \cX is allowed in RegExps but not in strings
|
|
1375
|
-
* Octal sequences are not allowed in strict mode
|
|
1376
|
-
*/
|
|
1377
|
-
const ESCAPE_LENGTH: Record<string, number> = { x: 3, u: 5 }
|
|
1378
|
-
|
|
1379
|
-
/**
|
|
1380
|
-
* Splits a template string by whitespace while also properly handling escape
|
|
1381
|
-
* sequences.
|
|
1382
|
-
*
|
|
1383
|
-
* As an example, let's review the following valid commands:
|
|
1384
|
-
*
|
|
1385
|
-
* ```ts
|
|
1386
|
-
* ChildProcess.exec`echo foo\n bar`
|
|
1387
|
-
* // We should run `["echo", "foo\n", "bar"]`
|
|
1388
|
-
*
|
|
1389
|
-
* ChildProcess.exec`echo foo
|
|
1390
|
-
* bar`
|
|
1391
|
-
* // We should run `["echo", "foo", "bar]`
|
|
1392
|
-
* ```
|
|
1393
|
-
*
|
|
1394
|
-
* The problem is that when we evaluate the template string for both of the above
|
|
1395
|
-
* commands, we will end up with the same string "echo foo\n bar".
|
|
1396
|
-
*
|
|
1397
|
-
* What we really want is to include the escaped character in the arguments for
|
|
1398
|
-
* the first command, since it was written explicitly by the user.
|
|
1399
|
-
*
|
|
1400
|
-
* This is why also having access to the raw template string is useful - in a
|
|
1401
|
-
* template string, there are two representations of the same string:
|
|
1402
|
-
* 1. `template` - The processed string (escape sequences are evaluated).
|
|
1403
|
-
* 2. `template.raw` - The raw string (escape sequences are literal).
|
|
1404
|
-
*/
|
|
1405
|
-
const splitByWhitespaces = (template: string, rawTemplate: string): {
|
|
1406
|
-
readonly tokens: ReadonlyArray<string>
|
|
1407
|
-
readonly hasLeadingWhitespace: boolean
|
|
1408
|
-
readonly hasTrailingWhitespace: boolean
|
|
1409
|
-
} => {
|
|
1410
|
-
if (rawTemplate.length === 0) {
|
|
1411
|
-
return {
|
|
1412
|
-
tokens: [],
|
|
1413
|
-
hasLeadingWhitespace: false,
|
|
1414
|
-
hasTrailingWhitespace: false
|
|
1415
|
-
}
|
|
1416
|
-
}
|
|
1417
|
-
|
|
1418
|
-
const hasLeadingWhitespace = DELIMITERS.has(rawTemplate[0])
|
|
1419
|
-
const tokens: Array<string> = []
|
|
1420
|
-
|
|
1421
|
-
// Given that escape sequences will have different lengths in the template
|
|
1422
|
-
// versus the raw template, we must maintain two indices:
|
|
1423
|
-
// - One for the index into the template string
|
|
1424
|
-
// - One for the index into the raw template string
|
|
1425
|
-
// We also maintain the current cursor position for where we are in the template
|
|
1426
|
-
let templateCursor = 0
|
|
1427
|
-
for (
|
|
1428
|
-
let templateIndex = 0, rawIndex = 0;
|
|
1429
|
-
templateIndex < template.length;
|
|
1430
|
-
templateIndex += 1, rawIndex += 1
|
|
1431
|
-
) {
|
|
1432
|
-
// Use the raw template character to check for actual whitespace
|
|
1433
|
-
const rawCharacter = rawTemplate[rawIndex]
|
|
1434
|
-
|
|
1435
|
-
if (DELIMITERS.has(rawCharacter)) {
|
|
1436
|
-
// Whitespace found, extract token from template if necessary
|
|
1437
|
-
if (templateCursor !== templateIndex) {
|
|
1438
|
-
tokens.push(template.slice(templateCursor, templateIndex))
|
|
1439
|
-
}
|
|
1440
|
-
// Advance the template start index to the current position
|
|
1441
|
-
templateCursor = templateIndex + 1
|
|
1442
|
-
} else if (rawCharacter === "\\") {
|
|
1443
|
-
// Escape sequence detected, check the next raw character
|
|
1444
|
-
const nextRawCharacter = rawTemplate[rawIndex + 1]
|
|
1445
|
-
|
|
1446
|
-
if (nextRawCharacter === "\n") {
|
|
1447
|
-
// Handle `\` character followed by a newline (i.e. a line continuation) by:
|
|
1448
|
-
// - Reversing the template index (backslash-newline is erased in template)
|
|
1449
|
-
// - Advancing the raw template index past the line continuation
|
|
1450
|
-
templateIndex -= 1
|
|
1451
|
-
rawIndex += 1
|
|
1452
|
-
} else if (nextRawCharacter === "u" && rawTemplate[rawIndex + 2] === "{") {
|
|
1453
|
-
// Handle variable-length unicode escape sequences (i.e. `\u{1F600}`) by:
|
|
1454
|
-
// - Advancing the template index an extra code unit for astral code points
|
|
1455
|
-
// - Advancing the raw template index past the unicode escape sequence
|
|
1456
|
-
const end = rawTemplate.indexOf("}", rawIndex + 3)
|
|
1457
|
-
if (parseInt(rawTemplate.slice(rawIndex + 3, end), 16) > 0xffff) {
|
|
1458
|
-
templateIndex += 1
|
|
1459
|
-
}
|
|
1460
|
-
rawIndex = end
|
|
1461
|
-
} else {
|
|
1462
|
-
// Advance raw template index past fixed-length escape sequences:
|
|
1463
|
-
// - \n → 2 chars (backslash + n)
|
|
1464
|
-
// - \t → 2 chars (backslash + t)
|
|
1465
|
-
// - \xHH → 4 chars (backslash + x + H + H)
|
|
1466
|
-
// - \uHHHH → 6 chars (backslash + u + H + H + H + H)
|
|
1467
|
-
rawIndex += ESCAPE_LENGTH[nextRawCharacter] ?? 1
|
|
1468
|
-
}
|
|
1469
|
-
}
|
|
1470
|
-
}
|
|
1471
|
-
|
|
1472
|
-
// Trailing whitespace only exists if the template cursor is equivalent to the
|
|
1473
|
-
// length of the template
|
|
1474
|
-
const hasTrailingWhitespace = templateCursor === template.length
|
|
1475
|
-
|
|
1476
|
-
// If we did not end with trailing whitespace, ensure the final token is added
|
|
1477
|
-
if (!hasTrailingWhitespace) {
|
|
1478
|
-
tokens.push(template.slice(templateCursor))
|
|
1480
|
+
const shellScript = (
|
|
1481
|
+
templates: TemplateStringsArray,
|
|
1482
|
+
expressions: ReadonlyArray<CommandLine.TemplateExpression>
|
|
1483
|
+
): string => {
|
|
1484
|
+
if (expressions.length > 0) {
|
|
1485
|
+
throw new CommandLine.CommandLineError({
|
|
1486
|
+
reason: "UnsupportedSyntax",
|
|
1487
|
+
message: "A shell template cannot interpolate values; build the script with CommandLine.quote"
|
|
1488
|
+
})
|
|
1479
1489
|
}
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1490
|
+
const script = templates[0]
|
|
1491
|
+
if (script === undefined) {
|
|
1492
|
+
throw new CommandLine.CommandLineError({
|
|
1493
|
+
reason: "InvalidEscape",
|
|
1494
|
+
message: "Template part 0 contains an invalid escape sequence"
|
|
1495
|
+
})
|
|
1485
1496
|
}
|
|
1497
|
+
return script
|
|
1486
1498
|
}
|
|
1487
|
-
|
|
1488
|
-
/**
|
|
1489
|
-
* Concatenates two separate sets of string tokens together.
|
|
1490
|
-
*
|
|
1491
|
-
* If either set is empty or `isSeparated=false`, the last element of `prevTokens`
|
|
1492
|
-
* and the first element of `nextTokens` will be joined into a single token.
|
|
1493
|
-
*/
|
|
1494
|
-
const concatTokens = (
|
|
1495
|
-
prevTokens: ReadonlyArray<string>,
|
|
1496
|
-
nextTokens: ReadonlyArray<string>,
|
|
1497
|
-
isSeparated: boolean
|
|
1498
|
-
): ReadonlyArray<string> =>
|
|
1499
|
-
isSeparated || prevTokens.length === 0 || nextTokens.length === 0
|
|
1500
|
-
// Keep the previous and next tokens separate from one another
|
|
1501
|
-
? [...prevTokens, ...nextTokens]
|
|
1502
|
-
// Join the last token from the previous set and the first token from the next set
|
|
1503
|
-
: [...prevTokens.slice(0, -1), `${prevTokens.at(-1)}${nextTokens.at(0)}`, ...nextTokens.slice(1)]
|