alink-cli 0.7.3 → 0.7.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeServices-DDZTiw5K.mjs","names":["Option.some","Result.succeed","Inspectable.BaseProto","make","Effect.map","Stream.decodeText","Stream.unwrap","Stream.splitLines","Effect.scoped","Effect.flatMap","Stream.runCollect","Stream.mkString","Context.Service","TypeId","Context.getUnsafe","make","PlatformError.systemError","Sink.fromChannel","Channel.mapDone","Channel.fromTransform","Effect.succeed","Effect.flatMap","Effect.callback","Effect.void","Effect.forever","Effect.raceFirst","Effect.fail","Effect.sync","Pull.catchDone","Cause.done","Stream.fromChannel","Channel.fromTransform","MutableRef.make","Effect.catchCause","Pull.isDoneCause","Effect.void","Exit.failCause","Effect.forkIn","Effect.flatMap","Stream.pipeThroughChannelOrFail","Effect.callback","Effect.fail","Effect.succeed","Effect.sync","Effect.map","Latch.makeUnsafe","Exit.fail","Cause.Done","Effect.suspend","Arr.of","Effect.as","Scope.addFinalizer","Cause.UnknownError","make","FileSystem.FileSystem","Path.Path","Effect.fnUntraced","Predicate.isUndefined","Stream.isStream","Sink.isSink","ChildProcess.parseFdName","Predicate.isNotUndefined","Sink.drain","Stream.empty","NodeSink.fromWritable","Effect.forkScoped","Stream.run","NodeStream.fromReadable","Stream.transduce","Effect.suspend","Predicate.isNotNull","Effect.as","Effect.succeed","Stream.merge","Effect.callback","Deferred.makeUnsafe","Effect.fail","Exit.succeed","Effect.sync","Effect.void","Effect.try","Effect.timeoutOrElse","Effect.acquireRelease","Deferred.isDone","Deferred.await","Effect.ignore","Effect.catch","Effect.andThen","Effect.map","Effect.flatMap","Effect.asVoid","Stream.unwrap","ChildProcess.make","fdName","ChildProcess.fdName","Effect.gen","Effect.forEach","makeSpawner","layer","TypeId","make","Effect.map","Effect.sync","Effect.clockWith","Effect.succeed","Effect.fail","PlatformError.badArgument","Effect.try","PlatformError.systemError","make","layer","EffectCrypto.Crypto","layer","NodeCrypto.layer","Error.badArgument","Effect.suspend","Effect.acquireRelease","Effect.orDie","Effect.map","FileSystem.FileTypeId","FileSystem.Size","Effect.sync","Option.none","Option.some","Effect.flatMap","Effect.fail","Error.systemError","Effect.void","Effect.fnUntraced","Crypto","Effect.tryPromise","Effect.callback","Effect.succeed","Option.fromNullishOr","Stream.callback","Effect.matchEffect","Queue.offer","Cause.fail","Option.flatMap","Option.getOrElse","Stream.unwrap","FileSystem.WatchBackend","FileSystem.make","layer","FileSystem.FileSystem","layer","NodeFileSystem.layer","Effect.try","Path","TypeId","NodePath","layer","layer","NodePath.layer","TypeId","make","layer","Stdio.Stdio","layer","NodeStdio.layer","Schema.ErrorClass","Predicate.hasProperty","make","Queue.make","Effect.addFinalizer","Effect.sync","RcRef.make","Effect.acquireRelease","Queue.offerUnsafe","Effect.gen","Option.fromUndefinedOr","RcRef.get","Effect.suspend","Queue.poll","Effect.flatMap","Option.match","Effect.scoped","Effect.andThen","Queue.take","Effect.succeed","Effect.mapError","Terminal.QuitError","Effect.uninterruptible","Effect.callback","Predicate.isNullish","Effect.void","Effect.fail","Terminal.make","layer","Terminal.Terminal","layer","NodeTerminal.layer","NodeChildProcessSpawner.layer","NodeFileSystem.layer","NodeCrypto.layer","NodePath.layer","NodeStdio.layer","NodeTerminal.layer"],"sources":["../../../node_modules/.pnpm/effect@4.0.0-beta.103_patch_hash=a18f963109656ddbeb2a99ca45f942ecf54830986259eb01ce6a970421c9c6a9/node_modules/effect/dist/Brand.js","../../../node_modules/.pnpm/effect@4.0.0-beta.103_patch_hash=a18f963109656ddbeb2a99ca45f942ecf54830986259eb01ce6a970421c9c6a9/node_modules/effect/dist/unstable/process/ChildProcessSpawner.js","../../../node_modules/.pnpm/effect@4.0.0-beta.103_patch_hash=a18f963109656ddbeb2a99ca45f942ecf54830986259eb01ce6a970421c9c6a9/node_modules/effect/dist/unstable/process/ChildProcess.js","../../../node_modules/.pnpm/@effect+platform-node-shared@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patc_c414c3b6e1e822e230993f828f7aeb31/node_modules/@effect/platform-node-shared/dist/internal/utils.js","../../../node_modules/.pnpm/@effect+platform-node-shared@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patc_c414c3b6e1e822e230993f828f7aeb31/node_modules/@effect/platform-node-shared/dist/NodeSink.js","../../../node_modules/.pnpm/@effect+platform-node-shared@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patc_c414c3b6e1e822e230993f828f7aeb31/node_modules/@effect/platform-node-shared/dist/NodeStream.js","../../../node_modules/.pnpm/@effect+platform-node-shared@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patc_c414c3b6e1e822e230993f828f7aeb31/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js","../../../node_modules/.pnpm/effect@4.0.0-beta.103_patch_hash=a18f963109656ddbeb2a99ca45f942ecf54830986259eb01ce6a970421c9c6a9/node_modules/effect/dist/Crypto.js","../../../node_modules/.pnpm/@effect+platform-node-shared@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patc_c414c3b6e1e822e230993f828f7aeb31/node_modules/@effect/platform-node-shared/dist/NodeCrypto.js","../../../node_modules/.pnpm/@effect+platform-node@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patch_hash=_7eec308fcf6351488fccaf9a0edac255/node_modules/@effect/platform-node/dist/NodeCrypto.js","../../../node_modules/.pnpm/@effect+platform-node-shared@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patc_c414c3b6e1e822e230993f828f7aeb31/node_modules/@effect/platform-node-shared/dist/NodeFileSystem.js","../../../node_modules/.pnpm/@effect+platform-node@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patch_hash=_7eec308fcf6351488fccaf9a0edac255/node_modules/@effect/platform-node/dist/NodeFileSystem.js","../../../node_modules/.pnpm/@effect+platform-node-shared@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patc_c414c3b6e1e822e230993f828f7aeb31/node_modules/@effect/platform-node-shared/dist/NodePath.js","../../../node_modules/.pnpm/@effect+platform-node@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patch_hash=_7eec308fcf6351488fccaf9a0edac255/node_modules/@effect/platform-node/dist/NodePath.js","../../../node_modules/.pnpm/effect@4.0.0-beta.103_patch_hash=a18f963109656ddbeb2a99ca45f942ecf54830986259eb01ce6a970421c9c6a9/node_modules/effect/dist/Stdio.js","../../../node_modules/.pnpm/@effect+platform-node-shared@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patc_c414c3b6e1e822e230993f828f7aeb31/node_modules/@effect/platform-node-shared/dist/NodeStdio.js","../../../node_modules/.pnpm/@effect+platform-node@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patch_hash=_7eec308fcf6351488fccaf9a0edac255/node_modules/@effect/platform-node/dist/NodeStdio.js","../../../node_modules/.pnpm/effect@4.0.0-beta.103_patch_hash=a18f963109656ddbeb2a99ca45f942ecf54830986259eb01ce6a970421c9c6a9/node_modules/effect/dist/Terminal.js","../../../node_modules/.pnpm/@effect+platform-node-shared@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patc_c414c3b6e1e822e230993f828f7aeb31/node_modules/@effect/platform-node-shared/dist/NodeTerminal.js","../../../node_modules/.pnpm/@effect+platform-node@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patch_hash=_7eec308fcf6351488fccaf9a0edac255/node_modules/@effect/platform-node/dist/NodeTerminal.js","../../../node_modules/.pnpm/@effect+platform-node@4.0.0-beta.103_bufferutil@4.1.0_effect@4.0.0-beta.103_patch_hash=_7eec308fcf6351488fccaf9a0edac255/node_modules/@effect/platform-node/dist/NodeServices.js"],"sourcesContent":["/**\n * The `Brand` module adds compile-time names to ordinary TypeScript values so\n * structurally identical values cannot be mixed accidentally. A branded value\n * has the same runtime representation as its unbranded value; the extra\n * information lives in the type system unless you choose a validating\n * constructor.\n *\n * @since 2.0.0\n */\nimport * as Arr from \"./Array.js\";\nimport * as Option from \"./Option.js\";\nimport * as Result from \"./Result.js\";\nimport * as SchemaAST from \"./SchemaAST.js\";\nconst TypeId = \"~effect/Brand\";\n/**\n * Error returned when a branded type is constructed from an invalid value.\n *\n * **Details**\n *\n * The error wraps a `SchemaIssue.Issue`, exposes `message` through\n * `issue.toString()`, and formats as `BrandError(<message>)`.\n *\n * **Gotchas**\n *\n * `BrandError` is an error-like model with `_tag`, `name`, `message`, and\n * `toString`; it does not extend JavaScript `Error`.\n *\n * @category errors\n * @since 4.0.0\n */\nexport class BrandError {\n constructor(issue) {\n this.issue = issue;\n }\n /**\n * Discriminant used to identify brand construction failures.\n *\n * @since 4.0.0\n */\n _tag = \"BrandError\";\n /**\n * Error name used by tools that inspect JavaScript error-like objects.\n *\n * @since 4.0.0\n */\n name = \"BrandError\";\n /**\n * Schema issue describing why brand validation failed.\n *\n * @since 4.0.0\n */\n issue;\n /**\n * Human-readable rendering of the validation issue.\n *\n * @since 4.0.0\n */\n get message() {\n return this.issue.toString();\n }\n /**\n * Formats the brand error together with its validation message.\n *\n * @since 4.0.0\n */\n toString() {\n return `BrandError(${this.message})`;\n }\n}\n/**\n * Returns a `Constructor` that **does not apply any runtime checks** and just\n * returns the provided value.\n *\n * **When to use**\n *\n * Use to create nominal types that allow distinguishing between two values\n * of the same type but with different meanings.\n *\n * @see {@link make} for constructing branded values with validation.\n * @see {@link check} for constructing branded values from schema checks.\n *\n * @category constructors\n * @since 2.0.0\n */\nexport function nominal() {\n return Object.assign(input => input, {\n option: input => Option.some(input),\n result: input => Result.succeed(input),\n is: _ => true\n });\n}\n/**\n * Returns a `Constructor` that can construct a branded type from an unbranded\n * value using the provided `filter` predicate as validation of the input data.\n *\n * **When to use**\n *\n * Use when you want validation while constructing the branded type.\n *\n * @see {@link nominal} for a brand constructor that performs no validation.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport function make(filter) {\n return check(SchemaAST.makeFilter(filter));\n}\n/**\n * Creates a branded type `Constructor` from one or more schema checks.\n *\n * **When to use**\n *\n * Use when you need a branded type constructor that performs runtime validation\n * via schema checks.\n *\n * **Details**\n *\n * Calling the returned constructor validates the unbranded value and throws on\n * failure. Use the returned `option`, `result`, or `is` methods for\n * non-throwing validation.\n *\n * @see {@link nominal} for a brand constructor without runtime validation\n * @see {@link all} for combining multiple brand constructors\n * @category constructors\n * @since 4.0.0\n */\nexport function check(...checks) {\n const result = input => {\n return Result.mapError(SchemaAST.runChecks(checks, input), issue => new BrandError(issue));\n };\n return Object.assign(input => Result.getOrThrow(result(input)), {\n option: input => Option.getSuccess(result(input)),\n result,\n is: input => Result.isSuccess(result(input)),\n checks\n });\n}\n/**\n * Combines one or more brand constructors to form a single branded type.\n *\n * **When to use**\n *\n * Use to require an input to satisfy every runtime check collected by the\n * provided brand constructors.\n *\n * **Details**\n *\n * If the provided constructors contain runtime checks, the combined\n * constructor succeeds only when all checks pass. If no runtime checks are\n * present, it behaves as a nominal constructor.\n *\n * @category combining\n * @since 2.0.0\n */\nexport function all(...brands) {\n const checks = brands.flatMap(brand => brand.checks ?? []);\n return Arr.isArrayNonEmpty(checks) ? check(...checks) : nominal();\n}\n//# sourceMappingURL=Brand.js.map","/**\n * Service boundary for starting and controlling child processes.\n *\n * `ChildProcessSpawner` is the service used by `ChildProcess` commands to start\n * operating-system processes. A spawner turns a command description into a\n * handle that can write to stdin, read stdout and stderr, wait for exit, kill\n * the process, and manage whether the process keeps its parent alive. Platform\n * backends implement this service, while most application code uses the higher\n * level `ChildProcess` module.\n *\n * @since 4.0.0\n */\nimport * as Brand from \"../../Brand.js\";\nimport * as Context from \"../../Context.js\";\nimport * as Effect from \"../../Effect.js\";\nimport * as Inspectable from \"../../Inspectable.js\";\nimport * as Stream from \"../../Stream.js\";\n/**\n * Constructs branded child process `ExitCode` values.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const ExitCode = /*#__PURE__*/Brand.nominal();\n/**\n * Constructs branded child process `ProcessId` values.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const ProcessId = /*#__PURE__*/Brand.nominal();\nconst HandleTypeId = \"~effect/ChildProcessSpawner/ChildProcessHandle\";\nconst HandleProto = {\n [HandleTypeId]: HandleTypeId,\n ...Inspectable.BaseProto,\n toJSON() {\n return {\n _id: \"ChildProcessHandle\",\n pid: this.pid\n };\n }\n};\n/**\n * Constructs a new `ChildProcessHandle`.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const makeHandle = params => Object.setPrototypeOf({\n ...params\n}, HandleProto);\n/**\n * Creates a `ChildProcessSpawner` service from a `spawn` function, deriving\n * helpers for exit codes and output collection from that implementation.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const make = spawn => {\n const streamString = (command, options) => spawn(command).pipe(Effect.map(handle => Stream.decodeText(options?.includeStderr === true ? handle.all : handle.stdout)), Stream.unwrap);\n const streamLines = (command, options) => Stream.splitLines(streamString(command, options));\n return ChildProcessSpawner.of({\n spawn,\n exitCode: command => Effect.scoped(Effect.flatMap(spawn(command), handle => handle.exitCode)),\n streamString,\n streamLines,\n lines: (command, options) => Stream.runCollect(streamLines(command, options)),\n string: (command, options) => Stream.mkString(streamString(command, options))\n });\n};\n/**\n * Service tag for child process spawning.\n *\n * @category services\n * @since 4.0.0\n */\nexport class ChildProcessSpawner extends /*#__PURE__*/Context.Service()(\"effect/process/ChildProcessSpawner\") {}\n//# sourceMappingURL=ChildProcessSpawner.js.map","/**\n * Describes child processes before they are started.\n *\n * A `Command` stores the executable, arguments, environment, standard streams,\n * working directory, and other process options. Commands can also be piped\n * together. A command is an `Effect`; running it asks the\n * `ChildProcessSpawner` service to start the process and returns a\n * `ChildProcessHandle`.\n *\n * @since 4.0.0\n */\nimport * as Context from \"../../Context.js\";\nimport * as Effectable from \"../../Effectable.js\";\nimport { dual } from \"../../Function.js\";\nimport * as Predicate from \"../../Predicate.js\";\nimport { ChildProcessSpawner } from \"./ChildProcessSpawner.js\";\nconst TypeId = \"~effect/unstable/process/ChildProcess\";\n// =============================================================================\n// Constructors\n// =============================================================================\nconst Proto = {\n ... /*#__PURE__*/Effectable.Prototype({\n label: \"Command\",\n evaluate(fiber) {\n return Context.getUnsafe(fiber.context, ChildProcessSpawner).spawn(this);\n }\n }),\n [TypeId]: TypeId\n};\n/**\n * Checks whether a value is a `Command`.\n *\n * @category guards\n * @since 4.0.0\n */\nexport const isCommand = u => Predicate.hasProperty(u, TypeId);\n/**\n * Checks whether a command is a `StandardCommand`.\n *\n * @category guards\n * @since 4.0.0\n */\nexport const isStandardCommand = command => command._tag === \"StandardCommand\";\n/**\n * Checks whether a command is a `PipedCommand`.\n *\n * @category guards\n * @since 4.0.0\n */\nexport const isPipedCommand = command => command._tag === \"PipedCommand\";\nconst makeStandardCommand = (command, args, options) => Object.assign(Object.create(Proto), {\n _tag: \"StandardCommand\",\n command,\n args,\n options\n});\nconst makePipedCommand = (left, right, options = {}) => Object.assign(Object.create(Proto), {\n _tag: \"PipedCommand\",\n left,\n right,\n options\n});\n/**\n * Create a command from a template literal, options + template, or array form.\n *\n * **Details**\n *\n * This function supports three calling conventions:\n * 1. Template literal: `make\\`npm run build\\``\n * 2. Options + template literal: `make({ cwd: \"/app\" })\\`npm run build\\``\n * 3. Array form: `make(\"npm\", [\"run\", \"build\"], options?)`\n *\n * Template literals are not parsed until execution time, allowing parsing\n * errors to flow through Effect's error channel.\n *\n * **Example** (Creating commands)\n *\n * ```ts import.meta.vitest\n * import { ChildProcess } from \"effect/unstable/process\"\n *\n * // Template literal form\n * const cmd1 = ChildProcess.make`echo \"hello\"`\n *\n * // With options\n * const cmd2 = ChildProcess.make({ cwd: \"/tmp\" })`ls -la`\n *\n * // Array form\n * const cmd3 = ChildProcess.make(\"git\", [\"status\"])\n *\n * const result = [cmd1.command, cmd2.options.cwd, cmd3.args[0]] // => [\"echo\", \"/tmp\", \"status\"]\n * ```\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const make = function make(...args) {\n // Template literal form: make`command`\n if (isTemplateString(args[0])) {\n const [templates, ...expressions] = args;\n const tokens = parseTemplates(templates, expressions);\n return makeStandardCommand(tokens[0] ?? \"\", tokens.slice(1), {});\n }\n // Options form: make({ cwd: \"/tmp\" })`command`\n if (typeof args[0] === \"object\" && !Array.isArray(args[0]) && !isTemplateString(args[0])) {\n const options = args[0];\n return function (templates, ...expressions) {\n const tokens = parseTemplates(templates, expressions);\n return makeStandardCommand(tokens[0] ?? \"\", tokens.slice(1), options);\n };\n }\n // Standard form without arguments: make(\"command\", options?)\n if (typeof args[0] === \"string\" && !Array.isArray(args[1])) {\n const [command, options = {}] = args;\n return makeStandardCommand(command, [], options);\n }\n // Standard form with arguments: make(\"command\", [\"arg1\", \"arg2\"], options?)\n const [command, cmdArgs = [], options = {}] = args;\n return makeStandardCommand(command, cmdArgs, options);\n};\n/**\n * Pipes the output of one command to the input of another.\n *\n * **Details**\n *\n * By default, pipes `stdout` from the source to `stdin` of the destination.\n * Use the `options` parameter to customize which streams are connected.\n *\n * **Example** (Piping command output)\n *\n * ```ts import.meta.vitest\n * import { ChildProcess } from \"effect/unstable/process\"\n *\n * // Pipe stdout (default)\n * const pipeline1 = ChildProcess.make`cat file.txt`.pipe(\n * ChildProcess.pipeTo(ChildProcess.make`grep pattern`)\n * )\n *\n * // Pipe stderr instead of stdout\n * const pipeline2 = ChildProcess.make`my-program`.pipe(\n * ChildProcess.pipeTo(ChildProcess.make`grep error`, { from: \"stderr\" })\n * )\n *\n * // Pipe combined stdout and stderr\n * const pipeline3 = ChildProcess.make`my-program`.pipe(\n * ChildProcess.pipeTo(ChildProcess.make`tee output.log`, { from: \"all\" })\n * )\n *\n * const result = [pipeline1._tag, pipeline2.options.from, pipeline3.options.from]\n * result // => [\"PipedCommand\", \"stderr\", \"all\"]\n * ```\n *\n * @category combinators\n * @since 4.0.0\n */\nexport const pipeTo = /*#__PURE__*/dual(args => isCommand(args[0]) && isCommand(args[1]), (self, that, options) => makePipedCommand(self, that, options ?? {}));\n/**\n * Prepends another command to a command.\n *\n * **Details**\n *\n * For pipelines, only the leftmost command is prefixed.\n *\n * **Example** (Prefixing commands)\n *\n * ```ts import.meta.vitest\n * import { ChildProcess } from \"effect/unstable/process\"\n *\n * const command = ChildProcess.make`echo \"foo\"`\n *\n * const prefixed = command.pipe(\n * ChildProcess.prefix`time`\n * )\n *\n * // now prefixed will execute `time echo \"foo\"`\n * const result = prefixed._tag === \"StandardCommand\" ? `${prefixed.command} ${prefixed.args[0]}` : prefixed._tag\n * result // => \"time echo\"\n * ```\n *\n * @category combinators\n * @since 4.0.0\n */\nexport const prefix = function prefix(...args) {\n if (isCommand(args[0]) && args.length > 1) {\n const [self, ...rest] = args;\n const prefixSpec = parsePrefixArgs(rest);\n return applyPrefix(self, prefixSpec);\n }\n const prefixSpec = parsePrefixArgs(args);\n return self => applyPrefix(self, prefixSpec);\n};\nconst parsePrefixArgs = args => {\n if (isTemplateString(args[0])) {\n const [templates, ...expressions] = args;\n const tokens = parseTemplates(templates, expressions);\n return {\n command: tokens[0] ?? \"\",\n args: tokens.slice(1)\n };\n }\n const [command, cmdArgs = []] = args;\n return {\n command,\n args: cmdArgs\n };\n};\nconst applyPrefix = (self, prefixSpec) => {\n switch (self._tag) {\n case \"StandardCommand\":\n {\n return makeStandardCommand(prefixSpec.command, [...prefixSpec.args, self.command, ...self.args], self.options);\n }\n case \"PipedCommand\":\n {\n return makePipedCommand(applyPrefix(self.left, prefixSpec), self.right, self.options);\n }\n }\n};\n/**\n * Sets the current working directory for a command.\n *\n * **Details**\n *\n * For pipelines, applies to each command in the pipeline.\n *\n * **Example** (Setting command working directories)\n *\n * ```ts import.meta.vitest\n * import { ChildProcess } from \"effect/unstable/process\"\n *\n * const cmd = ChildProcess.make`ls -la`.pipe(\n * ChildProcess.setCwd(\"/tmp\")\n * )\n * const result = cmd._tag === \"StandardCommand\" && cmd.options.cwd // => \"/tmp\"\n * ```\n *\n * @category combinators\n * @since 4.0.0\n */\nexport const setCwd = /*#__PURE__*/dual(2, (self, cwd) => {\n switch (self._tag) {\n case \"StandardCommand\":\n {\n return makeStandardCommand(self.command, self.args, {\n ...self.options,\n cwd\n });\n }\n case \"PipedCommand\":\n {\n return makePipedCommand(setCwd(self.left, cwd), setCwd(self.right, cwd), self.options);\n }\n }\n});\n/**\n * Adds environment variables to a command, merging them with any existing\n * command environment and overriding duplicate keys.\n *\n * **Details**\n *\n * For pipelines, applies to each command in the pipeline.\n *\n * **Example** (Setting command environment variables)\n *\n * ```ts import.meta.vitest\n * import { ChildProcess } from \"effect/unstable/process\"\n *\n * const cmd = ChildProcess.make`node script.js`.pipe(\n * ChildProcess.setEnv({ NODE_ENV: \"test\" })\n * )\n * const result = cmd._tag === \"StandardCommand\" && cmd.options.env?.NODE_ENV // => \"test\"\n * ```\n *\n * @category combinators\n * @since 4.0.0\n */\nexport const setEnv = /*#__PURE__*/dual(2, (self, env) => {\n switch (self._tag) {\n case \"StandardCommand\":\n {\n const nextEnv = self.options.env === undefined ? env : {\n ...self.options.env,\n ...env\n };\n return makeStandardCommand(self.command, self.args, {\n ...self.options,\n env: nextEnv\n });\n }\n case \"PipedCommand\":\n {\n return makePipedCommand(setEnv(self.left, env), setEnv(self.right, env), self.options);\n }\n }\n});\nconst isTemplateString = u => Array.isArray(u) && \"raw\" in u && Array.isArray(u.raw);\n// =============================================================================\n// Utilities\n// =============================================================================\n/**\n * Parses an fd name like \"fd3\" to its numeric index.\n * Returns undefined if the name is invalid.\n *\n * @category converting\n * @since 4.0.0\n */\nexport const parseFdName = name => {\n const match = /^fd(\\d+)$/.exec(name);\n if (match === null) return undefined;\n const fd = parseInt(match[1], 10);\n return fd >= 3 ? fd : undefined;\n};\n/**\n * Create an fd name from its numeric index.\n *\n * @category converting\n * @since 4.0.0\n */\nexport const fdName = fd => `fd${fd}`;\n// =============================================================================\n// Template Parsing\n// =============================================================================\nconst parseTemplates = (templates, expressions) => {\n let tokens = [];\n for (const [index, template] of templates.entries()) {\n tokens = parseTemplate(templates, expressions, tokens, template, index);\n }\n return tokens;\n};\nconst parseTemplate = (templates, expressions, prevTokens, template, index) => {\n const rawTemplate = templates.raw[index];\n if (rawTemplate === undefined) {\n throw new Error(`Invalid backslash sequence: ${templates.raw[index]}`);\n }\n const {\n hasLeadingWhitespace,\n hasTrailingWhitespace,\n tokens\n } = splitByWhitespaces(template, rawTemplate);\n const nextTokens = concatTokens(prevTokens, tokens, hasLeadingWhitespace);\n if (index === expressions.length) {\n return nextTokens;\n }\n const expression = expressions[index];\n const expressionTokens = Array.isArray(expression) ? expression.map(expression => parseExpression(expression)) : [parseExpression(expression)];\n return concatTokens(nextTokens, expressionTokens, hasTrailingWhitespace);\n};\n/**\n * Convert valid expressions defined in a template string command (i.e. using\n * `${expression}` into strings.\n */\nconst parseExpression = expression => {\n const type = typeof expression;\n if (type === \"string\") {\n return expression; // Return strings directly\n }\n return String(expression); // Convert numbers to strings\n};\nconst DELIMITERS = /*#__PURE__*/new Set([\" \", \"\\t\", \"\\r\", \"\\n\"]);\n/**\n * Number of characters in backslash escape sequences: \\0 \\xXX or \\uXXXX\n * \\cX is allowed in RegExps but not in strings\n * Octal sequences are not allowed in strict mode\n */\nconst ESCAPE_LENGTH = {\n x: 3,\n u: 5\n};\n/**\n * Splits a template string by whitespace while also properly handling escape\n * sequences.\n *\n * As an example, let's review the following valid commands:\n *\n * ```ts\n * ChildProcess.exec`echo foo\\n bar`\n * // We should run `[\"echo\", \"foo\\n\", \"bar\"]`\n *\n * ChildProcess.exec`echo foo\n * bar`\n * // We should run `[\"echo\", \"foo\", \"bar]`\n * ```\n *\n * The problem is that when we evaluate the template string for both of the above\n * commands, we will end up with the same string \"echo foo\\n bar\".\n *\n * What we really want is to include the escaped character in the arguments for\n * the first command, since it was written explicitly by the user.\n *\n * This is why also having access to the raw template string is useful - in a\n * template string, there are two representations of the same string:\n * 1. `template` - The processed string (escape sequences are evaluated).\n * 2. `template.raw` - The raw string (escape sequences are literal).\n */\nconst splitByWhitespaces = (template, rawTemplate) => {\n if (rawTemplate.length === 0) {\n return {\n tokens: [],\n hasLeadingWhitespace: false,\n hasTrailingWhitespace: false\n };\n }\n const hasLeadingWhitespace = DELIMITERS.has(rawTemplate[0]);\n const tokens = [];\n // Given that escape sequences will have different lengths in the template\n // versus the raw template, we must maintain two indices:\n // - One for the index into the template string\n // - One for the index into the raw template string\n // We also maintain the current cursor position for where we are in the template\n let templateCursor = 0;\n for (let templateIndex = 0, rawIndex = 0; templateIndex < template.length; templateIndex += 1, rawIndex += 1) {\n // Use the raw template character to check for actual whitespace\n const rawCharacter = rawTemplate[rawIndex];\n if (DELIMITERS.has(rawCharacter)) {\n // Whitespace found, extract token from template if necessary\n if (templateCursor !== templateIndex) {\n tokens.push(template.slice(templateCursor, templateIndex));\n }\n // Advance the template start index to the current position\n templateCursor = templateIndex + 1;\n } else if (rawCharacter === \"\\\\\") {\n // Escape sequence detected, check the next raw character\n const nextRawCharacter = rawTemplate[rawIndex + 1];\n if (nextRawCharacter === \"\\n\") {\n // Handle `\\` character followed by a newline (i.e. a line continuation) by:\n // - Reversing the template index (backslash-newline is erased in template)\n // - Advancing the raw template index past the line continuation\n templateIndex -= 1;\n rawIndex += 1;\n } else if (nextRawCharacter === \"u\" && rawTemplate[rawIndex + 2] === \"{\") {\n // Handle variable-length unicode escape sequences (i.e. `\\u{1F600}`) by:\n // - Advancing the raw template index past the unicode escape sequence\n rawIndex = rawTemplate.indexOf(\"}\", rawIndex + 3);\n } else {\n // Advance raw template index past fixed-length escape sequences:\n // - \\n → 2 chars (backslash + n)\n // - \\t → 2 chars (backslash + t)\n // - \\xHH → 4 chars (backslash + x + H + H)\n // - \\uHHHH → 6 chars (backslash + u + H + H + H + H)\n rawIndex += ESCAPE_LENGTH[nextRawCharacter] ?? 1;\n }\n }\n }\n // Trailing whitespace only exists if the template cursor is equivalent to the\n // length of the template\n const hasTrailingWhitespace = templateCursor === template.length;\n // If we did not end with trailing whitespace, ensure the final token is added\n if (!hasTrailingWhitespace) {\n tokens.push(template.slice(templateCursor));\n }\n return {\n tokens,\n hasLeadingWhitespace,\n hasTrailingWhitespace\n };\n};\n/**\n * Concatenates two separate sets of string tokens together.\n *\n * If either set is empty or `isSeparated=false`, the last element of `prevTokens`\n * and the first element of `nextTokens` will be joined into a single token.\n */\nconst concatTokens = (prevTokens, nextTokens, isSeparated) => isSeparated || prevTokens.length === 0 || nextTokens.length === 0\n// Keep the previous and next tokens separate from one another\n? [...prevTokens, ...nextTokens]\n// Join the last token from the previous set and the first token from the next set\n: [...prevTokens.slice(0, -1), `${prevTokens.at(-1)}${nextTokens.at(0)}`, ...nextTokens.slice(1)];\n//# sourceMappingURL=ChildProcess.js.map","import * as PlatformError from \"effect/PlatformError\";\n/** @internal */\nexport const handleErrnoException = (module, method) => (err, [path]) => {\n let reason = \"Unknown\";\n switch (err.code) {\n case \"ENOENT\":\n reason = \"NotFound\";\n break;\n case \"EACCES\":\n reason = \"PermissionDenied\";\n break;\n case \"EEXIST\":\n reason = \"AlreadyExists\";\n break;\n case \"EISDIR\":\n reason = \"BadResource\";\n break;\n case \"ENOTDIR\":\n reason = \"BadResource\";\n break;\n case \"EBUSY\":\n reason = \"Busy\";\n break;\n case \"ELOOP\":\n reason = \"BadResource\";\n break;\n }\n return PlatformError.systemError({\n _tag: reason,\n module,\n method,\n pathOrDescriptor: path,\n syscall: err.syscall,\n cause: err\n });\n};\n//# sourceMappingURL=utils.js.map","import * as Cause from \"effect/Cause\";\nimport * as Channel from \"effect/Channel\";\nimport * as Effect from \"effect/Effect\";\nimport { identity } from \"effect/Function\";\nimport * as Pull from \"effect/Pull\";\nimport * as Sink from \"effect/Sink\";\n/**\n * Creates a `Sink` that writes chunks to a Node writable stream, respecting\n * backpressure, mapping writable errors with `onError`, and ending the stream\n * on completion unless `endOnDone` is `false`.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const fromWritable = options => Sink.fromChannel(Channel.mapDone(fromWritableChannel(options), _ => [_]));\n/**\n * Creates a `Channel` that pulls chunks from upstream and writes them to a\n * Node writable stream, respecting backpressure and optionally ending the\n * writable when upstream is done.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const fromWritableChannel = options => Channel.fromTransform(pull => {\n const writable = options.evaluate();\n return Effect.succeed(pullIntoWritable({\n ...options,\n writable,\n pull\n }));\n});\n/**\n * Writes Effect chunks into a Node writable stream.\n *\n * **When to use**\n *\n * Use to implement custom Node stream adapters that already have an upstream\n * pull and need direct control over a writable stream.\n *\n * **Details**\n *\n * The loop waits for `drain` when needed, fails on writable errors, and ends\n * the writable on upstream completion unless `endOnDone` is `false`.\n *\n * @category converting\n * @since 4.0.0\n */\nexport const pullIntoWritable = options => options.pull.pipe(Effect.flatMap(chunk => {\n let i = 0;\n return Effect.callback(function loop(resume) {\n for (; i < chunk.length;) {\n const success = options.writable.write(chunk[i++], options.encoding);\n if (!success) {\n options.writable.once(\"drain\", () => loop(resume));\n return;\n }\n }\n resume(Effect.void);\n });\n}), Effect.forever({\n disableYield: true\n}), Effect.raceFirst(Effect.callback(resume => {\n const onError = error => resume(Effect.fail(options.onError(error)));\n options.writable.once(\"error\", onError);\n return Effect.sync(() => {\n options.writable.off(\"error\", onError);\n });\n})), options.endOnDone !== false ? Pull.catchDone(_ => {\n if (\"closed\" in options.writable && options.writable.closed) {\n return Cause.done(_);\n }\n return Effect.callback(resume => {\n options.writable.once(\"finish\", () => resume(Cause.done(_)));\n options.writable.end();\n });\n}) : identity);\n//# sourceMappingURL=NodeSink.js.map","/**\n * Adapters between Node streams and Effect streams, channels, and readables.\n *\n * This module is the stream boundary for Node APIs. It wraps `Readable` and\n * `Duplex` values as Effect `Stream`s and `Channel`s, pipes Effect streams\n * through Node duplex streams, exposes an Effect `Stream` back to Node as a\n * `Readable`, and collects readable payloads into strings, array buffers, or\n * `Uint8Array`s with optional byte limits.\n *\n * @since 4.0.0\n */\nimport * as Arr from \"effect/Array\";\nimport * as Cause from \"effect/Cause\";\nimport * as Channel from \"effect/Channel\";\nimport * as Context from \"effect/Context\";\nimport * as Effect from \"effect/Effect\";\nimport * as Exit from \"effect/Exit\";\nimport * as Fiber from \"effect/Fiber\";\nimport { dual } from \"effect/Function\";\nimport * as Latch from \"effect/Latch\";\nimport * as MutableRef from \"effect/MutableRef\";\nimport * as Pull from \"effect/Pull\";\nimport * as Scope from \"effect/Scope\";\nimport * as Stream from \"effect/Stream\";\nimport { Readable } from \"node:stream\";\nimport { pullIntoWritable } from \"./NodeSink.js\";\n/**\n * Converts a Node readable stream into an Effect `Stream`, reading chunks with\n * an optional chunk size, mapping stream errors with `onError`, and destroying\n * the readable on completion unless `closeOnDone` is `false`.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const fromReadable = options => Stream.fromChannel(fromReadableChannel(options));\n/**\n * Creates a `Channel` that pulls chunks from a Node readable stream, mapping\n * errors with `onError` and destroying the readable on completion unless\n * `closeOnDone` is `false`.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const fromReadableChannel = options => Channel.fromTransform((_, scope) => readableToPullUnsafe({\n scope,\n readable: options.evaluate(),\n onError: options.onError ?? defaultOnError,\n chunkSize: options.chunkSize,\n closeOnDone: options.closeOnDone\n}));\n/**\n * Creates a `Channel` over a Node `Duplex`, writing upstream chunks with\n * backpressure while emitting chunks read from the duplex and optionally ending\n * the writable side when upstream completes.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const fromDuplex = options => Channel.fromTransform((upstream, scope) => {\n const duplex = options.evaluate();\n const exit = MutableRef.make(undefined);\n return pullIntoWritable({\n pull: upstream,\n writable: duplex,\n onError: options.onError ?? defaultOnError,\n endOnDone: options.endOnDone,\n encoding: options.encoding\n }).pipe(Effect.catchCause(cause => {\n if (Pull.isDoneCause(cause)) return Effect.void;\n exit.current = Exit.failCause(cause);\n return Effect.void;\n }), Effect.forkIn(scope), Effect.flatMap(() => readableToPullUnsafe({\n scope,\n exit,\n readable: duplex,\n onError: options.onError ?? defaultOnError,\n chunkSize: options.chunkSize\n })));\n});\n/**\n * Pipes an Effect `Stream` through a Node `Duplex`, writing the stream's\n * chunks to the duplex and emitting chunks read back from it.\n *\n * @category combinators\n * @since 4.0.0\n */\nexport const pipeThroughDuplex = /*#__PURE__*/dual(2, (self, options) => Stream.pipeThroughChannelOrFail(self, fromDuplex(options)));\n/**\n * Pipes a stream of strings or bytes through a Node `Duplex` using default\n * options and `Cause.UnknownError` for stream failures.\n *\n * @category combinators\n * @since 4.0.0\n */\nexport const pipeThroughSimple = /*#__PURE__*/dual(2, (self, duplex) => pipeThroughDuplex(self, {\n evaluate: duplex\n}));\n/**\n * Converts an Effect `Stream` into a Node `Readable`, using the caller's\n * Effect context to run the stream and destroying the readable if the stream\n * fails.\n *\n * @category converting\n * @since 4.0.0\n */\nexport const toReadable = stream => Effect.map(Effect.context(), context => new StreamAdapter(context, stream));\n/**\n * Converts a service-free Effect `Stream` into a Node `Readable` using an\n * empty Effect context.\n *\n * @category converting\n * @since 4.0.0\n */\nexport const toReadableNever = stream => new StreamAdapter(Context.empty(), stream);\n/**\n * Consumes a Node readable stream into a string using the selected encoding,\n * failing through `onError` on stream errors or when `maxBytes` is exceeded\n * and destroying the stream on interruption or failure.\n *\n * @category converting\n * @since 4.0.0\n */\nexport const toString = (readable, options) => {\n const maxBytesNumber = options?.maxBytes ? Number(options.maxBytes) : undefined;\n const onError = options?.onError ?? defaultOnError;\n const encoding = options?.encoding ?? \"utf8\";\n return Effect.callback(resume => {\n const stream = readable();\n stream.setEncoding(encoding);\n stream.once(\"error\", err => {\n if (\"closed\" in stream && !stream.closed) {\n stream.destroy();\n }\n resume(Effect.fail(onError(err)));\n });\n stream.once(\"error\", err => {\n resume(Effect.fail(onError(err)));\n });\n let string = \"\";\n let bytes = 0;\n stream.once(\"end\", () => {\n resume(Effect.succeed(string));\n });\n stream.on(\"data\", chunk => {\n string += chunk;\n bytes += Buffer.byteLength(chunk);\n if (maxBytesNumber && bytes > maxBytesNumber) {\n resume(Effect.fail(onError(new Error(\"maxBytes exceeded\"))));\n }\n });\n return Effect.sync(() => {\n if (\"closed\" in stream && !stream.closed) {\n stream.destroy();\n }\n });\n });\n};\n/**\n * Consumes a Node readable stream into an `ArrayBuffer`, failing through\n * `onError` on stream errors or when `maxBytes` is exceeded and destroying the\n * stream on interruption or failure.\n *\n * @category converting\n * @since 4.0.0\n */\nexport const toArrayBuffer = (readable, options) => {\n const maxBytesNumber = options?.maxBytes ? Number(options.maxBytes) : undefined;\n const onError = options?.onError ?? defaultOnError;\n return Effect.callback(resume => {\n const stream = readable();\n const buffers = [];\n let bytes = 0;\n stream.once(\"error\", err => {\n if (\"closed\" in stream && !stream.closed) {\n stream.destroy();\n }\n resume(Effect.fail(onError(err)));\n });\n stream.once(\"end\", () => {\n const buffer = buffers.length === 1 ? buffers[0] : Buffer.concat(buffers);\n if (buffer.byteOffset === 0 && buffer.buffer.byteLength === buffer.byteLength) {\n return resume(Effect.succeed(buffer.buffer));\n }\n resume(Effect.succeed(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)));\n });\n stream.on(\"data\", chunk => {\n buffers.push(chunk);\n bytes += chunk.length;\n if (maxBytesNumber && bytes > maxBytesNumber) {\n resume(Effect.fail(onError(new Error(\"maxBytes exceeded\"))));\n }\n });\n return Effect.sync(() => {\n if (\"closed\" in stream && !stream.closed) {\n stream.destroy();\n }\n });\n });\n};\n/**\n * Consumes a Node readable stream into a `Uint8Array`, using the same error\n * mapping and `maxBytes` handling as `toArrayBuffer`.\n *\n * @category converting\n * @since 4.0.0\n */\nexport const toUint8Array = (readable, options) => Effect.map(toArrayBuffer(readable, options), buffer => new Uint8Array(buffer));\n// ----------------------------------------------------------------------------\n// internal\n// ----------------------------------------------------------------------------\nconst readableToPullUnsafe = options => {\n const readable = options.readable;\n const closeOnDone = options.closeOnDone ?? true;\n const exit = options.exit ?? MutableRef.make(undefined);\n const latch = Latch.makeUnsafe(false);\n function onReadable() {\n latch.openUnsafe();\n }\n function onError(error) {\n exit.current = Exit.fail(options.onError(error));\n latch.openUnsafe();\n }\n function onEnd() {\n exit.current = Exit.fail(Cause.Done());\n latch.openUnsafe();\n }\n readable.on(\"readable\", onReadable);\n readable.once(\"error\", onError);\n readable.once(\"end\", onEnd);\n const pull = Effect.suspend(function loop() {\n let item = options.readable.read(options.chunkSize);\n if (item === null) {\n if (exit.current) {\n return exit.current;\n }\n if (readable.readableEnded) {\n return Effect.fail(Cause.Done());\n }\n latch.closeUnsafe();\n return Effect.flatMap(latch.await, loop);\n }\n const chunk = Arr.of(item);\n while (true) {\n item = options.readable.read(options.chunkSize);\n if (item === null) break;\n chunk.push(item);\n }\n return Effect.succeed(chunk);\n });\n return Effect.as(Scope.addFinalizer(options.scope, Effect.sync(() => {\n readable.off(\"readable\", onReadable);\n readable.off(\"error\", onError);\n readable.off(\"end\", onEnd);\n if (closeOnDone && \"closed\" in options.readable && !options.readable.closed) {\n options.readable.destroy();\n }\n })), pull);\n};\nclass StreamAdapter extends Readable {\n readLatch;\n fiber = undefined;\n constructor(context, stream) {\n super({});\n this.readLatch = Latch.makeUnsafe(false);\n this.fiber = Stream.runForEachArray(stream, chunk => this.readLatch.whenOpen(Effect.sync(() => {\n this.readLatch.closeUnsafe();\n for (let i = 0; i < chunk.length; i++) {\n const item = chunk[i];\n if (typeof item === \"string\") {\n this.push(item, \"utf8\");\n } else {\n this.push(item);\n }\n }\n }))).pipe(this.readLatch.whenOpen, Effect.provideContext(context), Effect.runFork);\n this.fiber.addObserver(exit => {\n this.fiber = undefined;\n if (Exit.isSuccess(exit)) {\n this.push(null);\n } else {\n this.destroy(Cause.squash(exit.cause));\n }\n });\n }\n _read(_size) {\n this.readLatch.openUnsafe();\n }\n _destroy(error, callback) {\n if (!this.fiber) {\n return callback(error);\n }\n Effect.runFork(Fiber.interrupt(this.fiber)).addObserver(exit => {\n callback(exit._tag === \"Failure\" ? Cause.squash(exit.cause) : error);\n });\n }\n}\nconst defaultOnError = error => new Cause.UnknownError(error);\n//# sourceMappingURL=NodeStream.js.map","import * as Deferred from \"effect/Deferred\";\nimport * as Effect from \"effect/Effect\";\nimport * as Exit from \"effect/Exit\";\nimport * as FileSystem from \"effect/FileSystem\";\nimport * as Layer from \"effect/Layer\";\nimport * as Path from \"effect/Path\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as Sink from \"effect/Sink\";\nimport * as Stream from \"effect/Stream\";\nimport * as ChildProcess from \"effect/unstable/process/ChildProcess\";\nimport { ChildProcessSpawner, ExitCode, make as makeSpawner, makeHandle, ProcessId } from \"effect/unstable/process/ChildProcessSpawner\";\nimport * as NodeChildProcess from \"node:child_process\";\nimport { PassThrough } from \"node:stream\";\nimport { handleErrnoException } from \"./internal/utils.js\";\nimport * as NodeSink from \"./NodeSink.js\";\nimport * as NodeStream from \"./NodeStream.js\";\nconst toError = error => error instanceof globalThis.Error ? error : new globalThis.Error(String(error));\nconst toPlatformError = (method, error, command) => {\n const {\n commands\n } = flattenCommand(command);\n const commandStr = commands.reduce((acc, curr) => {\n const cmd = `${curr.command} ${curr.args.join(\" \")}`;\n return acc.length === 0 ? cmd : `${acc} | ${cmd}`;\n }, \"\");\n return handleErrnoException(\"ChildProcess\", method)(error, [commandStr]);\n};\nconst make = /*#__PURE__*/Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const path = yield* Path.Path;\n const resolveWorkingDirectory = Effect.fnUntraced(function* (options) {\n if (Predicate.isUndefined(options.cwd)) return undefined;\n // Validate that the specified directory is accessible\n yield* fs.access(options.cwd);\n return path.resolve(options.cwd);\n });\n const resolveEnvironment = options => {\n return options.extendEnv ? {\n ...globalThis.process.env,\n ...options.env\n } : options.env;\n };\n const inputToStdioOption = input => Stream.isStream(input) ? \"pipe\" : input;\n const outputToStdioOption = input => Sink.isSink(input) ? \"pipe\" : input;\n const resolveStdinOption = options => {\n const defaultConfig = {\n stream: \"pipe\",\n encoding: \"utf-8\",\n endOnDone: true\n };\n if (Predicate.isUndefined(options.stdin)) {\n return defaultConfig;\n }\n if (typeof options.stdin === \"string\") {\n return {\n ...defaultConfig,\n stream: options.stdin\n };\n }\n if (Stream.isStream(options.stdin)) {\n return {\n ...defaultConfig,\n stream: options.stdin\n };\n }\n return {\n stream: options.stdin.stream,\n encoding: options.stdin.encoding ?? defaultConfig.encoding,\n endOnDone: options.stdin.endOnDone ?? defaultConfig.endOnDone\n };\n };\n const resolveOutputOption = (options, streamName) => {\n const option = options[streamName];\n if (Predicate.isUndefined(option)) {\n return {\n stream: \"pipe\"\n };\n }\n if (typeof option === \"string\") {\n return {\n stream: option\n };\n }\n if (Sink.isSink(option)) {\n return {\n stream: option\n };\n }\n return {\n stream: option.stream\n };\n };\n const resolveAdditionalFds = options => {\n if (Predicate.isUndefined(options.additionalFds)) {\n return [];\n }\n const result = [];\n for (const [name, config] of Object.entries(options.additionalFds)) {\n const fd = ChildProcess.parseFdName(name);\n if (Predicate.isNotUndefined(fd)) {\n result.push({\n fd,\n config\n });\n }\n }\n // Sort by fd number to ensure correct ordering\n return result.sort((a, b) => a.fd - b.fd);\n };\n const buildStdioArray = (stdinConfig, stdoutConfig, stderrConfig, additionalFds) => {\n const stdio = [inputToStdioOption(stdinConfig.stream), outputToStdioOption(stdoutConfig.stream), outputToStdioOption(stderrConfig.stream)];\n if (additionalFds.length === 0) {\n return stdio;\n }\n // Find the maximum fd number to size the array correctly\n const maxFd = additionalFds.reduce((max, {\n fd\n }) => Math.max(max, fd), 2);\n // Fill gaps with \"ignore\"\n for (let i = 3; i <= maxFd; i++) {\n stdio[i] = \"ignore\";\n }\n // Set up additional fds as \"pipe\"\n for (const {\n fd\n } of additionalFds) {\n stdio[fd] = \"pipe\";\n }\n return stdio;\n };\n const setupAdditionalFds = Effect.fnUntraced(function* (command, childProcess, additionalFds) {\n if (additionalFds.length === 0) {\n return {\n getInputFd: () => Sink.drain,\n getOutputFd: () => Stream.empty\n };\n }\n const inputSinks = new Map();\n const outputStreams = new Map();\n for (const {\n config,\n fd\n } of additionalFds) {\n const nodeStream = childProcess.stdio[fd];\n switch (config.type) {\n case \"input\":\n {\n // Create a sink to write to for input file descriptors\n let sink = Sink.drain;\n if (nodeStream && \"write\" in nodeStream) {\n sink = NodeSink.fromWritable({\n evaluate: () => nodeStream,\n onError: error => toPlatformError(`fromWritable(fd${fd})`, toError(error), command)\n });\n }\n // If user provided a stream, pipe it into the sink\n if (config.stream) {\n yield* Effect.forkScoped(Stream.run(config.stream, sink));\n }\n inputSinks.set(fd, sink);\n break;\n }\n case \"output\":\n {\n // Create a stream to read from for output file descriptors\n let stream = Stream.empty;\n if (nodeStream && \"read\" in nodeStream) {\n const passThrough = new PassThrough();\n nodeStream.on(\"error\", error => passThrough.destroy(error));\n nodeStream.pipe(passThrough);\n stream = NodeStream.fromReadable({\n evaluate: () => passThrough,\n onError: error => toPlatformError(`fromReadable(fd${fd})`, toError(error), command)\n });\n }\n // If user provided a sink, transduce the stream through it\n if (config.sink) {\n stream = Stream.transduce(stream, config.sink);\n }\n outputStreams.set(fd, stream);\n break;\n }\n }\n }\n return {\n getInputFd: fd => inputSinks.get(fd) ?? Sink.drain,\n getOutputFd: fd => outputStreams.get(fd) ?? Stream.empty\n };\n });\n const setupChildStdin = (command, childProcess, config) => Effect.suspend(() => {\n // If the child process has a standard input stream, connect it to the\n // sink that will attached to the process handle\n let sink = Sink.drain;\n if (Predicate.isNotNull(childProcess.stdin)) {\n sink = NodeSink.fromWritable({\n evaluate: () => childProcess.stdin,\n onError: error => toPlatformError(\"fromWritable(stdin)\", toError(error), command),\n endOnDone: config.endOnDone,\n encoding: config.encoding\n });\n }\n // If the user provided a `Stream`, run it into the stdin sink\n if (Stream.isStream(config.stream)) {\n return Effect.as(Effect.forkScoped(Stream.run(config.stream, sink)), sink);\n }\n return Effect.succeed(sink);\n });\n const setupChildOutputStreams = (command, childProcess, stdoutConfig, stderrConfig) => {\n let stdout = childProcess.stdout ? (() => {\n const passThrough = new PassThrough();\n childProcess.stdout.on(\"error\", error => passThrough.destroy(error));\n childProcess.stdout.pipe(passThrough);\n return NodeStream.fromReadable({\n evaluate: () => passThrough,\n onError: error => toPlatformError(\"fromReadable(stdout)\", toError(error), command)\n });\n })() : Stream.empty;\n let stderr = childProcess.stderr ? (() => {\n const passThrough = new PassThrough();\n childProcess.stderr.on(\"error\", error => passThrough.destroy(error));\n childProcess.stderr.pipe(passThrough);\n return NodeStream.fromReadable({\n evaluate: () => passThrough,\n onError: error => toPlatformError(\"fromReadable(stderr)\", toError(error), command)\n });\n })() : Stream.empty;\n if (Sink.isSink(stdoutConfig.stream)) {\n stdout = Stream.transduce(stdout, stdoutConfig.stream);\n }\n if (Sink.isSink(stderrConfig.stream)) {\n stderr = Stream.transduce(stderr, stderrConfig.stream);\n }\n const all = Stream.merge(stdout, stderr);\n return {\n stdout,\n stderr,\n all\n };\n };\n const spawn = (command, spawnOptions) => Effect.callback(resume => {\n const deferred = Deferred.makeUnsafe();\n const handle = NodeChildProcess.spawn(command.command, command.args, spawnOptions);\n handle.on(\"error\", error => {\n resume(Effect.fail(toPlatformError(\"spawn\", error, command)));\n });\n handle.on(\"exit\", (...args) => {\n Deferred.doneUnsafe(deferred, Exit.succeed(args));\n });\n handle.on(\"spawn\", () => {\n resume(Effect.succeed([handle, deferred]));\n });\n return Effect.sync(() => {\n handle.kill(\"SIGTERM\");\n });\n });\n const killProcessGroup = (command, childProcess, signal) => {\n if (globalThis.process.platform === \"win32\") {\n return Effect.callback(resume => {\n NodeChildProcess.exec(`taskkill /pid ${childProcess.pid} /T /F`, error => {\n if (error) {\n resume(Effect.fail(toPlatformError(\"kill\", toError(error), command)));\n } else {\n resume(Effect.void);\n }\n });\n });\n }\n return Effect.try({\n try: () => {\n globalThis.process.kill(-childProcess.pid, signal);\n },\n catch: error => toPlatformError(\"kill\", toError(error), command)\n });\n };\n const killProcessGroupOnExit = (childProcess, signal) => {\n if (globalThis.process.platform === \"win32\") {\n NodeChildProcess.exec(`taskkill /pid ${childProcess.pid} /T /F`, () => {\n // ignore errors during best-effort cleanup\n });\n return;\n }\n try {\n globalThis.process.kill(-childProcess.pid, signal);\n } catch {\n // ignore errors during best-effort cleanup\n }\n };\n const killProcess = (command, childProcess, signal) => Effect.suspend(() => {\n const killed = childProcess.kill(signal);\n if (!killed) {\n const error = new globalThis.Error(\"Failed to kill child process\");\n return Effect.fail(toPlatformError(\"kill\", error, command));\n }\n return Effect.void;\n });\n const withTimeout = (childProcess, command, options) => kill => {\n const killSignal = options?.killSignal ?? \"SIGTERM\";\n return Predicate.isUndefined(options?.forceKillAfter) ? kill(command, childProcess, killSignal) : Effect.timeoutOrElse(kill(command, childProcess, killSignal), {\n duration: options.forceKillAfter,\n orElse: () => kill(command, childProcess, \"SIGKILL\")\n });\n };\n /**\n * Get the appropriate source stream from a process handle based on the\n * `from` pipe option.\n */\n const getSourceStream = (handle, from) => {\n const fromOption = from ?? \"stdout\";\n switch (fromOption) {\n case \"stdout\":\n return handle.stdout;\n case \"stderr\":\n return handle.stderr;\n case \"all\":\n return handle.all;\n default:\n {\n // Handle fd3, fd4, etc.\n const fd = ChildProcess.parseFdName(fromOption);\n if (Predicate.isNotUndefined(fd)) {\n return handle.getOutputFd(fd);\n }\n // Fallback to stdout for invalid fd names\n return handle.stdout;\n }\n }\n };\n const spawnCommand = Effect.fnUntraced(function* (cmd) {\n switch (cmd._tag) {\n case \"StandardCommand\":\n {\n const stdinConfig = resolveStdinOption(cmd.options);\n const stdoutConfig = resolveOutputOption(cmd.options, \"stdout\");\n const stderrConfig = resolveOutputOption(cmd.options, \"stderr\");\n const resolvedAdditionalFds = resolveAdditionalFds(cmd.options);\n let isReferenced = true;\n const cwd = yield* resolveWorkingDirectory(cmd.options);\n const env = resolveEnvironment(cmd.options);\n const stdio = buildStdioArray(stdinConfig, stdoutConfig, stderrConfig, resolvedAdditionalFds);\n const [childProcess, exitSignal] = yield* Effect.acquireRelease(spawn(cmd, {\n cwd,\n env,\n stdio,\n detached: cmd.options.detached ?? process.platform !== \"win32\",\n shell: cmd.options.shell\n }), Effect.fnUntraced(function* ([childProcess, exitSignal]) {\n const exited = yield* Deferred.isDone(exitSignal);\n const killWithTimeout = withTimeout(childProcess, cmd, cmd.options);\n if (exited) {\n // Process already exited, check if children need cleanup\n const [code] = yield* Deferred.await(exitSignal);\n if (code !== 0 && Predicate.isNotNull(code)) {\n // Non-zero exit code ,attempt to clean up process group\n return yield* Effect.ignore(killWithTimeout(killProcessGroup));\n }\n return yield* Effect.void;\n }\n if (!isReferenced) {\n return yield* Effect.void;\n }\n // Process is still running, kill it\n return yield* killWithTimeout((command, childProcess, signal) => killProcessGroup(command, childProcess, signal).pipe(Effect.catch(() => killProcess(command, childProcess, signal)), Effect.andThen(Deferred.await(exitSignal)))).pipe(Effect.ignore);\n }));\n const pid = ProcessId(childProcess.pid);\n childProcess.on(\"exit\", code => {\n if (code !== 0 && Predicate.isNotNull(code)) {\n killProcessGroupOnExit(childProcess, cmd.options.killSignal ?? \"SIGTERM\");\n }\n });\n const reref = Effect.sync(() => {\n if (!isReferenced) {\n childProcess.ref();\n isReferenced = true;\n }\n });\n const unref = Effect.sync(() => {\n if (isReferenced) {\n childProcess.unref();\n isReferenced = false;\n }\n return reref;\n });\n const stdin = yield* setupChildStdin(cmd, childProcess, stdinConfig);\n const {\n all,\n stderr,\n stdout\n } = setupChildOutputStreams(cmd, childProcess, stdoutConfig, stderrConfig);\n const {\n getInputFd,\n getOutputFd\n } = yield* setupAdditionalFds(cmd, childProcess, resolvedAdditionalFds);\n const isRunning = Effect.map(Deferred.isDone(exitSignal), done => !done);\n const exitCode = Effect.flatMap(Deferred.await(exitSignal), ([code, signal]) => {\n if (Predicate.isNotNull(code)) {\n return Effect.succeed(ExitCode(code));\n }\n // If code is `null`, then `signal` must be defined. See the NodeJS\n // documentation for the `\"exit\"` event on a `child_process`.\n // https://nodejs.org/api/child_process.html#child_process_event_exit\n const error = new globalThis.Error(`Process interrupted due to receipt of signal: '${signal}'`);\n return Effect.fail(toPlatformError(\"exitCode\", error, cmd));\n });\n const kill = options => {\n const killWithTimeout = withTimeout(childProcess, cmd, options);\n return killWithTimeout((command, childProcess, signal) => killProcessGroup(command, childProcess, signal).pipe(Effect.catch(() => killProcess(command, childProcess, signal)), Effect.andThen(Deferred.await(exitSignal)))).pipe(Effect.asVoid);\n };\n return makeHandle({\n pid,\n exitCode,\n isRunning,\n kill,\n stdin,\n stdout,\n stderr,\n all,\n getInputFd,\n getOutputFd,\n unref\n });\n }\n case \"PipedCommand\":\n {\n const {\n commands,\n pipeOptions\n } = flattenCommand(cmd);\n const [root, ...pipeline] = commands;\n const handles = [yield* spawnCommand(root)];\n for (let i = 0; i < pipeline.length; i++) {\n const command = pipeline[i];\n const options = pipeOptions[i] ?? {};\n const stdinConfig = resolveStdinOption(command.options);\n // Get the appropriate stream from the source based on `from` option\n const sourceStream = Stream.unwrap(Effect.succeed(getSourceStream(handles[handles.length - 1], options.from)));\n // Determine where to pipe: stdin or custom fd\n const toOption = options.to ?? \"stdin\";\n if (toOption === \"stdin\") {\n // Pipe to stdin (default behavior)\n handles.push(yield* spawnCommand(ChildProcess.make(command.command, command.args, {\n ...command.options,\n stdin: {\n ...stdinConfig,\n stream: sourceStream\n }\n })));\n } else {\n // Pipe to custom fd (fd3, fd4, etc.)\n const fd = ChildProcess.parseFdName(toOption);\n if (Predicate.isNotUndefined(fd)) {\n const fdName = ChildProcess.fdName(fd);\n const existingFds = command.options.additionalFds ?? {};\n handles.push(yield* spawnCommand(ChildProcess.make(command.command, command.args, {\n ...command.options,\n additionalFds: {\n ...existingFds,\n [fdName]: {\n type: \"input\",\n stream: sourceStream\n }\n }\n })));\n } else {\n // Invalid fd name, fall back to stdin\n handles.push(yield* spawnCommand(ChildProcess.make(command.command, command.args, {\n ...command.options,\n stdin: {\n ...stdinConfig,\n stream: sourceStream\n }\n })));\n }\n }\n }\n const handle = handles[handles.length - 1];\n const unref = Effect.gen(function* () {\n const rerefs = [];\n for (const handle of handles) {\n rerefs.push(yield* handle.unref);\n }\n return Effect.forEach([...rerefs].reverse(), reref => reref, {\n discard: true\n });\n });\n return makeHandle({\n pid: handle.pid,\n exitCode: handle.exitCode,\n isRunning: handle.isRunning,\n kill: handle.kill,\n stdin: handle.stdin,\n stdout: handle.stdout,\n stderr: handle.stderr,\n all: handle.all,\n getInputFd: handle.getInputFd,\n getOutputFd: handle.getOutputFd,\n unref\n });\n }\n }\n });\n return makeSpawner(spawnCommand);\n});\n/**\n * Layer that provides the `NodeChildProcessSpawner` implementation.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layer = /*#__PURE__*/Layer.effect(ChildProcessSpawner, make);\n/**\n * Flattens a `Command` into an array of `StandardCommand`s along with pipe\n * options for each connection.\n *\n * @category transforming\n * @since 4.0.0\n */\nexport const flattenCommand = command => {\n const commands = [];\n const pipeOptions = [];\n const flatten = cmd => {\n switch (cmd._tag) {\n case \"StandardCommand\":\n {\n commands.push(cmd);\n break;\n }\n case \"PipedCommand\":\n {\n // Recursively flatten left side first\n flatten(cmd.left);\n // Store the pipe options for this connection\n pipeOptions.push(cmd.options);\n // Then flatten right side\n flatten(cmd.right);\n break;\n }\n }\n };\n flatten(command);\n // The commands array is guaranteed to be non-empty since we always have at\n // least one command in the input. We validate this at runtime and return a\n // properly typed tuple.\n if (commands.length === 0) {\n // This should never happen given a valid Command input\n throw new Error(\"flattenCommand produced empty commands array\");\n }\n const [first, ...rest] = commands;\n const nonEmptyCommands = [first, ...rest];\n return {\n commands: nonEmptyCommands,\n pipeOptions\n };\n};\n//# sourceMappingURL=NodeChildProcessSpawner.js.map","/**\n * Defines a platform-independent service for cryptographic operations.\n *\n * Runtime packages provide concrete implementations backed by the host\n * platform's cryptography APIs. This module defines the service interface and a\n * constructor from random-byte and digest primitives. The service provides\n * secure random bytes and numbers, UUIDv4 and UUIDv7 generation, shuffling, and\n * SHA message digests.\n *\n * @since 4.0.0\n */\nimport * as Context from \"./Context.js\";\nimport * as Effect from \"./Effect.js\";\nimport * as PlatformError from \"./PlatformError.js\";\nconst TypeId = \"~effect/platform/Crypto\";\n/**\n * Service tag for platform cryptography.\n *\n * **When to use**\n *\n * Use when you need to provide or retrieve the full platform cryptography\n * service from an effect's context.\n *\n * **Details**\n *\n * Providing this service supplies platform-agnostic cryptographic operations\n * such as hashing, UUID generation, and secure random values.\n *\n * @see {@link make} for constructing a Crypto service from primitive operations\n *\n * @category services\n * @since 4.0.0\n */\nexport const Crypto = /*#__PURE__*/Context.Service(\"effect/Crypto\");\n/**\n * Creates a `Crypto` service from the primitive implementation, deriving the\n * random generator helpers and UUID generation from those primitives.\n *\n * **When to use**\n *\n * Use to build a Crypto service for a platform integration, test layer, or\n * custom runtime from primitive random-byte and digest operations.\n *\n * **Details**\n *\n * The constructor derives random numbers, booleans, integer ranges, shuffling,\n * and UUID generation from `impl.randomBytes`. Digest operations delegate to\n * `impl.digest`.\n *\n * **Gotchas**\n *\n * `impl.randomBytes` must return cryptographically secure bytes of the\n * requested length. UUID formatting mutates the byte array returned for UUID\n * generation, so the implementation should return a fresh array for each call.\n *\n * **Example** (Creating a Crypto service)\n *\n * ```ts import.meta.vitest\n * import { Crypto, Effect } from \"effect\"\n *\n * const testCrypto = Crypto.make({\n * randomBytes: (size) => new Uint8Array(size),\n * digest: (_algorithm, data) => Effect.succeed(data)\n * })\n *\n * await Effect.runPromise(testCrypto.randomBytes(4)) // => new Uint8Array([0, 0, 0, 0])\n * ```\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const make = impl => {\n const randomBytesUnsafe = impl.randomBytes;\n const randomBytes = size => Effect.map(validateSize(\"randomBytes\", size), randomBytesUnsafe);\n const nextDoubleUnsafe = () => {\n const bytes = randomBytesUnsafe(7);\n const value = (bytes[0] & 0x1f) * 2 ** 48 + bytes[1] * 2 ** 40 + bytes[2] * 2 ** 32 + bytes[3] * 2 ** 24 + bytes[4] * 2 ** 16 + bytes[5] * 2 ** 8 + bytes[6];\n return value / 2 ** 53;\n };\n const nextIntUnsafe = () => Math.floor(nextDoubleUnsafe() * (Number.MAX_SAFE_INTEGER - Number.MIN_SAFE_INTEGER + 1)) + Number.MIN_SAFE_INTEGER;\n return Crypto.of({\n [TypeId]: TypeId,\n randomBytes,\n nextDoubleUnsafe,\n nextIntUnsafe,\n digest: impl.digest,\n random: Effect.sync(() => nextDoubleUnsafe()),\n randomBoolean: Effect.sync(() => nextDoubleUnsafe() > 0.5),\n randomInt: Effect.sync(() => nextIntUnsafe()),\n randomBetween: (min, max) => Effect.sync(() => nextDoubleUnsafe() * (max - min) + min),\n randomIntBetween(min, max, options) {\n const extra = options?.halfOpen === true ? 0 : 1;\n return Effect.sync(() => {\n const minInt = Math.ceil(min);\n const maxInt = Math.floor(max);\n return Math.floor(nextDoubleUnsafe() * (maxInt - minInt + extra)) + minInt;\n });\n },\n randomShuffle: elements => Effect.sync(() => {\n const buffer = Array.from(elements);\n for (let i = buffer.length - 1; i >= 1; i = i - 1) {\n const index = Math.min(i, Math.floor(nextDoubleUnsafe() * (i + 1)));\n const value = buffer[i];\n buffer[i] = buffer[index];\n buffer[index] = value;\n }\n return buffer;\n }),\n randomUUIDv4: Effect.sync(() => formatUUIDv4(randomBytesUnsafe(16))),\n randomUUIDv7: Effect.clockWith(clock => Effect.succeed(formatUUIDv7(clock.currentTimeMillisUnsafe(), randomBytesUnsafe(16))))\n });\n};\nconst validateSize = (method, size) => Number.isSafeInteger(size) && size >= 0 ? Effect.succeed(size) : Effect.fail(PlatformError.badArgument({\n module: \"Crypto\",\n method,\n description: \"size must be a non-negative safe integer\"\n}));\nconst hex = byte => byte.toString(16).padStart(2, \"0\");\nconst formatUUID = bytes => {\n const segments = [bytes.subarray(0, 4), bytes.subarray(4, 6), bytes.subarray(6, 8), bytes.subarray(8, 10), bytes.subarray(10, 16)];\n return segments.map(segment => Array.from(segment, hex).join(\"\")).join(\"-\");\n};\nconst formatUUIDv4 = bytes => {\n bytes[6] = bytes[6] & 0x0f | 0x40;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n return formatUUID(bytes);\n};\nconst maxUUIDv7Timestamp = 2 ** 48 - 1;\nconst formatUUIDv7 = (timestampMillis, bytes) => {\n const timestamp = Math.min(Math.max(0, Math.trunc(timestampMillis)), maxUUIDv7Timestamp);\n bytes[0] = Math.floor(timestamp / 2 ** 40);\n bytes[1] = Math.floor(timestamp / 2 ** 32) & 0xff;\n bytes[2] = Math.floor(timestamp / 2 ** 24) & 0xff;\n bytes[3] = Math.floor(timestamp / 2 ** 16) & 0xff;\n bytes[4] = Math.floor(timestamp / 2 ** 8) & 0xff;\n bytes[5] = timestamp & 0xff;\n bytes[6] = bytes[6] & 0x0f | 0x70;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n return formatUUID(bytes);\n};\n//# sourceMappingURL=Crypto.js.map","/**\n * Node-compatible implementation of Effect's `Crypto` service.\n *\n * This module builds the service from `node:crypto`, using `randomBytes` for\n * random data and `createHash` for supported digest algorithms. It exports\n * `make` as the concrete service value and `layer` for providing it through\n * Effect context.\n *\n * @since 1.0.0\n */\nimport * as EffectCrypto from \"effect/Crypto\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\nimport * as PlatformError from \"effect/PlatformError\";\nimport * as NodeCrypto from \"node:crypto\";\nconst toHashAlgorithm = algorithm => {\n switch (algorithm) {\n case \"SHA-1\":\n return \"sha1\";\n case \"SHA-256\":\n return \"sha256\";\n case \"SHA-384\":\n return \"sha384\";\n case \"SHA-512\":\n return \"sha512\";\n }\n};\nconst digest = (algorithm, data) => Effect.try({\n try: () => Uint8Array.from(NodeCrypto.createHash(toHashAlgorithm(algorithm)).update(data).digest()),\n catch: cause => PlatformError.systemError({\n module: \"Crypto\",\n method: \"digest\",\n _tag: \"Unknown\",\n description: \"Could not compute digest\",\n cause\n })\n});\n/**\n * The default Node.js Crypto service implementation.\n *\n * @category constructors\n * @since 1.0.0\n */\nexport const make = /*#__PURE__*/EffectCrypto.make({\n randomBytes: NodeCrypto.randomBytes,\n digest\n});\n/**\n * Layer that provides the Node.js Crypto service implementation.\n *\n * @category layers\n * @since 1.0.0\n */\nexport const layer = /*#__PURE__*/Layer.succeed(EffectCrypto.Crypto, make);\n//# sourceMappingURL=NodeCrypto.js.map","/**\n * The `NodeCrypto` module provides the Node.js `Crypto` service layer for\n * Effect programs. Provide {@link layer} at the edge of a Node application,\n * CLI, script, or test to satisfy `effect/Crypto` with Node's `node:crypto`\n * implementation for secure random bytes, UUID generation, random values, and\n * SHA digest operations.\n *\n * This module is the public Node adapter around the shared Node-compatible\n * implementation. Digest failures are reported as platform errors, and SHA-1\n * remains available only for interoperability with existing protocols.\n *\n * @since 1.0.0\n */\nimport * as NodeCrypto from \"@effect/platform-node-shared/NodeCrypto\";\n/**\n * Layer that provides the Node.js Crypto service implementation.\n *\n * @category layers\n * @since 1.0.0\n */\nexport const layer = NodeCrypto.layer;\n//# sourceMappingURL=NodeCrypto.js.map","/**\n * Shared Node-compatible implementation of Effect's `FileSystem` service.\n *\n * This module adapts Node's `node:fs`, `node:os`, and `node:path` APIs into a\n * `FileSystem` layer for Effect programs running on Node-compatible runtimes.\n * Platform packages use it to provide file and directory I/O, permissions,\n * links, metadata, temporary files and directories, and file watching through\n * the shared `FileSystem` service.\n *\n * @since 4.0.0\n */\nimport * as Cause from \"effect/Cause\";\nimport * as Effect from \"effect/Effect\";\nimport { effectify } from \"effect/Effect\";\nimport * as FileSystem from \"effect/FileSystem\";\nimport { pipe } from \"effect/Function\";\nimport * as Layer from \"effect/Layer\";\nimport * as Option from \"effect/Option\";\nimport * as Error from \"effect/PlatformError\";\nimport * as Queue from \"effect/Queue\";\nimport * as Stream from \"effect/Stream\";\nimport * as Crypto from \"node:crypto\";\nimport * as NFS from \"node:fs\";\nimport * as OS from \"node:os\";\nimport * as Path from \"node:path\";\nimport { handleErrnoException } from \"./internal/utils.js\";\nconst handleBadArgument = method => err => Error.badArgument({\n module: \"FileSystem\",\n method,\n description: err.message ?? String(err)\n});\n// == access\nconst access = /*#__PURE__*/(() => {\n const nodeAccess = /*#__PURE__*/effectify(NFS.access, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"access\"), /*#__PURE__*/handleBadArgument(\"access\"));\n return (path, options) => {\n let mode = NFS.constants.F_OK;\n if (options?.readable) {\n mode |= NFS.constants.R_OK;\n }\n if (options?.writable) {\n mode |= NFS.constants.W_OK;\n }\n return nodeAccess(path, mode);\n };\n})();\n// == copy\nconst copy = /*#__PURE__*/(() => {\n const nodeCp = /*#__PURE__*/effectify(NFS.cp, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"copy\"), /*#__PURE__*/handleBadArgument(\"copy\"));\n return (fromPath, toPath, options) => nodeCp(fromPath, toPath, {\n force: options?.overwrite ?? false,\n preserveTimestamps: options?.preserveTimestamps ?? false,\n recursive: true\n });\n})();\n// == copyFile\nconst copyFile = /*#__PURE__*/(() => {\n const nodeCopyFile = /*#__PURE__*/effectify(NFS.copyFile, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"copyFile\"), /*#__PURE__*/handleBadArgument(\"copyFile\"));\n return (fromPath, toPath) => nodeCopyFile(fromPath, toPath);\n})();\n// == chmod\nconst chmod = /*#__PURE__*/(() => {\n const nodeChmod = /*#__PURE__*/effectify(NFS.chmod, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"chmod\"), /*#__PURE__*/handleBadArgument(\"chmod\"));\n return (path, mode) => nodeChmod(path, mode);\n})();\n// == chown\nconst chown = /*#__PURE__*/(() => {\n const nodeChown = /*#__PURE__*/effectify(NFS.chown, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"chown\"), /*#__PURE__*/handleBadArgument(\"chown\"));\n return (path, uid, gid) => nodeChown(path, uid, gid);\n})();\n// == glob\nconst glob = /*#__PURE__*/(() => {\n const nodeGlob = /*#__PURE__*/effectify(NFS.glob, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"glob\"), /*#__PURE__*/handleBadArgument(\"glob\"));\n return (pattern, options) => nodeGlob(pattern, {\n cwd: options?.root,\n exclude: options?.exclude\n });\n})();\n// == link\nconst link = /*#__PURE__*/(() => {\n const nodeLink = /*#__PURE__*/effectify(NFS.link, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"link\"), /*#__PURE__*/handleBadArgument(\"link\"));\n return (existingPath, newPath) => nodeLink(existingPath, newPath);\n})();\n// == makeDirectory\nconst makeDirectory = /*#__PURE__*/(() => {\n const nodeMkdir = /*#__PURE__*/effectify(NFS.mkdir, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"makeDirectory\"), /*#__PURE__*/handleBadArgument(\"makeDirectory\"));\n return (path, options) => nodeMkdir(path, {\n recursive: options?.recursive ?? false,\n mode: options?.mode\n });\n})();\n// == makeTempDirectory\nconst makeTempDirectoryFactory = method => {\n const nodeMkdtemp = effectify(NFS.mkdtemp, handleErrnoException(\"FileSystem\", method), handleBadArgument(method));\n return options => Effect.suspend(() => {\n const prefix = options?.prefix ?? \"\";\n const directory = typeof options?.directory === \"string\" ? Path.join(options.directory, \".\") : OS.tmpdir();\n return nodeMkdtemp(prefix ? Path.join(directory, prefix) : directory + \"/\");\n });\n};\nconst makeTempDirectory = /*#__PURE__*/makeTempDirectoryFactory(\"makeTempDirectory\");\n// == remove\nconst removeFactory = method => {\n const nodeRm = effectify(NFS.rm, handleErrnoException(\"FileSystem\", method), handleBadArgument(method));\n return (path, options) => nodeRm(path, {\n recursive: options?.recursive ?? false,\n force: options?.force ?? false\n });\n};\nconst remove = /*#__PURE__*/removeFactory(\"remove\");\n// == makeTempDirectoryScoped\nconst makeTempDirectoryScoped = /*#__PURE__*/(() => {\n const makeDirectory = /*#__PURE__*/makeTempDirectoryFactory(\"makeTempDirectoryScoped\");\n const removeDirectory = /*#__PURE__*/removeFactory(\"makeTempDirectoryScoped\");\n return options => Effect.acquireRelease(makeDirectory(options), directory => Effect.orDie(removeDirectory(directory, {\n recursive: true\n })));\n})();\n// == open\nconst openFactory = method => {\n const nodeOpen = effectify(NFS.open, handleErrnoException(\"FileSystem\", method), handleBadArgument(method));\n const nodeClose = effectify(NFS.close, handleErrnoException(\"FileSystem\", method), handleBadArgument(method));\n return (path, options) => pipe(Effect.acquireRelease(nodeOpen(path, options?.flag ?? \"r\", options?.mode), fd => Effect.orDie(nodeClose(fd))), Effect.map(fd => makeFile(fd, options?.flag?.startsWith(\"a\") ?? false)));\n};\nconst open = /*#__PURE__*/openFactory(\"open\");\nconst makeFile = /*#__PURE__*/(() => {\n const nodeReadFactory = method => effectify(NFS.read, handleErrnoException(\"FileSystem\", method), handleBadArgument(method));\n const nodeRead = /*#__PURE__*/nodeReadFactory(\"read\");\n const nodeReadAlloc = /*#__PURE__*/nodeReadFactory(\"readAlloc\");\n const nodeStat = /*#__PURE__*/effectify(NFS.fstat, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"stat\"), /*#__PURE__*/handleBadArgument(\"stat\"));\n const nodeTruncate = /*#__PURE__*/effectify(NFS.ftruncate, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"truncate\"), /*#__PURE__*/handleBadArgument(\"truncate\"));\n const nodeSync = /*#__PURE__*/effectify(NFS.fsync, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"sync\"), /*#__PURE__*/handleBadArgument(\"sync\"));\n const nodeWriteFactory = method => effectify(NFS.write, handleErrnoException(\"FileSystem\", method), handleBadArgument(method));\n const nodeWrite = /*#__PURE__*/nodeWriteFactory(\"write\");\n const nodeWriteAll = /*#__PURE__*/nodeWriteFactory(\"writeAll\");\n class FileImpl {\n [FileSystem.FileTypeId];\n fd;\n append;\n position = /*#__PURE__*/BigInt(0);\n constructor(fd, append) {\n this[FileSystem.FileTypeId] = FileSystem.FileTypeId;\n this.fd = fd;\n this.append = append;\n }\n get stat() {\n return Effect.map(nodeStat(this.fd), makeFileInfo);\n }\n get sync() {\n return nodeSync(this.fd);\n }\n seek(offset, from) {\n const offsetSize = FileSystem.Size(offset);\n return Effect.sync(() => {\n if (from === \"start\") {\n this.position = offsetSize;\n } else if (from === \"current\") {\n this.position = this.position + offsetSize;\n }\n return this.position;\n });\n }\n read(buffer) {\n return Effect.suspend(() => {\n const position = this.position;\n return Effect.map(nodeRead(this.fd, {\n buffer,\n position\n }), bytesRead => {\n const sizeRead = FileSystem.Size(bytesRead);\n this.position = position + sizeRead;\n return sizeRead;\n });\n });\n }\n readAlloc(size) {\n const sizeNumber = Number(size);\n return Effect.suspend(() => {\n const buffer = Buffer.allocUnsafeSlow(sizeNumber);\n const position = this.position;\n return Effect.map(nodeReadAlloc(this.fd, {\n buffer,\n position\n }), bytesRead => {\n if (bytesRead === 0) {\n return Option.none();\n }\n this.position = position + BigInt(bytesRead);\n if (bytesRead === sizeNumber) {\n return Option.some(buffer);\n }\n const dst = Buffer.allocUnsafeSlow(bytesRead);\n buffer.copy(dst, 0, 0, bytesRead);\n return Option.some(dst);\n });\n });\n }\n truncate(length) {\n return Effect.map(nodeTruncate(this.fd, length ? Number(length) : undefined), () => {\n if (!this.append) {\n const len = BigInt(length ?? 0);\n if (this.position > len) {\n this.position = len;\n }\n }\n });\n }\n write(buffer) {\n return Effect.suspend(() => {\n const position = this.position;\n return Effect.map(nodeWrite(this.fd, buffer, undefined, undefined, this.append ? undefined : Number(position)), bytesWritten => {\n const sizeWritten = FileSystem.Size(bytesWritten);\n if (!this.append) {\n this.position = position + sizeWritten;\n }\n return sizeWritten;\n });\n });\n }\n writeAllChunk(buffer) {\n return Effect.suspend(() => {\n const position = this.position;\n return Effect.flatMap(nodeWriteAll(this.fd, buffer, undefined, undefined, this.append ? undefined : Number(position)), bytesWritten => {\n if (bytesWritten === 0) {\n return Effect.fail(Error.systemError({\n module: \"FileSystem\",\n method: \"writeAll\",\n _tag: \"WriteZero\",\n pathOrDescriptor: this.fd,\n description: \"write returned 0 bytes written\"\n }));\n }\n if (!this.append) {\n this.position = position + BigInt(bytesWritten);\n }\n return bytesWritten < buffer.length ? this.writeAllChunk(buffer.subarray(bytesWritten)) : Effect.void;\n });\n });\n }\n writeAll(buffer) {\n return this.writeAllChunk(buffer);\n }\n }\n return (fd, append) => new FileImpl(fd, append);\n})();\n// == makeTempFile\nconst makeTempFileFactory = method => {\n const makeDirectory = makeTempDirectoryFactory(method);\n return Effect.fnUntraced(function* (options) {\n const directory = yield* makeDirectory(options);\n const random = Crypto.randomBytes(6).toString(\"hex\");\n const name = Path.join(directory, options?.suffix ? `${random}${options.suffix}` : random);\n yield* writeFile(name, new Uint8Array(0));\n return name;\n });\n};\nconst makeTempFile = /*#__PURE__*/makeTempFileFactory(\"makeTempFile\");\n// == makeTempFileScoped\nconst makeTempFileScoped = /*#__PURE__*/(() => {\n const makeFile = /*#__PURE__*/makeTempFileFactory(\"makeTempFileScoped\");\n const removeDirectory = /*#__PURE__*/removeFactory(\"makeTempFileScoped\");\n return options => Effect.acquireRelease(makeFile(options), file => Effect.orDie(removeDirectory(Path.dirname(file), {\n recursive: true\n })));\n})();\n// == readDirectory\nconst readDirectory = (path, options) => Effect.tryPromise({\n try: () => NFS.promises.readdir(path, options),\n catch: err => handleErrnoException(\"FileSystem\", \"readDirectory\")(err, [path])\n});\n// == readFile\nconst readFile = path => Effect.callback((resume, signal) => {\n try {\n NFS.readFile(path, {\n signal\n }, (err, data) => {\n if (err) {\n resume(Effect.fail(handleErrnoException(\"FileSystem\", \"readFile\")(err, [path])));\n } else {\n resume(Effect.succeed(data));\n }\n });\n } catch (err) {\n resume(Effect.fail(handleBadArgument(\"readFile\")(err)));\n }\n});\n// == readLink\nconst readLink = /*#__PURE__*/(() => {\n const nodeReadLink = /*#__PURE__*/effectify(NFS.readlink, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"readLink\"), /*#__PURE__*/handleBadArgument(\"readLink\"));\n return path => nodeReadLink(path);\n})();\n// == realPath\nconst realPath = /*#__PURE__*/(() => {\n const nodeRealPath = /*#__PURE__*/effectify(NFS.realpath, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"realPath\"), /*#__PURE__*/handleBadArgument(\"realPath\"));\n return path => nodeRealPath(path);\n})();\n// == rename\nconst rename = /*#__PURE__*/(() => {\n const nodeRename = /*#__PURE__*/effectify(NFS.rename, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"rename\"), /*#__PURE__*/handleBadArgument(\"rename\"));\n return (oldPath, newPath) => nodeRename(oldPath, newPath);\n})();\n// == stat\nconst makeFileInfo = stat => ({\n type: stat.isFile() ? \"File\" : stat.isDirectory() ? \"Directory\" : stat.isSymbolicLink() ? \"SymbolicLink\" : stat.isBlockDevice() ? \"BlockDevice\" : stat.isCharacterDevice() ? \"CharacterDevice\" : stat.isFIFO() ? \"FIFO\" : stat.isSocket() ? \"Socket\" : \"Unknown\",\n mtime: Option.fromNullishOr(stat.mtime),\n atime: Option.fromNullishOr(stat.atime),\n birthtime: Option.fromNullishOr(stat.birthtime),\n dev: stat.dev,\n rdev: Option.fromNullishOr(stat.rdev),\n ino: Option.fromNullishOr(stat.ino),\n mode: stat.mode,\n nlink: Option.fromNullishOr(stat.nlink),\n uid: Option.fromNullishOr(stat.uid),\n gid: Option.fromNullishOr(stat.gid),\n size: FileSystem.Size(stat.size),\n blksize: stat.blksize !== undefined ? Option.some(FileSystem.Size(stat.blksize)) : Option.none(),\n blocks: Option.fromNullishOr(stat.blocks)\n});\nconst stat = /*#__PURE__*/(() => {\n const nodeStat = /*#__PURE__*/effectify(NFS.stat, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"stat\"), /*#__PURE__*/handleBadArgument(\"stat\"));\n return path => Effect.map(nodeStat(path), makeFileInfo);\n})();\n// == symlink\nconst symlink = /*#__PURE__*/(() => {\n const nodeSymlink = /*#__PURE__*/effectify(NFS.symlink, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"symlink\"), /*#__PURE__*/handleBadArgument(\"symlink\"));\n return (target, path) => nodeSymlink(target, path);\n})();\n// == truncate\nconst truncate = /*#__PURE__*/(() => {\n const nodeTruncate = /*#__PURE__*/effectify(NFS.truncate, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"truncate\"), /*#__PURE__*/handleBadArgument(\"truncate\"));\n return (path, length) => nodeTruncate(path, length !== undefined ? Number(length) : undefined);\n})();\n// == utimes\nconst utimes = /*#__PURE__*/(() => {\n const nodeUtimes = /*#__PURE__*/effectify(NFS.utimes, /*#__PURE__*/handleErrnoException(\"FileSystem\", \"utime\"), /*#__PURE__*/handleBadArgument(\"utime\"));\n return (path, atime, mtime) => nodeUtimes(path, atime, mtime);\n})();\n// == watch\nconst watchNode = (path, options) => Stream.callback(queue => Effect.acquireRelease(Effect.sync(() => {\n const watcher = NFS.watch(path, {\n recursive: options?.recursive ?? false\n }, (event, path) => {\n if (!path) return;\n switch (event) {\n case \"rename\":\n {\n Effect.runFork(Effect.matchEffect(stat(path), {\n onSuccess: _ => Queue.offer(queue, {\n _tag: \"Create\",\n path\n }),\n onFailure: _ => Queue.offer(queue, {\n _tag: \"Remove\",\n path\n })\n }));\n return;\n }\n case \"change\":\n {\n Queue.offerUnsafe(queue, {\n _tag: \"Update\",\n path\n });\n return;\n }\n }\n });\n watcher.on(\"error\", error => {\n Queue.failCauseUnsafe(queue, Cause.fail(Error.systemError({\n module: \"FileSystem\",\n _tag: \"Unknown\",\n method: \"watch\",\n pathOrDescriptor: path,\n cause: error\n })));\n });\n watcher.on(\"close\", () => {\n Queue.endUnsafe(queue);\n });\n return watcher;\n}), watcher => Effect.sync(() => watcher.close())));\nconst watch = (backend, path, options) => stat(path).pipe(Effect.map(stat => backend.pipe(Option.flatMap(_ => _.register(path, stat, options)), Option.getOrElse(() => watchNode(path, options)))), Stream.unwrap);\n// == writeFile\nconst writeFile = (path, data, options) => Effect.callback((resume, signal) => {\n try {\n NFS.writeFile(path, data, {\n signal,\n flag: options?.flag,\n mode: options?.mode\n }, err => {\n if (err) {\n resume(Effect.fail(handleErrnoException(\"FileSystem\", \"writeFile\")(err, [path])));\n } else {\n resume(Effect.void);\n }\n });\n } catch (err) {\n resume(Effect.fail(handleBadArgument(\"writeFile\")(err)));\n }\n});\nconst makeFileSystem = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.serviceOption(FileSystem.WatchBackend), backend => FileSystem.make({\n access,\n chmod,\n chown,\n copy,\n copyFile,\n glob,\n link,\n makeDirectory,\n makeTempDirectory,\n makeTempDirectoryScoped,\n makeTempFile,\n makeTempFileScoped,\n open,\n readDirectory,\n readFile,\n readLink,\n realPath,\n remove,\n rename,\n stat,\n symlink,\n truncate,\n utimes,\n watch(path, options) {\n return watch(backend, path, options);\n },\n writeFile\n}));\n/**\n * Provides the `FileSystem` service backed by Node filesystem APIs, including\n * file operations, directory operations, links, metadata, and file watching.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layer = /*#__PURE__*/Layer.effect(FileSystem.FileSystem)(makeFileSystem);\n//# sourceMappingURL=NodeFileSystem.js.map","/**\n * Node.js `FileSystem` layer for programs that perform real filesystem I/O.\n *\n * The exported layer satisfies the platform-independent `FileSystem` service\n * with Node-backed operations for files, directories, metadata, permissions,\n * links, temporary paths, and path watching. Effects still call the service from\n * `effect/FileSystem`; this module only chooses the Node implementation.\n *\n * @since 4.0.0\n */\nimport * as NodeFileSystem from \"@effect/platform-node-shared/NodeFileSystem\";\n/**\n * Provides the `FileSystem` service backed by Node filesystem APIs.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layer = NodeFileSystem.layer;\n//# sourceMappingURL=NodeFileSystem.js.map","/**\n * Node-backed provider for Effect's `Path` service.\n *\n * This module turns Node's `node:path` and `node:url` APIs into `Path` layers.\n * `layer` uses the host platform path implementation, while `layerPosix` and\n * `layerWin32` provide fixed POSIX and Windows variants. All three layers also\n * include helpers for converting between file paths and file URLs.\n *\n * @since 4.0.0\n */\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\nimport { Path, TypeId } from \"effect/Path\";\nimport { BadArgument } from \"effect/PlatformError\";\nimport * as NodePath from \"node:path\";\nimport * as NodeUrl from \"node:url\";\nconst fileUrlOps = windows => ({\n fromFileUrl: url => Effect.try({\n try: () => NodeUrl.fileURLToPath(url, {\n windows\n }),\n catch: cause => new BadArgument({\n module: \"Path\",\n method: \"fromFileUrl\",\n cause\n })\n }),\n toFileUrl: path => Effect.try({\n try: () => NodeUrl.pathToFileURL(path, {\n windows\n }),\n catch: cause => new BadArgument({\n module: \"Path\",\n method: \"toFileUrl\",\n cause\n })\n })\n});\n/**\n * Provides the `Path` service using Node's POSIX path implementation plus\n * file URL conversion helpers.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layerPosix = /*#__PURE__*/Layer.succeed(Path)({\n [TypeId]: TypeId,\n ...NodePath.posix,\n ... /*#__PURE__*/fileUrlOps(false)\n});\n/**\n * Provides the `Path` service using Node's Windows path implementation plus\n * file URL conversion helpers.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layerWin32 = /*#__PURE__*/Layer.succeed(Path)({\n [TypeId]: TypeId,\n ...NodePath.win32,\n ... /*#__PURE__*/fileUrlOps(true)\n});\n/**\n * Provides the default `Path` service using the host platform's Node path\n * implementation plus file URL conversion helpers.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layer = /*#__PURE__*/Layer.succeed(Path)({\n [TypeId]: TypeId,\n ...NodePath,\n ... /*#__PURE__*/fileUrlOps(undefined)\n});\n//# sourceMappingURL=NodePath.js.map","/**\n * Node.js layers for Effect's `Path` service.\n *\n * This module provides the default, POSIX, and Windows variants of the\n * platform-independent `Path` service by reusing the shared Node path\n * implementation. The provided path services include Node file URL conversion\n * behavior.\n *\n * @since 4.0.0\n */\nimport * as NodePath from \"@effect/platform-node-shared/NodePath\";\n/**\n * Provides the default Node `Path` service using the platform's `node:path`\n * implementation.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layer = NodePath.layer;\n/**\n * Provides the `Path` service using Node's POSIX path implementation,\n * regardless of the host platform.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layerPosix = NodePath.layerPosix;\n/**\n * Provides the `Path` service using Node's Windows path implementation,\n * regardless of the host platform.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layerWin32 = NodePath.layerWin32;\n//# sourceMappingURL=NodePath.js.map","/**\n * Service contract for command-line arguments and standard input, output, and\n * error output. It lets programs depend on standard I/O through the Effect\n * environment instead of reading from or writing to global process handles\n * directly.\n *\n * The service exposes arguments as an `Effect`, stdout and stderr as `Sink`s\n * that accept strings or bytes, and stdin as a byte `Stream`. This module also\n * provides a constructor for service values and a small test layer with\n * overridable defaults.\n *\n * @since 4.0.0\n */\nimport * as Context from \"./Context.js\";\nimport * as Effect from \"./Effect.js\";\nimport * as Layer from \"./Layer.js\";\nimport * as Sink from \"./Sink.js\";\nimport * as Stream from \"./Stream.js\";\n/**\n * Runtime identifier stored on `Stdio` service implementations.\n *\n * **Details**\n *\n * This marker is part of the runtime representation of `Stdio` service\n * implementations.\n *\n * @category type IDs\n * @since 4.0.0\n */\nexport const TypeId = \"~effect/Stdio\";\n/**\n * Service tag for process standard I/O.\n *\n * **When to use**\n *\n * Use when you need command-line arguments or standard I/O streams supplied by\n * an effect's environment.\n *\n * @see {@link make} for constructing a `Stdio` service directly\n * @see {@link layerTest} for a test layer with defaults and overrides\n *\n * @category services\n * @since 4.0.0\n */\nexport const Stdio = /*#__PURE__*/Context.Service(TypeId);\n/**\n * Creates a `Stdio` service implementation from the provided fields and\n * attaches the `Stdio` type identifier.\n *\n * **When to use**\n *\n * Use when you need to assemble a concrete `Stdio` service from command-line\n * arguments and standard I/O implementations.\n *\n * **Details**\n *\n * The returned service reuses the supplied fields unchanged and only adds the\n * `Stdio` type identifier; it does not create a `Layer` or provide defaults.\n *\n * @see {@link layerTest} for a test layer with default fields that can be overridden\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const make = options => ({\n [TypeId]: TypeId,\n ...options\n});\n/**\n * Creates a test layer for `Stdio`.\n *\n * **When to use**\n *\n * Use to provide deterministic standard I/O in tests while overriding only the\n * command-line arguments, input stream, or output sinks relevant to the case.\n *\n * **Details**\n *\n * Any provided fields override defaults. By default, arguments are empty,\n * standard output and error are draining sinks, and standard input is an empty\n * stream.\n *\n * @see {@link make} for constructing a `Stdio` service directly without a `Layer` or defaults\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layerTest = impl => Layer.succeed(Stdio, make({\n args: Effect.succeed([]),\n stdout: () => Sink.drain,\n stderr: () => Sink.drain,\n stdin: Stream.empty,\n ...impl\n}));\n//# sourceMappingURL=Stdio.js.map","/**\n * Shared Node.js implementation of the Effect `Stdio` service.\n *\n * `NodeStdio` provides {@link Stdio.Stdio} from the current Node process. The\n * exported {@link layer} reads command-line arguments from `process.argv`,\n * consumes input from `process.stdin`, and writes normal and error output to\n * `process.stdout` and `process.stderr`. Standard input remains open, and\n * standard output and error output are not ended unless requested.\n *\n * @since 4.0.0\n */\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\nimport { systemError } from \"effect/PlatformError\";\nimport * as Stdio from \"effect/Stdio\";\nimport { fromWritable } from \"./NodeSink.js\";\nimport { fromReadable } from \"./NodeStream.js\";\n/**\n * Provides `Stdio` from `process.argv`, `process.stdin`, `process.stdout`,\n * and `process.stderr`; stdin remains open and stdout/stderr are not ended by\n * default.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layer = /*#__PURE__*/Layer.succeed(Stdio.Stdio, /*#__PURE__*/Stdio.make({\n args: /*#__PURE__*/Effect.sync(() => process.argv.slice(2)),\n stdout: options => fromWritable({\n evaluate: () => process.stdout,\n onError: cause => systemError({\n module: \"Stdio\",\n method: \"stdout\",\n _tag: \"Unknown\",\n cause\n }),\n endOnDone: options?.endOnDone ?? false\n }),\n stderr: options => fromWritable({\n evaluate: () => process.stderr,\n onError: cause => systemError({\n module: \"Stdio\",\n method: \"stderr\",\n _tag: \"Unknown\",\n cause\n }),\n endOnDone: options?.endOnDone ?? false\n }),\n stdin: /*#__PURE__*/fromReadable({\n evaluate: () => process.stdin,\n onError: cause => systemError({\n module: \"Stdio\",\n method: \"stdin\",\n _tag: \"Unknown\",\n cause\n }),\n closeOnDone: false\n })\n}));\n//# sourceMappingURL=NodeStdio.js.map","/**\n * Node.js `Stdio` layer for the current process.\n *\n * The exported layer reuses the shared Node stdio implementation. It satisfies\n * the platform-independent `Stdio` service by reading command-line arguments\n * from `process.argv`, consuming input from `process.stdin`, and writing output\n * streams to `process.stdout` and `process.stderr`.\n *\n * @since 4.0.0\n */\nimport * as NodeStdio from \"@effect/platform-node-shared/NodeStdio\";\n/**\n * Provides the `Stdio` service backed by the current process arguments,\n * stdin, stdout, and stderr streams.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layer = NodeStdio.layer;\n//# sourceMappingURL=NodeStdio.js.map","import * as Context from \"./Context.js\";\nimport * as Predicate from \"./Predicate.js\";\nimport * as Schema from \"./Schema.js\";\nconst TypeId = \"~effect/platform/Terminal\";\nconst QuitErrorTypeId = \"effect/platform/Terminal/QuitError\";\n/**\n * Represents an error that occurs when a user attempts to\n * quit out of a `Terminal` prompt for input (usually by entering `ctrl`+`c`).\n *\n * **When to use**\n *\n * Use when implementing terminal input or prompts that need to signal\n * user-requested cancellation through the typed error channel.\n *\n * @see {@link isQuitError} for checking unknown errors when handling terminal cancellation\n *\n * @category errors\n * @since 4.0.0\n */\nexport class QuitError extends /*#__PURE__*/Schema.ErrorClass(\"QuitError\")({\n _tag: /*#__PURE__*/Schema.tag(\"QuitError\")\n}) {\n /**\n * Marks this value as a terminal quit error for runtime guards.\n *\n * @since 4.0.0\n */\n [QuitErrorTypeId] = QuitErrorTypeId;\n}\n/**\n * Returns `true` if the provided value is a `Terminal.QuitError`.\n *\n * **When to use**\n *\n * Use to narrow unknown failures to `QuitError` when handling terminal input\n * cancellation.\n *\n * **Details**\n *\n * Returns `true` when the value carries the `QuitError` runtime marker and\n * narrows it to `QuitError`.\n *\n * @see {@link QuitError} for the error value produced when terminal input is quit\n *\n * @category guards\n * @since 4.0.0\n */\nexport const isQuitError = u => Predicate.hasProperty(u, QuitErrorTypeId);\n/**\n * Service tag for command-line input and output services.\n *\n * **When to use**\n *\n * Use to access or provide platform terminal capabilities such as reading\n * input, writing output, and inspecting terminal dimensions.\n *\n * @category services\n * @since 4.0.0\n */\nexport const Terminal = /*#__PURE__*/Context.Service(\"effect/platform/Terminal\");\n/**\n * Creates a `Terminal` service implementation.\n *\n * **When to use**\n *\n * Use to construct a custom `Terminal` service implementation from concrete\n * terminal capabilities when writing a platform adapter, test implementation,\n * or custom runtime service.\n *\n * **Details**\n *\n * The implementation object supplies `columns`, `rows`, `readInput`,\n * `readLine`, and `display`; `make` attaches the `Terminal` service marker so\n * the result can be provided through the `Terminal` context service.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const make = impl => Terminal.of({\n ...impl,\n [TypeId]: TypeId\n});\n//# sourceMappingURL=Terminal.js.map","import * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\nimport * as Option from \"effect/Option\";\nimport { badArgument } from \"effect/PlatformError\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as Queue from \"effect/Queue\";\nimport * as RcRef from \"effect/RcRef\";\nimport * as Terminal from \"effect/Terminal\";\nimport * as readline from \"node:readline\";\n/**\n * Creates a scoped process-backed `Terminal` using Node `readline`, enabling\n * TTY raw mode while in scope and using the supplied predicate to decide when\n * key input should end.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const make = /*#__PURE__*/Effect.fnUntraced(function* (shouldQuit = defaultShouldQuit) {\n const stdin = process.stdin;\n const stdout = process.stdout;\n const lines = yield* Queue.make();\n // stdin \"end\" fires once per process, so remember end-of-input for readers\n // created after the event (Bun never sets `readableEnded`).\n let inputEnded = stdin.readableEnded;\n let readlineActive = false;\n const onStdinEnd = () => {\n inputEnded = true;\n if (!readlineActive) {\n Queue.endUnsafe(lines);\n }\n };\n stdin.once(\"end\", onStdinEnd);\n yield* Effect.addFinalizer(() => Effect.sync(() => stdin.off(\"end\", onStdinEnd)));\n const rlRef = yield* RcRef.make({\n acquire: Effect.acquireRelease(Effect.sync(() => {\n const rl = readline.createInterface({\n input: stdin,\n escapeCodeTimeout: 50\n });\n const onLine = line => Queue.offerUnsafe(lines, line);\n const onClose = () => {\n readlineActive = false;\n Queue.endUnsafe(lines);\n };\n readlineActive = true;\n readline.emitKeypressEvents(stdin, rl);\n rl.on(\"line\", onLine);\n rl.once(\"close\", onClose);\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n return {\n rl,\n onClose,\n onLine\n };\n }), ({\n rl,\n onClose,\n onLine\n }) => Effect.sync(() => {\n readlineActive = false;\n rl.off(\"line\", onLine);\n rl.off(\"close\", onClose);\n if (stdin.isTTY) {\n stdin.setRawMode(false);\n }\n rl.close();\n if (inputEnded) {\n Queue.endUnsafe(lines);\n }\n }))\n });\n const columns = Effect.sync(() => stdout.columns ?? 0);\n const rows = Effect.sync(() => stdout.rows ?? 0);\n const readInput = Effect.gen(function* () {\n const queue = yield* Queue.make();\n const handleKeypress = (s, k) => {\n const userInput = {\n input: Option.fromUndefinedOr(s),\n key: {\n name: k.name ?? \"\",\n ctrl: !!k.ctrl,\n meta: !!k.meta,\n shift: !!k.shift\n }\n };\n Queue.offerUnsafe(queue, userInput);\n if (shouldQuit(userInput)) {\n Queue.endUnsafe(queue);\n }\n };\n // Deno's `process.stdin` shim does not keep the event loop alive, so a\n // program blocked on input can exit before `end` is ever delivered. A\n // timer holds the loop open for as long as this reader is active.\n const keepAlive = setInterval(() => {}, 2147483647);\n // Without this, consumers (e.g. `Prompt.run`) hang forever on closed stdin.\n const handleEnd = () => {\n clearInterval(keepAlive);\n Queue.endUnsafe(queue);\n };\n yield* Effect.addFinalizer(() => Effect.sync(() => {\n clearInterval(keepAlive);\n stdin.off(\"keypress\", handleKeypress);\n stdin.off(\"end\", handleEnd);\n }));\n stdin.on(\"keypress\", handleKeypress);\n if (inputEnded) {\n handleEnd();\n } else {\n yield* RcRef.get(rlRef);\n stdin.once(\"end\", handleEnd);\n }\n return queue;\n });\n const readLine = Effect.suspend(() => Queue.poll(lines).pipe(Effect.flatMap(Option.match({\n onNone: () => Effect.scoped(Effect.andThen(RcRef.get(rlRef), Queue.take(lines))),\n onSome: Effect.succeed\n })), Effect.mapError(() => new Terminal.QuitError({}))));\n const display = prompt => Effect.uninterruptible(Effect.callback(resume => {\n stdout.write(prompt, err => Predicate.isNullish(err) ? resume(Effect.void) : resume(Effect.fail(badArgument({\n module: \"Terminal\",\n method: \"display\",\n description: \"Failed to write prompt to stdout\",\n cause: err\n }))));\n }));\n return Terminal.make({\n columns,\n rows,\n readInput,\n readLine,\n display\n });\n});\n/**\n * Provides the default process-backed `Terminal` service, ending key input on\n * Ctrl+C or Ctrl+D.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layer = /*#__PURE__*/Layer.effect(Terminal.Terminal, /*#__PURE__*/make(defaultShouldQuit));\nfunction defaultShouldQuit(input) {\n return input.key.ctrl && (input.key.name === \"c\" || input.key.name === \"d\");\n}\n//# sourceMappingURL=NodeTerminal.js.map","/**\n * Node.js implementation of the Effect `Terminal` service.\n *\n * This module reuses the shared Node terminal implementation. `make` creates a\n * scoped process-backed `Terminal` service, and `layer` provides the default\n * service with the standard quit behavior for key input.\n *\n * @since 4.0.0\n */\nimport * as NodeTerminal from \"@effect/platform-node-shared/NodeTerminal\";\n/**\n * Creates a scoped `Terminal` service backed by process stdin/stdout, using the\n * optional predicate to decide when key input should end the input stream.\n *\n * @category constructors\n * @since 4.0.0\n */\nexport const make = NodeTerminal.make;\n/**\n * Provides the default process-backed `Terminal` service, ending key input on\n * the default quit keys.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layer = NodeTerminal.layer;\n//# sourceMappingURL=NodeTerminal.js.map","import * as Layer from \"effect/Layer\";\nimport * as NodeChildProcessSpawner from \"./NodeChildProcessSpawner.js\";\nimport * as NodeCrypto from \"./NodeCrypto.js\";\nimport * as NodeFileSystem from \"./NodeFileSystem.js\";\nimport * as NodePath from \"./NodePath.js\";\nimport * as NodeStdio from \"./NodeStdio.js\";\nimport * as NodeTerminal from \"./NodeTerminal.js\";\n/**\n * Provides the default Node implementations for child process spawning,\n * filesystem, path, stdio, and terminal services.\n *\n * @category layers\n * @since 4.0.0\n */\nexport const layer = /*#__PURE__*/Layer.provideMerge(NodeChildProcessSpawner.layer, /*#__PURE__*/Layer.mergeAll(NodeFileSystem.layer, NodeCrypto.layer, NodePath.layer, NodeStdio.layer, NodeTerminal.layer));\n//# sourceMappingURL=NodeServices.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"mappings":"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"}