@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,146 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
// This is adapted from https://github.com/normalize/mz
|
|
3
|
+
// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors
|
|
4
|
+
const u = require('universalify').fromCallback
|
|
5
|
+
const fs = require('graceful-fs')
|
|
6
|
+
|
|
7
|
+
const api = [
|
|
8
|
+
'access',
|
|
9
|
+
'appendFile',
|
|
10
|
+
'chmod',
|
|
11
|
+
'chown',
|
|
12
|
+
'close',
|
|
13
|
+
'copyFile',
|
|
14
|
+
'cp',
|
|
15
|
+
'fchmod',
|
|
16
|
+
'fchown',
|
|
17
|
+
'fdatasync',
|
|
18
|
+
'fstat',
|
|
19
|
+
'fsync',
|
|
20
|
+
'ftruncate',
|
|
21
|
+
'futimes',
|
|
22
|
+
'glob',
|
|
23
|
+
'lchmod',
|
|
24
|
+
'lchown',
|
|
25
|
+
'lutimes',
|
|
26
|
+
'link',
|
|
27
|
+
'lstat',
|
|
28
|
+
'mkdir',
|
|
29
|
+
'mkdtemp',
|
|
30
|
+
'open',
|
|
31
|
+
'opendir',
|
|
32
|
+
'readdir',
|
|
33
|
+
'readFile',
|
|
34
|
+
'readlink',
|
|
35
|
+
'realpath',
|
|
36
|
+
'rename',
|
|
37
|
+
'rm',
|
|
38
|
+
'rmdir',
|
|
39
|
+
'stat',
|
|
40
|
+
'statfs',
|
|
41
|
+
'symlink',
|
|
42
|
+
'truncate',
|
|
43
|
+
'unlink',
|
|
44
|
+
'utimes',
|
|
45
|
+
'writeFile'
|
|
46
|
+
].filter(key => {
|
|
47
|
+
// Some commands are not available on some systems. Ex:
|
|
48
|
+
// fs.cp was added in Node.js v16.7.0
|
|
49
|
+
// fs.statfs was added in Node v19.6.0, v18.15.0
|
|
50
|
+
// fs.glob was added in Node.js v22.0.0
|
|
51
|
+
// fs.lchown is not available on at least some Linux
|
|
52
|
+
return typeof fs[key] === 'function'
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
// Export cloned fs:
|
|
56
|
+
Object.assign(exports, fs)
|
|
57
|
+
|
|
58
|
+
// Universalify async methods:
|
|
59
|
+
api.forEach(method => {
|
|
60
|
+
exports[method] = u(fs[method])
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
// We differ from mz/fs in that we still ship the old, broken, fs.exists()
|
|
64
|
+
// since we are a drop-in replacement for the native module
|
|
65
|
+
exports.exists = function (filename, callback) {
|
|
66
|
+
if (typeof callback === 'function') {
|
|
67
|
+
return fs.exists(filename, callback)
|
|
68
|
+
}
|
|
69
|
+
return new Promise(resolve => {
|
|
70
|
+
return fs.exists(filename, resolve)
|
|
71
|
+
})
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args
|
|
75
|
+
|
|
76
|
+
exports.read = function (fd, buffer, offset, length, position, callback) {
|
|
77
|
+
if (typeof callback === 'function') {
|
|
78
|
+
return fs.read(fd, buffer, offset, length, position, callback)
|
|
79
|
+
}
|
|
80
|
+
return new Promise((resolve, reject) => {
|
|
81
|
+
fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {
|
|
82
|
+
if (err) return reject(err)
|
|
83
|
+
resolve({ bytesRead, buffer })
|
|
84
|
+
})
|
|
85
|
+
})
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Function signature can be
|
|
89
|
+
// fs.write(fd, buffer[, offset[, length[, position]]], callback)
|
|
90
|
+
// OR
|
|
91
|
+
// fs.write(fd, string[, position[, encoding]], callback)
|
|
92
|
+
// We need to handle both cases, so we use ...args
|
|
93
|
+
exports.write = function (fd, buffer, ...args) {
|
|
94
|
+
if (typeof args[args.length - 1] === 'function') {
|
|
95
|
+
return fs.write(fd, buffer, ...args)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return new Promise((resolve, reject) => {
|
|
99
|
+
fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {
|
|
100
|
+
if (err) return reject(err)
|
|
101
|
+
resolve({ bytesWritten, buffer })
|
|
102
|
+
})
|
|
103
|
+
})
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Function signature is
|
|
107
|
+
// s.readv(fd, buffers[, position], callback)
|
|
108
|
+
// We need to handle the optional arg, so we use ...args
|
|
109
|
+
exports.readv = function (fd, buffers, ...args) {
|
|
110
|
+
if (typeof args[args.length - 1] === 'function') {
|
|
111
|
+
return fs.readv(fd, buffers, ...args)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return new Promise((resolve, reject) => {
|
|
115
|
+
fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => {
|
|
116
|
+
if (err) return reject(err)
|
|
117
|
+
resolve({ bytesRead, buffers })
|
|
118
|
+
})
|
|
119
|
+
})
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Function signature is
|
|
123
|
+
// s.writev(fd, buffers[, position], callback)
|
|
124
|
+
// We need to handle the optional arg, so we use ...args
|
|
125
|
+
exports.writev = function (fd, buffers, ...args) {
|
|
126
|
+
if (typeof args[args.length - 1] === 'function') {
|
|
127
|
+
return fs.writev(fd, buffers, ...args)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return new Promise((resolve, reject) => {
|
|
131
|
+
fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {
|
|
132
|
+
if (err) return reject(err)
|
|
133
|
+
resolve({ bytesWritten, buffers })
|
|
134
|
+
})
|
|
135
|
+
})
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// fs.realpath.native sometimes not available if fs is monkey-patched
|
|
139
|
+
if (typeof fs.realpath.native === 'function') {
|
|
140
|
+
exports.realpath.native = u(fs.realpath.native)
|
|
141
|
+
} else {
|
|
142
|
+
process.emitWarning(
|
|
143
|
+
'fs.realpath.native is not a function. Is fs being monkey-patched?',
|
|
144
|
+
'Warning', 'fs-extra-WARN0003'
|
|
145
|
+
)
|
|
146
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
// Export promiseified graceful-fs:
|
|
5
|
+
...require('./fs'),
|
|
6
|
+
// Export extra methods:
|
|
7
|
+
...require('./copy'),
|
|
8
|
+
...require('./empty'),
|
|
9
|
+
...require('./ensure'),
|
|
10
|
+
...require('./json'),
|
|
11
|
+
...require('./mkdirs'),
|
|
12
|
+
...require('./move'),
|
|
13
|
+
...require('./output-file'),
|
|
14
|
+
...require('./path-exists'),
|
|
15
|
+
...require('./remove')
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const u = require('universalify').fromPromise
|
|
4
|
+
const jsonFile = require('./jsonfile')
|
|
5
|
+
|
|
6
|
+
jsonFile.outputJson = u(require('./output-json'))
|
|
7
|
+
jsonFile.outputJsonSync = require('./output-json-sync')
|
|
8
|
+
// aliases
|
|
9
|
+
jsonFile.outputJSON = jsonFile.outputJson
|
|
10
|
+
jsonFile.outputJSONSync = jsonFile.outputJsonSync
|
|
11
|
+
jsonFile.writeJSON = jsonFile.writeJson
|
|
12
|
+
jsonFile.writeJSONSync = jsonFile.writeJsonSync
|
|
13
|
+
jsonFile.readJSON = jsonFile.readJson
|
|
14
|
+
jsonFile.readJSONSync = jsonFile.readJsonSync
|
|
15
|
+
|
|
16
|
+
module.exports = jsonFile
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const { stringify } = require('jsonfile/utils')
|
|
4
|
+
const { outputFileSync } = require('../output-file')
|
|
5
|
+
|
|
6
|
+
function outputJsonSync (file, data, options) {
|
|
7
|
+
const str = stringify(data, options)
|
|
8
|
+
|
|
9
|
+
outputFileSync(file, str, options)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
module.exports = outputJsonSync
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const { stringify } = require('jsonfile/utils')
|
|
4
|
+
const { outputFile } = require('../output-file')
|
|
5
|
+
|
|
6
|
+
async function outputJson (file, data, options = {}) {
|
|
7
|
+
const str = stringify(data, options)
|
|
8
|
+
|
|
9
|
+
await outputFile(file, str, options)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
module.exports = outputJson
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
const u = require('universalify').fromPromise
|
|
3
|
+
const { makeDir: _makeDir, makeDirSync } = require('./make-dir')
|
|
4
|
+
const makeDir = u(_makeDir)
|
|
5
|
+
|
|
6
|
+
module.exports = {
|
|
7
|
+
mkdirs: makeDir,
|
|
8
|
+
mkdirsSync: makeDirSync,
|
|
9
|
+
// alias
|
|
10
|
+
mkdirp: makeDir,
|
|
11
|
+
mkdirpSync: makeDirSync,
|
|
12
|
+
ensureDir: makeDir,
|
|
13
|
+
ensureDirSync: makeDirSync
|
|
14
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
const fs = require('../fs')
|
|
3
|
+
const { checkPath } = require('./utils')
|
|
4
|
+
|
|
5
|
+
const getMode = options => {
|
|
6
|
+
const defaults = { mode: 0o777 }
|
|
7
|
+
if (typeof options === 'number') return options
|
|
8
|
+
return ({ ...defaults, ...options }).mode
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
module.exports.makeDir = async (dir, options) => {
|
|
12
|
+
checkPath(dir)
|
|
13
|
+
|
|
14
|
+
return fs.mkdir(dir, {
|
|
15
|
+
mode: getMode(options),
|
|
16
|
+
recursive: true
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
module.exports.makeDirSync = (dir, options) => {
|
|
21
|
+
checkPath(dir)
|
|
22
|
+
|
|
23
|
+
return fs.mkdirSync(dir, {
|
|
24
|
+
mode: getMode(options),
|
|
25
|
+
recursive: true
|
|
26
|
+
})
|
|
27
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Adapted from https://github.com/sindresorhus/make-dir
|
|
2
|
+
// Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
|
3
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
+
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
5
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
6
|
+
'use strict'
|
|
7
|
+
const path = require('path')
|
|
8
|
+
|
|
9
|
+
// https://github.com/nodejs/node/issues/8987
|
|
10
|
+
// https://github.com/libuv/libuv/pull/1088
|
|
11
|
+
module.exports.checkPath = function checkPath (pth) {
|
|
12
|
+
if (process.platform === 'win32') {
|
|
13
|
+
const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path.parse(pth).root, ''))
|
|
14
|
+
|
|
15
|
+
if (pathHasInvalidWinCharacters) {
|
|
16
|
+
const error = new Error(`Path contains invalid characters: ${pth}`)
|
|
17
|
+
error.code = 'EINVAL'
|
|
18
|
+
throw error
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const fs = require('graceful-fs')
|
|
4
|
+
const path = require('path')
|
|
5
|
+
const copySync = require('../copy').copySync
|
|
6
|
+
const removeSync = require('../remove').removeSync
|
|
7
|
+
const mkdirpSync = require('../mkdirs').mkdirpSync
|
|
8
|
+
const stat = require('../util/stat')
|
|
9
|
+
|
|
10
|
+
function moveSync (src, dest, opts) {
|
|
11
|
+
opts = opts || {}
|
|
12
|
+
const overwrite = opts.overwrite || opts.clobber || false
|
|
13
|
+
|
|
14
|
+
const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)
|
|
15
|
+
stat.checkParentPathsSync(src, srcStat, dest, 'move')
|
|
16
|
+
if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))
|
|
17
|
+
return doRename(src, dest, overwrite, isChangingCase)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function isParentRoot (dest) {
|
|
21
|
+
const parent = path.dirname(dest)
|
|
22
|
+
const parsedPath = path.parse(parent)
|
|
23
|
+
return parsedPath.root === parent
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function doRename (src, dest, overwrite, isChangingCase) {
|
|
27
|
+
if (isChangingCase) return rename(src, dest, overwrite)
|
|
28
|
+
if (overwrite) {
|
|
29
|
+
removeSync(dest)
|
|
30
|
+
return rename(src, dest, overwrite)
|
|
31
|
+
}
|
|
32
|
+
if (fs.existsSync(dest)) throw new Error('dest already exists.')
|
|
33
|
+
return rename(src, dest, overwrite)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function rename (src, dest, overwrite) {
|
|
37
|
+
try {
|
|
38
|
+
fs.renameSync(src, dest)
|
|
39
|
+
} catch (err) {
|
|
40
|
+
if (err.code !== 'EXDEV') throw err
|
|
41
|
+
return moveAcrossDevice(src, dest, overwrite)
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function moveAcrossDevice (src, dest, overwrite) {
|
|
46
|
+
const opts = {
|
|
47
|
+
overwrite,
|
|
48
|
+
errorOnExist: true,
|
|
49
|
+
preserveTimestamps: true
|
|
50
|
+
}
|
|
51
|
+
copySync(src, dest, opts)
|
|
52
|
+
return removeSync(src)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
module.exports = moveSync
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const fs = require('../fs')
|
|
4
|
+
const path = require('path')
|
|
5
|
+
const { copy } = require('../copy')
|
|
6
|
+
const { remove } = require('../remove')
|
|
7
|
+
const { mkdirp } = require('../mkdirs')
|
|
8
|
+
const { pathExists } = require('../path-exists')
|
|
9
|
+
const stat = require('../util/stat')
|
|
10
|
+
|
|
11
|
+
async function move (src, dest, opts = {}) {
|
|
12
|
+
const overwrite = opts.overwrite || opts.clobber || false
|
|
13
|
+
|
|
14
|
+
const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, 'move', opts)
|
|
15
|
+
|
|
16
|
+
await stat.checkParentPaths(src, srcStat, dest, 'move')
|
|
17
|
+
|
|
18
|
+
// If the parent of dest is not root, make sure it exists before proceeding
|
|
19
|
+
const destParent = path.dirname(dest)
|
|
20
|
+
const parsedParentPath = path.parse(destParent)
|
|
21
|
+
if (parsedParentPath.root !== destParent) {
|
|
22
|
+
await mkdirp(destParent)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return doRename(src, dest, overwrite, isChangingCase)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async function doRename (src, dest, overwrite, isChangingCase) {
|
|
29
|
+
if (!isChangingCase) {
|
|
30
|
+
if (overwrite) {
|
|
31
|
+
await remove(dest)
|
|
32
|
+
} else if (await pathExists(dest)) {
|
|
33
|
+
throw new Error('dest already exists.')
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
try {
|
|
38
|
+
// Try w/ rename first, and try copy + remove if EXDEV
|
|
39
|
+
await fs.rename(src, dest)
|
|
40
|
+
} catch (err) {
|
|
41
|
+
if (err.code !== 'EXDEV') {
|
|
42
|
+
throw err
|
|
43
|
+
}
|
|
44
|
+
await moveAcrossDevice(src, dest, overwrite)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async function moveAcrossDevice (src, dest, overwrite) {
|
|
49
|
+
const opts = {
|
|
50
|
+
overwrite,
|
|
51
|
+
errorOnExist: true,
|
|
52
|
+
preserveTimestamps: true
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
await copy(src, dest, opts)
|
|
56
|
+
return remove(src)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
module.exports = move
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const u = require('universalify').fromPromise
|
|
4
|
+
const fs = require('../fs')
|
|
5
|
+
const path = require('path')
|
|
6
|
+
const mkdir = require('../mkdirs')
|
|
7
|
+
const pathExists = require('../path-exists').pathExists
|
|
8
|
+
|
|
9
|
+
async function outputFile (file, data, encoding = 'utf-8') {
|
|
10
|
+
const dir = path.dirname(file)
|
|
11
|
+
|
|
12
|
+
if (!(await pathExists(dir))) {
|
|
13
|
+
await mkdir.mkdirs(dir)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return fs.writeFile(file, data, encoding)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function outputFileSync (file, ...args) {
|
|
20
|
+
const dir = path.dirname(file)
|
|
21
|
+
if (!fs.existsSync(dir)) {
|
|
22
|
+
mkdir.mkdirsSync(dir)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
fs.writeFileSync(file, ...args)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
module.exports = {
|
|
29
|
+
outputFile: u(outputFile),
|
|
30
|
+
outputFileSync
|
|
31
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
const u = require('universalify').fromPromise
|
|
3
|
+
const fs = require('../fs')
|
|
4
|
+
|
|
5
|
+
function pathExists (path) {
|
|
6
|
+
return fs.access(path).then(() => true).catch(() => false)
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
module.exports = {
|
|
10
|
+
pathExists: u(pathExists),
|
|
11
|
+
pathExistsSync: fs.existsSync
|
|
12
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const fs = require('graceful-fs')
|
|
4
|
+
const u = require('universalify').fromCallback
|
|
5
|
+
|
|
6
|
+
function remove (path, callback) {
|
|
7
|
+
fs.rm(path, { recursive: true, force: true }, callback)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function removeSync (path) {
|
|
11
|
+
fs.rmSync(path, { recursive: true, force: true })
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
module.exports = {
|
|
15
|
+
remove: u(remove),
|
|
16
|
+
removeSync
|
|
17
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
// https://github.com/jprichardson/node-fs-extra/issues/1056
|
|
4
|
+
// Performing parallel operations on each item of an async iterator is
|
|
5
|
+
// surprisingly hard; you need to have handlers in place to avoid getting an
|
|
6
|
+
// UnhandledPromiseRejectionWarning.
|
|
7
|
+
// NOTE: This function does not presently handle return values, only errors
|
|
8
|
+
async function asyncIteratorConcurrentProcess (iterator, fn) {
|
|
9
|
+
const promises = []
|
|
10
|
+
for await (const item of iterator) {
|
|
11
|
+
promises.push(
|
|
12
|
+
fn(item).then(
|
|
13
|
+
() => null,
|
|
14
|
+
(err) => err ?? new Error('unknown error')
|
|
15
|
+
)
|
|
16
|
+
)
|
|
17
|
+
}
|
|
18
|
+
await Promise.all(
|
|
19
|
+
promises.map((promise) =>
|
|
20
|
+
promise.then((possibleErr) => {
|
|
21
|
+
if (possibleErr !== null) throw possibleErr
|
|
22
|
+
})
|
|
23
|
+
)
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
module.exports = {
|
|
28
|
+
asyncIteratorConcurrentProcess
|
|
29
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const fs = require('../fs')
|
|
4
|
+
const path = require('path')
|
|
5
|
+
const u = require('universalify').fromPromise
|
|
6
|
+
|
|
7
|
+
function getStats (src, dest, opts) {
|
|
8
|
+
const statFunc = opts.dereference
|
|
9
|
+
? (file) => fs.stat(file, { bigint: true })
|
|
10
|
+
: (file) => fs.lstat(file, { bigint: true })
|
|
11
|
+
return Promise.all([
|
|
12
|
+
statFunc(src),
|
|
13
|
+
statFunc(dest).catch(err => {
|
|
14
|
+
if (err.code === 'ENOENT') return null
|
|
15
|
+
throw err
|
|
16
|
+
})
|
|
17
|
+
]).then(([srcStat, destStat]) => ({ srcStat, destStat }))
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function getStatsSync (src, dest, opts) {
|
|
21
|
+
let destStat
|
|
22
|
+
const statFunc = opts.dereference
|
|
23
|
+
? (file) => fs.statSync(file, { bigint: true })
|
|
24
|
+
: (file) => fs.lstatSync(file, { bigint: true })
|
|
25
|
+
const srcStat = statFunc(src)
|
|
26
|
+
try {
|
|
27
|
+
destStat = statFunc(dest)
|
|
28
|
+
} catch (err) {
|
|
29
|
+
if (err.code === 'ENOENT') return { srcStat, destStat: null }
|
|
30
|
+
throw err
|
|
31
|
+
}
|
|
32
|
+
return { srcStat, destStat }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async function checkPaths (src, dest, funcName, opts) {
|
|
36
|
+
const { srcStat, destStat } = await getStats(src, dest, opts)
|
|
37
|
+
if (destStat) {
|
|
38
|
+
if (areIdentical(srcStat, destStat)) {
|
|
39
|
+
const srcBaseName = path.basename(src)
|
|
40
|
+
const destBaseName = path.basename(dest)
|
|
41
|
+
if (funcName === 'move' &&
|
|
42
|
+
srcBaseName !== destBaseName &&
|
|
43
|
+
srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {
|
|
44
|
+
return { srcStat, destStat, isChangingCase: true }
|
|
45
|
+
}
|
|
46
|
+
throw new Error('Source and destination must not be the same.')
|
|
47
|
+
}
|
|
48
|
+
if (srcStat.isDirectory() && !destStat.isDirectory()) {
|
|
49
|
+
throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)
|
|
50
|
+
}
|
|
51
|
+
if (!srcStat.isDirectory() && destStat.isDirectory()) {
|
|
52
|
+
throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
|
|
57
|
+
throw new Error(errMsg(src, dest, funcName))
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return { srcStat, destStat }
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function checkPathsSync (src, dest, funcName, opts) {
|
|
64
|
+
const { srcStat, destStat } = getStatsSync(src, dest, opts)
|
|
65
|
+
|
|
66
|
+
if (destStat) {
|
|
67
|
+
if (areIdentical(srcStat, destStat)) {
|
|
68
|
+
const srcBaseName = path.basename(src)
|
|
69
|
+
const destBaseName = path.basename(dest)
|
|
70
|
+
if (funcName === 'move' &&
|
|
71
|
+
srcBaseName !== destBaseName &&
|
|
72
|
+
srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {
|
|
73
|
+
return { srcStat, destStat, isChangingCase: true }
|
|
74
|
+
}
|
|
75
|
+
throw new Error('Source and destination must not be the same.')
|
|
76
|
+
}
|
|
77
|
+
if (srcStat.isDirectory() && !destStat.isDirectory()) {
|
|
78
|
+
throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)
|
|
79
|
+
}
|
|
80
|
+
if (!srcStat.isDirectory() && destStat.isDirectory()) {
|
|
81
|
+
throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
|
|
86
|
+
throw new Error(errMsg(src, dest, funcName))
|
|
87
|
+
}
|
|
88
|
+
return { srcStat, destStat }
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// recursively check if dest parent is a subdirectory of src.
|
|
92
|
+
// It works for all file types including symlinks since it
|
|
93
|
+
// checks the src and dest inodes. It starts from the deepest
|
|
94
|
+
// parent and stops once it reaches the src parent or the root path.
|
|
95
|
+
async function checkParentPaths (src, srcStat, dest, funcName) {
|
|
96
|
+
const srcParent = path.resolve(path.dirname(src))
|
|
97
|
+
const destParent = path.resolve(path.dirname(dest))
|
|
98
|
+
if (destParent === srcParent || destParent === path.parse(destParent).root) return
|
|
99
|
+
|
|
100
|
+
let destStat
|
|
101
|
+
try {
|
|
102
|
+
destStat = await fs.stat(destParent, { bigint: true })
|
|
103
|
+
} catch (err) {
|
|
104
|
+
if (err.code === 'ENOENT') return
|
|
105
|
+
throw err
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (areIdentical(srcStat, destStat)) {
|
|
109
|
+
throw new Error(errMsg(src, dest, funcName))
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return checkParentPaths(src, srcStat, destParent, funcName)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function checkParentPathsSync (src, srcStat, dest, funcName) {
|
|
116
|
+
const srcParent = path.resolve(path.dirname(src))
|
|
117
|
+
const destParent = path.resolve(path.dirname(dest))
|
|
118
|
+
if (destParent === srcParent || destParent === path.parse(destParent).root) return
|
|
119
|
+
let destStat
|
|
120
|
+
try {
|
|
121
|
+
destStat = fs.statSync(destParent, { bigint: true })
|
|
122
|
+
} catch (err) {
|
|
123
|
+
if (err.code === 'ENOENT') return
|
|
124
|
+
throw err
|
|
125
|
+
}
|
|
126
|
+
if (areIdentical(srcStat, destStat)) {
|
|
127
|
+
throw new Error(errMsg(src, dest, funcName))
|
|
128
|
+
}
|
|
129
|
+
return checkParentPathsSync(src, srcStat, destParent, funcName)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function areIdentical (srcStat, destStat) {
|
|
133
|
+
// stat.dev can be 0n on windows when node version >= 22.x.x
|
|
134
|
+
return destStat.ino !== undefined && destStat.dev !== undefined && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// return true if dest is a subdir of src, otherwise false.
|
|
138
|
+
// It only checks the path strings.
|
|
139
|
+
function isSrcSubdir (src, dest) {
|
|
140
|
+
const srcArr = path.resolve(src).split(path.sep).filter(i => i)
|
|
141
|
+
const destArr = path.resolve(dest).split(path.sep).filter(i => i)
|
|
142
|
+
return srcArr.every((cur, i) => destArr[i] === cur)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function errMsg (src, dest, funcName) {
|
|
146
|
+
return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
module.exports = {
|
|
150
|
+
// checkPaths
|
|
151
|
+
checkPaths: u(checkPaths),
|
|
152
|
+
checkPathsSync,
|
|
153
|
+
// checkParent
|
|
154
|
+
checkParentPaths: u(checkParentPaths),
|
|
155
|
+
checkParentPathsSync,
|
|
156
|
+
// Misc
|
|
157
|
+
isSrcSubdir,
|
|
158
|
+
areIdentical
|
|
159
|
+
}
|