@kubb/agent 0.0.0-canary-20260217115709
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +15 -0
- package/.output/server/chunks/_/package.mjs +4 -0
- package/.output/server/chunks/_/package.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +6685 -0
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
- package/.output/server/chunks/routes/api/generate.options.mjs +31 -0
- package/.output/server/chunks/routes/api/generate.options.mjs.map +1 -0
- package/.output/server/chunks/routes/api/generate.post.mjs +120 -0
- package/.output/server/chunks/routes/api/generate.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/health.get.mjs +36 -0
- package/.output/server/chunks/routes/api/health.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/info.get.mjs +63 -0
- package/.output/server/chunks/routes/api/info.get.mjs.map +1 -0
- package/.output/server/index.mjs +25 -0
- package/.output/server/index.mjs.map +1 -0
- package/.output/server/node_modules/.nitro/path-key@3.1.1/index.js +16 -0
- package/.output/server/node_modules/.nitro/path-key@3.1.1/package.json +39 -0
- package/.output/server/node_modules/.nitro/path-key@4.0.0/index.js +12 -0
- package/.output/server/node_modules/.nitro/path-key@4.0.0/package.json +41 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/buffer-util.js +131 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/constants.js +18 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/event-target.js +292 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/extension.js +203 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/limiter.js +55 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/permessage-deflate.js +514 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/receiver.js +706 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/sender.js +602 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/stream.js +159 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/subprotocol.js +62 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/validation.js +152 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/websocket-server.js +540 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/lib/websocket.js +1388 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/package.json +69 -0
- package/.output/server/node_modules/.nitro/ws@8.18.0/wrapper.mjs +8 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/buffer-util.js +131 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/constants.js +19 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/event-target.js +292 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/extension.js +203 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/limiter.js +55 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/permessage-deflate.js +528 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/receiver.js +706 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/sender.js +602 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/stream.js +161 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/subprotocol.js +62 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/validation.js +152 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/websocket-server.js +554 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/lib/websocket.js +1393 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/package.json +69 -0
- package/.output/server/node_modules/.nitro/ws@8.19.0/wrapper.mjs +8 -0
- package/.output/server/node_modules/@clack/core/dist/index.mjs +18 -0
- package/.output/server/node_modules/@clack/core/package.json +61 -0
- package/.output/server/node_modules/@clack/prompts/dist/index.mjs +135 -0
- package/.output/server/node_modules/@clack/prompts/package.json +66 -0
- package/.output/server/node_modules/@kubb/fabric-core/dist/Root-BQX3eHqb.js +830 -0
- package/.output/server/node_modules/@kubb/fabric-core/dist/chunk-BVHe6Par.js +22 -0
- package/.output/server/node_modules/@kubb/fabric-core/dist/defaultParser-BD_N68Bo.js +16 -0
- package/.output/server/node_modules/@kubb/fabric-core/dist/getRelativePath-C4Au07ON.js +58 -0
- package/.output/server/node_modules/@kubb/fabric-core/dist/index.js +668 -0
- package/.output/server/node_modules/@kubb/fabric-core/dist/parsers/typescript.js +102 -0
- package/.output/server/node_modules/@kubb/fabric-core/dist/parsers.js +18 -0
- package/.output/server/node_modules/@kubb/fabric-core/dist/plugins.js +620 -0
- package/.output/server/node_modules/@kubb/fabric-core/package.json +120 -0
- package/.output/server/node_modules/@kubb/react-fabric/dist/chunk-DbZtQ4qb.js +47 -0
- package/.output/server/node_modules/@kubb/react-fabric/dist/index.js +535 -0
- package/.output/server/node_modules/@kubb/react-fabric/dist/jsx-runtime-CQFBnRKx.js +265 -0
- package/.output/server/node_modules/@kubb/react-fabric/dist/jsx-runtime.js +13 -0
- package/.output/server/node_modules/@kubb/react-fabric/dist/parsers.js +3 -0
- package/.output/server/node_modules/@kubb/react-fabric/dist/plugins.js +7 -0
- package/.output/server/node_modules/@kubb/react-fabric/dist/react--draJ5Pm.js +1192 -0
- package/.output/server/node_modules/@kubb/react-fabric/dist/reactPlugin-DqJsInTf.js +17931 -0
- package/.output/server/node_modules/@kubb/react-fabric/package.json +140 -0
- package/.output/server/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.js +89 -0
- package/.output/server/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.js +34 -0
- package/.output/server/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.js +6 -0
- package/.output/server/node_modules/@sec-ant/readable-stream/package.json +98 -0
- package/.output/server/node_modules/@sindresorhus/merge-streams/index.js +265 -0
- package/.output/server/node_modules/@sindresorhus/merge-streams/package.json +49 -0
- package/.output/server/node_modules/balanced-match/index.js +62 -0
- package/.output/server/node_modules/balanced-match/package.json +48 -0
- package/.output/server/node_modules/brace-expansion/index.js +201 -0
- package/.output/server/node_modules/brace-expansion/package.json +50 -0
- package/.output/server/node_modules/buffer-from/index.js +72 -0
- package/.output/server/node_modules/buffer-from/package.json +19 -0
- package/.output/server/node_modules/bytes/index.js +159 -0
- package/.output/server/node_modules/bytes/package.json +39 -0
- package/.output/server/node_modules/concat-map/index.js +13 -0
- package/.output/server/node_modules/concat-map/package.json +59 -0
- package/.output/server/node_modules/content-disposition/index.js +445 -0
- package/.output/server/node_modules/content-disposition/package.json +39 -0
- package/.output/server/node_modules/cross-spawn/index.js +39 -0
- package/.output/server/node_modules/cross-spawn/lib/enoent.js +59 -0
- package/.output/server/node_modules/cross-spawn/lib/parse.js +91 -0
- package/.output/server/node_modules/cross-spawn/lib/util/escape.js +47 -0
- package/.output/server/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
- package/.output/server/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
- package/.output/server/node_modules/cross-spawn/package.json +73 -0
- package/.output/server/node_modules/execa/index.js +28 -0
- package/.output/server/node_modules/execa/lib/arguments/command.js +20 -0
- package/.output/server/node_modules/execa/lib/arguments/cwd.js +39 -0
- package/.output/server/node_modules/execa/lib/arguments/encoding-option.js +50 -0
- package/.output/server/node_modules/execa/lib/arguments/escape.js +88 -0
- package/.output/server/node_modules/execa/lib/arguments/fd-options.js +108 -0
- package/.output/server/node_modules/execa/lib/arguments/file-url.js +25 -0
- package/.output/server/node_modules/execa/lib/arguments/options.js +96 -0
- package/.output/server/node_modules/execa/lib/arguments/shell.js +11 -0
- package/.output/server/node_modules/execa/lib/arguments/specific.js +111 -0
- package/.output/server/node_modules/execa/lib/convert/add.js +15 -0
- package/.output/server/node_modules/execa/lib/convert/concurrent.js +33 -0
- package/.output/server/node_modules/execa/lib/convert/duplex.js +69 -0
- package/.output/server/node_modules/execa/lib/convert/iterable.js +34 -0
- package/.output/server/node_modules/execa/lib/convert/readable.js +113 -0
- package/.output/server/node_modules/execa/lib/convert/shared.js +46 -0
- package/.output/server/node_modules/execa/lib/convert/writable.js +90 -0
- package/.output/server/node_modules/execa/lib/io/contents.js +116 -0
- package/.output/server/node_modules/execa/lib/io/input-sync.js +44 -0
- package/.output/server/node_modules/execa/lib/io/iterate.js +110 -0
- package/.output/server/node_modules/execa/lib/io/max-buffer.js +89 -0
- package/.output/server/node_modules/execa/lib/io/output-async.js +80 -0
- package/.output/server/node_modules/execa/lib/io/output-sync.js +135 -0
- package/.output/server/node_modules/execa/lib/io/pipeline.js +48 -0
- package/.output/server/node_modules/execa/lib/io/strip-newline.js +12 -0
- package/.output/server/node_modules/execa/lib/ipc/array.js +4 -0
- package/.output/server/node_modules/execa/lib/ipc/buffer-messages.js +47 -0
- package/.output/server/node_modules/execa/lib/ipc/forward.js +56 -0
- package/.output/server/node_modules/execa/lib/ipc/get-each.js +89 -0
- package/.output/server/node_modules/execa/lib/ipc/get-one.js +69 -0
- package/.output/server/node_modules/execa/lib/ipc/graceful.js +72 -0
- package/.output/server/node_modules/execa/lib/ipc/incoming.js +79 -0
- package/.output/server/node_modules/execa/lib/ipc/ipc-input.js +44 -0
- package/.output/server/node_modules/execa/lib/ipc/methods.js +49 -0
- package/.output/server/node_modules/execa/lib/ipc/outgoing.js +47 -0
- package/.output/server/node_modules/execa/lib/ipc/reference.js +44 -0
- package/.output/server/node_modules/execa/lib/ipc/send.js +91 -0
- package/.output/server/node_modules/execa/lib/ipc/strict.js +113 -0
- package/.output/server/node_modules/execa/lib/ipc/validation.js +111 -0
- package/.output/server/node_modules/execa/lib/methods/bind.js +23 -0
- package/.output/server/node_modules/execa/lib/methods/command.js +43 -0
- package/.output/server/node_modules/execa/lib/methods/create.js +65 -0
- package/.output/server/node_modules/execa/lib/methods/main-async.js +194 -0
- package/.output/server/node_modules/execa/lib/methods/main-sync.js +163 -0
- package/.output/server/node_modules/execa/lib/methods/node.js +51 -0
- package/.output/server/node_modules/execa/lib/methods/parameters.js +31 -0
- package/.output/server/node_modules/execa/lib/methods/promise.js +15 -0
- package/.output/server/node_modules/execa/lib/methods/script.js +22 -0
- package/.output/server/node_modules/execa/lib/methods/template.js +153 -0
- package/.output/server/node_modules/execa/lib/pipe/abort.js +20 -0
- package/.output/server/node_modules/execa/lib/pipe/pipe-arguments.js +91 -0
- package/.output/server/node_modules/execa/lib/pipe/sequence.js +24 -0
- package/.output/server/node_modules/execa/lib/pipe/setup.js +72 -0
- package/.output/server/node_modules/execa/lib/pipe/streaming.js +51 -0
- package/.output/server/node_modules/execa/lib/pipe/throw.js +58 -0
- package/.output/server/node_modules/execa/lib/resolve/all-async.js +46 -0
- package/.output/server/node_modules/execa/lib/resolve/all-sync.js +33 -0
- package/.output/server/node_modules/execa/lib/resolve/exit-async.js +54 -0
- package/.output/server/node_modules/execa/lib/resolve/exit-sync.js +25 -0
- package/.output/server/node_modules/execa/lib/resolve/stdio.js +47 -0
- package/.output/server/node_modules/execa/lib/resolve/wait-stream.js +96 -0
- package/.output/server/node_modules/execa/lib/resolve/wait-subprocess.js +146 -0
- package/.output/server/node_modules/execa/lib/return/duration.js +8 -0
- package/.output/server/node_modules/execa/lib/return/early-error.js +60 -0
- package/.output/server/node_modules/execa/lib/return/final-error.js +40 -0
- package/.output/server/node_modules/execa/lib/return/message.js +157 -0
- package/.output/server/node_modules/execa/lib/return/reject.js +13 -0
- package/.output/server/node_modules/execa/lib/return/result.js +186 -0
- package/.output/server/node_modules/execa/lib/stdio/direction.js +76 -0
- package/.output/server/node_modules/execa/lib/stdio/duplicate.js +116 -0
- package/.output/server/node_modules/execa/lib/stdio/handle-async.js +52 -0
- package/.output/server/node_modules/execa/lib/stdio/handle-sync.js +57 -0
- package/.output/server/node_modules/execa/lib/stdio/handle.js +214 -0
- package/.output/server/node_modules/execa/lib/stdio/input-option.js +50 -0
- package/.output/server/node_modules/execa/lib/stdio/native.js +106 -0
- package/.output/server/node_modules/execa/lib/stdio/stdio-option.js +60 -0
- package/.output/server/node_modules/execa/lib/stdio/type.js +173 -0
- package/.output/server/node_modules/execa/lib/terminate/cancel.js +20 -0
- package/.output/server/node_modules/execa/lib/terminate/cleanup.js +16 -0
- package/.output/server/node_modules/execa/lib/terminate/graceful.js +71 -0
- package/.output/server/node_modules/execa/lib/terminate/kill.js +93 -0
- package/.output/server/node_modules/execa/lib/terminate/signal.js +70 -0
- package/.output/server/node_modules/execa/lib/terminate/timeout.js +21 -0
- package/.output/server/node_modules/execa/lib/transform/encoding-transform.js +51 -0
- package/.output/server/node_modules/execa/lib/transform/generator.js +107 -0
- package/.output/server/node_modules/execa/lib/transform/normalize.js +111 -0
- package/.output/server/node_modules/execa/lib/transform/object-mode.js +41 -0
- package/.output/server/node_modules/execa/lib/transform/run-async.js +60 -0
- package/.output/server/node_modules/execa/lib/transform/run-sync.js +50 -0
- package/.output/server/node_modules/execa/lib/transform/split.js +110 -0
- package/.output/server/node_modules/execa/lib/transform/validate.js +43 -0
- package/.output/server/node_modules/execa/lib/utils/abort-signal.js +8 -0
- package/.output/server/node_modules/execa/lib/utils/deferred.js +7 -0
- package/.output/server/node_modules/execa/lib/utils/max-listeners.js +14 -0
- package/.output/server/node_modules/execa/lib/utils/standard-stream.js +6 -0
- package/.output/server/node_modules/execa/lib/utils/uint-array.js +69 -0
- package/.output/server/node_modules/execa/lib/verbose/complete.js +24 -0
- package/.output/server/node_modules/execa/lib/verbose/custom.js +26 -0
- package/.output/server/node_modules/execa/lib/verbose/default.js +54 -0
- package/.output/server/node_modules/execa/lib/verbose/error.js +13 -0
- package/.output/server/node_modules/execa/lib/verbose/info.js +39 -0
- package/.output/server/node_modules/execa/lib/verbose/ipc.js +15 -0
- package/.output/server/node_modules/execa/lib/verbose/log.js +54 -0
- package/.output/server/node_modules/execa/lib/verbose/output.js +60 -0
- package/.output/server/node_modules/execa/lib/verbose/start.js +15 -0
- package/.output/server/node_modules/execa/lib/verbose/values.js +33 -0
- package/.output/server/node_modules/execa/package.json +105 -0
- package/.output/server/node_modules/figures/index.js +292 -0
- package/.output/server/node_modules/figures/package.json +49 -0
- package/.output/server/node_modules/fs-extra/lib/copy/copy-sync.js +176 -0
- package/.output/server/node_modules/fs-extra/lib/copy/copy.js +180 -0
- package/.output/server/node_modules/fs-extra/lib/copy/index.js +7 -0
- package/.output/server/node_modules/fs-extra/lib/empty/index.js +39 -0
- package/.output/server/node_modules/fs-extra/lib/ensure/file.js +66 -0
- package/.output/server/node_modules/fs-extra/lib/ensure/index.js +23 -0
- package/.output/server/node_modules/fs-extra/lib/ensure/link.js +64 -0
- package/.output/server/node_modules/fs-extra/lib/ensure/symlink-paths.js +101 -0
- package/.output/server/node_modules/fs-extra/lib/ensure/symlink-type.js +34 -0
- package/.output/server/node_modules/fs-extra/lib/ensure/symlink.js +67 -0
- package/.output/server/node_modules/fs-extra/lib/fs/index.js +146 -0
- package/.output/server/node_modules/fs-extra/lib/index.js +16 -0
- package/.output/server/node_modules/fs-extra/lib/json/index.js +16 -0
- package/.output/server/node_modules/fs-extra/lib/json/jsonfile.js +11 -0
- package/.output/server/node_modules/fs-extra/lib/json/output-json-sync.js +12 -0
- package/.output/server/node_modules/fs-extra/lib/json/output-json.js +12 -0
- package/.output/server/node_modules/fs-extra/lib/mkdirs/index.js +14 -0
- package/.output/server/node_modules/fs-extra/lib/mkdirs/make-dir.js +27 -0
- package/.output/server/node_modules/fs-extra/lib/mkdirs/utils.js +21 -0
- package/.output/server/node_modules/fs-extra/lib/move/index.js +7 -0
- package/.output/server/node_modules/fs-extra/lib/move/move-sync.js +55 -0
- package/.output/server/node_modules/fs-extra/lib/move/move.js +59 -0
- package/.output/server/node_modules/fs-extra/lib/output-file/index.js +31 -0
- package/.output/server/node_modules/fs-extra/lib/path-exists/index.js +12 -0
- package/.output/server/node_modules/fs-extra/lib/remove/index.js +17 -0
- package/.output/server/node_modules/fs-extra/lib/util/async.js +29 -0
- package/.output/server/node_modules/fs-extra/lib/util/stat.js +159 -0
- package/.output/server/node_modules/fs-extra/lib/util/utimes.js +36 -0
- package/.output/server/node_modules/fs-extra/package.json +71 -0
- package/.output/server/node_modules/get-stream/package.json +60 -0
- package/.output/server/node_modules/get-stream/source/array-buffer.js +84 -0
- package/.output/server/node_modules/get-stream/source/array.js +32 -0
- package/.output/server/node_modules/get-stream/source/buffer.js +19 -0
- package/.output/server/node_modules/get-stream/source/contents.js +121 -0
- package/.output/server/node_modules/get-stream/source/exports.js +5 -0
- package/.output/server/node_modules/get-stream/source/index.js +13 -0
- package/.output/server/node_modules/get-stream/source/stream.js +65 -0
- package/.output/server/node_modules/get-stream/source/string.js +41 -0
- package/.output/server/node_modules/get-stream/source/utils.js +11 -0
- package/.output/server/node_modules/graceful-fs/clone.js +23 -0
- package/.output/server/node_modules/graceful-fs/graceful-fs.js +448 -0
- package/.output/server/node_modules/graceful-fs/legacy-streams.js +118 -0
- package/.output/server/node_modules/graceful-fs/package.json +53 -0
- package/.output/server/node_modules/graceful-fs/polyfills.js +355 -0
- package/.output/server/node_modules/human-signals/build/src/core.js +273 -0
- package/.output/server/node_modules/human-signals/build/src/main.js +70 -0
- package/.output/server/node_modules/human-signals/build/src/realtime.js +16 -0
- package/.output/server/node_modules/human-signals/build/src/signals.js +34 -0
- package/.output/server/node_modules/human-signals/package.json +66 -0
- package/.output/server/node_modules/is-plain-obj/index.js +8 -0
- package/.output/server/node_modules/is-plain-obj/package.json +41 -0
- package/.output/server/node_modules/is-stream/index.js +37 -0
- package/.output/server/node_modules/is-stream/package.json +48 -0
- package/.output/server/node_modules/is-unicode-supported/index.js +21 -0
- package/.output/server/node_modules/is-unicode-supported/package.json +47 -0
- package/.output/server/node_modules/isexe/index.js +57 -0
- package/.output/server/node_modules/isexe/mode.js +41 -0
- package/.output/server/node_modules/isexe/package.json +31 -0
- package/.output/server/node_modules/isexe/windows.js +42 -0
- package/.output/server/node_modules/jiti/dist/jiti.cjs +1 -0
- package/.output/server/node_modules/jiti/lib/jiti.mjs +29 -0
- package/.output/server/node_modules/jiti/package.json +133 -0
- package/.output/server/node_modules/js-runtime/dist/index.js +5 -0
- package/.output/server/node_modules/js-runtime/package.json +72 -0
- package/.output/server/node_modules/jsonfile/index.js +88 -0
- package/.output/server/node_modules/jsonfile/package.json +40 -0
- package/.output/server/node_modules/jsonfile/utils.js +14 -0
- package/.output/server/node_modules/mime-db/db.json +7088 -0
- package/.output/server/node_modules/mime-db/index.js +11 -0
- package/.output/server/node_modules/mime-db/package.json +57 -0
- package/.output/server/node_modules/mime-types/index.js +188 -0
- package/.output/server/node_modules/mime-types/package.json +43 -0
- package/.output/server/node_modules/minimatch/minimatch.js +947 -0
- package/.output/server/node_modules/minimatch/package.json +33 -0
- package/.output/server/node_modules/natural-orderby/dist/main.js +19 -0
- package/.output/server/node_modules/natural-orderby/dist/umd/natural-orderby.development.js +420 -0
- package/.output/server/node_modules/natural-orderby/dist/umd/natural-orderby.production.min.js +11 -0
- package/.output/server/node_modules/natural-orderby/package.json +119 -0
- package/.output/server/node_modules/npm-run-path/index.js +55 -0
- package/.output/server/node_modules/npm-run-path/package.json +52 -0
- package/.output/server/node_modules/p-limit/index.js +127 -0
- package/.output/server/node_modules/p-limit/package.json +58 -0
- package/.output/server/node_modules/parse-ms/index.js +45 -0
- package/.output/server/node_modules/parse-ms/package.json +47 -0
- package/.output/server/node_modules/path-is-inside/lib/path-is-inside.js +28 -0
- package/.output/server/node_modules/path-is-inside/package.json +27 -0
- package/.output/server/node_modules/path-to-regexp/index.js +421 -0
- package/.output/server/node_modules/path-to-regexp/package.json +46 -0
- package/.output/server/node_modules/picocolors/package.json +25 -0
- package/.output/server/node_modules/picocolors/picocolors.js +75 -0
- package/.output/server/node_modules/pretty-ms/index.js +149 -0
- package/.output/server/node_modules/pretty-ms/package.json +55 -0
- package/.output/server/node_modules/range-parser/index.js +158 -0
- package/.output/server/node_modules/range-parser/package.json +40 -0
- package/.output/server/node_modules/react-devtools-core/dist/backend.js +18302 -0
- package/.output/server/node_modules/react-devtools-core/package.json +38 -0
- package/.output/server/node_modules/remeda/dist/add.js +2 -0
- package/.output/server/node_modules/remeda/dist/addProp.js +2 -0
- package/.output/server/node_modules/remeda/dist/allPass.js +2 -0
- package/.output/server/node_modules/remeda/dist/anyPass.js +2 -0
- package/.output/server/node_modules/remeda/dist/binarySearchCutoffIndex-CLQRwIY1.js +2 -0
- package/.output/server/node_modules/remeda/dist/capitalize.js +2 -0
- package/.output/server/node_modules/remeda/dist/ceil.js +2 -0
- package/.output/server/node_modules/remeda/dist/chunk.js +2 -0
- package/.output/server/node_modules/remeda/dist/clamp.js +2 -0
- package/.output/server/node_modules/remeda/dist/clone.js +2 -0
- package/.output/server/node_modules/remeda/dist/concat.js +2 -0
- package/.output/server/node_modules/remeda/dist/conditional.js +2 -0
- package/.output/server/node_modules/remeda/dist/constant.js +2 -0
- package/.output/server/node_modules/remeda/dist/countBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/debounce.js +2 -0
- package/.output/server/node_modules/remeda/dist/defaultTo.js +2 -0
- package/.output/server/node_modules/remeda/dist/difference.js +2 -0
- package/.output/server/node_modules/remeda/dist/differenceWith.js +2 -0
- package/.output/server/node_modules/remeda/dist/divide.js +2 -0
- package/.output/server/node_modules/remeda/dist/doNothing.js +2 -0
- package/.output/server/node_modules/remeda/dist/drop.js +2 -0
- package/.output/server/node_modules/remeda/dist/dropFirstBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/dropLast.js +2 -0
- package/.output/server/node_modules/remeda/dist/dropLastWhile.js +2 -0
- package/.output/server/node_modules/remeda/dist/dropWhile.js +2 -0
- package/.output/server/node_modules/remeda/dist/endsWith.js +2 -0
- package/.output/server/node_modules/remeda/dist/entries.js +2 -0
- package/.output/server/node_modules/remeda/dist/evolve.js +2 -0
- package/.output/server/node_modules/remeda/dist/filter.js +2 -0
- package/.output/server/node_modules/remeda/dist/find.js +2 -0
- package/.output/server/node_modules/remeda/dist/findIndex.js +2 -0
- package/.output/server/node_modules/remeda/dist/findLast.js +2 -0
- package/.output/server/node_modules/remeda/dist/findLastIndex.js +2 -0
- package/.output/server/node_modules/remeda/dist/first.js +2 -0
- package/.output/server/node_modules/remeda/dist/firstBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/flat.js +2 -0
- package/.output/server/node_modules/remeda/dist/flatMap.js +2 -0
- package/.output/server/node_modules/remeda/dist/floor.js +2 -0
- package/.output/server/node_modules/remeda/dist/forEach.js +2 -0
- package/.output/server/node_modules/remeda/dist/forEachObj.js +2 -0
- package/.output/server/node_modules/remeda/dist/fromEntries.js +2 -0
- package/.output/server/node_modules/remeda/dist/fromKeys.js +2 -0
- package/.output/server/node_modules/remeda/dist/funnel.js +2 -0
- package/.output/server/node_modules/remeda/dist/groupBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/groupByProp.js +2 -0
- package/.output/server/node_modules/remeda/dist/hasAtLeast.js +2 -0
- package/.output/server/node_modules/remeda/dist/hasSubObject.js +2 -0
- package/.output/server/node_modules/remeda/dist/heap-OOe_F8_z.js +2 -0
- package/.output/server/node_modules/remeda/dist/identity.js +2 -0
- package/.output/server/node_modules/remeda/dist/index.js +1 -0
- package/.output/server/node_modules/remeda/dist/indexBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/intersection.js +2 -0
- package/.output/server/node_modules/remeda/dist/intersectionWith.js +2 -0
- package/.output/server/node_modules/remeda/dist/invert.js +2 -0
- package/.output/server/node_modules/remeda/dist/isArray.js +2 -0
- package/.output/server/node_modules/remeda/dist/isBigInt.js +2 -0
- package/.output/server/node_modules/remeda/dist/isBoolean.js +2 -0
- package/.output/server/node_modules/remeda/dist/isDate.js +2 -0
- package/.output/server/node_modules/remeda/dist/isDeepEqual.js +2 -0
- package/.output/server/node_modules/remeda/dist/isDefined.js +2 -0
- package/.output/server/node_modules/remeda/dist/isEmpty.js +2 -0
- package/.output/server/node_modules/remeda/dist/isEmptyish.js +2 -0
- package/.output/server/node_modules/remeda/dist/isError.js +2 -0
- package/.output/server/node_modules/remeda/dist/isFunction.js +2 -0
- package/.output/server/node_modules/remeda/dist/isIncludedIn.js +2 -0
- package/.output/server/node_modules/remeda/dist/isNonNull.js +2 -0
- package/.output/server/node_modules/remeda/dist/isNonNullish.js +2 -0
- package/.output/server/node_modules/remeda/dist/isNot.js +2 -0
- package/.output/server/node_modules/remeda/dist/isNullish.js +2 -0
- package/.output/server/node_modules/remeda/dist/isNumber.js +2 -0
- package/.output/server/node_modules/remeda/dist/isObjectType.js +2 -0
- package/.output/server/node_modules/remeda/dist/isPlainObject.js +2 -0
- package/.output/server/node_modules/remeda/dist/isPromise.js +2 -0
- package/.output/server/node_modules/remeda/dist/isShallowEqual.js +2 -0
- package/.output/server/node_modules/remeda/dist/isStrictEqual.js +2 -0
- package/.output/server/node_modules/remeda/dist/isString.js +2 -0
- package/.output/server/node_modules/remeda/dist/isSymbol.js +2 -0
- package/.output/server/node_modules/remeda/dist/isTruthy.js +2 -0
- package/.output/server/node_modules/remeda/dist/join.js +2 -0
- package/.output/server/node_modules/remeda/dist/keys.js +2 -0
- package/.output/server/node_modules/remeda/dist/last.js +2 -0
- package/.output/server/node_modules/remeda/dist/lazyDataLastImpl-DtF3cihj.js +2 -0
- package/.output/server/node_modules/remeda/dist/length.js +2 -0
- package/.output/server/node_modules/remeda/dist/map.js +2 -0
- package/.output/server/node_modules/remeda/dist/mapKeys.js +2 -0
- package/.output/server/node_modules/remeda/dist/mapToObj.js +2 -0
- package/.output/server/node_modules/remeda/dist/mapValues.js +2 -0
- package/.output/server/node_modules/remeda/dist/mapWithFeedback.js +2 -0
- package/.output/server/node_modules/remeda/dist/mean.js +2 -0
- package/.output/server/node_modules/remeda/dist/meanBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/median.js +2 -0
- package/.output/server/node_modules/remeda/dist/merge.js +2 -0
- package/.output/server/node_modules/remeda/dist/mergeAll.js +2 -0
- package/.output/server/node_modules/remeda/dist/mergeDeep.js +2 -0
- package/.output/server/node_modules/remeda/dist/multiply.js +2 -0
- package/.output/server/node_modules/remeda/dist/nthBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/objOf.js +2 -0
- package/.output/server/node_modules/remeda/dist/omit.js +2 -0
- package/.output/server/node_modules/remeda/dist/omitBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/once.js +2 -0
- package/.output/server/node_modules/remeda/dist/only.js +2 -0
- package/.output/server/node_modules/remeda/dist/partialBind.js +2 -0
- package/.output/server/node_modules/remeda/dist/partialLastBind.js +2 -0
- package/.output/server/node_modules/remeda/dist/partition.js +2 -0
- package/.output/server/node_modules/remeda/dist/pathOr.js +2 -0
- package/.output/server/node_modules/remeda/dist/pick.js +2 -0
- package/.output/server/node_modules/remeda/dist/pickBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/pipe.js +2 -0
- package/.output/server/node_modules/remeda/dist/piped.js +2 -0
- package/.output/server/node_modules/remeda/dist/product.js +2 -0
- package/.output/server/node_modules/remeda/dist/prop.js +2 -0
- package/.output/server/node_modules/remeda/dist/pullObject.js +2 -0
- package/.output/server/node_modules/remeda/dist/purry.js +2 -0
- package/.output/server/node_modules/remeda/dist/purryFromLazy-B-_oTxzb.js +2 -0
- package/.output/server/node_modules/remeda/dist/purryOn-D4wFIFMT.js +2 -0
- package/.output/server/node_modules/remeda/dist/purryOrderRules-4JgY6z4X.js +2 -0
- package/.output/server/node_modules/remeda/dist/quickSelect-B4eZ0JeB.js +2 -0
- package/.output/server/node_modules/remeda/dist/randomBigInt.js +2 -0
- package/.output/server/node_modules/remeda/dist/randomInteger.js +2 -0
- package/.output/server/node_modules/remeda/dist/randomString.js +2 -0
- package/.output/server/node_modules/remeda/dist/range.js +2 -0
- package/.output/server/node_modules/remeda/dist/rankBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/reduce.js +2 -0
- package/.output/server/node_modules/remeda/dist/reverse.js +2 -0
- package/.output/server/node_modules/remeda/dist/round.js +2 -0
- package/.output/server/node_modules/remeda/dist/sample.js +2 -0
- package/.output/server/node_modules/remeda/dist/set.js +2 -0
- package/.output/server/node_modules/remeda/dist/setPath.js +2 -0
- package/.output/server/node_modules/remeda/dist/shuffle.js +2 -0
- package/.output/server/node_modules/remeda/dist/sliceString.js +2 -0
- package/.output/server/node_modules/remeda/dist/sort.js +2 -0
- package/.output/server/node_modules/remeda/dist/sortBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/sortedIndex.js +2 -0
- package/.output/server/node_modules/remeda/dist/sortedIndexBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/sortedIndexWith.js +2 -0
- package/.output/server/node_modules/remeda/dist/sortedLastIndex.js +2 -0
- package/.output/server/node_modules/remeda/dist/sortedLastIndexBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/splice.js +2 -0
- package/.output/server/node_modules/remeda/dist/split.js +2 -0
- package/.output/server/node_modules/remeda/dist/splitAt.js +2 -0
- package/.output/server/node_modules/remeda/dist/splitWhen.js +2 -0
- package/.output/server/node_modules/remeda/dist/startsWith.js +2 -0
- package/.output/server/node_modules/remeda/dist/stringToPath.js +2 -0
- package/.output/server/node_modules/remeda/dist/subtract.js +2 -0
- package/.output/server/node_modules/remeda/dist/sum.js +2 -0
- package/.output/server/node_modules/remeda/dist/sumBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/swapInPlace-BrVgf3c3.js +2 -0
- package/.output/server/node_modules/remeda/dist/swapIndices.js +2 -0
- package/.output/server/node_modules/remeda/dist/swapProps.js +2 -0
- package/.output/server/node_modules/remeda/dist/take.js +2 -0
- package/.output/server/node_modules/remeda/dist/takeFirstBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/takeLast.js +2 -0
- package/.output/server/node_modules/remeda/dist/takeLastWhile.js +2 -0
- package/.output/server/node_modules/remeda/dist/takeWhile.js +2 -0
- package/.output/server/node_modules/remeda/dist/tap.js +2 -0
- package/.output/server/node_modules/remeda/dist/times.js +2 -0
- package/.output/server/node_modules/remeda/dist/toCamelCase.js +2 -0
- package/.output/server/node_modules/remeda/dist/toKebabCase.js +2 -0
- package/.output/server/node_modules/remeda/dist/toLowerCase.js +2 -0
- package/.output/server/node_modules/remeda/dist/toSingle-qs9PC5sP.js +2 -0
- package/.output/server/node_modules/remeda/dist/toSnakeCase.js +2 -0
- package/.output/server/node_modules/remeda/dist/toTitleCase.js +2 -0
- package/.output/server/node_modules/remeda/dist/toUpperCase.js +2 -0
- package/.output/server/node_modules/remeda/dist/truncate.js +2 -0
- package/.output/server/node_modules/remeda/dist/uncapitalize.js +2 -0
- package/.output/server/node_modules/remeda/dist/unique.js +2 -0
- package/.output/server/node_modules/remeda/dist/uniqueBy.js +2 -0
- package/.output/server/node_modules/remeda/dist/uniqueWith.js +2 -0
- package/.output/server/node_modules/remeda/dist/utilityEvaluators-BQqW5Ir5.js +2 -0
- package/.output/server/node_modules/remeda/dist/values.js +2 -0
- package/.output/server/node_modules/remeda/dist/when.js +2 -0
- package/.output/server/node_modules/remeda/dist/withPrecision-CDZ-Oor7.js +2 -0
- package/.output/server/node_modules/remeda/dist/words-Dv8LmnKC.js +3 -0
- package/.output/server/node_modules/remeda/dist/zip.js +2 -0
- package/.output/server/node_modules/remeda/dist/zipWith.js +2 -0
- package/.output/server/node_modules/remeda/package.json +90 -0
- package/.output/server/node_modules/semver/classes/comparator.js +143 -0
- package/.output/server/node_modules/semver/classes/range.js +557 -0
- package/.output/server/node_modules/semver/classes/semver.js +333 -0
- package/.output/server/node_modules/semver/functions/clean.js +8 -0
- package/.output/server/node_modules/semver/functions/cmp.js +54 -0
- package/.output/server/node_modules/semver/functions/coerce.js +62 -0
- package/.output/server/node_modules/semver/functions/compare-build.js +9 -0
- package/.output/server/node_modules/semver/functions/compare-loose.js +5 -0
- package/.output/server/node_modules/semver/functions/compare.js +7 -0
- package/.output/server/node_modules/semver/functions/diff.js +60 -0
- package/.output/server/node_modules/semver/functions/eq.js +5 -0
- package/.output/server/node_modules/semver/functions/gt.js +5 -0
- package/.output/server/node_modules/semver/functions/gte.js +5 -0
- package/.output/server/node_modules/semver/functions/inc.js +21 -0
- package/.output/server/node_modules/semver/functions/lt.js +5 -0
- package/.output/server/node_modules/semver/functions/lte.js +5 -0
- package/.output/server/node_modules/semver/functions/major.js +5 -0
- package/.output/server/node_modules/semver/functions/minor.js +5 -0
- package/.output/server/node_modules/semver/functions/neq.js +5 -0
- package/.output/server/node_modules/semver/functions/parse.js +18 -0
- package/.output/server/node_modules/semver/functions/patch.js +5 -0
- package/.output/server/node_modules/semver/functions/prerelease.js +8 -0
- package/.output/server/node_modules/semver/functions/rcompare.js +5 -0
- package/.output/server/node_modules/semver/functions/rsort.js +5 -0
- package/.output/server/node_modules/semver/functions/satisfies.js +12 -0
- package/.output/server/node_modules/semver/functions/sort.js +5 -0
- package/.output/server/node_modules/semver/functions/valid.js +8 -0
- package/.output/server/node_modules/semver/index.js +91 -0
- package/.output/server/node_modules/semver/internal/constants.js +37 -0
- package/.output/server/node_modules/semver/internal/debug.js +11 -0
- package/.output/server/node_modules/semver/internal/identifiers.js +29 -0
- package/.output/server/node_modules/semver/internal/lrucache.js +42 -0
- package/.output/server/node_modules/semver/internal/parse-options.js +17 -0
- package/.output/server/node_modules/semver/internal/re.js +223 -0
- package/.output/server/node_modules/semver/package.json +78 -0
- package/.output/server/node_modules/semver/preload.js +4 -0
- package/.output/server/node_modules/semver/ranges/gtr.js +6 -0
- package/.output/server/node_modules/semver/ranges/intersects.js +9 -0
- package/.output/server/node_modules/semver/ranges/ltr.js +6 -0
- package/.output/server/node_modules/semver/ranges/max-satisfying.js +27 -0
- package/.output/server/node_modules/semver/ranges/min-satisfying.js +26 -0
- package/.output/server/node_modules/semver/ranges/min-version.js +63 -0
- package/.output/server/node_modules/semver/ranges/outside.js +82 -0
- package/.output/server/node_modules/semver/ranges/simplify.js +49 -0
- package/.output/server/node_modules/semver/ranges/subset.js +249 -0
- package/.output/server/node_modules/semver/ranges/to-comparators.js +10 -0
- package/.output/server/node_modules/semver/ranges/valid.js +13 -0
- package/.output/server/node_modules/serve-handler/package.json +68 -0
- package/.output/server/node_modules/serve-handler/src/directory.js +16 -0
- package/.output/server/node_modules/serve-handler/src/error.js +10 -0
- package/.output/server/node_modules/serve-handler/src/glob-slash.js +9 -0
- package/.output/server/node_modules/serve-handler/src/index.js +769 -0
- package/.output/server/node_modules/shebang-command/index.js +19 -0
- package/.output/server/node_modules/shebang-command/package.json +34 -0
- package/.output/server/node_modules/shebang-regex/index.js +2 -0
- package/.output/server/node_modules/shebang-regex/package.json +35 -0
- package/.output/server/node_modules/signal-exit/dist/mjs/index.js +275 -0
- package/.output/server/node_modules/signal-exit/dist/mjs/package.json +3 -0
- package/.output/server/node_modules/signal-exit/dist/mjs/signals.js +39 -0
- package/.output/server/node_modules/signal-exit/package.json +106 -0
- package/.output/server/node_modules/sisteransi/package.json +34 -0
- package/.output/server/node_modules/sisteransi/src/index.js +58 -0
- package/.output/server/node_modules/source-map/lib/array-set.js +121 -0
- package/.output/server/node_modules/source-map/lib/base64-vlq.js +140 -0
- package/.output/server/node_modules/source-map/lib/base64.js +67 -0
- package/.output/server/node_modules/source-map/lib/binary-search.js +111 -0
- package/.output/server/node_modules/source-map/lib/mapping-list.js +79 -0
- package/.output/server/node_modules/source-map/lib/quick-sort.js +114 -0
- package/.output/server/node_modules/source-map/lib/source-map-consumer.js +1145 -0
- package/.output/server/node_modules/source-map/lib/source-map-generator.js +425 -0
- package/.output/server/node_modules/source-map/lib/source-node.js +413 -0
- package/.output/server/node_modules/source-map/lib/util.js +488 -0
- package/.output/server/node_modules/source-map/package.json +73 -0
- package/.output/server/node_modules/source-map/source-map.js +8 -0
- package/.output/server/node_modules/source-map-support/package.json +31 -0
- package/.output/server/node_modules/source-map-support/source-map-support.js +625 -0
- package/.output/server/node_modules/string-argv/index.js +41 -0
- package/.output/server/node_modules/string-argv/package.json +51 -0
- package/.output/server/node_modules/strip-final-newline/index.js +26 -0
- package/.output/server/node_modules/strip-final-newline/package.json +49 -0
- package/.output/server/node_modules/typescript/lib/typescript.js +200276 -0
- package/.output/server/node_modules/typescript/package.json +120 -0
- package/.output/server/node_modules/unicorn-magic/default.js +14 -0
- package/.output/server/node_modules/unicorn-magic/node.js +49 -0
- package/.output/server/node_modules/unicorn-magic/package.json +62 -0
- package/.output/server/node_modules/universalify/index.js +24 -0
- package/.output/server/node_modules/universalify/package.json +34 -0
- package/.output/server/node_modules/which/package.json +43 -0
- package/.output/server/node_modules/which/which.js +125 -0
- package/.output/server/node_modules/yocto-queue/index.js +90 -0
- package/.output/server/node_modules/yocto-queue/package.json +48 -0
- package/.output/server/node_modules/yoctocolors/base.js +94 -0
- package/.output/server/node_modules/yoctocolors/index.js +2 -0
- package/.output/server/node_modules/yoctocolors/package.json +69 -0
- package/.output/server/package.json +66 -0
- package/LICENSE +21 -0
- package/README.md +99 -0
- package/package.json +70 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// Split chunks line-wise for generators passed to the `std*` options
|
|
2
|
+
export const getSplitLinesGenerator = (binary, preserveNewlines, skipped, state) => binary || skipped
|
|
3
|
+
? undefined
|
|
4
|
+
: initializeSplitLines(preserveNewlines, state);
|
|
5
|
+
|
|
6
|
+
// Same but for synchronous methods
|
|
7
|
+
export const splitLinesSync = (chunk, preserveNewlines, objectMode) => objectMode
|
|
8
|
+
? chunk.flatMap(item => splitLinesItemSync(item, preserveNewlines))
|
|
9
|
+
: splitLinesItemSync(chunk, preserveNewlines);
|
|
10
|
+
|
|
11
|
+
const splitLinesItemSync = (chunk, preserveNewlines) => {
|
|
12
|
+
const {transform, final} = initializeSplitLines(preserveNewlines, {});
|
|
13
|
+
return [...transform(chunk), ...final()];
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const initializeSplitLines = (preserveNewlines, state) => {
|
|
17
|
+
state.previousChunks = '';
|
|
18
|
+
return {
|
|
19
|
+
transform: splitGenerator.bind(undefined, state, preserveNewlines),
|
|
20
|
+
final: linesFinal.bind(undefined, state),
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// This imperative logic is much faster than using `String.split()` and uses very low memory.
|
|
25
|
+
const splitGenerator = function * (state, preserveNewlines, chunk) {
|
|
26
|
+
if (typeof chunk !== 'string') {
|
|
27
|
+
yield chunk;
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
let {previousChunks} = state;
|
|
32
|
+
let start = -1;
|
|
33
|
+
|
|
34
|
+
for (let end = 0; end < chunk.length; end += 1) {
|
|
35
|
+
if (chunk[end] === '\n') {
|
|
36
|
+
const newlineLength = getNewlineLength(chunk, end, preserveNewlines, state);
|
|
37
|
+
let line = chunk.slice(start + 1, end + 1 - newlineLength);
|
|
38
|
+
|
|
39
|
+
if (previousChunks.length > 0) {
|
|
40
|
+
line = concatString(previousChunks, line);
|
|
41
|
+
previousChunks = '';
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
yield line;
|
|
45
|
+
start = end;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (start !== chunk.length - 1) {
|
|
50
|
+
previousChunks = concatString(previousChunks, chunk.slice(start + 1));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
state.previousChunks = previousChunks;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const getNewlineLength = (chunk, end, preserveNewlines, state) => {
|
|
57
|
+
if (preserveNewlines) {
|
|
58
|
+
return 0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
state.isWindowsNewline = end !== 0 && chunk[end - 1] === '\r';
|
|
62
|
+
return state.isWindowsNewline ? 2 : 1;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const linesFinal = function * ({previousChunks}) {
|
|
66
|
+
if (previousChunks.length > 0) {
|
|
67
|
+
yield previousChunks;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// Unless `preserveNewlines: true` is used, we strip the newline of each line.
|
|
72
|
+
// This re-adds them after the user `transform` code has run.
|
|
73
|
+
export const getAppendNewlineGenerator = ({binary, preserveNewlines, readableObjectMode, state}) => binary || preserveNewlines || readableObjectMode
|
|
74
|
+
? undefined
|
|
75
|
+
: {transform: appendNewlineGenerator.bind(undefined, state)};
|
|
76
|
+
|
|
77
|
+
const appendNewlineGenerator = function * ({isWindowsNewline = false}, chunk) {
|
|
78
|
+
const {unixNewline, windowsNewline, LF, concatBytes} = typeof chunk === 'string' ? linesStringInfo : linesUint8ArrayInfo;
|
|
79
|
+
|
|
80
|
+
if (chunk.at(-1) === LF) {
|
|
81
|
+
yield chunk;
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const newline = isWindowsNewline ? windowsNewline : unixNewline;
|
|
86
|
+
yield concatBytes(chunk, newline);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const concatString = (firstChunk, secondChunk) => `${firstChunk}${secondChunk}`;
|
|
90
|
+
|
|
91
|
+
const linesStringInfo = {
|
|
92
|
+
windowsNewline: '\r\n',
|
|
93
|
+
unixNewline: '\n',
|
|
94
|
+
LF: '\n',
|
|
95
|
+
concatBytes: concatString,
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
const concatUint8Array = (firstChunk, secondChunk) => {
|
|
99
|
+
const chunk = new Uint8Array(firstChunk.length + secondChunk.length);
|
|
100
|
+
chunk.set(firstChunk, 0);
|
|
101
|
+
chunk.set(secondChunk, firstChunk.length);
|
|
102
|
+
return chunk;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
const linesUint8ArrayInfo = {
|
|
106
|
+
windowsNewline: new Uint8Array([0x0D, 0x0A]),
|
|
107
|
+
unixNewline: new Uint8Array([0x0A]),
|
|
108
|
+
LF: 0x0A,
|
|
109
|
+
concatBytes: concatUint8Array,
|
|
110
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {Buffer} from 'node:buffer';
|
|
2
|
+
import {isUint8Array} from '../utils/uint-array.js';
|
|
3
|
+
|
|
4
|
+
// Validate the type of chunk argument passed to transform generators
|
|
5
|
+
export const getValidateTransformInput = (writableObjectMode, optionName) => writableObjectMode
|
|
6
|
+
? undefined
|
|
7
|
+
: validateStringTransformInput.bind(undefined, optionName);
|
|
8
|
+
|
|
9
|
+
const validateStringTransformInput = function * (optionName, chunk) {
|
|
10
|
+
if (typeof chunk !== 'string' && !isUint8Array(chunk) && !Buffer.isBuffer(chunk)) {
|
|
11
|
+
throw new TypeError(`The \`${optionName}\` option's transform must use "objectMode: true" to receive as input: ${typeof chunk}.`);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
yield chunk;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// Validate the type of the value returned by transform generators
|
|
18
|
+
export const getValidateTransformReturn = (readableObjectMode, optionName) => readableObjectMode
|
|
19
|
+
? validateObjectTransformReturn.bind(undefined, optionName)
|
|
20
|
+
: validateStringTransformReturn.bind(undefined, optionName);
|
|
21
|
+
|
|
22
|
+
const validateObjectTransformReturn = function * (optionName, chunk) {
|
|
23
|
+
validateEmptyReturn(optionName, chunk);
|
|
24
|
+
yield chunk;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const validateStringTransformReturn = function * (optionName, chunk) {
|
|
28
|
+
validateEmptyReturn(optionName, chunk);
|
|
29
|
+
|
|
30
|
+
if (typeof chunk !== 'string' && !isUint8Array(chunk)) {
|
|
31
|
+
throw new TypeError(`The \`${optionName}\` option's function must yield a string or an Uint8Array, not ${typeof chunk}.`);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
yield chunk;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const validateEmptyReturn = (optionName, chunk) => {
|
|
38
|
+
if (chunk === null || chunk === undefined) {
|
|
39
|
+
throw new TypeError(`The \`${optionName}\` option's function must not call \`yield ${chunk}\`.
|
|
40
|
+
Instead, \`yield\` should either be called with a value, or not be called at all. For example:
|
|
41
|
+
if (condition) { yield value; }`);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import {once} from 'node:events';
|
|
2
|
+
|
|
3
|
+
// Combines `util.aborted()` and `events.addAbortListener()`: promise-based and cleaned up with a stop signal
|
|
4
|
+
export const onAbortedSignal = async (mainSignal, stopSignal) => {
|
|
5
|
+
if (!mainSignal.aborted) {
|
|
6
|
+
await once(mainSignal, 'abort', {signal: stopSignal});
|
|
7
|
+
}
|
|
8
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {addAbortListener} from 'node:events';
|
|
2
|
+
|
|
3
|
+
// Temporarily increase the maximum number of listeners on an eventEmitter
|
|
4
|
+
export const incrementMaxListeners = (eventEmitter, maxListenersIncrement, signal) => {
|
|
5
|
+
const maxListeners = eventEmitter.getMaxListeners();
|
|
6
|
+
if (maxListeners === 0 || maxListeners === Number.POSITIVE_INFINITY) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
eventEmitter.setMaxListeners(maxListeners + maxListenersIncrement);
|
|
11
|
+
addAbortListener(signal, () => {
|
|
12
|
+
eventEmitter.setMaxListeners(eventEmitter.getMaxListeners() - maxListenersIncrement);
|
|
13
|
+
});
|
|
14
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import process from 'node:process';
|
|
2
|
+
|
|
3
|
+
export const isStandardStream = stream => STANDARD_STREAMS.includes(stream);
|
|
4
|
+
export const STANDARD_STREAMS = [process.stdin, process.stdout, process.stderr];
|
|
5
|
+
export const STANDARD_STREAMS_ALIASES = ['stdin', 'stdout', 'stderr'];
|
|
6
|
+
export const getStreamName = fdNumber => STANDARD_STREAMS_ALIASES[fdNumber] ?? `stdio[${fdNumber}]`;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import {StringDecoder} from 'node:string_decoder';
|
|
2
|
+
|
|
3
|
+
const {toString: objectToString} = Object.prototype;
|
|
4
|
+
|
|
5
|
+
export const isArrayBuffer = value => objectToString.call(value) === '[object ArrayBuffer]';
|
|
6
|
+
|
|
7
|
+
// Is either Uint8Array or Buffer
|
|
8
|
+
export const isUint8Array = value => objectToString.call(value) === '[object Uint8Array]';
|
|
9
|
+
|
|
10
|
+
export const bufferToUint8Array = buffer => new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
11
|
+
|
|
12
|
+
const textEncoder = new TextEncoder();
|
|
13
|
+
const stringToUint8Array = string => textEncoder.encode(string);
|
|
14
|
+
|
|
15
|
+
const textDecoder = new TextDecoder();
|
|
16
|
+
export const uint8ArrayToString = uint8Array => textDecoder.decode(uint8Array);
|
|
17
|
+
|
|
18
|
+
export const joinToString = (uint8ArraysOrStrings, encoding) => {
|
|
19
|
+
const strings = uint8ArraysToStrings(uint8ArraysOrStrings, encoding);
|
|
20
|
+
return strings.join('');
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const uint8ArraysToStrings = (uint8ArraysOrStrings, encoding) => {
|
|
24
|
+
if (encoding === 'utf8' && uint8ArraysOrStrings.every(uint8ArrayOrString => typeof uint8ArrayOrString === 'string')) {
|
|
25
|
+
return uint8ArraysOrStrings;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const decoder = new StringDecoder(encoding);
|
|
29
|
+
const strings = uint8ArraysOrStrings
|
|
30
|
+
.map(uint8ArrayOrString => typeof uint8ArrayOrString === 'string'
|
|
31
|
+
? stringToUint8Array(uint8ArrayOrString)
|
|
32
|
+
: uint8ArrayOrString)
|
|
33
|
+
.map(uint8Array => decoder.write(uint8Array));
|
|
34
|
+
const finalString = decoder.end();
|
|
35
|
+
return finalString === '' ? strings : [...strings, finalString];
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const joinToUint8Array = uint8ArraysOrStrings => {
|
|
39
|
+
if (uint8ArraysOrStrings.length === 1 && isUint8Array(uint8ArraysOrStrings[0])) {
|
|
40
|
+
return uint8ArraysOrStrings[0];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return concatUint8Arrays(stringsToUint8Arrays(uint8ArraysOrStrings));
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const stringsToUint8Arrays = uint8ArraysOrStrings => uint8ArraysOrStrings.map(uint8ArrayOrString => typeof uint8ArrayOrString === 'string'
|
|
47
|
+
? stringToUint8Array(uint8ArrayOrString)
|
|
48
|
+
: uint8ArrayOrString);
|
|
49
|
+
|
|
50
|
+
export const concatUint8Arrays = uint8Arrays => {
|
|
51
|
+
const result = new Uint8Array(getJoinLength(uint8Arrays));
|
|
52
|
+
|
|
53
|
+
let index = 0;
|
|
54
|
+
for (const uint8Array of uint8Arrays) {
|
|
55
|
+
result.set(uint8Array, index);
|
|
56
|
+
index += uint8Array.length;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return result;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const getJoinLength = uint8Arrays => {
|
|
63
|
+
let joinLength = 0;
|
|
64
|
+
for (const uint8Array of uint8Arrays) {
|
|
65
|
+
joinLength += uint8Array.length;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return joinLength;
|
|
69
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import prettyMs from 'pretty-ms';
|
|
2
|
+
import {isVerbose} from './values.js';
|
|
3
|
+
import {verboseLog} from './log.js';
|
|
4
|
+
import {logError} from './error.js';
|
|
5
|
+
|
|
6
|
+
// When `verbose` is `short|full|custom`, print each command's completion, duration and error
|
|
7
|
+
export const logResult = (result, verboseInfo) => {
|
|
8
|
+
if (!isVerbose(verboseInfo)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
logError(result, verboseInfo);
|
|
13
|
+
logDuration(result, verboseInfo);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const logDuration = (result, verboseInfo) => {
|
|
17
|
+
const verboseMessage = `(done in ${prettyMs(result.durationMs)})`;
|
|
18
|
+
verboseLog({
|
|
19
|
+
type: 'duration',
|
|
20
|
+
verboseMessage,
|
|
21
|
+
verboseInfo,
|
|
22
|
+
result,
|
|
23
|
+
});
|
|
24
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {getVerboseFunction} from './values.js';
|
|
2
|
+
|
|
3
|
+
// Apply the `verbose` function on each line
|
|
4
|
+
export const applyVerboseOnLines = (printedLines, verboseInfo, fdNumber) => {
|
|
5
|
+
const verboseFunction = getVerboseFunction(verboseInfo, fdNumber);
|
|
6
|
+
return printedLines
|
|
7
|
+
.map(({verboseLine, verboseObject}) => applyVerboseFunction(verboseLine, verboseObject, verboseFunction))
|
|
8
|
+
.filter(printedLine => printedLine !== undefined)
|
|
9
|
+
.map(printedLine => appendNewline(printedLine))
|
|
10
|
+
.join('');
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const applyVerboseFunction = (verboseLine, verboseObject, verboseFunction) => {
|
|
14
|
+
if (verboseFunction === undefined) {
|
|
15
|
+
return verboseLine;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const printedLine = verboseFunction(verboseLine, verboseObject);
|
|
19
|
+
if (typeof printedLine === 'string') {
|
|
20
|
+
return printedLine;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const appendNewline = printedLine => printedLine.endsWith('\n')
|
|
25
|
+
? printedLine
|
|
26
|
+
: `${printedLine}\n`;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import figures from 'figures';
|
|
2
|
+
import {
|
|
3
|
+
gray,
|
|
4
|
+
bold,
|
|
5
|
+
redBright,
|
|
6
|
+
yellowBright,
|
|
7
|
+
} from 'yoctocolors';
|
|
8
|
+
|
|
9
|
+
// Default when `verbose` is not a function
|
|
10
|
+
export const defaultVerboseFunction = ({
|
|
11
|
+
type,
|
|
12
|
+
message,
|
|
13
|
+
timestamp,
|
|
14
|
+
piped,
|
|
15
|
+
commandId,
|
|
16
|
+
result: {failed = false} = {},
|
|
17
|
+
options: {reject = true},
|
|
18
|
+
}) => {
|
|
19
|
+
const timestampString = serializeTimestamp(timestamp);
|
|
20
|
+
const icon = ICONS[type]({failed, reject, piped});
|
|
21
|
+
const color = COLORS[type]({reject});
|
|
22
|
+
return `${gray(`[${timestampString}]`)} ${gray(`[${commandId}]`)} ${color(icon)} ${color(message)}`;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// Prepending the timestamp allows debugging the slow paths of a subprocess
|
|
26
|
+
const serializeTimestamp = timestamp => `${padField(timestamp.getHours(), 2)}:${padField(timestamp.getMinutes(), 2)}:${padField(timestamp.getSeconds(), 2)}.${padField(timestamp.getMilliseconds(), 3)}`;
|
|
27
|
+
|
|
28
|
+
const padField = (field, padding) => String(field).padStart(padding, '0');
|
|
29
|
+
|
|
30
|
+
const getFinalIcon = ({failed, reject}) => {
|
|
31
|
+
if (!failed) {
|
|
32
|
+
return figures.tick;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return reject ? figures.cross : figures.warning;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const ICONS = {
|
|
39
|
+
command: ({piped}) => piped ? '|' : '$',
|
|
40
|
+
output: () => ' ',
|
|
41
|
+
ipc: () => '*',
|
|
42
|
+
error: getFinalIcon,
|
|
43
|
+
duration: getFinalIcon,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const identity = string => string;
|
|
47
|
+
|
|
48
|
+
const COLORS = {
|
|
49
|
+
command: () => bold,
|
|
50
|
+
output: () => identity,
|
|
51
|
+
ipc: () => identity,
|
|
52
|
+
error: ({reject}) => reject ? redBright : yellowBright,
|
|
53
|
+
duration: () => gray,
|
|
54
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {verboseLog} from './log.js';
|
|
2
|
+
|
|
3
|
+
// When `verbose` is `short|full|custom`, print each command's error when it fails
|
|
4
|
+
export const logError = (result, verboseInfo) => {
|
|
5
|
+
if (result.failed) {
|
|
6
|
+
verboseLog({
|
|
7
|
+
type: 'error',
|
|
8
|
+
verboseMessage: result.shortMessage,
|
|
9
|
+
verboseInfo,
|
|
10
|
+
result,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {isVerbose, VERBOSE_VALUES, isVerboseFunction} from './values.js';
|
|
2
|
+
|
|
3
|
+
// Information computed before spawning, used by the `verbose` option
|
|
4
|
+
export const getVerboseInfo = (verbose, escapedCommand, rawOptions) => {
|
|
5
|
+
validateVerbose(verbose);
|
|
6
|
+
const commandId = getCommandId(verbose);
|
|
7
|
+
return {
|
|
8
|
+
verbose,
|
|
9
|
+
escapedCommand,
|
|
10
|
+
commandId,
|
|
11
|
+
rawOptions,
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const getCommandId = verbose => isVerbose({verbose}) ? COMMAND_ID++ : undefined;
|
|
16
|
+
|
|
17
|
+
// Prepending the `pid` is useful when multiple commands print their output at the same time.
|
|
18
|
+
// However, we cannot use the real PID since this is not available with `child_process.spawnSync()`.
|
|
19
|
+
// Also, we cannot use the real PID if we want to print it before `child_process.spawn()` is run.
|
|
20
|
+
// As a pro, it is shorter than a normal PID and never re-uses the same id.
|
|
21
|
+
// As a con, it cannot be used to send signals.
|
|
22
|
+
let COMMAND_ID = 0n;
|
|
23
|
+
|
|
24
|
+
const validateVerbose = verbose => {
|
|
25
|
+
for (const fdVerbose of verbose) {
|
|
26
|
+
if (fdVerbose === false) {
|
|
27
|
+
throw new TypeError('The "verbose: false" option was renamed to "verbose: \'none\'".');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (fdVerbose === true) {
|
|
31
|
+
throw new TypeError('The "verbose: true" option was renamed to "verbose: \'short\'".');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (!VERBOSE_VALUES.includes(fdVerbose) && !isVerboseFunction(fdVerbose)) {
|
|
35
|
+
const allowedValues = VERBOSE_VALUES.map(allowedValue => `'${allowedValue}'`).join(', ');
|
|
36
|
+
throw new TypeError(`The "verbose" option must not be ${fdVerbose}. Allowed values are: ${allowedValues} or a function.`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {verboseLog, serializeVerboseMessage} from './log.js';
|
|
2
|
+
import {isFullVerbose} from './values.js';
|
|
3
|
+
|
|
4
|
+
// When `verbose` is `'full'`, print IPC messages from the subprocess
|
|
5
|
+
export const shouldLogIpc = verboseInfo => isFullVerbose(verboseInfo, 'ipc');
|
|
6
|
+
|
|
7
|
+
export const logIpcOutput = (message, verboseInfo) => {
|
|
8
|
+
const verboseMessage = serializeVerboseMessage(message);
|
|
9
|
+
verboseLog({
|
|
10
|
+
type: 'ipc',
|
|
11
|
+
verboseMessage,
|
|
12
|
+
fdNumber: 'ipc',
|
|
13
|
+
verboseInfo,
|
|
14
|
+
});
|
|
15
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {inspect} from 'node:util';
|
|
2
|
+
import {escapeLines} from '../arguments/escape.js';
|
|
3
|
+
import {defaultVerboseFunction} from './default.js';
|
|
4
|
+
import {applyVerboseOnLines} from './custom.js';
|
|
5
|
+
|
|
6
|
+
// This prints on stderr.
|
|
7
|
+
// If the subprocess prints on stdout and is using `stdout: 'inherit'`,
|
|
8
|
+
// there is a chance both writes will compete (introducing a race condition).
|
|
9
|
+
// This means their respective order is not deterministic.
|
|
10
|
+
// In particular, this means the verbose command lines might be after the start of the subprocess output.
|
|
11
|
+
// Using synchronous I/O does not solve this problem.
|
|
12
|
+
// However, this only seems to happen when the stdout/stderr target
|
|
13
|
+
// (e.g. a terminal) is being written to by many subprocesses at once, which is unlikely in real scenarios.
|
|
14
|
+
export const verboseLog = ({type, verboseMessage, fdNumber, verboseInfo, result}) => {
|
|
15
|
+
const verboseObject = getVerboseObject({type, result, verboseInfo});
|
|
16
|
+
const printedLines = getPrintedLines(verboseMessage, verboseObject);
|
|
17
|
+
const finalLines = applyVerboseOnLines(printedLines, verboseInfo, fdNumber);
|
|
18
|
+
if (finalLines !== '') {
|
|
19
|
+
console.warn(finalLines.slice(0, -1));
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const getVerboseObject = ({
|
|
24
|
+
type,
|
|
25
|
+
result,
|
|
26
|
+
verboseInfo: {escapedCommand, commandId, rawOptions: {piped = false, ...options}},
|
|
27
|
+
}) => ({
|
|
28
|
+
type,
|
|
29
|
+
escapedCommand,
|
|
30
|
+
commandId: `${commandId}`,
|
|
31
|
+
timestamp: new Date(),
|
|
32
|
+
piped,
|
|
33
|
+
result,
|
|
34
|
+
options,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
const getPrintedLines = (verboseMessage, verboseObject) => verboseMessage
|
|
38
|
+
.split('\n')
|
|
39
|
+
.map(message => getPrintedLine({...verboseObject, message}));
|
|
40
|
+
|
|
41
|
+
const getPrintedLine = verboseObject => {
|
|
42
|
+
const verboseLine = defaultVerboseFunction(verboseObject);
|
|
43
|
+
return {verboseLine, verboseObject};
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// Serialize any type to a line string, for logging
|
|
47
|
+
export const serializeVerboseMessage = message => {
|
|
48
|
+
const messageString = typeof message === 'string' ? message : inspect(message);
|
|
49
|
+
const escapedMessage = escapeLines(messageString);
|
|
50
|
+
return escapedMessage.replaceAll('\t', ' '.repeat(TAB_SIZE));
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// Same as `util.inspect()`
|
|
54
|
+
const TAB_SIZE = 2;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import {BINARY_ENCODINGS} from '../arguments/encoding-option.js';
|
|
2
|
+
import {TRANSFORM_TYPES} from '../stdio/type.js';
|
|
3
|
+
import {verboseLog, serializeVerboseMessage} from './log.js';
|
|
4
|
+
import {isFullVerbose} from './values.js';
|
|
5
|
+
|
|
6
|
+
// `ignore` opts-out of `verbose` for a specific stream.
|
|
7
|
+
// `ipc` cannot use piping.
|
|
8
|
+
// `inherit` would result in double printing.
|
|
9
|
+
// They can also lead to double printing when passing file descriptor integers or `process.std*`.
|
|
10
|
+
// This only leaves with `pipe` and `overlapped`.
|
|
11
|
+
export const shouldLogOutput = ({stdioItems, encoding, verboseInfo, fdNumber}) => fdNumber !== 'all'
|
|
12
|
+
&& isFullVerbose(verboseInfo, fdNumber)
|
|
13
|
+
&& !BINARY_ENCODINGS.has(encoding)
|
|
14
|
+
&& fdUsesVerbose(fdNumber)
|
|
15
|
+
&& (stdioItems.some(({type, value}) => type === 'native' && PIPED_STDIO_VALUES.has(value))
|
|
16
|
+
|| stdioItems.every(({type}) => TRANSFORM_TYPES.has(type)));
|
|
17
|
+
|
|
18
|
+
// Printing input streams would be confusing.
|
|
19
|
+
// Files and streams can produce big outputs, which we don't want to print.
|
|
20
|
+
// We could print `stdio[3+]` but it often is redirected to files and streams, with the same issue.
|
|
21
|
+
// So we only print stdout and stderr.
|
|
22
|
+
const fdUsesVerbose = fdNumber => fdNumber === 1 || fdNumber === 2;
|
|
23
|
+
|
|
24
|
+
const PIPED_STDIO_VALUES = new Set(['pipe', 'overlapped']);
|
|
25
|
+
|
|
26
|
+
// `verbose: 'full'` printing logic with async methods
|
|
27
|
+
export const logLines = async (linesIterable, stream, fdNumber, verboseInfo) => {
|
|
28
|
+
for await (const line of linesIterable) {
|
|
29
|
+
if (!isPipingStream(stream)) {
|
|
30
|
+
logLine(line, fdNumber, verboseInfo);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// `verbose: 'full'` printing logic with sync methods
|
|
36
|
+
export const logLinesSync = (linesArray, fdNumber, verboseInfo) => {
|
|
37
|
+
for (const line of linesArray) {
|
|
38
|
+
logLine(line, fdNumber, verboseInfo);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// When `subprocess.stdout|stderr.pipe()` is called, `verbose` becomes a noop.
|
|
43
|
+
// This prevents the following problems:
|
|
44
|
+
// - `.pipe()` achieves the same result as using `stdout: 'inherit'`, `stdout: stream`, etc. which also make `verbose` a noop.
|
|
45
|
+
// For example, `subprocess.stdout.pipe(process.stdin)` would print each line twice.
|
|
46
|
+
// - When chaining subprocesses with `subprocess.pipe(otherSubprocess)`, only the last one should print its output.
|
|
47
|
+
// Detecting whether `.pipe()` is impossible without monkey-patching it, so we use the following undocumented property.
|
|
48
|
+
// This is not a critical behavior since changes of the following property would only make `verbose` more verbose.
|
|
49
|
+
const isPipingStream = stream => stream._readableState.pipes.length > 0;
|
|
50
|
+
|
|
51
|
+
// When `verbose` is `full`, print stdout|stderr
|
|
52
|
+
const logLine = (line, fdNumber, verboseInfo) => {
|
|
53
|
+
const verboseMessage = serializeVerboseMessage(line);
|
|
54
|
+
verboseLog({
|
|
55
|
+
type: 'output',
|
|
56
|
+
verboseMessage,
|
|
57
|
+
fdNumber,
|
|
58
|
+
verboseInfo,
|
|
59
|
+
});
|
|
60
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {isVerbose} from './values.js';
|
|
2
|
+
import {verboseLog} from './log.js';
|
|
3
|
+
|
|
4
|
+
// When `verbose` is `short|full|custom`, print each command
|
|
5
|
+
export const logCommand = (escapedCommand, verboseInfo) => {
|
|
6
|
+
if (!isVerbose(verboseInfo)) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
verboseLog({
|
|
11
|
+
type: 'command',
|
|
12
|
+
verboseMessage: escapedCommand,
|
|
13
|
+
verboseInfo,
|
|
14
|
+
});
|
|
15
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {getFdSpecificValue} from '../arguments/specific.js';
|
|
2
|
+
|
|
3
|
+
// The `verbose` option can have different values for `stdout`/`stderr`
|
|
4
|
+
export const isVerbose = ({verbose}, fdNumber) => getFdVerbose(verbose, fdNumber) !== 'none';
|
|
5
|
+
|
|
6
|
+
// Whether IPC and output and logged
|
|
7
|
+
export const isFullVerbose = ({verbose}, fdNumber) => !['none', 'short'].includes(getFdVerbose(verbose, fdNumber));
|
|
8
|
+
|
|
9
|
+
// The `verbose` option can be a function to customize logging
|
|
10
|
+
export const getVerboseFunction = ({verbose}, fdNumber) => {
|
|
11
|
+
const fdVerbose = getFdVerbose(verbose, fdNumber);
|
|
12
|
+
return isVerboseFunction(fdVerbose) ? fdVerbose : undefined;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// When using `verbose: {stdout, stderr, fd3, ipc}`:
|
|
16
|
+
// - `verbose.stdout|stderr|fd3` is used for 'output'
|
|
17
|
+
// - `verbose.ipc` is only used for 'ipc'
|
|
18
|
+
// - highest `verbose.*` value is used for 'command', 'error' and 'duration'
|
|
19
|
+
const getFdVerbose = (verbose, fdNumber) => fdNumber === undefined
|
|
20
|
+
? getFdGenericVerbose(verbose)
|
|
21
|
+
: getFdSpecificValue(verbose, fdNumber);
|
|
22
|
+
|
|
23
|
+
// When using `verbose: {stdout, stderr, fd3, ipc}` and logging is not specific to a file descriptor.
|
|
24
|
+
// We then use the highest `verbose.*` value, using the following order:
|
|
25
|
+
// - function > 'full' > 'short' > 'none'
|
|
26
|
+
// - if several functions are defined: stdout > stderr > fd3 > ipc
|
|
27
|
+
const getFdGenericVerbose = verbose => verbose.find(fdVerbose => isVerboseFunction(fdVerbose))
|
|
28
|
+
?? VERBOSE_VALUES.findLast(fdVerbose => verbose.includes(fdVerbose));
|
|
29
|
+
|
|
30
|
+
// Whether the `verbose` option is customized using a function
|
|
31
|
+
export const isVerboseFunction = fdVerbose => typeof fdVerbose === 'function';
|
|
32
|
+
|
|
33
|
+
export const VERBOSE_VALUES = ['none', 'short', 'full'];
|