@milkio/cookbook-linux-arm64 1.0.0-beta.98 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/co +0 -0
- package/cookbook.js.map +392 -0
- package/package.json +10 -1
package/cookbook.js.map
ADDED
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["node_modules/@inquirer/core/dist/esm/lib/key.js", "node_modules/@inquirer/core/dist/esm/lib/errors.js", "node_modules/@inquirer/core/dist/esm/lib/hook-engine.js", "node_modules/@inquirer/core/dist/esm/lib/use-state.js", "node_modules/@inquirer/core/dist/esm/lib/use-effect.js", "node_modules/yoctocolors-cjs/index.js", "node_modules/@inquirer/figures/dist/esm/index.js", "node_modules/@inquirer/core/dist/esm/lib/theme.js", "node_modules/@inquirer/core/dist/esm/lib/make-theme.js", "node_modules/@inquirer/core/dist/esm/lib/use-prefix.js", "node_modules/@inquirer/core/dist/esm/lib/use-memo.js", "node_modules/@inquirer/core/dist/esm/lib/use-ref.js", "node_modules/@inquirer/core/dist/esm/lib/use-keypress.js", "node_modules/@inquirer/core/node_modules/cli-width/index.js", "node_modules/ansi-regex/index.js", "node_modules/strip-ansi/index.js", "node_modules/is-fullwidth-code-point/index.js", "node_modules/emoji-regex/index.js", "node_modules/string-width/index.js", "node_modules/color-name/index.js", "node_modules/color-convert/conversions.js", "node_modules/color-convert/route.js", "node_modules/color-convert/index.js", "node_modules/ansi-styles/index.js", "node_modules/wrap-ansi/index.js", "node_modules/@inquirer/core/dist/esm/lib/utils.js", "node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.js", "node_modules/@inquirer/core/node_modules/mute-stream/lib/index.js", "node_modules/signal-exit/dist/mjs/signals.js", "node_modules/signal-exit/dist/mjs/index.js", "node_modules/ansi-escapes/index.js", "node_modules/@inquirer/core/dist/esm/lib/screen-manager.js", "node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.js", "node_modules/@inquirer/core/dist/esm/lib/create-prompt.js", "node_modules/@inquirer/core/dist/esm/lib/Separator.js", "node_modules/@inquirer/core/dist/esm/index.js", "node_modules/@inquirer/search/dist/esm/index.js", "node_modules/@inquirer/prompts/dist/esm/index.js", "node_modules/consola/dist/core.mjs", "node_modules/consola/dist/shared/consola.DRwqZj3T.mjs", "node_modules/consola/dist/shared/consola.DXBYu-KD.mjs", "node_modules/consola/dist/chunks/prompt.mjs", "node_modules/consola/dist/index.mjs", "node_modules/chalk/source/vendor/ansi-styles/index.js", "node_modules/chalk/source/vendor/supports-color/index.js", "node_modules/chalk/source/utilities.js", "node_modules/chalk/source/index.js", "packages/cookbook-command/index.ts", "packages/cookbook/src/progress/index.ts", "packages/cookbook/src/utils/check-port.ts", "node_modules/shell-exec/index.js", "node_modules/kill-port/index.js", "packages/cookbook/src/utils/kill-port.ts", "packages/cookbook/src/utils/calc-hash.ts", "packages/cookbook/src/utils/get-cookbook-toml.ts", "packages/cookbook/src/utils/asciis.ts", "node_modules/lodash-es/_freeGlobal.js", "node_modules/lodash-es/_root.js", "node_modules/lodash-es/_Symbol.js", "node_modules/lodash-es/_getRawTag.js", "node_modules/lodash-es/_objectToString.js", "node_modules/lodash-es/_baseGetTag.js", "node_modules/lodash-es/isObject.js", "node_modules/lodash-es/isFunction.js", "node_modules/lodash-es/_coreJsData.js", "node_modules/lodash-es/_isMasked.js", "node_modules/lodash-es/_toSource.js", "node_modules/lodash-es/_baseIsNative.js", "node_modules/lodash-es/_getValue.js", "node_modules/lodash-es/_getNative.js", "node_modules/lodash-es/_nativeCreate.js", "node_modules/lodash-es/_hashClear.js", "node_modules/lodash-es/_hashDelete.js", "node_modules/lodash-es/_hashGet.js", "node_modules/lodash-es/_hashHas.js", "node_modules/lodash-es/_hashSet.js", "node_modules/lodash-es/_Hash.js", "node_modules/lodash-es/_listCacheClear.js", "node_modules/lodash-es/eq.js", "node_modules/lodash-es/_assocIndexOf.js", "node_modules/lodash-es/_listCacheDelete.js", "node_modules/lodash-es/_listCacheGet.js", "node_modules/lodash-es/_listCacheHas.js", "node_modules/lodash-es/_listCacheSet.js", "node_modules/lodash-es/_ListCache.js", "node_modules/lodash-es/_Map.js", "node_modules/lodash-es/_mapCacheClear.js", "node_modules/lodash-es/_isKeyable.js", "node_modules/lodash-es/_getMapData.js", "node_modules/lodash-es/_mapCacheDelete.js", "node_modules/lodash-es/_mapCacheGet.js", "node_modules/lodash-es/_mapCacheHas.js", "node_modules/lodash-es/_mapCacheSet.js", "node_modules/lodash-es/_MapCache.js", "node_modules/lodash-es/_setCacheAdd.js", "node_modules/lodash-es/_setCacheHas.js", "node_modules/lodash-es/_SetCache.js", "node_modules/lodash-es/_baseFindIndex.js", "node_modules/lodash-es/_baseIsNaN.js", "node_modules/lodash-es/_strictIndexOf.js", "node_modules/lodash-es/_baseIndexOf.js", "node_modules/lodash-es/_arrayIncludes.js", "node_modules/lodash-es/_arrayIncludesWith.js", "node_modules/lodash-es/_cacheHas.js", "node_modules/lodash-es/_Set.js", "node_modules/lodash-es/noop.js", "node_modules/lodash-es/_setToArray.js", "node_modules/lodash-es/_createSet.js", "node_modules/lodash-es/_baseUniq.js", "node_modules/lodash-es/uniqWith.js", "node_modules/lodash-es/lodash.js", "packages/cookbook/src/utils/select-mode.ts", "packages/cookbook/src/utils/get-random-port.ts", "packages/cookbook/src/watcher/extensions.ts", "packages/cookbook/src/watcher/extensions/config.ts", "packages/cookbook/src/watcher/generate-run-ts/node.ts", "packages/cookbook/src/watcher/generate-run-ts/deno.ts", "packages/cookbook/src/watcher/generate-run-ts/bun.ts", "packages/cookbook/src/watcher/generate-run-ts/__IMPORTS__.ts", "node_modules/universalify/index.js", "node_modules/graceful-fs/polyfills.js", "node_modules/graceful-fs/legacy-streams.js", "node_modules/graceful-fs/clone.js", "node_modules/graceful-fs/graceful-fs.js", "node_modules/fs-extra/lib/fs/index.js", "node_modules/fs-extra/lib/mkdirs/utils.js", "node_modules/fs-extra/lib/mkdirs/make-dir.js", "node_modules/fs-extra/lib/mkdirs/index.js", "node_modules/fs-extra/lib/path-exists/index.js", "node_modules/fs-extra/lib/util/utimes.js", "node_modules/fs-extra/lib/util/stat.js", "node_modules/fs-extra/lib/copy/copy.js", "node_modules/fs-extra/lib/copy/copy-sync.js", "node_modules/fs-extra/lib/copy/index.js", "node_modules/fs-extra/lib/remove/index.js", "node_modules/fs-extra/lib/empty/index.js", "node_modules/fs-extra/lib/ensure/file.js", "node_modules/fs-extra/lib/ensure/link.js", "node_modules/fs-extra/lib/ensure/symlink-paths.js", "node_modules/fs-extra/lib/ensure/symlink-type.js", "node_modules/fs-extra/lib/ensure/symlink.js", "node_modules/fs-extra/lib/ensure/index.js", "node_modules/jsonfile/utils.js", "node_modules/jsonfile/index.js", "node_modules/fs-extra/lib/json/jsonfile.js", "node_modules/fs-extra/lib/output-file/index.js", "node_modules/fs-extra/lib/json/output-json.js", "node_modules/fs-extra/lib/json/output-json-sync.js", "node_modules/fs-extra/lib/json/index.js", "node_modules/fs-extra/lib/move/move.js", "node_modules/fs-extra/lib/move/move-sync.js", "node_modules/fs-extra/lib/move/index.js", "node_modules/fs-extra/lib/index.js", "packages/cookbook/src/utils/unlink-if-too-long.ts", "packages/cookbook/src/utils/get-runtime.ts", "packages/cookbook/src/utils/get-typia-path.ts", "packages/cookbook/src/utils/get-latest-schema-folder.ts", "packages/cookbook/src/watcher/extensions/route.ts", "packages/cookbook/src/watcher/extensions/handler.ts", "packages/cookbook/src/watcher/extensions/meta.ts", "packages/cookbook/src/watcher/extensions/context.ts", "packages/cookbook/src/watcher/extensions/drizzle.ts", "packages/cookbook/src/watcher/extensions/event.ts", "packages/cookbook/src/watcher/extensions/typia.ts", "packages/cookbook/src/watcher/extensions/code.ts", "packages/cookbook/src/watcher/extensions/seed.ts", "packages/cookbook/src/watcher/extensions/__IMPORTS__.ts", "packages/cookbook/__VERSION__.ts", "packages/cookbook/src/watcher/index.ts", "packages/milkio/config/index.ts", "packages/milkio/utils/headers-to-json.ts", "packages/milkio/utils/merge-deep.ts", "packages/milkio/utils/revive-json-parse.ts", "packages/milkio/execute/index.ts", "packages/milkio/event/index.ts", "packages/milkio/utils/create-id.ts", "packages/milkio/execute/execute-id-generator.ts", "packages/milkio/world/index.ts", "node_modules/date-fns/constants.js", "node_modules/date-fns/constructFrom.js", "node_modules/date-fns/toDate.js", "node_modules/date-fns/_lib/defaultOptions.js", "node_modules/date-fns/startOfWeek.js", "node_modules/date-fns/startOfISOWeek.js", "node_modules/date-fns/getISOWeekYear.js", "node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js", "node_modules/date-fns/_lib/normalizeDates.js", "node_modules/date-fns/startOfDay.js", "node_modules/date-fns/differenceInCalendarDays.js", "node_modules/date-fns/startOfISOWeekYear.js", "node_modules/date-fns/isDate.js", "node_modules/date-fns/isValid.js", "node_modules/date-fns/startOfYear.js", "node_modules/date-fns/locale/en-US/_lib/formatDistance.js", "node_modules/date-fns/locale/_lib/buildFormatLongFn.js", "node_modules/date-fns/locale/en-US/_lib/formatLong.js", "node_modules/date-fns/locale/en-US/_lib/formatRelative.js", "node_modules/date-fns/locale/_lib/buildLocalizeFn.js", "node_modules/date-fns/locale/en-US/_lib/localize.js", "node_modules/date-fns/locale/_lib/buildMatchFn.js", "node_modules/date-fns/locale/_lib/buildMatchPatternFn.js", "node_modules/date-fns/locale/en-US/_lib/match.js", "node_modules/date-fns/locale/en-US.js", "node_modules/date-fns/_lib/defaultLocale.js", "node_modules/date-fns/getDayOfYear.js", "node_modules/date-fns/getISOWeek.js", "node_modules/date-fns/getWeekYear.js", "node_modules/date-fns/startOfWeekYear.js", "node_modules/date-fns/getWeek.js", "node_modules/date-fns/_lib/addLeadingZeros.js", "node_modules/date-fns/_lib/format/lightFormatters.js", "node_modules/date-fns/_lib/format/formatters.js", "node_modules/date-fns/_lib/format/longFormatters.js", "node_modules/date-fns/_lib/protectedTokens.js", "node_modules/date-fns/format.js", "node_modules/date-fns/index.js", "packages/milkio/utils/send-cookbook-event.ts", "packages/milkio/logger/index.ts", "packages/milkio/utils/trie.ts", "packages/milkio/listener/index.ts", "packages/milkio/exception/index.ts", "packages/milkio/index.ts", "projects/cookbook-server/.milkio/typia-schema.ts", "node_modules/typia/lib/internal/_validateReport.js", "node_modules/typia/lib/internal/_jsonStringifyString.js", "projects/cookbook-server/app/modules/mode/read.action.ts", "projects/cookbook-server/.milkio/transpiled/routes/modules__mode__readTaction/2x4z7s79mu6e9/schema.ts", "projects/cookbook-server/.milkio/route-schema.ts", "projects/cookbook-server/.milkio/handler-schema.ts", "projects/cookbook-server/.milkio/index.ts", "projects/cookbook-server/app/configs/common.config.ts", "projects/cookbook-server/.milkio/config-schema.ts", "projects/cookbook-server/index.ts", "packages/cookbook/src/utils/output-prefix.ts", "packages/cookbook/src/workers/index.ts", "packages/cookbook/src/commands/dev.ts", "packages/cookbook/src/utils/select-project.ts", "packages/cookbook/src/utils/exec-script.ts", "packages/cookbook/src/utils/select.ts", "packages/cookbook/src/commands/drizzle.ts", "packages/cookbook/src/commands/test.ts", "packages/cookbook/node_modules/compressing/lib/utils.js", "node_modules/buffer-crc32/index.js", "node_modules/yazl/index.js", "node_modules/process-nextick-args/index.js", "node_modules/isarray/index.js", "node_modules/readable-stream/node_modules/safe-buffer/index.js", "node_modules/core-util-is/lib/util.js", "node_modules/inherits/inherits_browser.js", "node_modules/inherits/inherits.js", "node_modules/readable-stream/lib/internal/streams/BufferList.js", "node_modules/readable-stream/lib/internal/streams/destroy.js", "node_modules/util-deprecate/node.js", "node_modules/readable-stream/lib/_stream_writable.js", "node_modules/readable-stream/lib/_stream_duplex.js", "node_modules/string_decoder/node_modules/safe-buffer/index.js", "node_modules/string_decoder/lib/string_decoder.js", "node_modules/readable-stream/lib/_stream_readable.js", "node_modules/readable-stream/lib/_stream_transform.js", "node_modules/readable-stream/lib/_stream_passthrough.js", "node_modules/readable-stream/readable.js", "node_modules/readable-stream/duplex.js", "node_modules/safe-buffer/index.js", "node_modules/bl/bl.js", "node_modules/xtend/immutable.js", "node_modules/to-buffer/node_modules/isarray/index.js", "node_modules/es-errors/type.js", "node_modules/es-object-atoms/index.js", "node_modules/es-errors/index.js", "node_modules/es-errors/eval.js", "node_modules/es-errors/range.js", "node_modules/es-errors/ref.js", "node_modules/es-errors/syntax.js", "node_modules/es-errors/uri.js", "node_modules/math-intrinsics/abs.js", "node_modules/math-intrinsics/floor.js", "node_modules/math-intrinsics/max.js", "node_modules/math-intrinsics/min.js", "node_modules/math-intrinsics/pow.js", "node_modules/math-intrinsics/round.js", "node_modules/math-intrinsics/isNaN.js", "node_modules/math-intrinsics/sign.js", "node_modules/gopd/gOPD.js", "node_modules/gopd/index.js", "node_modules/es-define-property/index.js", "node_modules/has-symbols/shams.js", "node_modules/has-symbols/index.js", "node_modules/get-proto/Reflect.getPrototypeOf.js", "node_modules/get-proto/Object.getPrototypeOf.js", "node_modules/function-bind/implementation.js", "node_modules/function-bind/index.js", "node_modules/call-bind-apply-helpers/functionCall.js", "node_modules/call-bind-apply-helpers/functionApply.js", "node_modules/call-bind-apply-helpers/reflectApply.js", "node_modules/call-bind-apply-helpers/actualApply.js", "node_modules/call-bind-apply-helpers/index.js", "node_modules/dunder-proto/get.js", "node_modules/get-proto/index.js", "node_modules/hasown/index.js", "node_modules/get-intrinsic/index.js", "node_modules/call-bound/index.js", "node_modules/is-callable/index.js", "node_modules/for-each/index.js", "node_modules/possible-typed-array-names/index.js", "node_modules/available-typed-arrays/index.js", "node_modules/define-data-property/index.js", "node_modules/has-property-descriptors/index.js", "node_modules/set-function-length/index.js", "node_modules/call-bind-apply-helpers/applyBind.js", "node_modules/call-bind/index.js", "node_modules/has-tostringtag/shams.js", "node_modules/which-typed-array/index.js", "node_modules/is-typed-array/index.js", "node_modules/typed-array-buffer/index.js", "node_modules/to-buffer/index.js", "node_modules/buffer-fill/index.js", "node_modules/buffer-alloc-unsafe/index.js", "node_modules/buffer-alloc/index.js", "node_modules/tar-stream/headers.js", "node_modules/tar-stream/extract.js", "node_modules/fs-constants/index.js", "node_modules/wrappy/wrappy.js", "node_modules/once/once.js", "node_modules/end-of-stream/index.js", "node_modules/tar-stream/pack.js", "node_modules/tar-stream/index.js", "packages/cookbook/node_modules/compressing/lib/base_stream.js", "packages/cookbook/node_modules/compressing/lib/tar/stream.js", "packages/cookbook/node_modules/compressing/lib/zip/stream.js", "node_modules/get-ready/index.js", "packages/cookbook/node_modules/compressing/lib/zip/file_stream.js", "node_modules/pend/index.js", "node_modules/fd-slicer2/index.js", "node_modules/@eggjs/yauzl/index.js", "packages/cookbook/node_modules/compressing/lib/base_write_stream.js", "node_modules/safer-buffer/safer.js", "node_modules/iconv-lite/lib/bom-handling.js", "node_modules/iconv-lite/encodings/internal.js", "node_modules/iconv-lite/encodings/utf32.js", "node_modules/iconv-lite/encodings/utf16.js", "node_modules/iconv-lite/encodings/utf7.js", "node_modules/iconv-lite/encodings/sbcs-codec.js", "node_modules/iconv-lite/encodings/sbcs-data.js", "node_modules/iconv-lite/encodings/sbcs-data-generated.js", "node_modules/iconv-lite/encodings/dbcs-codec.js", "node_modules/iconv-lite/encodings/dbcs-data.js", "node_modules/iconv-lite/encodings/index.js", "node_modules/iconv-lite/lib/streams.js", "node_modules/iconv-lite/lib/extend-node.js", "node_modules/iconv-lite/lib/index.js", "packages/cookbook/node_modules/compressing/lib/zip/uncompress_stream.js", "packages/cookbook/node_modules/compressing/lib/zip/index.js", "node_modules/streamifier/lib/index.js", "packages/cookbook/node_modules/compressing/lib/gzip/file_stream.js", "packages/cookbook/node_modules/compressing/lib/gzip/uncompress_stream.js", "packages/cookbook/node_modules/compressing/lib/gzip/index.js", "packages/cookbook/node_modules/compressing/lib/tar/file_stream.js", "packages/cookbook/node_modules/compressing/lib/tar/uncompress_stream.js", "packages/cookbook/node_modules/compressing/lib/tar/index.js", "packages/cookbook/node_modules/compressing/lib/tgz/stream.js", "packages/cookbook/node_modules/compressing/lib/tgz/file_stream.js", "node_modules/flushwritable/lib/FlushWritable.js", "packages/cookbook/node_modules/compressing/lib/tgz/uncompress_stream.js", "packages/cookbook/node_modules/compressing/lib/tgz/index.js", "packages/cookbook/node_modules/compressing/index.js", "packages/cookbook/src/commands/create.ts", "packages/cookbook/src/commands/download-and-execute.ts", "packages/cookbook/src/commands/init.ts", "packages/cookbook/src/utils/handle-non-cookbook-pkg-mgr.ts", "packages/cookbook/src/commands/install.ts", "packages/cookbook/src/commands/uninstall.ts", "packages/cookbook/src/commands/build.ts", "node_modules/tinycolor2/cjs/tinycolor.js", "node_modules/tinygradient/index.js", "node_modules/gradient-string/dist/index.js", "packages/cookbook/src/commands/upgrade.ts", "packages/cookbook/src/commands/version.ts", "packages/cookbook/src/commands/generate.ts", "packages/cookbook/src/index.ts", "packages/cookbook/src/commands/__router__.ts", "packages/cookbook/src/commands/__utils__.ts", "packages/cookbook/src/utils/fetch-event-source.ts", "packages/cookbook/cookbook.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export const isUpKey = (key) => \n// The up key\nkey.name === 'up' ||\n // Vim keybinding\n key.name === 'k' ||\n // Emacs keybinding\n (key.ctrl && key.name === 'p');\nexport const isDownKey = (key) => \n// The down key\nkey.name === 'down' ||\n // Vim keybinding\n key.name === 'j' ||\n // Emacs keybinding\n (key.ctrl && key.name === 'n');\nexport const isSpaceKey = (key) => key.name === 'space';\nexport const isBackspaceKey = (key) => key.name === 'backspace';\nexport const isNumberKey = (key) => '1234567890'.includes(key.name);\nexport const isEnterKey = (key) => key.name === 'enter' || key.name === 'return';\n",
|
|
6
|
+
"export class AbortPromptError extends Error {\n name = 'AbortPromptError';\n message = 'Prompt was aborted';\n constructor(options) {\n super();\n this.cause = options?.cause;\n }\n}\nexport class CancelPromptError extends Error {\n name = 'CancelPromptError';\n message = 'Prompt was canceled';\n}\nexport class ExitPromptError extends Error {\n name = 'ExitPromptError';\n}\nexport class HookError extends Error {\n name = 'HookError';\n}\nexport class ValidationError extends Error {\n name = 'ValidationError';\n}\n",
|
|
7
|
+
"/* eslint @typescript-eslint/no-explicit-any: [\"off\"] */\nimport { AsyncLocalStorage, AsyncResource } from 'node:async_hooks';\nimport { HookError, ValidationError } from \"./errors.js\";\nconst hookStorage = new AsyncLocalStorage();\nfunction createStore(rl) {\n const store = {\n rl,\n hooks: [],\n hooksCleanup: [],\n hooksEffect: [],\n index: 0,\n handleChange() { },\n };\n return store;\n}\n// Run callback in with the hook engine setup.\nexport function withHooks(rl, cb) {\n const store = createStore(rl);\n return hookStorage.run(store, () => {\n function cycle(render) {\n store.handleChange = () => {\n store.index = 0;\n render();\n };\n store.handleChange();\n }\n return cb(cycle);\n });\n}\n// Safe getStore utility that'll return the store or throw if undefined.\nfunction getStore() {\n const store = hookStorage.getStore();\n if (!store) {\n throw new HookError('[Inquirer] Hook functions can only be called from within a prompt');\n }\n return store;\n}\nexport function readline() {\n return getStore().rl;\n}\n// Merge state updates happening within the callback function to avoid multiple renders.\nexport function withUpdates(fn) {\n const wrapped = (...args) => {\n const store = getStore();\n let shouldUpdate = false;\n const oldHandleChange = store.handleChange;\n store.handleChange = () => {\n shouldUpdate = true;\n };\n const returnValue = fn(...args);\n if (shouldUpdate) {\n oldHandleChange();\n }\n store.handleChange = oldHandleChange;\n return returnValue;\n };\n return AsyncResource.bind(wrapped);\n}\nexport function withPointer(cb) {\n const store = getStore();\n const { index } = store;\n const pointer = {\n get() {\n return store.hooks[index];\n },\n set(value) {\n store.hooks[index] = value;\n },\n initialized: index in store.hooks,\n };\n const returnValue = cb(pointer);\n store.index++;\n return returnValue;\n}\nexport function handleChange() {\n getStore().handleChange();\n}\nexport const effectScheduler = {\n queue(cb) {\n const store = getStore();\n const { index } = store;\n store.hooksEffect.push(() => {\n store.hooksCleanup[index]?.();\n const cleanFn = cb(readline());\n if (cleanFn != null && typeof cleanFn !== 'function') {\n throw new ValidationError('useEffect return value must be a cleanup function or nothing.');\n }\n store.hooksCleanup[index] = cleanFn;\n });\n },\n run() {\n const store = getStore();\n withUpdates(() => {\n store.hooksEffect.forEach((effect) => {\n effect();\n });\n // Warning: Clean the hooks before exiting the `withUpdates` block.\n // Failure to do so means an updates would hit the same effects again.\n store.hooksEffect.length = 0;\n })();\n },\n clearAll() {\n const store = getStore();\n store.hooksCleanup.forEach((cleanFn) => {\n cleanFn?.();\n });\n store.hooksEffect.length = 0;\n store.hooksCleanup.length = 0;\n },\n};\n",
|
|
8
|
+
"import { AsyncResource } from 'node:async_hooks';\nimport { withPointer, handleChange } from \"./hook-engine.js\";\nexport function useState(defaultValue) {\n return withPointer((pointer) => {\n const setState = AsyncResource.bind(function setState(newValue) {\n // Noop if the value is still the same.\n if (pointer.get() !== newValue) {\n pointer.set(newValue);\n // Trigger re-render\n handleChange();\n }\n });\n if (pointer.initialized) {\n return [pointer.get(), setState];\n }\n const value = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n pointer.set(value);\n return [value, setState];\n });\n}\n",
|
|
9
|
+
"import { withPointer, effectScheduler } from \"./hook-engine.js\";\nexport function useEffect(cb, depArray) {\n withPointer((pointer) => {\n const oldDeps = pointer.get();\n const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i]));\n if (hasChanged) {\n effectScheduler.queue(cb);\n }\n pointer.set(depArray);\n });\n}\n",
|
|
10
|
+
"const tty = require('node:tty');\n\n// eslint-disable-next-line no-warning-comments\n// TODO: Use a better method when it's added to Node.js (https://github.com/nodejs/node/pull/40240)\n// Lots of optionals here to support Deno.\nconst hasColors = tty?.WriteStream?.prototype?.hasColors?.() ?? false;\n\nconst format = (open, close) => {\n\tif (!hasColors) {\n\t\treturn input => input;\n\t}\n\n\tconst openCode = `\\u001B[${open}m`;\n\tconst closeCode = `\\u001B[${close}m`;\n\n\treturn input => {\n\t\tconst string = input + ''; // eslint-disable-line no-implicit-coercion -- This is faster.\n\t\tlet index = string.indexOf(closeCode);\n\n\t\tif (index === -1) {\n\t\t\t// Note: Intentionally not using string interpolation for performance reasons.\n\t\t\treturn openCode + string + closeCode;\n\t\t}\n\n\t\t// Handle nested colors.\n\n\t\t// We could have done this, but it's too slow (as of Node.js 22).\n\t\t// return openCode + string.replaceAll(closeCode, openCode) + closeCode;\n\n\t\tlet result = openCode;\n\t\tlet lastIndex = 0;\n\n\t\twhile (index !== -1) {\n\t\t\tresult += string.slice(lastIndex, index) + openCode;\n\t\t\tlastIndex = index + closeCode.length;\n\t\t\tindex = string.indexOf(closeCode, lastIndex);\n\t\t}\n\n\t\tresult += string.slice(lastIndex) + closeCode;\n\n\t\treturn result;\n\t};\n};\n\nconst colors = {};\n\ncolors.reset = format(0, 0);\ncolors.bold = format(1, 22);\ncolors.dim = format(2, 22);\ncolors.italic = format(3, 23);\ncolors.underline = format(4, 24);\ncolors.overline = format(53, 55);\ncolors.inverse = format(7, 27);\ncolors.hidden = format(8, 28);\ncolors.strikethrough = format(9, 29);\n\ncolors.black = format(30, 39);\ncolors.red = format(31, 39);\ncolors.green = format(32, 39);\ncolors.yellow = format(33, 39);\ncolors.blue = format(34, 39);\ncolors.magenta = format(35, 39);\ncolors.cyan = format(36, 39);\ncolors.white = format(37, 39);\ncolors.gray = format(90, 39);\n\ncolors.bgBlack = format(40, 49);\ncolors.bgRed = format(41, 49);\ncolors.bgGreen = format(42, 49);\ncolors.bgYellow = format(43, 49);\ncolors.bgBlue = format(44, 49);\ncolors.bgMagenta = format(45, 49);\ncolors.bgCyan = format(46, 49);\ncolors.bgWhite = format(47, 49);\ncolors.bgGray = format(100, 49);\n\ncolors.redBright = format(91, 39);\ncolors.greenBright = format(92, 39);\ncolors.yellowBright = format(93, 39);\ncolors.blueBright = format(94, 39);\ncolors.magentaBright = format(95, 39);\ncolors.cyanBright = format(96, 39);\ncolors.whiteBright = format(97, 39);\n\ncolors.bgRedBright = format(101, 49);\ncolors.bgGreenBright = format(102, 49);\ncolors.bgYellowBright = format(103, 49);\ncolors.bgBlueBright = format(104, 49);\ncolors.bgMagentaBright = format(105, 49);\ncolors.bgCyanBright = format(106, 49);\ncolors.bgWhiteBright = format(107, 49);\n\nmodule.exports = colors;\n",
|
|
11
|
+
"// process.env dot-notation access prints:\n// Property 'TERM' comes from an index signature, so it must be accessed with ['TERM'].ts(4111)\n/* eslint dot-notation: [\"off\"] */\nimport process from 'node:process';\n// Ported from is-unicode-supported\nfunction isUnicodeSupported() {\n if (process.platform !== 'win32') {\n return process.env['TERM'] !== 'linux'; // Linux console (kernel)\n }\n return (Boolean(process.env['WT_SESSION']) || // Windows Terminal\n Boolean(process.env['TERMINUS_SUBLIME']) || // Terminus (<0.2.27)\n process.env['ConEmuTask'] === '{cmd::Cmder}' || // ConEmu and cmder\n process.env['TERM_PROGRAM'] === 'Terminus-Sublime' ||\n process.env['TERM_PROGRAM'] === 'vscode' ||\n process.env['TERM'] === 'xterm-256color' ||\n process.env['TERM'] === 'alacritty' ||\n process.env['TERMINAL_EMULATOR'] === 'JetBrains-JediTerm');\n}\n// Ported from figures\nconst common = {\n circleQuestionMark: '(?)',\n questionMarkPrefix: '(?)',\n square: '█',\n squareDarkShade: '▓',\n squareMediumShade: '▒',\n squareLightShade: '░',\n squareTop: '▀',\n squareBottom: '▄',\n squareLeft: '▌',\n squareRight: '▐',\n squareCenter: '■',\n bullet: '●',\n dot: '․',\n ellipsis: '…',\n pointerSmall: '›',\n triangleUp: '▲',\n triangleUpSmall: '▴',\n triangleDown: '▼',\n triangleDownSmall: '▾',\n triangleLeftSmall: '◂',\n triangleRightSmall: '▸',\n home: '⌂',\n heart: '♥',\n musicNote: '♪',\n musicNoteBeamed: '♫',\n arrowUp: '↑',\n arrowDown: '↓',\n arrowLeft: '←',\n arrowRight: '→',\n arrowLeftRight: '↔',\n arrowUpDown: '↕',\n almostEqual: '≈',\n notEqual: '≠',\n lessOrEqual: '≤',\n greaterOrEqual: '≥',\n identical: '≡',\n infinity: '∞',\n subscriptZero: '₀',\n subscriptOne: '₁',\n subscriptTwo: '₂',\n subscriptThree: '₃',\n subscriptFour: '₄',\n subscriptFive: '₅',\n subscriptSix: '₆',\n subscriptSeven: '₇',\n subscriptEight: '₈',\n subscriptNine: '₉',\n oneHalf: '½',\n oneThird: '⅓',\n oneQuarter: '¼',\n oneFifth: '⅕',\n oneSixth: '⅙',\n oneEighth: '⅛',\n twoThirds: '⅔',\n twoFifths: '⅖',\n threeQuarters: '¾',\n threeFifths: '⅗',\n threeEighths: '⅜',\n fourFifths: '⅘',\n fiveSixths: '⅚',\n fiveEighths: '⅝',\n sevenEighths: '⅞',\n line: '─',\n lineBold: '━',\n lineDouble: '═',\n lineDashed0: '┄',\n lineDashed1: '┅',\n lineDashed2: '┈',\n lineDashed3: '┉',\n lineDashed4: '╌',\n lineDashed5: '╍',\n lineDashed6: '╴',\n lineDashed7: '╶',\n lineDashed8: '╸',\n lineDashed9: '╺',\n lineDashed10: '╼',\n lineDashed11: '╾',\n lineDashed12: '−',\n lineDashed13: '–',\n lineDashed14: '‐',\n lineDashed15: '⁃',\n lineVertical: '│',\n lineVerticalBold: '┃',\n lineVerticalDouble: '║',\n lineVerticalDashed0: '┆',\n lineVerticalDashed1: '┇',\n lineVerticalDashed2: '┊',\n lineVerticalDashed3: '┋',\n lineVerticalDashed4: '╎',\n lineVerticalDashed5: '╏',\n lineVerticalDashed6: '╵',\n lineVerticalDashed7: '╷',\n lineVerticalDashed8: '╹',\n lineVerticalDashed9: '╻',\n lineVerticalDashed10: '╽',\n lineVerticalDashed11: '╿',\n lineDownLeft: '┐',\n lineDownLeftArc: '╮',\n lineDownBoldLeftBold: '┓',\n lineDownBoldLeft: '┒',\n lineDownLeftBold: '┑',\n lineDownDoubleLeftDouble: '╗',\n lineDownDoubleLeft: '╖',\n lineDownLeftDouble: '╕',\n lineDownRight: '┌',\n lineDownRightArc: '╭',\n lineDownBoldRightBold: '┏',\n lineDownBoldRight: '┎',\n lineDownRightBold: '┍',\n lineDownDoubleRightDouble: '╔',\n lineDownDoubleRight: '╓',\n lineDownRightDouble: '╒',\n lineUpLeft: '┘',\n lineUpLeftArc: '╯',\n lineUpBoldLeftBold: '┛',\n lineUpBoldLeft: '┚',\n lineUpLeftBold: '┙',\n lineUpDoubleLeftDouble: '╝',\n lineUpDoubleLeft: '╜',\n lineUpLeftDouble: '╛',\n lineUpRight: '└',\n lineUpRightArc: '╰',\n lineUpBoldRightBold: '┗',\n lineUpBoldRight: '┖',\n lineUpRightBold: '┕',\n lineUpDoubleRightDouble: '╚',\n lineUpDoubleRight: '╙',\n lineUpRightDouble: '╘',\n lineUpDownLeft: '┤',\n lineUpBoldDownBoldLeftBold: '┫',\n lineUpBoldDownBoldLeft: '┨',\n lineUpDownLeftBold: '┥',\n lineUpBoldDownLeftBold: '┩',\n lineUpDownBoldLeftBold: '┪',\n lineUpDownBoldLeft: '┧',\n lineUpBoldDownLeft: '┦',\n lineUpDoubleDownDoubleLeftDouble: '╣',\n lineUpDoubleDownDoubleLeft: '╢',\n lineUpDownLeftDouble: '╡',\n lineUpDownRight: '├',\n lineUpBoldDownBoldRightBold: '┣',\n lineUpBoldDownBoldRight: '┠',\n lineUpDownRightBold: '┝',\n lineUpBoldDownRightBold: '┡',\n lineUpDownBoldRightBold: '┢',\n lineUpDownBoldRight: '┟',\n lineUpBoldDownRight: '┞',\n lineUpDoubleDownDoubleRightDouble: '╠',\n lineUpDoubleDownDoubleRight: '╟',\n lineUpDownRightDouble: '╞',\n lineDownLeftRight: '┬',\n lineDownBoldLeftBoldRightBold: '┳',\n lineDownLeftBoldRightBold: '┯',\n lineDownBoldLeftRight: '┰',\n lineDownBoldLeftBoldRight: '┱',\n lineDownBoldLeftRightBold: '┲',\n lineDownLeftRightBold: '┮',\n lineDownLeftBoldRight: '┭',\n lineDownDoubleLeftDoubleRightDouble: '╦',\n lineDownDoubleLeftRight: '╥',\n lineDownLeftDoubleRightDouble: '╤',\n lineUpLeftRight: '┴',\n lineUpBoldLeftBoldRightBold: '┻',\n lineUpLeftBoldRightBold: '┷',\n lineUpBoldLeftRight: '┸',\n lineUpBoldLeftBoldRight: '┹',\n lineUpBoldLeftRightBold: '┺',\n lineUpLeftRightBold: '┶',\n lineUpLeftBoldRight: '┵',\n lineUpDoubleLeftDoubleRightDouble: '╩',\n lineUpDoubleLeftRight: '╨',\n lineUpLeftDoubleRightDouble: '╧',\n lineUpDownLeftRight: '┼',\n lineUpBoldDownBoldLeftBoldRightBold: '╋',\n lineUpDownBoldLeftBoldRightBold: '╈',\n lineUpBoldDownLeftBoldRightBold: '╇',\n lineUpBoldDownBoldLeftRightBold: '╊',\n lineUpBoldDownBoldLeftBoldRight: '╉',\n lineUpBoldDownLeftRight: '╀',\n lineUpDownBoldLeftRight: '╁',\n lineUpDownLeftBoldRight: '┽',\n lineUpDownLeftRightBold: '┾',\n lineUpBoldDownBoldLeftRight: '╂',\n lineUpDownLeftBoldRightBold: '┿',\n lineUpBoldDownLeftBoldRight: '╃',\n lineUpBoldDownLeftRightBold: '╄',\n lineUpDownBoldLeftBoldRight: '╅',\n lineUpDownBoldLeftRightBold: '╆',\n lineUpDoubleDownDoubleLeftDoubleRightDouble: '╬',\n lineUpDoubleDownDoubleLeftRight: '╫',\n lineUpDownLeftDoubleRightDouble: '╪',\n lineCross: '╳',\n lineBackslash: '╲',\n lineSlash: '╱',\n};\nconst specialMainSymbols = {\n tick: '✔',\n info: 'ℹ',\n warning: '⚠',\n cross: '✘',\n squareSmall: '◻',\n squareSmallFilled: '◼',\n circle: '◯',\n circleFilled: '◉',\n circleDotted: '◌',\n circleDouble: '◎',\n circleCircle: 'ⓞ',\n circleCross: 'ⓧ',\n circlePipe: 'Ⓘ',\n radioOn: '◉',\n radioOff: '◯',\n checkboxOn: '☒',\n checkboxOff: '☐',\n checkboxCircleOn: 'ⓧ',\n checkboxCircleOff: 'Ⓘ',\n pointer: '❯',\n triangleUpOutline: '△',\n triangleLeft: '◀',\n triangleRight: '▶',\n lozenge: '◆',\n lozengeOutline: '◇',\n hamburger: '☰',\n smiley: '㋡',\n mustache: '෴',\n star: '★',\n play: '▶',\n nodejs: '⬢',\n oneSeventh: '⅐',\n oneNinth: '⅑',\n oneTenth: '⅒',\n};\nconst specialFallbackSymbols = {\n tick: '√',\n info: 'i',\n warning: '‼',\n cross: '×',\n squareSmall: '□',\n squareSmallFilled: '■',\n circle: '( )',\n circleFilled: '(*)',\n circleDotted: '( )',\n circleDouble: '( )',\n circleCircle: '(○)',\n circleCross: '(×)',\n circlePipe: '(│)',\n radioOn: '(*)',\n radioOff: '( )',\n checkboxOn: '[×]',\n checkboxOff: '[ ]',\n checkboxCircleOn: '(×)',\n checkboxCircleOff: '( )',\n pointer: '>',\n triangleUpOutline: '∆',\n triangleLeft: '◄',\n triangleRight: '►',\n lozenge: '♦',\n lozengeOutline: '◊',\n hamburger: '≡',\n smiley: '☺',\n mustache: '┌─┐',\n star: '✶',\n play: '►',\n nodejs: '♦',\n oneSeventh: '1/7',\n oneNinth: '1/9',\n oneTenth: '1/10',\n};\nexport const mainSymbols = { ...common, ...specialMainSymbols };\nexport const fallbackSymbols = {\n ...common,\n ...specialFallbackSymbols,\n};\nconst shouldUseMain = isUnicodeSupported();\nconst figures = shouldUseMain ? mainSymbols : fallbackSymbols;\nexport default figures;\nconst replacements = Object.entries(specialMainSymbols);\n// On terminals which do not support Unicode symbols, substitute them to other symbols\nexport const replaceSymbols = (string, { useFallback = !shouldUseMain } = {}) => {\n if (useFallback) {\n for (const [key, mainSymbol] of replacements) {\n const fallbackSymbol = fallbackSymbols[key];\n if (!fallbackSymbol) {\n throw new Error(`Unable to find fallback for ${key}`);\n }\n string = string.replaceAll(mainSymbol, fallbackSymbol);\n }\n }\n return string;\n};\n",
|
|
12
|
+
"import colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nexport const defaultTheme = {\n prefix: {\n idle: colors.blue('?'),\n // TODO: use figure\n done: colors.green(figures.tick),\n },\n spinner: {\n interval: 80,\n frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'].map((frame) => colors.yellow(frame)),\n },\n style: {\n answer: colors.cyan,\n message: colors.bold,\n error: (text) => colors.red(`> ${text}`),\n defaultAnswer: (text) => colors.dim(`(${text})`),\n help: colors.dim,\n highlight: colors.cyan,\n key: (text) => colors.cyan(colors.bold(`<${text}>`)),\n },\n};\n",
|
|
13
|
+
"import { defaultTheme } from \"./theme.js\";\nfunction isPlainObject(value) {\n if (typeof value !== 'object' || value === null)\n return false;\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\nfunction deepMerge(...objects) {\n const output = {};\n for (const obj of objects) {\n for (const [key, value] of Object.entries(obj)) {\n const prevValue = output[key];\n output[key] =\n isPlainObject(prevValue) && isPlainObject(value)\n ? deepMerge(prevValue, value)\n : value;\n }\n }\n return output;\n}\nexport function makeTheme(...themes) {\n const themesToMerge = [\n defaultTheme,\n ...themes.filter((theme) => theme != null),\n ];\n return deepMerge(...themesToMerge);\n}\n",
|
|
14
|
+
"import { useState } from \"./use-state.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { makeTheme } from \"./make-theme.js\";\nexport function usePrefix({ status = 'idle', theme, }) {\n const [showLoader, setShowLoader] = useState(false);\n const [tick, setTick] = useState(0);\n const { prefix, spinner } = makeTheme(theme);\n useEffect(() => {\n if (status === 'loading') {\n let tickInterval;\n let inc = -1;\n // Delay displaying spinner by 300ms, to avoid flickering\n const delayTimeout = setTimeout(() => {\n setShowLoader(true);\n tickInterval = setInterval(() => {\n inc = inc + 1;\n setTick(inc % spinner.frames.length);\n }, spinner.interval);\n }, 300);\n return () => {\n clearTimeout(delayTimeout);\n clearInterval(tickInterval);\n };\n }\n else {\n setShowLoader(false);\n }\n }, [status]);\n if (showLoader) {\n return spinner.frames[tick];\n }\n // There's a delay before we show the loader. So we want to ignore `loading` here, and pass idle instead.\n const iconName = status === 'loading' ? 'idle' : status;\n return typeof prefix === 'string' ? prefix : (prefix[iconName] ?? prefix['idle']);\n}\n",
|
|
15
|
+
"import { withPointer } from \"./hook-engine.js\";\nexport function useMemo(fn, dependencies) {\n return withPointer((pointer) => {\n const prev = pointer.get();\n if (!prev ||\n prev.dependencies.length !== dependencies.length ||\n prev.dependencies.some((dep, i) => dep !== dependencies[i])) {\n const value = fn();\n pointer.set({ value, dependencies });\n return value;\n }\n return prev.value;\n });\n}\n",
|
|
16
|
+
"import { useState } from \"./use-state.js\";\nexport function useRef(val) {\n return useState({ current: val })[0];\n}\n",
|
|
17
|
+
"import { useRef } from \"./use-ref.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { withUpdates } from \"./hook-engine.js\";\nexport function useKeypress(userHandler) {\n const signal = useRef(userHandler);\n signal.current = userHandler;\n useEffect((rl) => {\n let ignore = false;\n const handler = withUpdates((_input, event) => {\n if (ignore)\n return;\n void signal.current(event, rl);\n });\n rl.input.on('keypress', handler);\n return () => {\n ignore = true;\n rl.input.removeListener('keypress', handler);\n };\n }, []);\n}\n",
|
|
18
|
+
"'use strict';\n\nmodule.exports = cliWidth;\n\nfunction normalizeOpts(options) {\n const defaultOpts = {\n defaultWidth: 0,\n output: process.stdout,\n tty: require('tty'),\n };\n\n if (!options) {\n return defaultOpts;\n }\n\n Object.keys(defaultOpts).forEach(function (key) {\n if (!options[key]) {\n options[key] = defaultOpts[key];\n }\n });\n\n return options;\n}\n\nfunction cliWidth(options) {\n const opts = normalizeOpts(options);\n\n if (opts.output.getWindowSize) {\n return opts.output.getWindowSize()[0] || opts.defaultWidth;\n }\n\n if (opts.tty.getWindowSize) {\n return opts.tty.getWindowSize()[1] || opts.defaultWidth;\n }\n\n if (opts.output.columns) {\n return opts.output.columns;\n }\n\n if (process.env.CLI_WIDTH) {\n const width = parseInt(process.env.CLI_WIDTH, 10);\n\n if (!isNaN(width) && width !== 0) {\n return width;\n }\n }\n\n return opts.defaultWidth;\n}\n",
|
|
19
|
+
"'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n",
|
|
20
|
+
"'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n",
|
|
21
|
+
"/* eslint-disable yoda */\n'use strict';\n\nconst isFullwidthCodePoint = codePoint => {\n\tif (Number.isNaN(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tcodePoint >= 0x1100 && (\n\t\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nmodule.exports = isFullwidthCodePoint;\nmodule.exports.default = isFullwidthCodePoint;\n",
|
|
22
|
+
"\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n",
|
|
23
|
+
"'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n",
|
|
24
|
+
"'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n",
|
|
25
|
+
"/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n",
|
|
26
|
+
"const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n",
|
|
27
|
+
"const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n",
|
|
28
|
+
"'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n",
|
|
29
|
+
"'use strict';\nconst stringWidth = require('string-width');\nconst stripAnsi = require('strip-ansi');\nconst ansiStyles = require('ansi-styles');\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B'\n]);\n\nconst END_CODE = 39;\n\nconst wrapAnsi = code => `${ESCAPES.values().next().value}[${code}m`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t} else if (isInsideEscape && character === 'm') {\n\t\t\tisInsideEscape = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = str => {\n\tconst words = str.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn str;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet pre = '';\n\tlet ret = '';\n\tlet escapeCode;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimLeft();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(stringVisibleTrimSpacesRight);\n\t}\n\n\tpre = rows.join('\\n');\n\n\tfor (const [index, character] of [...pre].entries()) {\n\t\tret += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst code = parseFloat(/\\d[^m]*/.exec(pre.slice(index, index + 4)));\n\t\t\tescapeCode = code === END_CODE ? null : code;\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (escapeCode && code) {\n\t\t\tif (pre[index + 1] === '\\n') {\n\t\t\t\tret += wrapAnsi(code);\n\t\t\t} else if (character === '\\n') {\n\t\t\t\tret += wrapAnsi(escapeCode);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// For each newline, invoke the method separately\nmodule.exports = (string, columns, options) => {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n};\n",
|
|
30
|
+
"import cliWidth from 'cli-width';\nimport wrapAnsi from 'wrap-ansi';\nimport { readline } from \"./hook-engine.js\";\n/**\n * Force line returns at specific width. This function is ANSI code friendly and it'll\n * ignore invisible codes during width calculation.\n * @param {string} content\n * @param {number} width\n * @return {string}\n */\nexport function breakLines(content, width) {\n return content\n .split('\\n')\n .flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true })\n .split('\\n')\n .map((str) => str.trimEnd()))\n .join('\\n');\n}\n/**\n * Returns the width of the active readline, or 80 as default value.\n * @returns {number}\n */\nexport function readlineWidth() {\n return cliWidth({ defaultWidth: 80, output: readline().output });\n}\n",
|
|
31
|
+
"import { useRef } from \"../use-ref.js\";\nimport { readlineWidth, breakLines } from \"../utils.js\";\nfunction usePointerPosition({ active, renderedItems, pageSize, loop, }) {\n const state = useRef({\n lastPointer: active,\n lastActive: undefined,\n });\n const { lastPointer, lastActive } = state.current;\n const middle = Math.floor(pageSize / 2);\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const defaultPointerPosition = renderedItems\n .slice(0, active)\n .reduce((acc, item) => acc + item.length, 0);\n let pointer = defaultPointerPosition;\n if (renderedLength > pageSize) {\n if (loop) {\n /**\n * Creates the next position for the pointer considering an infinitely\n * looping list of items to be rendered on the page.\n *\n * The goal is to progressively move the cursor to the middle position as the user move down, and then keep\n * the cursor there. When the user move up, maintain the cursor position.\n */\n // By default, keep the cursor position as-is.\n pointer = lastPointer;\n if (\n // First render, skip this logic.\n lastActive != null &&\n // Only move the pointer down when the user moves down.\n lastActive < active &&\n // Check user didn't move up across page boundary.\n active - lastActive < pageSize) {\n pointer = Math.min(\n // Furthest allowed position for the pointer is the middle of the list\n middle, Math.abs(active - lastActive) === 1\n ? Math.min(\n // Move the pointer at most the height of the last active item.\n lastPointer + (renderedItems[lastActive]?.length ?? 0), \n // If the user moved by one item, move the pointer to the natural position of the active item as\n // long as it doesn't move the cursor up.\n Math.max(defaultPointerPosition, lastPointer))\n : // Otherwise, move the pointer down by the difference between the active and last active item.\n lastPointer + active - lastActive);\n }\n }\n else {\n /**\n * Creates the next position for the pointer considering a finite list of\n * items to be rendered on a page.\n *\n * The goal is to keep the pointer in the middle of the page whenever possible, until\n * we reach the bounds of the list (top or bottom). In which case, the cursor moves progressively\n * to the bottom or top of the list.\n */\n const spaceUnderActive = renderedItems\n .slice(active)\n .reduce((acc, item) => acc + item.length, 0);\n pointer =\n spaceUnderActive < pageSize - middle\n ? // If the active item is near the end of the list, progressively move the cursor towards the end.\n pageSize - spaceUnderActive\n : // Otherwise, progressively move the pointer to the middle of the list.\n Math.min(defaultPointerPosition, middle);\n }\n }\n // Save state for the next render\n state.current.lastPointer = pointer;\n state.current.lastActive = active;\n return pointer;\n}\nexport function usePagination({ items, active, renderItem, pageSize, loop = true, }) {\n const width = readlineWidth();\n const bound = (num) => ((num % items.length) + items.length) % items.length;\n const renderedItems = items.map((item, index) => {\n if (item == null)\n return [];\n return breakLines(renderItem({ item, index, isActive: index === active }), width).split('\\n');\n });\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const renderItemAtIndex = (index) => renderedItems[index] ?? [];\n const pointer = usePointerPosition({ active, renderedItems, pageSize, loop });\n // Render the active item to decide the position.\n // If the active item fits under the pointer, we render it there.\n // Otherwise, we need to render it to fit at the bottom of the page; moving the pointer up.\n const activeItem = renderItemAtIndex(active).slice(0, pageSize);\n const activeItemPosition = pointer + activeItem.length <= pageSize ? pointer : pageSize - activeItem.length;\n // Create an array of lines for the page, and add the lines of the active item into the page\n const pageBuffer = Array.from({ length: pageSize });\n pageBuffer.splice(activeItemPosition, activeItem.length, ...activeItem);\n // Store to prevent rendering the same item twice\n const itemVisited = new Set([active]);\n // Fill the page under the active item\n let bufferPointer = activeItemPosition + activeItem.length;\n let itemPointer = bound(active + 1);\n while (bufferPointer < pageSize &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer > active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(0, pageSize - bufferPointer);\n pageBuffer.splice(bufferPointer, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer += linesToAdd.length;\n itemPointer = bound(itemPointer + 1);\n }\n // Fill the page over the active item\n bufferPointer = activeItemPosition - 1;\n itemPointer = bound(active - 1);\n while (bufferPointer >= 0 &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer < active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(Math.max(0, lines.length - bufferPointer - 1));\n pageBuffer.splice(bufferPointer - linesToAdd.length + 1, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer -= linesToAdd.length;\n itemPointer = bound(itemPointer - 1);\n }\n return pageBuffer.filter((line) => typeof line === 'string').join('\\n');\n}\n",
|
|
32
|
+
"const Stream = require('stream')\n\nclass MuteStream extends Stream {\n #isTTY = null\n\n constructor (opts = {}) {\n super(opts)\n this.writable = this.readable = true\n this.muted = false\n this.on('pipe', this._onpipe)\n this.replace = opts.replace\n\n // For readline-type situations\n // This much at the start of a line being redrawn after a ctrl char\n // is seen (such as backspace) won't be redrawn as the replacement\n this._prompt = opts.prompt || null\n this._hadControl = false\n }\n\n #destSrc (key, def) {\n if (this._dest) {\n return this._dest[key]\n }\n if (this._src) {\n return this._src[key]\n }\n return def\n }\n\n #proxy (method, ...args) {\n if (typeof this._dest?.[method] === 'function') {\n this._dest[method](...args)\n }\n if (typeof this._src?.[method] === 'function') {\n this._src[method](...args)\n }\n }\n\n get isTTY () {\n if (this.#isTTY !== null) {\n return this.#isTTY\n }\n return this.#destSrc('isTTY', false)\n }\n\n // basically just get replace the getter/setter with a regular value\n set isTTY (val) {\n this.#isTTY = val\n }\n\n get rows () {\n return this.#destSrc('rows')\n }\n\n get columns () {\n return this.#destSrc('columns')\n }\n\n mute () {\n this.muted = true\n }\n\n unmute () {\n this.muted = false\n }\n\n _onpipe (src) {\n this._src = src\n }\n\n pipe (dest, options) {\n this._dest = dest\n return super.pipe(dest, options)\n }\n\n pause () {\n if (this._src) {\n return this._src.pause()\n }\n }\n\n resume () {\n if (this._src) {\n return this._src.resume()\n }\n }\n\n write (c) {\n if (this.muted) {\n if (!this.replace) {\n return true\n }\n // eslint-disable-next-line no-control-regex\n if (c.match(/^\\u001b/)) {\n if (c.indexOf(this._prompt) === 0) {\n c = c.slice(this._prompt.length)\n c = c.replace(/./g, this.replace)\n c = this._prompt + c\n }\n this._hadControl = true\n return this.emit('data', c)\n } else {\n if (this._prompt && this._hadControl &&\n c.indexOf(this._prompt) === 0) {\n this._hadControl = false\n this.emit('data', this._prompt)\n c = c.slice(this._prompt.length)\n }\n c = c.toString().replace(/./g, this.replace)\n }\n }\n this.emit('data', c)\n }\n\n end (c) {\n if (this.muted) {\n if (c && this.replace) {\n c = c.toString().replace(/./g, this.replace)\n } else {\n c = null\n }\n }\n if (c) {\n this.emit('data', c)\n }\n this.emit('end')\n }\n\n destroy (...args) {\n return this.#proxy('destroy', ...args)\n }\n\n destroySoon (...args) {\n return this.#proxy('destroySoon', ...args)\n }\n\n close (...args) {\n return this.#proxy('close', ...args)\n }\n}\n\nmodule.exports = MuteStream\n",
|
|
33
|
+
"/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals = [];\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM');\nif (process.platform !== 'win32') {\n signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n );\n}\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT');\n}\n//# sourceMappingURL=signals.js.map",
|
|
34
|
+
"// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js';\nexport { signals };\nconst processOk = (process) => !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function';\nconst kExitEmitter = Symbol.for('signal-exit emitter');\nconst global = globalThis;\nconst ObjectDefineProperty = Object.defineProperty.bind(Object);\n// teeny special purpose ee\nclass Emitter {\n emitted = {\n afterExit: false,\n exit: false,\n };\n listeners = {\n afterExit: [],\n exit: [],\n };\n count = 0;\n id = Math.random();\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter];\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n }\n on(ev, fn) {\n this.listeners[ev].push(fn);\n }\n removeListener(ev, fn) {\n const list = this.listeners[ev];\n const i = list.indexOf(fn);\n /* c8 ignore start */\n if (i === -1) {\n return;\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0;\n }\n else {\n list.splice(i, 1);\n }\n }\n emit(ev, code, signal) {\n if (this.emitted[ev]) {\n return false;\n }\n this.emitted[ev] = true;\n let ret = false;\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret;\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret;\n }\n return ret;\n }\n}\nclass SignalExitBase {\n}\nconst signalExitWrap = (handler) => {\n return {\n onExit(cb, opts) {\n return handler.onExit(cb, opts);\n },\n load() {\n return handler.load();\n },\n unload() {\n return handler.unload();\n },\n };\n};\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => { };\n }\n load() { }\n unload() { }\n}\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP';\n /* c8 ignore stop */\n #emitter = new Emitter();\n #process;\n #originalProcessEmit;\n #originalProcessReallyExit;\n #sigListeners = {};\n #loaded = false;\n constructor(process) {\n super();\n this.#process = process;\n // { <signal>: <listener fn>, ... }\n this.#sigListeners = {};\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig);\n let { count } = this.#emitter;\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process;\n if (typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number') {\n count += p.__signal_exit_emitter__.count;\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload();\n const ret = this.#emitter.emit('exit', null, sig);\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig;\n if (!ret)\n process.kill(process.pid, s);\n /* c8 ignore stop */\n }\n };\n }\n this.#originalProcessReallyExit = process.reallyExit;\n this.#originalProcessEmit = process.emit;\n }\n onExit(cb, opts) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => { };\n }\n /* c8 ignore stop */\n if (this.#loaded === false) {\n this.load();\n }\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit';\n this.#emitter.on(ev, cb);\n return () => {\n this.#emitter.removeListener(ev, cb);\n if (this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0) {\n this.unload();\n }\n };\n }\n load() {\n if (this.#loaded) {\n return;\n }\n this.#loaded = true;\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1;\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig];\n if (fn)\n this.#process.on(sig, fn);\n }\n catch (_) { }\n }\n this.#process.emit = (ev, ...a) => {\n return this.#processEmit(ev, ...a);\n };\n this.#process.reallyExit = (code) => {\n return this.#processReallyExit(code);\n };\n }\n unload() {\n if (!this.#loaded) {\n return;\n }\n this.#loaded = false;\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig];\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig);\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener);\n /* c8 ignore start */\n }\n catch (_) { }\n /* c8 ignore stop */\n });\n this.#process.emit = this.#originalProcessEmit;\n this.#process.reallyExit = this.#originalProcessReallyExit;\n this.#emitter.count -= 1;\n }\n #processReallyExit(code) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0;\n }\n this.#process.exitCode = code || 0;\n /* c8 ignore stop */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);\n }\n #processEmit(ev, ...args) {\n const og = this.#originalProcessEmit;\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0];\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args);\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n /* c8 ignore stop */\n return ret;\n }\n else {\n return og.call(this.#process, ev, ...args);\n }\n }\n}\nconst process = globalThis.process;\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const { \n/**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\nonExit, \n/**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\nload, \n/**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\nunload, } = signalExitWrap(processOk(process) ? new SignalExit(process) : new SignalExitFallback());\n//# sourceMappingURL=index.js.map",
|
|
35
|
+
"'use strict';\nconst ansiEscapes = module.exports;\n// TODO: remove this in the next major version\nmodule.exports.default = ansiEscapes;\n\nconst ESC = '\\u001B[';\nconst OSC = '\\u001B]';\nconst BEL = '\\u0007';\nconst SEP = ';';\nconst isTerminalApp = process.env.TERM_PROGRAM === 'Apple_Terminal';\n\nansiEscapes.cursorTo = (x, y) => {\n\tif (typeof x !== 'number') {\n\t\tthrow new TypeError('The `x` argument is required');\n\t}\n\n\tif (typeof y !== 'number') {\n\t\treturn ESC + (x + 1) + 'G';\n\t}\n\n\treturn ESC + (y + 1) + ';' + (x + 1) + 'H';\n};\n\nansiEscapes.cursorMove = (x, y) => {\n\tif (typeof x !== 'number') {\n\t\tthrow new TypeError('The `x` argument is required');\n\t}\n\n\tlet ret = '';\n\n\tif (x < 0) {\n\t\tret += ESC + (-x) + 'D';\n\t} else if (x > 0) {\n\t\tret += ESC + x + 'C';\n\t}\n\n\tif (y < 0) {\n\t\tret += ESC + (-y) + 'A';\n\t} else if (y > 0) {\n\t\tret += ESC + y + 'B';\n\t}\n\n\treturn ret;\n};\n\nansiEscapes.cursorUp = (count = 1) => ESC + count + 'A';\nansiEscapes.cursorDown = (count = 1) => ESC + count + 'B';\nansiEscapes.cursorForward = (count = 1) => ESC + count + 'C';\nansiEscapes.cursorBackward = (count = 1) => ESC + count + 'D';\n\nansiEscapes.cursorLeft = ESC + 'G';\nansiEscapes.cursorSavePosition = isTerminalApp ? '\\u001B7' : ESC + 's';\nansiEscapes.cursorRestorePosition = isTerminalApp ? '\\u001B8' : ESC + 'u';\nansiEscapes.cursorGetPosition = ESC + '6n';\nansiEscapes.cursorNextLine = ESC + 'E';\nansiEscapes.cursorPrevLine = ESC + 'F';\nansiEscapes.cursorHide = ESC + '?25l';\nansiEscapes.cursorShow = ESC + '?25h';\n\nansiEscapes.eraseLines = count => {\n\tlet clear = '';\n\n\tfor (let i = 0; i < count; i++) {\n\t\tclear += ansiEscapes.eraseLine + (i < count - 1 ? ansiEscapes.cursorUp() : '');\n\t}\n\n\tif (count) {\n\t\tclear += ansiEscapes.cursorLeft;\n\t}\n\n\treturn clear;\n};\n\nansiEscapes.eraseEndLine = ESC + 'K';\nansiEscapes.eraseStartLine = ESC + '1K';\nansiEscapes.eraseLine = ESC + '2K';\nansiEscapes.eraseDown = ESC + 'J';\nansiEscapes.eraseUp = ESC + '1J';\nansiEscapes.eraseScreen = ESC + '2J';\nansiEscapes.scrollUp = ESC + 'S';\nansiEscapes.scrollDown = ESC + 'T';\n\nansiEscapes.clearScreen = '\\u001Bc';\n\nansiEscapes.clearTerminal = process.platform === 'win32' ?\n\t`${ansiEscapes.eraseScreen}${ESC}0f` :\n\t// 1. Erases the screen (Only done in case `2` is not supported)\n\t// 2. Erases the whole screen including scrollback buffer\n\t// 3. Moves cursor to the top-left position\n\t// More info: https://www.real-world-systems.com/docs/ANSIcode.html\n\t`${ansiEscapes.eraseScreen}${ESC}3J${ESC}H`;\n\nansiEscapes.beep = BEL;\n\nansiEscapes.link = (text, url) => {\n\treturn [\n\t\tOSC,\n\t\t'8',\n\t\tSEP,\n\t\tSEP,\n\t\turl,\n\t\tBEL,\n\t\ttext,\n\t\tOSC,\n\t\t'8',\n\t\tSEP,\n\t\tSEP,\n\t\tBEL\n\t].join('');\n};\n\nansiEscapes.image = (buffer, options = {}) => {\n\tlet ret = `${OSC}1337;File=inline=1`;\n\n\tif (options.width) {\n\t\tret += `;width=${options.width}`;\n\t}\n\n\tif (options.height) {\n\t\tret += `;height=${options.height}`;\n\t}\n\n\tif (options.preserveAspectRatio === false) {\n\t\tret += ';preserveAspectRatio=0';\n\t}\n\n\treturn ret + ':' + buffer.toString('base64') + BEL;\n};\n\nansiEscapes.iTerm = {\n\tsetCwd: (cwd = process.cwd()) => `${OSC}50;CurrentDir=${cwd}${BEL}`,\n\n\tannotation: (message, options = {}) => {\n\t\tlet ret = `${OSC}1337;`;\n\n\t\tconst hasX = typeof options.x !== 'undefined';\n\t\tconst hasY = typeof options.y !== 'undefined';\n\t\tif ((hasX || hasY) && !(hasX && hasY && typeof options.length !== 'undefined')) {\n\t\t\tthrow new Error('`x`, `y` and `length` must be defined when `x` or `y` is defined');\n\t\t}\n\n\t\tmessage = message.replace(/\\|/g, '');\n\n\t\tret += options.isHidden ? 'AddHiddenAnnotation=' : 'AddAnnotation=';\n\n\t\tif (options.length > 0) {\n\t\t\tret +=\n\t\t\t\t\t(hasX ?\n\t\t\t\t\t\t[message, options.length, options.x, options.y] :\n\t\t\t\t\t\t[options.length, message]).join('|');\n\t\t} else {\n\t\t\tret += message;\n\t\t}\n\n\t\treturn ret + BEL;\n\t}\n};\n",
|
|
36
|
+
"import { stripVTControlCharacters } from 'node:util';\nimport ansiEscapes from 'ansi-escapes';\nimport { breakLines, readlineWidth } from \"./utils.js\";\nconst height = (content) => content.split('\\n').length;\nconst lastLine = (content) => content.split('\\n').pop() ?? '';\nfunction cursorDown(n) {\n return n > 0 ? ansiEscapes.cursorDown(n) : '';\n}\nexport default class ScreenManager {\n // These variables are keeping information to allow correct prompt re-rendering\n height = 0;\n extraLinesUnderPrompt = 0;\n cursorPos;\n rl;\n constructor(rl) {\n this.rl = rl;\n this.cursorPos = rl.getCursorPos();\n }\n write(content) {\n this.rl.output.unmute();\n this.rl.output.write(content);\n this.rl.output.mute();\n }\n render(content, bottomContent = '') {\n // Write message to screen and setPrompt to control backspace\n const promptLine = lastLine(content);\n const rawPromptLine = stripVTControlCharacters(promptLine);\n // Remove the rl.line from our prompt. We can't rely on the content of\n // rl.line (mainly because of the password prompt), so just rely on it's\n // length.\n let prompt = rawPromptLine;\n if (this.rl.line.length > 0) {\n prompt = prompt.slice(0, -this.rl.line.length);\n }\n this.rl.setPrompt(prompt);\n // SetPrompt will change cursor position, now we can get correct value\n this.cursorPos = this.rl.getCursorPos();\n const width = readlineWidth();\n content = breakLines(content, width);\n bottomContent = breakLines(bottomContent, width);\n // Manually insert an extra line if we're at the end of the line.\n // This prevent the cursor from appearing at the beginning of the\n // current line.\n if (rawPromptLine.length % width === 0) {\n content += '\\n';\n }\n let output = content + (bottomContent ? '\\n' + bottomContent : '');\n /**\n * Re-adjust the cursor at the correct position.\n */\n // We need to consider parts of the prompt under the cursor as part of the bottom\n // content in order to correctly cleanup and re-render.\n const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows;\n const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0);\n // Return cursor to the input position (on top of the bottomContent)\n if (bottomContentHeight > 0)\n output += ansiEscapes.cursorUp(bottomContentHeight);\n // Return cursor to the initial left offset.\n output += ansiEscapes.cursorTo(this.cursorPos.cols);\n /**\n * Render and store state for future re-rendering\n */\n this.write(cursorDown(this.extraLinesUnderPrompt) +\n ansiEscapes.eraseLines(this.height) +\n output);\n this.extraLinesUnderPrompt = bottomContentHeight;\n this.height = height(output);\n }\n checkCursorPos() {\n const cursorPos = this.rl.getCursorPos();\n if (cursorPos.cols !== this.cursorPos.cols) {\n this.write(ansiEscapes.cursorTo(cursorPos.cols));\n this.cursorPos = cursorPos;\n }\n }\n done({ clearContent }) {\n this.rl.setPrompt('');\n let output = cursorDown(this.extraLinesUnderPrompt);\n output += clearContent ? ansiEscapes.eraseLines(this.height) : '\\n';\n output += ansiEscapes.cursorShow;\n this.write(output);\n this.rl.close();\n }\n}\n",
|
|
37
|
+
"// TODO: Remove this class once Node 22 becomes the minimum supported version.\nexport class PromisePolyfill extends Promise {\n // Available starting from Node 22\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n static withResolver() {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve: resolve, reject: reject };\n }\n}\n",
|
|
38
|
+
"import * as readline from 'node:readline';\nimport { AsyncResource } from 'node:async_hooks';\nimport MuteStream from 'mute-stream';\nimport { onExit as onSignalExit } from 'signal-exit';\nimport ScreenManager from \"./screen-manager.js\";\nimport { PromisePolyfill } from \"./promise-polyfill.js\";\nimport { withHooks, effectScheduler } from \"./hook-engine.js\";\nimport { AbortPromptError, CancelPromptError, ExitPromptError } from \"./errors.js\";\nfunction getCallSites() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _prepareStackTrace = Error.prepareStackTrace;\n let result = [];\n try {\n Error.prepareStackTrace = (_, callSites) => {\n const callSitesWithoutCurrent = callSites.slice(1);\n result = callSitesWithoutCurrent;\n return callSitesWithoutCurrent;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions, unicorn/error-message\n new Error().stack;\n }\n catch {\n // An error will occur if the Node flag --frozen-intrinsics is used.\n // https://nodejs.org/api/cli.html#--frozen-intrinsics\n return result;\n }\n Error.prepareStackTrace = _prepareStackTrace;\n return result;\n}\nexport function createPrompt(view) {\n const callSites = getCallSites();\n const prompt = (config, context = {}) => {\n // Default `input` to stdin\n const { input = process.stdin, signal } = context;\n const cleanups = new Set();\n // Add mute capabilities to the output\n const output = new MuteStream();\n output.pipe(context.output ?? process.stdout);\n const rl = readline.createInterface({\n terminal: true,\n input,\n output,\n });\n const screen = new ScreenManager(rl);\n const { promise, resolve, reject } = PromisePolyfill.withResolver();\n const cancel = () => reject(new CancelPromptError());\n if (signal) {\n const abort = () => reject(new AbortPromptError({ cause: signal.reason }));\n if (signal.aborted) {\n abort();\n return Object.assign(promise, { cancel });\n }\n signal.addEventListener('abort', abort);\n cleanups.add(() => signal.removeEventListener('abort', abort));\n }\n cleanups.add(onSignalExit((code, signal) => {\n reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal}`));\n }));\n // SIGINT must be explicitly handled by the prompt so the ExitPromptError can be handled.\n // Otherwise, the prompt will stop and in some scenarios never resolve.\n // Ref issue #1741\n const sigint = () => reject(new ExitPromptError(`User force closed the prompt with SIGINT`));\n rl.on('SIGINT', sigint);\n cleanups.add(() => rl.removeListener('SIGINT', sigint));\n // Re-renders only happen when the state change; but the readline cursor could change position\n // and that also requires a re-render (and a manual one because we mute the streams).\n // We set the listener after the initial workLoop to avoid a double render if render triggered\n // by a state change sets the cursor to the right position.\n const checkCursorPos = () => screen.checkCursorPos();\n rl.input.on('keypress', checkCursorPos);\n cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));\n return withHooks(rl, (cycle) => {\n // The close event triggers immediately when the user press ctrl+c. SignalExit on the other hand\n // triggers after the process is done (which happens after timeouts are done triggering.)\n // We triggers the hooks cleanup phase on rl `close` so active timeouts can be cleared.\n const hooksCleanup = AsyncResource.bind(() => effectScheduler.clearAll());\n rl.on('close', hooksCleanup);\n cleanups.add(() => rl.removeListener('close', hooksCleanup));\n cycle(() => {\n try {\n const nextView = view(config, (value) => {\n setImmediate(() => resolve(value));\n });\n // Typescript won't allow this, but not all users rely on typescript.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (nextView === undefined) {\n const callerFilename = callSites[1]?.getFileName();\n throw new Error(`Prompt functions must return a string.\\n at ${callerFilename}`);\n }\n const [content, bottomContent] = typeof nextView === 'string' ? [nextView] : nextView;\n screen.render(content, bottomContent);\n effectScheduler.run();\n }\n catch (error) {\n reject(error);\n }\n });\n return Object.assign(promise\n .then((answer) => {\n effectScheduler.clearAll();\n return answer;\n }, (error) => {\n effectScheduler.clearAll();\n throw error;\n })\n // Wait for the promise to settle, then cleanup.\n .finally(() => {\n cleanups.forEach((cleanup) => cleanup());\n screen.done({ clearContent: Boolean(context.clearPromptOnDone) });\n output.end();\n })\n // Once cleanup is done, let the expose promise resolve/reject to the internal one.\n .then(() => promise), { cancel });\n });\n };\n return prompt;\n}\n",
|
|
39
|
+
"import colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\n/**\n * Separator object\n * Used to space/separate choices group\n */\nexport class Separator {\n separator = colors.dim(Array.from({ length: 15 }).join(figures.line));\n type = 'separator';\n constructor(separator) {\n if (separator) {\n this.separator = separator;\n }\n }\n static isSeparator(choice) {\n return Boolean(choice &&\n typeof choice === 'object' &&\n 'type' in choice &&\n choice.type === 'separator');\n }\n}\n",
|
|
40
|
+
"export * from \"./lib/key.js\";\nexport * from \"./lib/errors.js\";\nexport { usePrefix } from \"./lib/use-prefix.js\";\nexport { useState } from \"./lib/use-state.js\";\nexport { useEffect } from \"./lib/use-effect.js\";\nexport { useMemo } from \"./lib/use-memo.js\";\nexport { useRef } from \"./lib/use-ref.js\";\nexport { useKeypress } from \"./lib/use-keypress.js\";\nexport { makeTheme } from \"./lib/make-theme.js\";\nexport { usePagination } from \"./lib/pagination/use-pagination.js\";\nexport { createPrompt } from \"./lib/create-prompt.js\";\nexport { Separator } from \"./lib/Separator.js\";\n",
|
|
41
|
+
"import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useEffect, useMemo, isEnterKey, Separator, makeTheme, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nconst searchTheme = {\n icon: { cursor: figures.pointer },\n style: {\n disabled: (text) => colors.dim(`- ${text}`),\n searchTerm: (text) => colors.cyan(text),\n description: (text) => colors.cyan(text),\n },\n helpMode: 'auto',\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction normalizeChoices(choices) {\n return choices.map((choice) => {\n if (Separator.isSeparator(choice))\n return choice;\n if (typeof choice === 'string') {\n return {\n value: choice,\n name: choice,\n short: choice,\n disabled: false,\n };\n }\n const name = choice.name ?? String(choice.value);\n const normalizedChoice = {\n value: choice.value,\n name,\n short: choice.short ?? name,\n disabled: choice.disabled ?? false,\n };\n if (choice.description) {\n normalizedChoice.description = choice.description;\n }\n return normalizedChoice;\n });\n}\nexport default createPrompt((config, done) => {\n const { pageSize = 7, validate = () => true } = config;\n const theme = makeTheme(searchTheme, config.theme);\n const firstRender = useRef(true);\n const [status, setStatus] = useState('loading');\n const [searchTerm, setSearchTerm] = useState('');\n const [searchResults, setSearchResults] = useState([]);\n const [searchError, setSearchError] = useState();\n const prefix = usePrefix({ status, theme });\n const bounds = useMemo(() => {\n const first = searchResults.findIndex(isSelectable);\n const last = searchResults.findLastIndex(isSelectable);\n return { first, last };\n }, [searchResults]);\n const [active = bounds.first, setActive] = useState();\n useEffect(() => {\n const controller = new AbortController();\n setStatus('loading');\n setSearchError(undefined);\n const fetchResults = async () => {\n try {\n const results = await config.source(searchTerm || undefined, {\n signal: controller.signal,\n });\n if (!controller.signal.aborted) {\n // Reset the pointer\n setActive(undefined);\n setSearchError(undefined);\n setSearchResults(normalizeChoices(results));\n setStatus('idle');\n }\n }\n catch (error) {\n if (!controller.signal.aborted && error instanceof Error) {\n setSearchError(error.message);\n }\n }\n };\n void fetchResults();\n return () => {\n controller.abort();\n };\n }, [searchTerm]);\n // Safe to assume the cursor position never points to a Separator.\n const selectedChoice = searchResults[active];\n useKeypress(async (key, rl) => {\n if (isEnterKey(key)) {\n if (selectedChoice) {\n setStatus('loading');\n const isValid = await validate(selectedChoice.value);\n setStatus('idle');\n if (isValid === true) {\n setStatus('done');\n done(selectedChoice.value);\n }\n else if (selectedChoice.name === searchTerm) {\n setSearchError(isValid || 'You must provide a valid value');\n }\n else {\n // Reset line with new search term\n rl.write(selectedChoice.name);\n setSearchTerm(selectedChoice.name);\n }\n }\n else {\n // Reset the readline line value to the previous value. On line event, the value\n // get cleared, forcing the user to re-enter the value instead of fixing it.\n rl.write(searchTerm);\n }\n }\n else if (key.name === 'tab' && selectedChoice) {\n rl.clearLine(0); // Remove the tab character.\n rl.write(selectedChoice.name);\n setSearchTerm(selectedChoice.name);\n }\n else if (status !== 'loading' && (key.name === 'up' || key.name === 'down')) {\n rl.clearLine(0);\n if ((key.name === 'up' && active !== bounds.first) ||\n (key.name === 'down' && active !== bounds.last)) {\n const offset = key.name === 'up' ? -1 : 1;\n let next = active;\n do {\n next = (next + offset + searchResults.length) % searchResults.length;\n } while (!isSelectable(searchResults[next]));\n setActive(next);\n }\n }\n else {\n setSearchTerm(rl.line);\n }\n });\n const message = theme.style.message(config.message, status);\n if (active > 0) {\n firstRender.current = false;\n }\n let helpTip = '';\n if (searchResults.length > 1 &&\n (theme.helpMode === 'always' || (theme.helpMode === 'auto' && firstRender.current))) {\n helpTip =\n searchResults.length > pageSize\n ? `\\n${theme.style.help('(Use arrow keys to reveal more choices)')}`\n : `\\n${theme.style.help('(Use arrow keys)')}`;\n }\n // TODO: What to do if no results are found? Should we display a message?\n const page = usePagination({\n items: searchResults,\n active,\n renderItem({ item, isActive }) {\n if (Separator.isSeparator(item)) {\n return ` ${item.separator}`;\n }\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n return theme.style.disabled(`${item.name} ${disabledLabel}`);\n }\n const color = isActive ? theme.style.highlight : (x) => x;\n const cursor = isActive ? theme.icon.cursor : ` `;\n return color(`${cursor} ${item.name}`);\n },\n pageSize,\n loop: false,\n });\n let error;\n if (searchError) {\n error = theme.style.error(searchError);\n }\n else if (searchResults.length === 0 && searchTerm !== '' && status === 'idle') {\n error = theme.style.error('No results found');\n }\n let searchStr;\n if (status === 'done' && selectedChoice) {\n const answer = selectedChoice.short;\n return `${prefix} ${message} ${theme.style.answer(answer)}`;\n }\n else {\n searchStr = theme.style.searchTerm(searchTerm);\n }\n const choiceDescription = selectedChoice?.description\n ? `\\n${theme.style.description(selectedChoice.description)}`\n : ``;\n return [\n [prefix, message, searchStr].filter(Boolean).join(' '),\n `${error ?? page}${helpTip}${choiceDescription}`,\n ];\n});\nexport { Separator } from '@inquirer/core';\n",
|
|
42
|
+
"export { default as checkbox, Separator } from '@inquirer/checkbox';\nexport { default as editor } from '@inquirer/editor';\nexport { default as confirm } from '@inquirer/confirm';\nexport { default as input } from '@inquirer/input';\nexport { default as number } from '@inquirer/number';\nexport { default as expand } from '@inquirer/expand';\nexport { default as rawlist } from '@inquirer/rawlist';\nexport { default as password } from '@inquirer/password';\nexport { default as search } from '@inquirer/search';\nexport { default as select } from '@inquirer/select';\n",
|
|
43
|
+
"const LogLevels = {\n silent: Number.NEGATIVE_INFINITY,\n fatal: 0,\n error: 0,\n warn: 1,\n log: 2,\n info: 3,\n success: 3,\n fail: 3,\n ready: 3,\n start: 3,\n box: 3,\n debug: 4,\n trace: 5,\n verbose: Number.POSITIVE_INFINITY\n};\nconst LogTypes = {\n // Silent\n silent: {\n level: -1\n },\n // Level 0\n fatal: {\n level: LogLevels.fatal\n },\n error: {\n level: LogLevels.error\n },\n // Level 1\n warn: {\n level: LogLevels.warn\n },\n // Level 2\n log: {\n level: LogLevels.log\n },\n // Level 3\n info: {\n level: LogLevels.info\n },\n success: {\n level: LogLevels.success\n },\n fail: {\n level: LogLevels.fail\n },\n ready: {\n level: LogLevels.info\n },\n start: {\n level: LogLevels.info\n },\n box: {\n level: LogLevels.info\n },\n // Level 4\n debug: {\n level: LogLevels.debug\n },\n // Level 5\n trace: {\n level: LogLevels.trace\n },\n // Verbose\n verbose: {\n level: LogLevels.verbose\n }\n};\n\nfunction isPlainObject$1(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {\n return false;\n }\n if (Symbol.iterator in value) {\n return false;\n }\n if (Symbol.toStringTag in value) {\n return Object.prototype.toString.call(value) === \"[object Module]\";\n }\n return true;\n}\n\nfunction _defu(baseObject, defaults, namespace = \".\", merger) {\n if (!isPlainObject$1(defaults)) {\n return _defu(baseObject, {}, namespace, merger);\n }\n const object = Object.assign({}, defaults);\n for (const key in baseObject) {\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = baseObject[key];\n if (value === null || value === void 0) {\n continue;\n }\n if (merger && merger(object, key, value, namespace)) {\n continue;\n }\n if (Array.isArray(value) && Array.isArray(object[key])) {\n object[key] = [...value, ...object[key]];\n } else if (isPlainObject$1(value) && isPlainObject$1(object[key])) {\n object[key] = _defu(\n value,\n object[key],\n (namespace ? `${namespace}.` : \"\") + key.toString(),\n merger\n );\n } else {\n object[key] = value;\n }\n }\n return object;\n}\nfunction createDefu(merger) {\n return (...arguments_) => (\n // eslint-disable-next-line unicorn/no-array-reduce\n arguments_.reduce((p, c) => _defu(p, c, \"\", merger), {})\n );\n}\nconst defu = createDefu();\n\nfunction isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isLogObj(arg) {\n if (!isPlainObject(arg)) {\n return false;\n }\n if (!arg.message && !arg.args) {\n return false;\n }\n if (arg.stack) {\n return false;\n }\n return true;\n}\n\nlet paused = false;\nconst queue = [];\nclass Consola {\n options;\n _lastLog;\n _mockFn;\n /**\n * Creates an instance of Consola with specified options or defaults.\n *\n * @param {Partial<ConsolaOptions>} [options={}] - Configuration options for the Consola instance.\n */\n constructor(options = {}) {\n const types = options.types || LogTypes;\n this.options = defu(\n {\n ...options,\n defaults: { ...options.defaults },\n level: _normalizeLogLevel(options.level, types),\n reporters: [...options.reporters || []]\n },\n {\n types: LogTypes,\n throttle: 1e3,\n throttleMin: 5,\n formatOptions: {\n date: true,\n colors: false,\n compact: true\n }\n }\n );\n for (const type in types) {\n const defaults = {\n type,\n ...this.options.defaults,\n ...types[type]\n };\n this[type] = this._wrapLogFn(defaults);\n this[type].raw = this._wrapLogFn(\n defaults,\n true\n );\n }\n if (this.options.mockFn) {\n this.mockTypes();\n }\n this._lastLog = {};\n }\n /**\n * Gets the current log level of the Consola instance.\n *\n * @returns {number} The current log level.\n */\n get level() {\n return this.options.level;\n }\n /**\n * Sets the minimum log level that will be output by the instance.\n *\n * @param {number} level - The new log level to set.\n */\n set level(level) {\n this.options.level = _normalizeLogLevel(\n level,\n this.options.types,\n this.options.level\n );\n }\n /**\n * Displays a prompt to the user and returns the response.\n * Throw an error if `prompt` is not supported by the current configuration.\n *\n * @template T\n * @param {string} message - The message to display in the prompt.\n * @param {T} [opts] - Optional options for the prompt. See {@link PromptOptions}.\n * @returns {promise<T>} A promise that infer with the prompt options. See {@link PromptOptions}.\n */\n prompt(message, opts) {\n if (!this.options.prompt) {\n throw new Error(\"prompt is not supported!\");\n }\n return this.options.prompt(message, opts);\n }\n /**\n * Creates a new instance of Consola, inheriting options from the current instance, with possible overrides.\n *\n * @param {Partial<ConsolaOptions>} options - Optional overrides for the new instance. See {@link ConsolaOptions}.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n create(options) {\n const instance = new Consola({\n ...this.options,\n ...options\n });\n if (this._mockFn) {\n instance.mockTypes(this._mockFn);\n }\n return instance;\n }\n /**\n * Creates a new Consola instance with the specified default log object properties.\n *\n * @param {InputLogObject} defaults - Default properties to include in any log from the new instance. See {@link InputLogObject}.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n withDefaults(defaults) {\n return this.create({\n ...this.options,\n defaults: {\n ...this.options.defaults,\n ...defaults\n }\n });\n }\n /**\n * Creates a new Consola instance with a specified tag, which will be included in every log.\n *\n * @param {string} tag - The tag to include in each log of the new instance.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n withTag(tag) {\n return this.withDefaults({\n tag: this.options.defaults.tag ? this.options.defaults.tag + \":\" + tag : tag\n });\n }\n /**\n * Adds a custom reporter to the Consola instance.\n * Reporters will be called for each log message, depending on their implementation and log level.\n *\n * @param {ConsolaReporter} reporter - The reporter to add. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n addReporter(reporter) {\n this.options.reporters.push(reporter);\n return this;\n }\n /**\n * Removes a custom reporter from the Consola instance.\n * If no reporter is specified, all reporters will be removed.\n *\n * @param {ConsolaReporter} reporter - The reporter to remove. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n removeReporter(reporter) {\n if (reporter) {\n const i = this.options.reporters.indexOf(reporter);\n if (i !== -1) {\n return this.options.reporters.splice(i, 1);\n }\n } else {\n this.options.reporters.splice(0);\n }\n return this;\n }\n /**\n * Replaces all reporters of the Consola instance with the specified array of reporters.\n *\n * @param {ConsolaReporter[]} reporters - The new reporters to set. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n setReporters(reporters) {\n this.options.reporters = Array.isArray(reporters) ? reporters : [reporters];\n return this;\n }\n wrapAll() {\n this.wrapConsole();\n this.wrapStd();\n }\n restoreAll() {\n this.restoreConsole();\n this.restoreStd();\n }\n /**\n * Overrides console methods with Consola logging methods for consistent logging.\n */\n wrapConsole() {\n for (const type in this.options.types) {\n if (!console[\"__\" + type]) {\n console[\"__\" + type] = console[type];\n }\n console[type] = this[type].raw;\n }\n }\n /**\n * Restores the original console methods, removing Consola overrides.\n */\n restoreConsole() {\n for (const type in this.options.types) {\n if (console[\"__\" + type]) {\n console[type] = console[\"__\" + type];\n delete console[\"__\" + type];\n }\n }\n }\n /**\n * Overrides standard output and error streams to redirect them through Consola.\n */\n wrapStd() {\n this._wrapStream(this.options.stdout, \"log\");\n this._wrapStream(this.options.stderr, \"log\");\n }\n _wrapStream(stream, type) {\n if (!stream) {\n return;\n }\n if (!stream.__write) {\n stream.__write = stream.write;\n }\n stream.write = (data) => {\n this[type].raw(String(data).trim());\n };\n }\n /**\n * Restores the original standard output and error streams, removing the Consola redirection.\n */\n restoreStd() {\n this._restoreStream(this.options.stdout);\n this._restoreStream(this.options.stderr);\n }\n _restoreStream(stream) {\n if (!stream) {\n return;\n }\n if (stream.__write) {\n stream.write = stream.__write;\n delete stream.__write;\n }\n }\n /**\n * Pauses logging, queues incoming logs until resumed.\n */\n pauseLogs() {\n paused = true;\n }\n /**\n * Resumes logging, processing any queued logs.\n */\n resumeLogs() {\n paused = false;\n const _queue = queue.splice(0);\n for (const item of _queue) {\n item[0]._logFn(item[1], item[2]);\n }\n }\n /**\n * Replaces logging methods with mocks if a mock function is provided.\n *\n * @param {ConsolaOptions[\"mockFn\"]} mockFn - The function to use for mocking logging methods. See {@link ConsolaOptions[\"mockFn\"]}.\n */\n mockTypes(mockFn) {\n const _mockFn = mockFn || this.options.mockFn;\n this._mockFn = _mockFn;\n if (typeof _mockFn !== \"function\") {\n return;\n }\n for (const type in this.options.types) {\n this[type] = _mockFn(type, this.options.types[type]) || this[type];\n this[type].raw = this[type];\n }\n }\n _wrapLogFn(defaults, isRaw) {\n return (...args) => {\n if (paused) {\n queue.push([this, defaults, args, isRaw]);\n return;\n }\n return this._logFn(defaults, args, isRaw);\n };\n }\n _logFn(defaults, args, isRaw) {\n if ((defaults.level || 0) > this.level) {\n return false;\n }\n const logObj = {\n date: /* @__PURE__ */ new Date(),\n args: [],\n ...defaults,\n level: _normalizeLogLevel(defaults.level, this.options.types)\n };\n if (!isRaw && args.length === 1 && isLogObj(args[0])) {\n Object.assign(logObj, args[0]);\n } else {\n logObj.args = [...args];\n }\n if (logObj.message) {\n logObj.args.unshift(logObj.message);\n delete logObj.message;\n }\n if (logObj.additional) {\n if (!Array.isArray(logObj.additional)) {\n logObj.additional = logObj.additional.split(\"\\n\");\n }\n logObj.args.push(\"\\n\" + logObj.additional.join(\"\\n\"));\n delete logObj.additional;\n }\n logObj.type = typeof logObj.type === \"string\" ? logObj.type.toLowerCase() : \"log\";\n logObj.tag = typeof logObj.tag === \"string\" ? logObj.tag : \"\";\n const resolveLog = (newLog = false) => {\n const repeated = (this._lastLog.count || 0) - this.options.throttleMin;\n if (this._lastLog.object && repeated > 0) {\n const args2 = [...this._lastLog.object.args];\n if (repeated > 1) {\n args2.push(`(repeated ${repeated} times)`);\n }\n this._log({ ...this._lastLog.object, args: args2 });\n this._lastLog.count = 1;\n }\n if (newLog) {\n this._lastLog.object = logObj;\n this._log(logObj);\n }\n };\n clearTimeout(this._lastLog.timeout);\n const diffTime = this._lastLog.time && logObj.date ? logObj.date.getTime() - this._lastLog.time.getTime() : 0;\n this._lastLog.time = logObj.date;\n if (diffTime < this.options.throttle) {\n try {\n const serializedLog = JSON.stringify([\n logObj.type,\n logObj.tag,\n logObj.args\n ]);\n const isSameLog = this._lastLog.serialized === serializedLog;\n this._lastLog.serialized = serializedLog;\n if (isSameLog) {\n this._lastLog.count = (this._lastLog.count || 0) + 1;\n if (this._lastLog.count > this.options.throttleMin) {\n this._lastLog.timeout = setTimeout(\n resolveLog,\n this.options.throttle\n );\n return;\n }\n }\n } catch {\n }\n }\n resolveLog(true);\n }\n _log(logObj) {\n for (const reporter of this.options.reporters) {\n reporter.log(logObj, {\n options: this.options\n });\n }\n }\n}\nfunction _normalizeLogLevel(input, types = {}, defaultLevel = 3) {\n if (input === void 0) {\n return defaultLevel;\n }\n if (typeof input === \"number\") {\n return input;\n }\n if (types[input] && types[input].level !== void 0) {\n return types[input].level;\n }\n return defaultLevel;\n}\nConsola.prototype.add = Consola.prototype.addReporter;\nConsola.prototype.remove = Consola.prototype.removeReporter;\nConsola.prototype.clear = Consola.prototype.removeReporter;\nConsola.prototype.withScope = Consola.prototype.withTag;\nConsola.prototype.mock = Consola.prototype.mockTypes;\nConsola.prototype.pause = Consola.prototype.pauseLogs;\nConsola.prototype.resume = Consola.prototype.resumeLogs;\nfunction createConsola(options = {}) {\n return new Consola(options);\n}\n\nexport { Consola, LogLevels, LogTypes, createConsola };\n",
|
|
44
|
+
"import { formatWithOptions } from 'node:util';\nimport { sep } from 'node:path';\n\nfunction parseStack(stack, message) {\n const cwd = process.cwd() + sep;\n const lines = stack.split(\"\\n\").splice(message.split(\"\\n\").length).map((l) => l.trim().replace(\"file://\", \"\").replace(cwd, \"\"));\n return lines;\n}\n\nfunction writeStream(data, stream) {\n const write = stream.__write || stream.write;\n return write.call(stream, data);\n}\n\nconst bracket = (x) => x ? `[${x}]` : \"\";\nclass BasicReporter {\n formatStack(stack, message, opts) {\n const indent = \" \".repeat((opts?.errorLevel || 0) + 1);\n return indent + parseStack(stack, message).join(`\n${indent}`);\n }\n formatError(err, opts) {\n const message = err.message ?? formatWithOptions(opts, err);\n const stack = err.stack ? this.formatStack(err.stack, message, opts) : \"\";\n const level = opts?.errorLevel || 0;\n const causedPrefix = level > 0 ? `${\" \".repeat(level)}[cause]: ` : \"\";\n const causedError = err.cause ? \"\\n\\n\" + this.formatError(err.cause, { ...opts, errorLevel: level + 1 }) : \"\";\n return causedPrefix + message + \"\\n\" + stack + causedError;\n }\n formatArgs(args, opts) {\n const _args = args.map((arg) => {\n if (arg && typeof arg.stack === \"string\") {\n return this.formatError(arg, opts);\n }\n return arg;\n });\n return formatWithOptions(opts, ..._args);\n }\n formatDate(date, opts) {\n return opts.date ? date.toLocaleTimeString() : \"\";\n }\n filterAndJoin(arr) {\n return arr.filter(Boolean).join(\" \");\n }\n formatLogObj(logObj, opts) {\n const message = this.formatArgs(logObj.args, opts);\n if (logObj.type === \"box\") {\n return \"\\n\" + [\n bracket(logObj.tag),\n logObj.title && logObj.title,\n ...message.split(\"\\n\")\n ].filter(Boolean).map((l) => \" > \" + l).join(\"\\n\") + \"\\n\";\n }\n return this.filterAndJoin([\n bracket(logObj.type),\n bracket(logObj.tag),\n message\n ]);\n }\n log(logObj, ctx) {\n const line = this.formatLogObj(logObj, {\n columns: ctx.options.stdout.columns || 0,\n ...ctx.options.formatOptions\n });\n return writeStream(\n line + \"\\n\",\n logObj.level < 2 ? ctx.options.stderr || process.stderr : ctx.options.stdout || process.stdout\n );\n }\n}\n\nexport { BasicReporter as B, parseStack as p };\n",
|
|
45
|
+
"import * as tty from 'node:tty';\n\nconst {\n env = {},\n argv = [],\n platform = \"\"\n} = typeof process === \"undefined\" ? {} : process;\nconst isDisabled = \"NO_COLOR\" in env || argv.includes(\"--no-color\");\nconst isForced = \"FORCE_COLOR\" in env || argv.includes(\"--color\");\nconst isWindows = platform === \"win32\";\nconst isDumbTerminal = env.TERM === \"dumb\";\nconst isCompatibleTerminal = tty && tty.isatty && tty.isatty(1) && env.TERM && !isDumbTerminal;\nconst isCI = \"CI\" in env && (\"GITHUB_ACTIONS\" in env || \"GITLAB_CI\" in env || \"CIRCLECI\" in env);\nconst isColorSupported = !isDisabled && (isForced || isWindows && !isDumbTerminal || isCompatibleTerminal || isCI);\nfunction replaceClose(index, string, close, replace, head = string.slice(0, Math.max(0, index)) + replace, tail = string.slice(Math.max(0, index + close.length)), next = tail.indexOf(close)) {\n return head + (next < 0 ? tail : replaceClose(next, tail, close, replace));\n}\nfunction clearBleed(index, string, open, close, replace) {\n return index < 0 ? open + string + close : open + replaceClose(index, string, close, replace) + close;\n}\nfunction filterEmpty(open, close, replace = open, at = open.length + 1) {\n return (string) => string || !(string === \"\" || string === void 0) ? clearBleed(\n (\"\" + string).indexOf(close, at),\n string,\n open,\n close,\n replace\n ) : \"\";\n}\nfunction init(open, close, replace) {\n return filterEmpty(`\\x1B[${open}m`, `\\x1B[${close}m`, replace);\n}\nconst colorDefs = {\n reset: init(0, 0),\n bold: init(1, 22, \"\\x1B[22m\\x1B[1m\"),\n dim: init(2, 22, \"\\x1B[22m\\x1B[2m\"),\n italic: init(3, 23),\n underline: init(4, 24),\n inverse: init(7, 27),\n hidden: init(8, 28),\n strikethrough: init(9, 29),\n black: init(30, 39),\n red: init(31, 39),\n green: init(32, 39),\n yellow: init(33, 39),\n blue: init(34, 39),\n magenta: init(35, 39),\n cyan: init(36, 39),\n white: init(37, 39),\n gray: init(90, 39),\n bgBlack: init(40, 49),\n bgRed: init(41, 49),\n bgGreen: init(42, 49),\n bgYellow: init(43, 49),\n bgBlue: init(44, 49),\n bgMagenta: init(45, 49),\n bgCyan: init(46, 49),\n bgWhite: init(47, 49),\n blackBright: init(90, 39),\n redBright: init(91, 39),\n greenBright: init(92, 39),\n yellowBright: init(93, 39),\n blueBright: init(94, 39),\n magentaBright: init(95, 39),\n cyanBright: init(96, 39),\n whiteBright: init(97, 39),\n bgBlackBright: init(100, 49),\n bgRedBright: init(101, 49),\n bgGreenBright: init(102, 49),\n bgYellowBright: init(103, 49),\n bgBlueBright: init(104, 49),\n bgMagentaBright: init(105, 49),\n bgCyanBright: init(106, 49),\n bgWhiteBright: init(107, 49)\n};\nfunction createColors(useColor = isColorSupported) {\n return useColor ? colorDefs : Object.fromEntries(Object.keys(colorDefs).map((key) => [key, String]));\n}\nconst colors = createColors();\nfunction getColor(color, fallback = \"reset\") {\n return colors[color] || colors[fallback];\n}\nfunction colorize(color, text) {\n return getColor(color)(text);\n}\n\nconst ansiRegex = [\n String.raw`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)`,\n String.raw`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))`\n].join(\"|\");\nfunction stripAnsi(text) {\n return text.replace(new RegExp(ansiRegex, \"g\"), \"\");\n}\nfunction centerAlign(str, len, space = \" \") {\n const free = len - str.length;\n if (free <= 0) {\n return str;\n }\n const freeLeft = Math.floor(free / 2);\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < freeLeft || i >= freeLeft + str.length ? space : str[i - freeLeft];\n }\n return _str;\n}\nfunction rightAlign(str, len, space = \" \") {\n const free = len - str.length;\n if (free <= 0) {\n return str;\n }\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < free ? space : str[i - free];\n }\n return _str;\n}\nfunction leftAlign(str, len, space = \" \") {\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < str.length ? str[i] : space;\n }\n return _str;\n}\nfunction align(alignment, str, len, space = \" \") {\n switch (alignment) {\n case \"left\": {\n return leftAlign(str, len, space);\n }\n case \"right\": {\n return rightAlign(str, len, space);\n }\n case \"center\": {\n return centerAlign(str, len, space);\n }\n default: {\n return str;\n }\n }\n}\n\nconst boxStylePresets = {\n solid: {\n tl: \"\\u250C\",\n tr: \"\\u2510\",\n bl: \"\\u2514\",\n br: \"\\u2518\",\n h: \"\\u2500\",\n v: \"\\u2502\"\n },\n double: {\n tl: \"\\u2554\",\n tr: \"\\u2557\",\n bl: \"\\u255A\",\n br: \"\\u255D\",\n h: \"\\u2550\",\n v: \"\\u2551\"\n },\n doubleSingle: {\n tl: \"\\u2553\",\n tr: \"\\u2556\",\n bl: \"\\u2559\",\n br: \"\\u255C\",\n h: \"\\u2500\",\n v: \"\\u2551\"\n },\n doubleSingleRounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2500\",\n v: \"\\u2551\"\n },\n singleThick: {\n tl: \"\\u250F\",\n tr: \"\\u2513\",\n bl: \"\\u2517\",\n br: \"\\u251B\",\n h: \"\\u2501\",\n v: \"\\u2503\"\n },\n singleDouble: {\n tl: \"\\u2552\",\n tr: \"\\u2555\",\n bl: \"\\u2558\",\n br: \"\\u255B\",\n h: \"\\u2550\",\n v: \"\\u2502\"\n },\n singleDoubleRounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2550\",\n v: \"\\u2502\"\n },\n rounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2500\",\n v: \"\\u2502\"\n }\n};\nconst defaultStyle = {\n borderColor: \"white\",\n borderStyle: \"rounded\",\n valign: \"center\",\n padding: 2,\n marginLeft: 1,\n marginTop: 1,\n marginBottom: 1\n};\nfunction box(text, _opts = {}) {\n const opts = {\n ..._opts,\n style: {\n ...defaultStyle,\n ..._opts.style\n }\n };\n const textLines = text.split(\"\\n\");\n const boxLines = [];\n const _color = getColor(opts.style.borderColor);\n const borderStyle = {\n ...typeof opts.style.borderStyle === \"string\" ? boxStylePresets[opts.style.borderStyle] || boxStylePresets.solid : opts.style.borderStyle\n };\n if (_color) {\n for (const key in borderStyle) {\n borderStyle[key] = _color(\n borderStyle[key]\n );\n }\n }\n const paddingOffset = opts.style.padding % 2 === 0 ? opts.style.padding : opts.style.padding + 1;\n const height = textLines.length + paddingOffset;\n const width = Math.max(\n ...textLines.map((line) => stripAnsi(line).length),\n opts.title ? stripAnsi(opts.title).length : 0\n ) + paddingOffset;\n const widthOffset = width + paddingOffset;\n const leftSpace = opts.style.marginLeft > 0 ? \" \".repeat(opts.style.marginLeft) : \"\";\n if (opts.style.marginTop > 0) {\n boxLines.push(\"\".repeat(opts.style.marginTop));\n }\n if (opts.title) {\n const title = _color ? _color(opts.title) : opts.title;\n const left = borderStyle.h.repeat(\n Math.floor((width - stripAnsi(opts.title).length) / 2)\n );\n const right = borderStyle.h.repeat(\n width - stripAnsi(opts.title).length - stripAnsi(left).length + paddingOffset\n );\n boxLines.push(\n `${leftSpace}${borderStyle.tl}${left}${title}${right}${borderStyle.tr}`\n );\n } else {\n boxLines.push(\n `${leftSpace}${borderStyle.tl}${borderStyle.h.repeat(widthOffset)}${borderStyle.tr}`\n );\n }\n const valignOffset = opts.style.valign === \"center\" ? Math.floor((height - textLines.length) / 2) : opts.style.valign === \"top\" ? height - textLines.length - paddingOffset : height - textLines.length;\n for (let i = 0; i < height; i++) {\n if (i < valignOffset || i >= valignOffset + textLines.length) {\n boxLines.push(\n `${leftSpace}${borderStyle.v}${\" \".repeat(widthOffset)}${borderStyle.v}`\n );\n } else {\n const line = textLines[i - valignOffset];\n const left = \" \".repeat(paddingOffset);\n const right = \" \".repeat(width - stripAnsi(line).length);\n boxLines.push(\n `${leftSpace}${borderStyle.v}${left}${line}${right}${borderStyle.v}`\n );\n }\n }\n boxLines.push(\n `${leftSpace}${borderStyle.bl}${borderStyle.h.repeat(widthOffset)}${borderStyle.br}`\n );\n if (opts.style.marginBottom > 0) {\n boxLines.push(\"\".repeat(opts.style.marginBottom));\n }\n return boxLines.join(\"\\n\");\n}\n\nexport { centerAlign as a, align as b, colorize as c, box as d, colors as e, getColor as g, leftAlign as l, rightAlign as r, stripAnsi as s };\n",
|
|
46
|
+
"import 'node:util';\nimport g, { stdin, stdout } from 'node:process';\nimport f from 'node:readline';\nimport { WriteStream } from 'node:tty';\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar src;\nvar hasRequiredSrc;\n\nfunction requireSrc () {\n\tif (hasRequiredSrc) return src;\n\thasRequiredSrc = 1;\n\n\tconst ESC = '\\x1B';\n\tconst CSI = `${ESC}[`;\n\tconst beep = '\\u0007';\n\n\tconst cursor = {\n\t to(x, y) {\n\t if (!y) return `${CSI}${x + 1}G`;\n\t return `${CSI}${y + 1};${x + 1}H`;\n\t },\n\t move(x, y) {\n\t let ret = '';\n\n\t if (x < 0) ret += `${CSI}${-x}D`;\n\t else if (x > 0) ret += `${CSI}${x}C`;\n\n\t if (y < 0) ret += `${CSI}${-y}A`;\n\t else if (y > 0) ret += `${CSI}${y}B`;\n\n\t return ret;\n\t },\n\t up: (count = 1) => `${CSI}${count}A`,\n\t down: (count = 1) => `${CSI}${count}B`,\n\t forward: (count = 1) => `${CSI}${count}C`,\n\t backward: (count = 1) => `${CSI}${count}D`,\n\t nextLine: (count = 1) => `${CSI}E`.repeat(count),\n\t prevLine: (count = 1) => `${CSI}F`.repeat(count),\n\t left: `${CSI}G`,\n\t hide: `${CSI}?25l`,\n\t show: `${CSI}?25h`,\n\t save: `${ESC}7`,\n\t restore: `${ESC}8`\n\t};\n\n\tconst scroll = {\n\t up: (count = 1) => `${CSI}S`.repeat(count),\n\t down: (count = 1) => `${CSI}T`.repeat(count)\n\t};\n\n\tconst erase = {\n\t screen: `${CSI}2J`,\n\t up: (count = 1) => `${CSI}1J`.repeat(count),\n\t down: (count = 1) => `${CSI}J`.repeat(count),\n\t line: `${CSI}2K`,\n\t lineEnd: `${CSI}K`,\n\t lineStart: `${CSI}1K`,\n\t lines(count) {\n\t let clear = '';\n\t for (let i = 0; i < count; i++)\n\t clear += this.line + (i < count - 1 ? cursor.up() : '');\n\t if (count)\n\t clear += cursor.left;\n\t return clear;\n\t }\n\t};\n\n\tsrc = { cursor, scroll, erase, beep };\n\treturn src;\n}\n\nvar srcExports = requireSrc();\n\nvar picocolors = {exports: {}};\n\nvar hasRequiredPicocolors;\n\nfunction requirePicocolors () {\n\tif (hasRequiredPicocolors) return picocolors.exports;\n\thasRequiredPicocolors = 1;\n\tlet p = process || {}, argv = p.argv || [], env = p.env || {};\n\tlet isColorSupported =\n\t\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI);\n\n\tlet formatter = (open, close, replace = open) =>\n\t\tinput => {\n\t\t\tlet string = \"\" + input, index = string.indexOf(close, open.length);\n\t\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t\t};\n\n\tlet replaceClose = (string, close, replace, index) => {\n\t\tlet result = \"\", cursor = 0;\n\t\tdo {\n\t\t\tresult += string.substring(cursor, index) + replace;\n\t\t\tcursor = index + close.length;\n\t\t\tindex = string.indexOf(close, cursor);\n\t\t} while (~index)\n\t\treturn result + string.substring(cursor)\n\t};\n\n\tlet createColors = (enabled = isColorSupported) => {\n\t\tlet f = enabled ? formatter : () => String;\n\t\treturn {\n\t\t\tisColorSupported: enabled,\n\t\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t\t}\n\t};\n\n\tpicocolors.exports = createColors();\n\tpicocolors.exports.createColors = createColors;\n\treturn picocolors.exports;\n}\n\nvar picocolorsExports = /*@__PURE__*/ requirePicocolors();\nconst e = /*@__PURE__*/getDefaultExportFromCjs(picocolorsExports);\n\nfunction J({onlyFirst:t=false}={}){const F=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C))\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\"].join(\"|\");return new RegExp(F,t?void 0:\"g\")}const Q=J();function T$1(t){if(typeof t!=\"string\")throw new TypeError(`Expected a \\`string\\`, got \\`${typeof t}\\``);return t.replace(Q,\"\")}function O(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}var P$1={exports:{}};(function(t){var u={};t.exports=u,u.eastAsianWidth=function(e){var s=e.charCodeAt(0),i=e.length==2?e.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=i&&i<=57343&&(s&=1023,i&=1023,D=s<<10|i,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?\"F\":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?\"H\":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?\"W\":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?\"Na\":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?\"A\":\"N\"},u.characterLength=function(e){var s=this.eastAsianWidth(e);return s==\"F\"||s==\"W\"||s==\"A\"?2:1};function F(e){return e.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g)||[]}u.length=function(e){for(var s=F(e),i=0,D=0;D<s.length;D++)i=i+this.characterLength(s[D]);return i},u.slice=function(e,s,i){textLen=u.length(e),s=s||0,i=i||1,s<0&&(s=textLen+s),i<0&&(i=textLen+i);for(var D=\"\",C=0,o=F(e),E=0;E<o.length;E++){var a=o[E],n=u.length(a);if(C>=s-(n==2?1:0))if(C+n<=i)D+=a;else break;C+=n;}return D};})(P$1);var X=P$1.exports;const DD=O(X);var uD=function(){return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\uD83D[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3])\\uFE0F|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g};const FD=O(uD);function A$1(t,u={}){if(typeof t!=\"string\"||t.length===0||(u={ambiguousIsNarrow:true,...u},t=T$1(t),t.length===0))return 0;t=t.replace(FD(),\" \");const F=u.ambiguousIsNarrow?1:2;let e=0;for(const s of t){const i=s.codePointAt(0);if(i<=31||i>=127&&i<=159||i>=768&&i<=879)continue;switch(DD.eastAsianWidth(s)){case \"F\":case \"W\":e+=2;break;case \"A\":e+=F;break;default:e+=1;}}return e}const m=10,L$1=(t=0)=>u=>`\\x1B[${u+t}m`,N=(t=0)=>u=>`\\x1B[${38+t};5;${u}m`,I=(t=0)=>(u,F,e)=>`\\x1B[${38+t};2;${u};${F};${e}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const tD=Object.keys(r.color),eD=Object.keys(r.bgColor);[...tD,...eD];function sD(){const t=new Map;for(const[u,F]of Object.entries(r)){for(const[e,s]of Object.entries(F))r[e]={open:`\\x1B[${s[0]}m`,close:`\\x1B[${s[1]}m`},F[e]=r[e],t.set(s[0],s[1]);Object.defineProperty(r,u,{value:F,enumerable:false});}return Object.defineProperty(r,\"codes\",{value:t,enumerable:false}),r.color.close=\"\\x1B[39m\",r.bgColor.close=\"\\x1B[49m\",r.color.ansi=L$1(),r.color.ansi256=N(),r.color.ansi16m=I(),r.bgColor.ansi=L$1(m),r.bgColor.ansi256=N(m),r.bgColor.ansi16m=I(m),Object.defineProperties(r,{rgbToAnsi256:{value:(u,F,e)=>u===F&&F===e?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(F/255*5)+Math.round(e/255*5),enumerable:false},hexToRgb:{value:u=>{const F=/[a-f\\d]{6}|[a-f\\d]{3}/i.exec(u.toString(16));if(!F)return [0,0,0];let[e]=F;e.length===3&&(e=[...e].map(i=>i+i).join(\"\"));const s=Number.parseInt(e,16);return [s>>16&255,s>>8&255,s&255]},enumerable:false},hexToAnsi256:{value:u=>r.rgbToAnsi256(...r.hexToRgb(u)),enumerable:false},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let F,e,s;if(u>=232)F=((u-232)*10+8)/255,e=F,s=F;else {u-=16;const C=u%36;F=Math.floor(u/36)/5,e=Math.floor(C/6)/5,s=C%6/5;}const i=Math.max(F,e,s)*2;if(i===0)return 30;let D=30+(Math.round(s)<<2|Math.round(e)<<1|Math.round(F));return i===2&&(D+=60),D},enumerable:false},rgbToAnsi:{value:(u,F,e)=>r.ansi256ToAnsi(r.rgbToAnsi256(u,F,e)),enumerable:false},hexToAnsi:{value:u=>r.ansi256ToAnsi(r.hexToAnsi256(u)),enumerable:false}}),r}const iD=sD(),v=new Set([\"\\x1B\",\"\\x9B\"]),CD=39,w$1=\"\\x07\",W$1=\"[\",rD=\"]\",R=\"m\",y=`${rD}8;;`,V$1=t=>`${v.values().next().value}${W$1}${t}${R}`,z=t=>`${v.values().next().value}${y}${t}${w$1}`,ED=t=>t.split(\" \").map(u=>A$1(u)),_=(t,u,F)=>{const e=[...u];let s=false,i=false,D=A$1(T$1(t[t.length-1]));for(const[C,o]of e.entries()){const E=A$1(o);if(D+E<=F?t[t.length-1]+=o:(t.push(o),D=0),v.has(o)&&(s=true,i=e.slice(C+1).join(\"\").startsWith(y)),s){i?o===w$1&&(s=false,i=false):o===R&&(s=false);continue}D+=E,D===F&&C<e.length-1&&(t.push(\"\"),D=0);}!D&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop());},nD=t=>{const u=t.split(\" \");let F=u.length;for(;F>0&&!(A$1(u[F-1])>0);)F--;return F===u.length?t:u.slice(0,F).join(\" \")+u.slice(F).join(\"\")},oD=(t,u,F={})=>{if(F.trim!==false&&t.trim()===\"\")return \"\";let e=\"\",s,i;const D=ED(t);let C=[\"\"];for(const[E,a]of t.split(\" \").entries()){F.trim!==false&&(C[C.length-1]=C[C.length-1].trimStart());let n=A$1(C[C.length-1]);if(E!==0&&(n>=u&&(F.wordWrap===false||F.trim===false)&&(C.push(\"\"),n=0),(n>0||F.trim===false)&&(C[C.length-1]+=\" \",n++)),F.hard&&D[E]>u){const B=u-n,p=1+Math.floor((D[E]-B-1)/u);Math.floor((D[E]-1)/u)<p&&C.push(\"\"),_(C,a,u);continue}if(n+D[E]>u&&n>0&&D[E]>0){if(F.wordWrap===false&&n<u){_(C,a,u);continue}C.push(\"\");}if(n+D[E]>u&&F.wordWrap===false){_(C,a,u);continue}C[C.length-1]+=a;}F.trim!==false&&(C=C.map(E=>nD(E)));const o=[...C.join(`\n`)];for(const[E,a]of o.entries()){if(e+=a,v.has(a)){const{groups:B}=new RegExp(`(?:\\\\${W$1}(?<code>\\\\d+)m|\\\\${y}(?<uri>.*)${w$1})`).exec(o.slice(E).join(\"\"))||{groups:{}};if(B.code!==void 0){const p=Number.parseFloat(B.code);s=p===CD?void 0:p;}else B.uri!==void 0&&(i=B.uri.length===0?void 0:B.uri);}const n=iD.codes.get(Number(s));o[E+1]===`\n`?(i&&(e+=z(\"\")),s&&n&&(e+=V$1(n))):a===`\n`&&(s&&n&&(e+=V$1(s)),i&&(e+=z(i)));}return e};function G(t,u,F){return String(t).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(e=>oD(e,u,F)).join(`\n`)}const aD=[\"up\",\"down\",\"left\",\"right\",\"space\",\"enter\",\"cancel\"],c={actions:new Set(aD),aliases:new Map([[\"k\",\"up\"],[\"j\",\"down\"],[\"h\",\"left\"],[\"l\",\"right\"],[\"\u0003\",\"cancel\"],[\"escape\",\"cancel\"]])};function k$1(t,u){if(typeof t==\"string\")return c.aliases.get(t)===u;for(const F of t)if(F!==void 0&&k$1(F,u))return true;return false}function lD(t,u){if(t===u)return;const F=t.split(`\n`),e=u.split(`\n`),s=[];for(let i=0;i<Math.max(F.length,e.length);i++)F[i]!==e[i]&&s.push(i);return s}globalThis.process.platform.startsWith(\"win\");const S=Symbol(\"clack:cancel\");function d$1(t,u){const F=t;F.isTTY&&F.setRawMode(u);}var AD=Object.defineProperty,pD=(t,u,F)=>u in t?AD(t,u,{enumerable:true,configurable:true,writable:true,value:F}):t[u]=F,h=(t,u,F)=>(pD(t,typeof u!=\"symbol\"?u+\"\":u,F),F);class x{constructor(u,F=true){h(this,\"input\"),h(this,\"output\"),h(this,\"_abortSignal\"),h(this,\"rl\"),h(this,\"opts\"),h(this,\"_render\"),h(this,\"_track\",false),h(this,\"_prevFrame\",\"\"),h(this,\"_subscribers\",new Map),h(this,\"_cursor\",0),h(this,\"state\",\"initial\"),h(this,\"error\",\"\"),h(this,\"value\");const{input:e=stdin,output:s=stdout,render:i,signal:D,...C}=u;this.opts=C,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=F,this._abortSignal=D,this.input=e,this.output=s;}unsubscribe(){this._subscribers.clear();}setSubscriber(u,F){const e=this._subscribers.get(u)??[];e.push(F),this._subscribers.set(u,e);}on(u,F){this.setSubscriber(u,{cb:F});}once(u,F){this.setSubscriber(u,{cb:F,once:true});}emit(u,...F){const e=this._subscribers.get(u)??[],s=[];for(const i of e)i.cb(...F),i.once&&s.push(()=>e.splice(e.indexOf(i),1));for(const i of s)i();}prompt(){return new Promise((u,F)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state=\"cancel\",this.close(),u(S);this._abortSignal.addEventListener(\"abort\",()=>{this.state=\"cancel\",this.close();},{once:true});}const e=new WriteStream(0);e._write=(s,i,D)=>{this._track&&(this.value=this.rl?.line.replace(/\\t/g,\"\"),this._cursor=this.rl?.cursor??0,this.emit(\"value\",this.value)),D();},this.input.pipe(e),this.rl=f.createInterface({input:this.input,output:e,tabSize:2,prompt:\"\",escapeCodeTimeout:50}),f.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on(\"keypress\",this.onKeypress),d$1(this.input,true),this.output.on(\"resize\",this.render),this.render(),this.once(\"submit\",()=>{this.output.write(srcExports.cursor.show),this.output.off(\"resize\",this.render),d$1(this.input,false),u(this.value);}),this.once(\"cancel\",()=>{this.output.write(srcExports.cursor.show),this.output.off(\"resize\",this.render),d$1(this.input,false),u(S);});})}onKeypress(u,F){if(this.state===\"error\"&&(this.state=\"active\"),F?.name&&(!this._track&&c.aliases.has(F.name)&&this.emit(\"cursor\",c.aliases.get(F.name)),c.actions.has(F.name)&&this.emit(\"cursor\",F.name)),u&&(u.toLowerCase()===\"y\"||u.toLowerCase()===\"n\")&&this.emit(\"confirm\",u.toLowerCase()===\"y\"),u===\"\t\"&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit(\"value\",this.opts.placeholder))),u&&this.emit(\"key\",u.toLowerCase()),F?.name===\"return\"){if(this.opts.validate){const e=this.opts.validate(this.value);e&&(this.error=e instanceof Error?e.message:e,this.state=\"error\",this.rl?.write(this.value));}this.state!==\"error\"&&(this.state=\"submit\");}k$1([u,F?.name,F?.sequence],\"cancel\")&&(this.state=\"cancel\"),(this.state===\"submit\"||this.state===\"cancel\")&&this.emit(\"finalize\"),this.render(),(this.state===\"submit\"||this.state===\"cancel\")&&this.close();}close(){this.input.unpipe(),this.input.removeListener(\"keypress\",this.onKeypress),this.output.write(`\n`),d$1(this.input,false),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe();}restoreCursor(){const u=G(this._prevFrame,process.stdout.columns,{hard:true}).split(`\n`).length-1;this.output.write(srcExports.cursor.move(-999,u*-1));}render(){const u=G(this._render(this)??\"\",process.stdout.columns,{hard:true});if(u!==this._prevFrame){if(this.state===\"initial\")this.output.write(srcExports.cursor.hide);else {const F=lD(this._prevFrame,u);if(this.restoreCursor(),F&&F?.length===1){const e=F[0];this.output.write(srcExports.cursor.move(0,e)),this.output.write(srcExports.erase.lines(1));const s=u.split(`\n`);this.output.write(s[e]),this._prevFrame=u,this.output.write(srcExports.cursor.move(0,s.length-e-1));return}if(F&&F?.length>1){const e=F[0];this.output.write(srcExports.cursor.move(0,e)),this.output.write(srcExports.erase.down());const s=u.split(`\n`).slice(e);this.output.write(s.join(`\n`)),this._prevFrame=u;return}this.output.write(srcExports.erase.down());}this.output.write(u),this.state===\"initial\"&&(this.state=\"active\"),this._prevFrame=u;}}}class fD extends x{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(u){super(u,false),this.value=!!u.initialValue,this.on(\"value\",()=>{this.value=this._value;}),this.on(\"confirm\",F=>{this.output.write(srcExports.cursor.move(0,-1)),this.value=F,this.state=\"submit\",this.close();}),this.on(\"cursor\",()=>{this.value=!this.value;});}}var bD=Object.defineProperty,mD=(t,u,F)=>u in t?bD(t,u,{enumerable:true,configurable:true,writable:true,value:F}):t[u]=F,Y=(t,u,F)=>(mD(t,typeof u!=\"symbol\"?u+\"\":u,F),F);let wD=class extends x{constructor(u){super(u,false),Y(this,\"options\"),Y(this,\"cursor\",0),this.options=u.options,this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:F})=>F===u.cursorAt),0),this.on(\"key\",F=>{F===\"a\"&&this.toggleAll();}),this.on(\"cursor\",F=>{switch(F){case \"left\":case \"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case \"down\":case \"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case \"space\":this.toggleValue();break}});}get _value(){return this.options[this.cursor].value}toggleAll(){const u=this.value.length===this.options.length;this.value=u?[]:this.options.map(F=>F.value);}toggleValue(){const u=this.value.includes(this._value);this.value=u?this.value.filter(F=>F!==this._value):[...this.value,this._value];}};var SD=Object.defineProperty,$D=(t,u,F)=>u in t?SD(t,u,{enumerable:true,configurable:true,writable:true,value:F}):t[u]=F,q=(t,u,F)=>($D(t,typeof u!=\"symbol\"?u+\"\":u,F),F);class jD extends x{constructor(u){super(u,false),q(this,\"options\"),q(this,\"cursor\",0),this.options=u.options,this.cursor=this.options.findIndex(({value:F})=>F===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on(\"cursor\",F=>{switch(F){case \"left\":case \"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case \"down\":case \"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue();});}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value;}}class PD extends x{get valueWithCursor(){if(this.state===\"submit\")return this.value;if(this.cursor>=this.value.length)return `${this.value}\\u2588`;const u=this.value.slice(0,this.cursor),[F,...e$1]=this.value.slice(this.cursor);return `${u}${e.inverse(F)}${e$1.join(\"\")}`}get cursor(){return this._cursor}constructor(u){super(u),this.on(\"finalize\",()=>{this.value||(this.value=u.defaultValue);});}}\n\nfunction ce(){return g.platform!==\"win32\"?g.env.TERM!==\"linux\":!!g.env.CI||!!g.env.WT_SESSION||!!g.env.TERMINUS_SUBLIME||g.env.ConEmuTask===\"{cmd::Cmder}\"||g.env.TERM_PROGRAM===\"Terminus-Sublime\"||g.env.TERM_PROGRAM===\"vscode\"||g.env.TERM===\"xterm-256color\"||g.env.TERM===\"alacritty\"||g.env.TERMINAL_EMULATOR===\"JetBrains-JediTerm\"}const V=ce(),u=(t,n)=>V?t:n,le=u(\"❯\", \">\"),L=u(\"■\", \"x\"),W=u(\"▲\", \"x\"),C=u(\"✔\", \"√\"),o=u(\"\"),d=u(\"\"),k=u(\"\\u25CF\",\">\"),P=u(\"\\u25CB\",\" \"),A=u(\"\\u25FB\",\"[\\u2022]\"),T=u(\"\\u25FC\",\"[+]\"),F=u(\"\\u25FB\",\"[ ]\"),w=t=>{switch(t){case \"initial\":case \"active\":return e.cyan(le);case \"cancel\":return e.red(L);case \"error\":return e.yellow(W);case \"submit\":return e.green(C)}},B=t=>{const{cursor:n,options:s,style:r}=t,i=t.maxItems??Number.POSITIVE_INFINITY,a=Math.max(process.stdout.rows-4,0),c=Math.min(a,Math.max(i,5));let l=0;n>=l+c-3?l=Math.max(Math.min(n-c+3,s.length-c),0):n<l+2&&(l=Math.max(n-2,0));const $=c<s.length&&l>0,p=c<s.length&&l+c<s.length;return s.slice(l,l+c).map((M,v,x)=>{const j=v===0&&$,E=v===x.length-1&&p;return j||E?e.dim(\"...\"):r(M,v+l===n)})},he=t=>new PD({validate:t.validate,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.initialValue,render(){const n=`${e.gray(o)}\n${w(this.state)} ${t.message}\n`,s=t.placeholder?e.inverse(t.placeholder[0])+e.dim(t.placeholder.slice(1)):e.inverse(e.hidden(\"_\")),r=this.value?this.valueWithCursor:s;switch(this.state){case \"error\":return `${n.trim()}\n${e.yellow(o)} ${r}\n${e.yellow(d)} ${e.yellow(this.error)}\n`;case \"submit\":return `${n}${e.gray(o)} ${e.dim(this.value||t.placeholder)}`;case \"cancel\":return `${n}${e.gray(o)} ${e.strikethrough(e.dim(this.value??\"\"))}${this.value?.trim()?`\n${e.gray(o)}`:\"\"}`;default:return `${n}${e.cyan(o)} ${r}\n${e.cyan(d)}\n`}}}).prompt(),ye=t=>{const n=t.active??\"Yes\",s=t.inactive??\"No\";return new fD({active:n,inactive:s,initialValue:t.initialValue??true,render(){const r=`${e.gray(o)}\n${w(this.state)} ${t.message}\n`,i=this.value?n:s;switch(this.state){case \"submit\":return `${r}${e.gray(o)} ${e.dim(i)}`;case \"cancel\":return `${r}${e.gray(o)} ${e.strikethrough(e.dim(i))}\n${e.gray(o)}`;default:return `${r}${e.cyan(o)} ${this.value?`${e.green(k)} ${n}`:`${e.dim(P)} ${e.dim(n)}`} ${e.dim(\"/\")} ${this.value?`${e.dim(P)} ${e.dim(s)}`:`${e.green(k)} ${s}`}\n${e.cyan(d)}\n`}}}).prompt()},ve=t=>{const n=(s,r)=>{const i=s.label??String(s.value);switch(r){case \"selected\":return `${e.dim(i)}`;case \"active\":return `${e.green(k)} ${i} ${s.hint?e.dim(`(${s.hint})`):\"\"}`;case \"cancelled\":return `${e.strikethrough(e.dim(i))}`;default:return `${e.dim(P)} ${e.dim(i)}`}};return new jD({options:t.options,initialValue:t.initialValue,render(){const s=`${e.gray(o)}\n${w(this.state)} ${t.message}\n`;switch(this.state){case \"submit\":return `${s}${e.gray(o)} ${n(this.options[this.cursor],\"selected\")}`;case \"cancel\":return `${s}${e.gray(o)} ${n(this.options[this.cursor],\"cancelled\")}\n${e.gray(o)}`;default:return `${s}${e.cyan(o)} ${B({cursor:this.cursor,options:this.options,maxItems:t.maxItems,style:(r,i)=>n(r,i?\"active\":\"inactive\")}).join(`\n${e.cyan(o)} `)}\n${e.cyan(d)}\n`}}}).prompt()},fe=t=>{const n=(s,r)=>{const i=s.label??String(s.value);return r===\"active\"?`${e.cyan(A)} ${i} ${s.hint?e.dim(`(${s.hint})`):\"\"}`:r===\"selected\"?`${e.green(T)} ${e.dim(i)}`:r===\"cancelled\"?`${e.strikethrough(e.dim(i))}`:r===\"active-selected\"?`${e.green(T)} ${i} ${s.hint?e.dim(`(${s.hint})`):\"\"}`:r===\"submitted\"?`${e.dim(i)}`:`${e.dim(F)} ${e.dim(i)}`};return new wD({options:t.options,initialValues:t.initialValues,required:t.required??true,cursorAt:t.cursorAt,validate(s){if(this.required&&s.length===0)return `Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){const s=`${e.gray(o)}\n${w(this.state)} ${t.message}\n`,r=(i,a)=>{const c=this.value.includes(i.value);return a&&c?n(i,\"active-selected\"):c?n(i,\"selected\"):n(i,a?\"active\":\"inactive\")};switch(this.state){case \"submit\":return `${s}${e.gray(o)} ${this.options.filter(({value:i})=>this.value.includes(i)).map(i=>n(i,\"submitted\")).join(e.dim(\", \"))||e.dim(\"none\")}`;case \"cancel\":{const i=this.options.filter(({value:a})=>this.value.includes(a)).map(a=>n(a,\"cancelled\")).join(e.dim(\", \"));return `${s}${e.gray(o)} ${i.trim()?`${i}\n${e.gray(o)}`:\"\"}`}case \"error\":{const i=this.error.split(`\n`).map((a,c)=>c===0?`${e.yellow(d)} ${e.yellow(a)}`:` ${a}`).join(`\n`);return `${s+e.yellow(o)} ${B({options:this.options,cursor:this.cursor,maxItems:t.maxItems,style:r}).join(`\n${e.yellow(o)} `)}\n${i}\n`}default:return `${s}${e.cyan(o)} ${B({options:this.options,cursor:this.cursor,maxItems:t.maxItems,style:r}).join(`\n${e.cyan(o)} `)}\n${e.cyan(d)}\n`}}}).prompt()};`${e.gray(o)} `;\n\nconst kCancel = Symbol.for(\"cancel\");\nasync function prompt(message, opts = {}) {\n const handleCancel = (value) => {\n if (typeof value !== \"symbol\" || value.toString() !== \"Symbol(clack:cancel)\") {\n return value;\n }\n switch (opts.cancel) {\n case \"reject\": {\n const error = new Error(\"Prompt cancelled.\");\n error.name = \"ConsolaPromptCancelledError\";\n if (Error.captureStackTrace) {\n Error.captureStackTrace(error, prompt);\n }\n throw error;\n }\n case \"undefined\": {\n return void 0;\n }\n case \"null\": {\n return null;\n }\n case \"symbol\": {\n return kCancel;\n }\n default:\n case \"default\": {\n return opts.default ?? opts.initial;\n }\n }\n };\n if (!opts.type || opts.type === \"text\") {\n return await he({\n message,\n defaultValue: opts.default,\n placeholder: opts.placeholder,\n initialValue: opts.initial\n }).then(handleCancel);\n }\n if (opts.type === \"confirm\") {\n return await ye({\n message,\n initialValue: opts.initial\n }).then(handleCancel);\n }\n if (opts.type === \"select\") {\n return await ve({\n message,\n options: opts.options.map(\n (o) => typeof o === \"string\" ? { value: o, label: o } : o\n ),\n initialValue: opts.initial\n }).then(handleCancel);\n }\n if (opts.type === \"multiselect\") {\n return await fe({\n message,\n options: opts.options.map(\n (o) => typeof o === \"string\" ? { value: o, label: o } : o\n ),\n required: opts.required,\n initialValues: opts.initial\n }).then(handleCancel);\n }\n throw new Error(`Unknown prompt type: ${opts.type}`);\n}\n\nexport { kCancel, prompt };\n",
|
|
47
|
+
"import { createConsola as createConsola$1, LogLevels } from './core.mjs';\nexport { Consola, LogTypes } from './core.mjs';\nimport { B as BasicReporter, p as parseStack } from './shared/consola.DRwqZj3T.mjs';\nimport g$1 from 'node:process';\nimport { e as colors, d as box, s as stripAnsi$1 } from './shared/consola.DXBYu-KD.mjs';\nimport 'node:util';\nimport 'node:path';\nimport 'node:tty';\n\nconst r=Object.create(null),i=e=>globalThis.process?.env||import.meta.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?r:globalThis),o=new Proxy(r,{get(e,s){return i()[s]??r[s]},has(e,s){const E=i();return s in E||s in r},set(e,s,E){const B=i(true);return B[s]=E,true},deleteProperty(e,s){if(!s)return false;const E=i(true);return delete E[s],true},ownKeys(){const e=i(true);return Object.keys(e)}}),t=typeof process<\"u\"&&process.env&&process.env.NODE_ENV||\"\",f=[[\"APPVEYOR\"],[\"AWS_AMPLIFY\",\"AWS_APP_ID\",{ci:true}],[\"AZURE_PIPELINES\",\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\"],[\"AZURE_STATIC\",\"INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN\"],[\"APPCIRCLE\",\"AC_APPCIRCLE\"],[\"BAMBOO\",\"bamboo_planKey\"],[\"BITBUCKET\",\"BITBUCKET_COMMIT\"],[\"BITRISE\",\"BITRISE_IO\"],[\"BUDDY\",\"BUDDY_WORKSPACE_ID\"],[\"BUILDKITE\"],[\"CIRCLE\",\"CIRCLECI\"],[\"CIRRUS\",\"CIRRUS_CI\"],[\"CLOUDFLARE_PAGES\",\"CF_PAGES\",{ci:true}],[\"CODEBUILD\",\"CODEBUILD_BUILD_ARN\"],[\"CODEFRESH\",\"CF_BUILD_ID\"],[\"DRONE\"],[\"DRONE\",\"DRONE_BUILD_EVENT\"],[\"DSARI\"],[\"GITHUB_ACTIONS\"],[\"GITLAB\",\"GITLAB_CI\"],[\"GITLAB\",\"CI_MERGE_REQUEST_ID\"],[\"GOCD\",\"GO_PIPELINE_LABEL\"],[\"LAYERCI\"],[\"HUDSON\",\"HUDSON_URL\"],[\"JENKINS\",\"JENKINS_URL\"],[\"MAGNUM\"],[\"NETLIFY\"],[\"NETLIFY\",\"NETLIFY_LOCAL\",{ci:false}],[\"NEVERCODE\"],[\"RENDER\"],[\"SAIL\",\"SAILCI\"],[\"SEMAPHORE\"],[\"SCREWDRIVER\"],[\"SHIPPABLE\"],[\"SOLANO\",\"TDDIUM\"],[\"STRIDER\"],[\"TEAMCITY\",\"TEAMCITY_VERSION\"],[\"TRAVIS\"],[\"VERCEL\",\"NOW_BUILDER\"],[\"VERCEL\",\"VERCEL\",{ci:false}],[\"VERCEL\",\"VERCEL_ENV\",{ci:false}],[\"APPCENTER\",\"APPCENTER_BUILD_ID\"],[\"CODESANDBOX\",\"CODESANDBOX_SSE\",{ci:false}],[\"CODESANDBOX\",\"CODESANDBOX_HOST\",{ci:false}],[\"STACKBLITZ\"],[\"STORMKIT\"],[\"CLEAVR\"],[\"ZEABUR\"],[\"CODESPHERE\",\"CODESPHERE_APP_ID\",{ci:true}],[\"RAILWAY\",\"RAILWAY_PROJECT_ID\"],[\"RAILWAY\",\"RAILWAY_SERVICE_ID\"],[\"DENO-DEPLOY\",\"DENO_DEPLOYMENT_ID\"],[\"FIREBASE_APP_HOSTING\",\"FIREBASE_APP_HOSTING\",{ci:true}]];function b(){if(globalThis.process?.env)for(const e of f){const s=e[1]||e[0];if(globalThis.process?.env[s])return {name:e[0].toLowerCase(),...e[2]}}return globalThis.process?.env?.SHELL===\"/bin/jsh\"&&globalThis.process?.versions?.webcontainer?{name:\"stackblitz\",ci:false}:{name:\"\",ci:false}}const l=b();l.name;function n(e){return e?e!==\"false\":false}const I=globalThis.process?.platform||\"\",T=n(o.CI)||l.ci!==false,a=n(globalThis.process?.stdout&&globalThis.process?.stdout.isTTY),g=n(o.DEBUG),R=t===\"test\"||n(o.TEST);n(o.MINIMAL)||T||R||!a;const A=/^win/i.test(I);!n(o.NO_COLOR)&&(n(o.FORCE_COLOR)||(a||A)&&o.TERM!==\"dumb\"||T);const C=(globalThis.process?.versions?.node||\"\").replace(/^v/,\"\")||null;Number(C?.split(\".\")[0])||null;const y=globalThis.process||Object.create(null),_={versions:{}};new Proxy(y,{get(e,s){if(s===\"env\")return o;if(s in e)return e[s];if(s in _)return _[s]}});const c=globalThis.process?.release?.name===\"node\",O=!!globalThis.Bun||!!globalThis.process?.versions?.bun,D=!!globalThis.Deno,L=!!globalThis.fastly,S=!!globalThis.Netlify,u=!!globalThis.EdgeRuntime,N=globalThis.navigator?.userAgent===\"Cloudflare-Workers\",F=[[S,\"netlify\"],[u,\"edge-light\"],[N,\"workerd\"],[L,\"fastly\"],[D,\"deno\"],[O,\"bun\"],[c,\"node\"]];function G(){const e=F.find(s=>s[0]);if(e)return {name:e[1]}}const P=G();P?.name||\"\";\n\nfunction ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n\nconst regex = ansiRegex();\n\nfunction stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n\n// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2630 && x <= 0x2637\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x >= 0x268A && x <= 0x268F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E5\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x === 0x16FF0\n\t\t|| x === 0x16FF1\n\t\t|| x >= 0x17000 && x <= 0x187F7\n\t\t|| x >= 0x18800 && x <= 0x18CD5\n\t\t|| x >= 0x18CFF && x <= 0x18D08\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x >= 0x1D300 && x <= 0x1D356\n\t\t|| x >= 0x1D360 && x <= 0x1D376\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D7\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA89\n\t\t|| x >= 0x1FA8F && x <= 0x1FAC6\n\t\t|| x >= 0x1FACE && x <= 0x1FADC\n\t\t|| x >= 0x1FADF && x <= 0x1FAE9\n\t\t|| x >= 0x1FAF0 && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nfunction eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\nconst emojiRegex = () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE89\\uDE8F-\\uDEC2\\uDEC6\\uDECE-\\uDEDC\\uDEDF-\\uDEE9]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n\nconst segmenter = globalThis.Intl?.Segmenter ? new Intl.Segmenter() : { segment: (str) => str.split('') };\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nfunction stringWidth$1(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n\nfunction isUnicodeSupported() {\n\tconst {env} = g$1;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (g$1.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n\nconst TYPE_COLOR_MAP = {\n info: \"cyan\",\n fail: \"red\",\n success: \"green\",\n ready: \"green\",\n start: \"magenta\"\n};\nconst LEVEL_COLOR_MAP = {\n 0: \"red\",\n 1: \"yellow\"\n};\nconst unicode = isUnicodeSupported();\nconst s = (c, fallback) => unicode ? c : fallback;\nconst TYPE_ICONS = {\n error: s(\"\\u2716\", \"\\xD7\"),\n fatal: s(\"\\u2716\", \"\\xD7\"),\n ready: s(\"\\u2714\", \"\\u221A\"),\n warn: s(\"\\u26A0\", \"\\u203C\"),\n info: s(\"\\u2139\", \"i\"),\n success: s(\"\\u2714\", \"\\u221A\"),\n debug: s(\"\\u2699\", \"D\"),\n trace: s(\"\\u2192\", \"\\u2192\"),\n fail: s(\"\\u2716\", \"\\xD7\"),\n start: s(\"\\u25D0\", \"o\"),\n log: \"\"\n};\nfunction stringWidth(str) {\n const hasICU = typeof Intl === \"object\";\n if (!hasICU || !Intl.Segmenter) {\n return stripAnsi$1(str).length;\n }\n return stringWidth$1(str);\n}\nclass FancyReporter extends BasicReporter {\n formatStack(stack, message, opts) {\n const indent = \" \".repeat((opts?.errorLevel || 0) + 1);\n return `\n${indent}` + parseStack(stack, message).map(\n (line) => \" \" + line.replace(/^at +/, (m) => colors.gray(m)).replace(/\\((.+)\\)/, (_, m) => `(${colors.cyan(m)})`)\n ).join(`\n${indent}`);\n }\n formatType(logObj, isBadge, opts) {\n const typeColor = TYPE_COLOR_MAP[logObj.type] || LEVEL_COLOR_MAP[logObj.level] || \"gray\";\n if (isBadge) {\n return getBgColor(typeColor)(\n colors.black(` ${logObj.type.toUpperCase()} `)\n );\n }\n const _type = typeof TYPE_ICONS[logObj.type] === \"string\" ? TYPE_ICONS[logObj.type] : logObj.icon || logObj.type;\n return _type ? getColor(typeColor)(_type) : \"\";\n }\n formatLogObj(logObj, opts) {\n const [message, ...additional] = this.formatArgs(logObj.args, opts).split(\n \"\\n\"\n );\n if (logObj.type === \"box\") {\n return box(\n characterFormat(\n message + (additional.length > 0 ? \"\\n\" + additional.join(\"\\n\") : \"\")\n ),\n {\n title: logObj.title ? characterFormat(logObj.title) : void 0,\n style: logObj.style\n }\n );\n }\n const date = this.formatDate(logObj.date, opts);\n const coloredDate = date && colors.gray(date);\n const isBadge = logObj.badge ?? logObj.level < 2;\n const type = this.formatType(logObj, isBadge, opts);\n const tag = logObj.tag ? colors.gray(logObj.tag) : \"\";\n let line;\n const left = this.filterAndJoin([type, characterFormat(message)]);\n const right = this.filterAndJoin(opts.columns ? [tag, coloredDate] : [tag]);\n const space = (opts.columns || 0) - stringWidth(left) - stringWidth(right) - 2;\n line = space > 0 && (opts.columns || 0) >= 80 ? left + \" \".repeat(space) + right : (right ? `${colors.gray(`[${right}]`)} ` : \"\") + left;\n line += characterFormat(\n additional.length > 0 ? \"\\n\" + additional.join(\"\\n\") : \"\"\n );\n if (logObj.type === \"trace\") {\n const _err = new Error(\"Trace: \" + logObj.message);\n line += this.formatStack(_err.stack || \"\", _err.message);\n }\n return isBadge ? \"\\n\" + line + \"\\n\" : line;\n }\n}\nfunction characterFormat(str) {\n return str.replace(/`([^`]+)`/gm, (_, m) => colors.cyan(m)).replace(/\\s+_([^_]+)_\\s+/gm, (_, m) => ` ${colors.underline(m)} `);\n}\nfunction getColor(color = \"white\") {\n return colors[color] || colors.white;\n}\nfunction getBgColor(color = \"bgWhite\") {\n return colors[`bg${color[0].toUpperCase()}${color.slice(1)}`] || colors.bgWhite;\n}\n\nfunction createConsola(options = {}) {\n let level = _getDefaultLogLevel();\n if (process.env.CONSOLA_LEVEL) {\n level = Number.parseInt(process.env.CONSOLA_LEVEL) ?? level;\n }\n const consola2 = createConsola$1({\n level,\n defaults: { level },\n stdout: process.stdout,\n stderr: process.stderr,\n prompt: (...args) => import('./chunks/prompt.mjs').then((m) => m.prompt(...args)),\n reporters: options.reporters || [\n options.fancy ?? !(T || R) ? new FancyReporter() : new BasicReporter()\n ],\n ...options\n });\n return consola2;\n}\nfunction _getDefaultLogLevel() {\n if (g) {\n return LogLevels.debug;\n }\n if (R) {\n return LogLevels.warn;\n }\n return LogLevels.info;\n}\nconst consola = createConsola();\n\nexport { LogLevels, consola, createConsola, consola as default };\n",
|
|
48
|
+
"const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n",
|
|
49
|
+
"import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n",
|
|
50
|
+
"// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n",
|
|
51
|
+
"import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n",
|
|
52
|
+
"import type { consola } from \"consola\";\n\nexport async function defineCookbookCommand<Handler extends CookbookCommandHandler>(handler: Handler): Promise<Handler> {\n return handler;\n}\n\nexport type CookbookCommandHandler = (utils: {\n log: (typeof consola)[\"log\"];\n info: (typeof consola)[\"info\"];\n warn: (typeof consola)[\"warn\"];\n error: (typeof consola)[\"error\"];\n success: (typeof consola)[\"success\"];\n debug: (typeof consola)[\"debug\"];\n fatal: (typeof consola)[\"fatal\"];\n trace: (typeof consola)[\"trace\"];\n start: (typeof consola)[\"start\"];\n box: (typeof consola)[\"box\"];\n prompt: (typeof consola)[\"prompt\"];\n getScriptPath: () => string;\n getWorkspacePath: () => string;\n getParams: () => {\n command: string;\n commands: Array<string>;\n options: Record<string, string | true>;\n raw: Array<string>;\n subCommand?: string;\n };\n inputBoolean: (options: { env: string; message: string; placeholder?: string }) => Promise<boolean>;\n inputString: (options: { env: string; message: string; placeholder?: string }) => Promise<string>;\n useAIConfig: () => Promise<\n | undefined\n | {\n aiBaseUrl: string;\n aiApiKey: string;\n aiModel: string;\n aiModelDeepResearch: string;\n }\n >;\n fetchEventSource: (\n input: string | URL | globalThis.Request,\n init?: RequestInit,\n ) => AsyncIterableIterator<{\n data: any;\n event?: string;\n id?: string;\n }>;\n openProgress: (message: string) => Promise<void>;\n closeProgress: (message: string) => Promise<void>;\n selectProject: (options?: {\n withRoot?: boolean;\n projectUsed?: string;\n filter?: (project: CookbookToml[\"projects\"][0] & { value: string }) => boolean | Promise<boolean>;\n }) => Promise<CookbookToml[\"projects\"][0] & { value: any; path: string }>;\n getCookbookToml: () => Promise<CookbookToml>;\n gotoCommand: (command: Promise<{ default: (...args: any[]) => any }>) => Promise<void>;\n gotoTestCommand: () => Promise<void>;\n gotoDrizzleCommand: (command?: string, project?: string, mode?: string) => Promise<void>;\n toCamelCase: (str: string) => string;\n toPascalCase: (str: string) => string;\n toSnakeCase: (str: string) => string;\n toConstantCase: (str: string) => string;\n}) => Promise<void>;\n\nexport interface CookbookToml {\n projects: Record<\n string,\n {\n type: \"milkio\" | \"custom\";\n port: number;\n start: string;\n build: string;\n meta: Partial<{\n inspect: boolean;\n }>;\n name?: string;\n lazyRoutes?: boolean;\n typiaMode?: \"generation\" | \"bundler\";\n watcher?: Array<string>;\n autoStart?: boolean;\n autoStartDelay?: number;\n connectTestUrl?: string;\n prismaMigrateMode?: \"migrate-dev\" | \"push\";\n }\n >;\n general: {\n start: string;\n modes: Array<string>;\n packageManager: string;\n cookbookPort: number;\n };\n config: {\n [key: string]: string | number | boolean;\n };\n hash: string;\n}\n",
|
|
53
|
+
"import chalk from \"chalk\";\nimport consola from \"consola\";\n\nexport const progress = {\n rate: 0,\n timeStart: 0,\n current: 0,\n timeWaste: 0,\n time: 0,\n intervalId: undefined as Timer | undefined,\n textIntervalId: undefined as Timer | undefined,\n open(message: string) {\n progress.timeStart = Date.now();\n progress.current = 0;\n const speed = 4800;\n const intervalFrequency = 1000 / 60;\n const staticPercentage = 0.4;\n progress.timeWaste = 0;\n progress.time = 0;\n progress.rate = 0;\n consola.start(`[${getRate()}] ${message}`);\n\n progress.intervalId = setInterval(() => {\n progress.time += intervalFrequency;\n progress.current = 1 - Math.exp((-1 * progress.time) / speed);\n if (!progress.timeWaste && progress.current > staticPercentage) {\n const timeEnd = Date.now();\n progress.timeWaste = (timeEnd - progress.timeStart) / 1000;\n }\n progress.rate = Math.floor(progress.current * 1000);\n }, intervalFrequency);\n progress.textIntervalId = setInterval(() => {\n if (progress.rate < 1000) consola.start(chalk.gray(`${`[${getRate()}] `}${message}`));\n }, 334);\n },\n async close(message: string) {\n clearInterval(progress.intervalId);\n clearInterval(progress.textIntervalId);\n const p = Math.ceil(progress.current * 1000);\n for (let index = 0; index < 32; index++) {\n await Bun.sleep(1000 / 60);\n progress.rate = Math.ceil(p + ((1000 - p) / 32) * index);\n }\n progress.rate = 1000;\n\n consola.success(chalk.gray(`[100.0%] ${message}`));\n },\n};\n\nexport function getRate() {\n let rate = progress.rate++ / 10;\n if (rate > 100) rate = 100;\n return `${rate.toFixed(1)}%`;\n}\n",
|
|
54
|
+
"import net from \"node:net\";\n\nexport async function checkPort(port: number): Promise<boolean> {\n return await new Promise((resolve) => {\n const handler = (fail: boolean) => {\n clearTimeout(timer);\n resolve(!fail);\n };\n const tester = net\n .createServer()\n .once(\"error\", (err: any) => {\n if (err.code !== \"EADDRINUSE\") return handler(false);\n handler(true);\n })\n .once(\"listening\", () => {\n tester\n .once(\"close\", () => {\n handler(false);\n })\n .close();\n })\n .listen(port);\n const timer = setTimeout(() => {\n handler(true);\n tester.close();\n }, 6000);\n });\n}\n",
|
|
55
|
+
"'use strict'\n\nconst childProcess = require('child_process')\n\nfunction shellExec (cmd = '', opts = {}) {\n if (Array.isArray(cmd)) {\n cmd = cmd.join(';')\n }\n\n opts = Object.assign({ stdio: 'pipe', cwd: process.cwd() }, opts)\n\n let child\n const shell = process.platform === 'win32' ? { cmd: 'cmd', arg: '/C' } : { cmd: 'sh', arg: '-c' }\n\n try {\n child = childProcess.spawn(shell.cmd, [shell.arg, cmd], opts)\n } catch (error) {\n return Promise.reject(error)\n }\n\n return new Promise(resolve => {\n let stdout = ''\n let stderr = ''\n\n if (child.stdout) {\n child.stdout.on('data', data => {\n stdout += data\n })\n }\n\n if (child.stderr) {\n child.stderr.on('data', data => {\n stderr += data\n })\n }\n\n child.on('error', error => {\n resolve({ error, stdout, stderr, cmd })\n })\n\n child.on('close', code => {\n resolve({ stdout, stderr, cmd, code })\n })\n })\n}\n\nmodule.exports = shellExec\n",
|
|
56
|
+
"'use strict'\n\nconst sh = require('shell-exec')\n\nmodule.exports = function (port, method = 'tcp') {\n port = Number.parseInt(port)\n\n if (!port) {\n return Promise.reject(new Error('Invalid port number provided'))\n }\n\n if (process.platform === 'win32') {\n return sh('netstat -nao')\n .then(res => {\n const { stdout } = res\n if (!stdout) return res\n\n const lines = stdout.split('\\n')\n // The second white-space delimited column of netstat output is the local port,\n // which is the only port we care about.\n // The regex here will match only the local port column of the output\n const lineWithLocalPortRegEx = new RegExp(`^ *${method.toUpperCase()} *[^ ]*:${port}`, 'gm')\n const linesWithLocalPort = lines.filter(line => line.match(lineWithLocalPortRegEx))\n\n const pids = linesWithLocalPort.reduce((acc, line) => {\n const match = line.match(/(\\d*)\\w*(\\n|$)/gm)\n return match && match[0] && !acc.includes(match[0]) ? acc.concat(match[0]) : acc\n }, [])\n\n return sh(`TaskKill /F /PID ${pids.join(' /PID ')}`)\n })\n }\n\n return sh('lsof -i -P')\n .then(res => {\n const { stdout } = res\n if (!stdout) return res\n const lines = stdout.split('\\n')\n const existProccess = lines.filter((line) => line.match(new RegExp(`:*${port}`))).length > 0\n if (!existProccess) return Promise.reject(new Error('No process running on port'))\n\n return sh(\n `lsof -i ${method === 'udp' ? 'udp' : 'tcp'}:${port} | grep ${method === 'udp' ? 'UDP' : 'LISTEN'} | awk '{print $2}' | xargs kill -9`\n )\n })\n}\n",
|
|
57
|
+
"import kill from 'kill-port'\n\nexport async function killPort(port: number): Promise<void> {\n await kill(port, 'tcp')\n}\n",
|
|
58
|
+
"export function calcHash(buffer: Buffer | string) {\n return Bun.hash.xxHash3(buffer).toString(36);\n}\n",
|
|
59
|
+
"import consola from \"consola\";\nimport { join } from \"node:path\";\nimport { exit, cwd, env } from \"node:process\";\nimport { existsSync } from \"node:fs\";\nimport type { progress } from \"../progress\";\nimport { checkPort } from \"../utils/check-port\";\nimport { killPort } from \"../utils/kill-port\";\nimport type { CookbookOptions } from \"./cookbook-dto-types\";\nimport { calcHash } from \"./calc-hash\";\n\nexport async function getCookbookToml(cookbookToml?: string, p?: typeof progress): Promise<CookbookOptions> {\n let options: any;\n if (cookbookToml) {\n const cookbookTomlHash = calcHash(cookbookToml);\n options = Bun.TOML.parse(cookbookToml);\n options.hash = cookbookTomlHash;\n } else {\n const cookbookToml = Bun.file(join(cwd(), \"cookbook.toml\"));\n if (!(await cookbookToml.exists())) {\n consola.error(`The \"cookbook.toml\" file does not exist in the current directory: ${join(cwd())}`);\n exit(0);\n }\n const cookbookTomlText = await cookbookToml.text();\n const cookbookTomlHash = calcHash(cookbookTomlText);\n options = Bun.TOML.parse(cookbookTomlText);\n options.hash = cookbookTomlHash;\n }\n for (const projectName in options.projects) {\n const project = options.projects[projectName];\n if (!existsSync(join(cwd(), \"projects\", projectName, \"package.json\"))) {\n consola.error(`This project \"${projectName}\" does not exist (directory does not exist or there is no package.json), if the project has been deleted, please edit your \"cookbook.toml\" and delete [projects.${projectName}].`);\n exit(0);\n }\n if (project.drizzle) {\n for (const key in project.prisma) {\n const prisma = project.prisma[key];\n if (!prisma.mode) {\n consola.error(`This project \"${projectName}\" has a prisma configuration, but the \"mode\" is not specified.`);\n exit(0);\n }\n if (!prisma.migrateDatabaseUrl) {\n consola.error(`This project \"${projectName}\" has a prisma configuration, but the \"migrateDatabaseUrl\" is not specified.`);\n exit(0);\n }\n if (!prisma.migrateMode) {\n consola.error(`This project \"${projectName}\" has a prisma configuration, but the \"migrateMode\" is not specified.`);\n exit(0);\n }\n if (prisma.migrateMode !== \"migrate\" && prisma.migrateMode !== \"push\") {\n consola.error(`This project \"${projectName}\" has a prisma configuration, but the \"migrateMode\" is not specified as \"migrate\" or \"push\".`);\n exit(0);\n }\n }\n }\n }\n if (existsSync(join(env.HOME || env.USERPROFILE || \"/\", \"cookbook.toml\"))) {\n const homeCookbookToml = Bun.file(join(env.HOME || env.USERPROFILE || \"/\", \"cookbook.toml\"));\n const homeOptions: any = Bun.TOML.parse(await homeCookbookToml.text());\n if (homeOptions.config) {\n if (!options.config) options.config = {};\n for (const config in homeOptions.config) {\n if (!options.config?.[config]) options.config[config] = homeOptions.config[config];\n }\n }\n }\n\n if (!(await checkPort(options.general.cookbookPort))) {\n if (p) p.close(\"\");\n consola.info(`Port number ${options.general.cookbookPort} is already occupied. You may have started Cookbook.`);\n const confirm = await consola.prompt(\"Do you want to try to kill the process that is using the port number?\", {\n type: \"confirm\",\n });\n if (!confirm) exit(0);\n if (confirm) {\n try {\n await killPort(options.general.cookbookPort);\n await Bun.sleep(768);\n } catch (error) { }\n if (!(await checkPort(options.general.cookbookPort))) {\n consola.error(\"Attempted to kill the process occupying the port number, but this appears to be ineffective.\");\n await exit(0);\n }\n if (p) p.close(\"\");\n }\n }\n\n if (!options.general.packageManager) {\n consola.error(`Please specify \"packageManager\" in [general] of ${join(cwd(), \"cookbook.toml\")}, such as \"npm\", \"pnpm\", or \"bun\".`);\n exit(1);\n }\n\n return options;\n}\n",
|
|
60
|
+
"import chalk from \"chalk\";\n\nexport function asciis() {\n return [\n ` ` + ` ${chalk.hex(\"00AEF1\")(`_`)}${chalk.hex(\"00AEE4\")(`_`)} ` + ` ${chalk.hex(\"00AED6\")(`_`)}${chalk.hex(\"00AEC9\")(`_`)} ${chalk.hex(\"00AEBB\")(`_`)} ${chalk.hex(\"00AEAE\")(`_`)} ${chalk.hex(\"00AEA1\")(`_`)} ` + ` ` + ` ` + ` ${chalk.hex(\"00AE93\")(`_`)}`,\n ` ${chalk.hex(\"00AEF4\")(`|`)} ` +\n ` ${chalk.hex(\"00AEE9\")(`\\\\`)}${chalk.hex(\"00AEDF\")(`/`)} ` +\n ` ${chalk.hex(\"00AED4\")(`(`)}${chalk.hex(\"00AEC9\")(`_`)}${chalk.hex(\"00AEBF\")(`)`)} ${chalk.hex(\"00AEB4\")(`|`)} ${chalk.hex(\"00AEAA\")(`|`)} ${chalk.hex(\"00AE9F\")(`_`)}${chalk.hex(\"00AE94\")(`(`)}${chalk.hex(\"00AE8A\")(`_`)}${chalk.hex(\"00AE7F\")(`)`)} ${chalk.hex(\"00AE74\")(`_`)}${chalk.hex(\"00AE6A\")(\n `_`,\n )}${chalk.hex(\"00AE5F\")(`_`)}`,\n ` ${chalk.hex(\"00AEF4\")(`|`)} ${chalk.hex(\"00AEEA\")(`|`)}${chalk.hex(\"00AEE0\")(`\\\\`)}${chalk.hex(\"00AED6\")(`/`)}${chalk.hex(\"00AECC\")(`|`)} ${chalk.hex(\"00AEC1\")(`|`)} ${chalk.hex(\"00AEB7\")(`|`)} ${chalk.hex(\"00AEAD\")(`|`)} ${chalk.hex(\"00AEA3\")(\n `|`,\n )}${chalk.hex(\"00AE99\")(`/`)} ${chalk.hex(\"00AE8E\")(`/`)} ${chalk.hex(\"00AE84\")(`|`)}${chalk.hex(\"00AE7A\")(`/`)} ${chalk.hex(\"00AE70\")(`_`)} ${chalk.hex(\"00AE66\")(`\\\\`)}`,\n ` ${chalk.hex(\"00AEF5\")(`|`)} ${chalk.hex(\"00AEEB\")(`|`)} ` +\n ` ${chalk.hex(\"00AEE1\")(`|`)} ${chalk.hex(\"00AED7\")(`|`)} ${chalk.hex(\"00AECD\")(`|`)} ${chalk.hex(\"00AEC4\")(`|`)} ` +\n ` ` +\n ` ${chalk.hex(\"00AEBA\")(`<`)}${chalk.hex(\"00AEB0\")(`|`)} ${chalk.hex(\"00AEA6\")(`|`)} ${chalk.hex(\"00AE9C\")(`(`)}${chalk.hex(\"00AE93\")(`_`)}${chalk.hex(\"00AE89\")(`)`)}${chalk.hex(\"00AE1E\")(`丨`)}`,\n ` ${chalk.hex(\"00AEF4\")(`|`)}${chalk.hex(\"00AEEA\")(`_`)}${chalk.hex(\"00AEE0\")(`|`)} ` +\n ` ${chalk.hex(\"00AED6\")(`|`)}${chalk.hex(\"00AECC\")(`_`)}${chalk.hex(\"00AEC1\")(`|`)}${chalk.hex(\"00AEB7\")(`_`)}${chalk.hex(\"00AEAD\")(`|`)}${chalk.hex(\"00AEA3\")(`_`)}${chalk.hex(\"00AE99\")(`|`)}${chalk.hex(\"00AE8E\")(`_`)}${chalk.hex(\"00AE84\")(`|`)}${chalk.hex(\"00AE7A\")(`\\\\`)}${chalk.hex(\"00AE70\")(`_`)}${chalk.hex(\n \"00AE66\",\n )(`\\\\`)}${chalk.hex(\"00AE5B\")(`_`)}${chalk.hex(\"00AEA6\")(`|`)}${chalk.hex(\"00AE47\")(`\\\\`)}${chalk.hex(\"00AE3D\")(`_`)}${chalk.hex(\"00AE33\")(`_`)}${chalk.hex(\"00AE28\")(`_`)}${chalk.hex(\"00AE1E\")(`/`)}`,\n ];\n}\n",
|
|
61
|
+
"/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n",
|
|
62
|
+
"import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n",
|
|
63
|
+
"import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n",
|
|
64
|
+
"import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n",
|
|
65
|
+
"/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n",
|
|
66
|
+
"import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n",
|
|
67
|
+
"/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n",
|
|
68
|
+
"import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n",
|
|
69
|
+
"import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n",
|
|
70
|
+
"import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n",
|
|
71
|
+
"/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n",
|
|
72
|
+
"import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n",
|
|
73
|
+
"/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n",
|
|
74
|
+
"import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n",
|
|
75
|
+
"import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n",
|
|
76
|
+
"import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n",
|
|
77
|
+
"/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n",
|
|
78
|
+
"import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n",
|
|
79
|
+
"import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n",
|
|
80
|
+
"import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n",
|
|
81
|
+
"import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n",
|
|
82
|
+
"/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n",
|
|
83
|
+
"/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n",
|
|
84
|
+
"import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n",
|
|
85
|
+
"import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n",
|
|
86
|
+
"import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n",
|
|
87
|
+
"import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n",
|
|
88
|
+
"import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n",
|
|
89
|
+
"import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n",
|
|
90
|
+
"import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n",
|
|
91
|
+
"import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n",
|
|
92
|
+
"/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n",
|
|
93
|
+
"import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n",
|
|
94
|
+
"import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n",
|
|
95
|
+
"import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n",
|
|
96
|
+
"import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n",
|
|
97
|
+
"import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n",
|
|
98
|
+
"import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n",
|
|
99
|
+
"/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n",
|
|
100
|
+
"/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n",
|
|
101
|
+
"import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n",
|
|
102
|
+
"/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n",
|
|
103
|
+
"/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n",
|
|
104
|
+
"/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n",
|
|
105
|
+
"import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n",
|
|
106
|
+
"import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n",
|
|
107
|
+
"/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n",
|
|
108
|
+
"/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n",
|
|
109
|
+
"import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n",
|
|
110
|
+
"/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n",
|
|
111
|
+
"/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n",
|
|
112
|
+
"import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n",
|
|
113
|
+
"import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n",
|
|
114
|
+
"import baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nexport default uniqWith;\n",
|
|
115
|
+
"/**\n * @license\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"es\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nexport { default as add } from './add.js';\nexport { default as after } from './after.js';\nexport { default as ary } from './ary.js';\nexport { default as assign } from './assign.js';\nexport { default as assignIn } from './assignIn.js';\nexport { default as assignInWith } from './assignInWith.js';\nexport { default as assignWith } from './assignWith.js';\nexport { default as at } from './at.js';\nexport { default as attempt } from './attempt.js';\nexport { default as before } from './before.js';\nexport { default as bind } from './bind.js';\nexport { default as bindAll } from './bindAll.js';\nexport { default as bindKey } from './bindKey.js';\nexport { default as camelCase } from './camelCase.js';\nexport { default as capitalize } from './capitalize.js';\nexport { default as castArray } from './castArray.js';\nexport { default as ceil } from './ceil.js';\nexport { default as chain } from './chain.js';\nexport { default as chunk } from './chunk.js';\nexport { default as clamp } from './clamp.js';\nexport { default as clone } from './clone.js';\nexport { default as cloneDeep } from './cloneDeep.js';\nexport { default as cloneDeepWith } from './cloneDeepWith.js';\nexport { default as cloneWith } from './cloneWith.js';\nexport { default as commit } from './commit.js';\nexport { default as compact } from './compact.js';\nexport { default as concat } from './concat.js';\nexport { default as cond } from './cond.js';\nexport { default as conforms } from './conforms.js';\nexport { default as conformsTo } from './conformsTo.js';\nexport { default as constant } from './constant.js';\nexport { default as countBy } from './countBy.js';\nexport { default as create } from './create.js';\nexport { default as curry } from './curry.js';\nexport { default as curryRight } from './curryRight.js';\nexport { default as debounce } from './debounce.js';\nexport { default as deburr } from './deburr.js';\nexport { default as defaultTo } from './defaultTo.js';\nexport { default as defaults } from './defaults.js';\nexport { default as defaultsDeep } from './defaultsDeep.js';\nexport { default as defer } from './defer.js';\nexport { default as delay } from './delay.js';\nexport { default as difference } from './difference.js';\nexport { default as differenceBy } from './differenceBy.js';\nexport { default as differenceWith } from './differenceWith.js';\nexport { default as divide } from './divide.js';\nexport { default as drop } from './drop.js';\nexport { default as dropRight } from './dropRight.js';\nexport { default as dropRightWhile } from './dropRightWhile.js';\nexport { default as dropWhile } from './dropWhile.js';\nexport { default as each } from './each.js';\nexport { default as eachRight } from './eachRight.js';\nexport { default as endsWith } from './endsWith.js';\nexport { default as entries } from './entries.js';\nexport { default as entriesIn } from './entriesIn.js';\nexport { default as eq } from './eq.js';\nexport { default as escape } from './escape.js';\nexport { default as escapeRegExp } from './escapeRegExp.js';\nexport { default as every } from './every.js';\nexport { default as extend } from './extend.js';\nexport { default as extendWith } from './extendWith.js';\nexport { default as fill } from './fill.js';\nexport { default as filter } from './filter.js';\nexport { default as find } from './find.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findKey } from './findKey.js';\nexport { default as findLast } from './findLast.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as findLastKey } from './findLastKey.js';\nexport { default as first } from './first.js';\nexport { default as flatMap } from './flatMap.js';\nexport { default as flatMapDeep } from './flatMapDeep.js';\nexport { default as flatMapDepth } from './flatMapDepth.js';\nexport { default as flatten } from './flatten.js';\nexport { default as flattenDeep } from './flattenDeep.js';\nexport { default as flattenDepth } from './flattenDepth.js';\nexport { default as flip } from './flip.js';\nexport { default as floor } from './floor.js';\nexport { default as flow } from './flow.js';\nexport { default as flowRight } from './flowRight.js';\nexport { default as forEach } from './forEach.js';\nexport { default as forEachRight } from './forEachRight.js';\nexport { default as forIn } from './forIn.js';\nexport { default as forInRight } from './forInRight.js';\nexport { default as forOwn } from './forOwn.js';\nexport { default as forOwnRight } from './forOwnRight.js';\nexport { default as fromPairs } from './fromPairs.js';\nexport { default as functions } from './functions.js';\nexport { default as functionsIn } from './functionsIn.js';\nexport { default as get } from './get.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as gt } from './gt.js';\nexport { default as gte } from './gte.js';\nexport { default as has } from './has.js';\nexport { default as hasIn } from './hasIn.js';\nexport { default as head } from './head.js';\nexport { default as identity } from './identity.js';\nexport { default as inRange } from './inRange.js';\nexport { default as includes } from './includes.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as initial } from './initial.js';\nexport { default as intersection } from './intersection.js';\nexport { default as intersectionBy } from './intersectionBy.js';\nexport { default as intersectionWith } from './intersectionWith.js';\nexport { default as invert } from './invert.js';\nexport { default as invertBy } from './invertBy.js';\nexport { default as invoke } from './invoke.js';\nexport { default as invokeMap } from './invokeMap.js';\nexport { default as isArguments } from './isArguments.js';\nexport { default as isArray } from './isArray.js';\nexport { default as isArrayBuffer } from './isArrayBuffer.js';\nexport { default as isArrayLike } from './isArrayLike.js';\nexport { default as isArrayLikeObject } from './isArrayLikeObject.js';\nexport { default as isBoolean } from './isBoolean.js';\nexport { default as isBuffer } from './isBuffer.js';\nexport { default as isDate } from './isDate.js';\nexport { default as isElement } from './isElement.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isEqual } from './isEqual.js';\nexport { default as isEqualWith } from './isEqualWith.js';\nexport { default as isError } from './isError.js';\nexport { default as isFinite } from './isFinite.js';\nexport { default as isFunction } from './isFunction.js';\nexport { default as isInteger } from './isInteger.js';\nexport { default as isLength } from './isLength.js';\nexport { default as isMap } from './isMap.js';\nexport { default as isMatch } from './isMatch.js';\nexport { default as isMatchWith } from './isMatchWith.js';\nexport { default as isNaN } from './isNaN.js';\nexport { default as isNative } from './isNative.js';\nexport { default as isNil } from './isNil.js';\nexport { default as isNull } from './isNull.js';\nexport { default as isNumber } from './isNumber.js';\nexport { default as isObject } from './isObject.js';\nexport { default as isObjectLike } from './isObjectLike.js';\nexport { default as isPlainObject } from './isPlainObject.js';\nexport { default as isRegExp } from './isRegExp.js';\nexport { default as isSafeInteger } from './isSafeInteger.js';\nexport { default as isSet } from './isSet.js';\nexport { default as isString } from './isString.js';\nexport { default as isSymbol } from './isSymbol.js';\nexport { default as isTypedArray } from './isTypedArray.js';\nexport { default as isUndefined } from './isUndefined.js';\nexport { default as isWeakMap } from './isWeakMap.js';\nexport { default as isWeakSet } from './isWeakSet.js';\nexport { default as iteratee } from './iteratee.js';\nexport { default as join } from './join.js';\nexport { default as kebabCase } from './kebabCase.js';\nexport { default as keyBy } from './keyBy.js';\nexport { default as keys } from './keys.js';\nexport { default as keysIn } from './keysIn.js';\nexport { default as last } from './last.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as lodash } from './wrapperLodash.js';\nexport { default as lowerCase } from './lowerCase.js';\nexport { default as lowerFirst } from './lowerFirst.js';\nexport { default as lt } from './lt.js';\nexport { default as lte } from './lte.js';\nexport { default as map } from './map.js';\nexport { default as mapKeys } from './mapKeys.js';\nexport { default as mapValues } from './mapValues.js';\nexport { default as matches } from './matches.js';\nexport { default as matchesProperty } from './matchesProperty.js';\nexport { default as max } from './max.js';\nexport { default as maxBy } from './maxBy.js';\nexport { default as mean } from './mean.js';\nexport { default as meanBy } from './meanBy.js';\nexport { default as memoize } from './memoize.js';\nexport { default as merge } from './merge.js';\nexport { default as mergeWith } from './mergeWith.js';\nexport { default as method } from './method.js';\nexport { default as methodOf } from './methodOf.js';\nexport { default as min } from './min.js';\nexport { default as minBy } from './minBy.js';\nexport { default as mixin } from './mixin.js';\nexport { default as multiply } from './multiply.js';\nexport { default as negate } from './negate.js';\nexport { default as next } from './next.js';\nexport { default as noop } from './noop.js';\nexport { default as now } from './now.js';\nexport { default as nth } from './nth.js';\nexport { default as nthArg } from './nthArg.js';\nexport { default as omit } from './omit.js';\nexport { default as omitBy } from './omitBy.js';\nexport { default as once } from './once.js';\nexport { default as orderBy } from './orderBy.js';\nexport { default as over } from './over.js';\nexport { default as overArgs } from './overArgs.js';\nexport { default as overEvery } from './overEvery.js';\nexport { default as overSome } from './overSome.js';\nexport { default as pad } from './pad.js';\nexport { default as padEnd } from './padEnd.js';\nexport { default as padStart } from './padStart.js';\nexport { default as parseInt } from './parseInt.js';\nexport { default as partial } from './partial.js';\nexport { default as partialRight } from './partialRight.js';\nexport { default as partition } from './partition.js';\nexport { default as pick } from './pick.js';\nexport { default as pickBy } from './pickBy.js';\nexport { default as plant } from './plant.js';\nexport { default as property } from './property.js';\nexport { default as propertyOf } from './propertyOf.js';\nexport { default as pull } from './pull.js';\nexport { default as pullAll } from './pullAll.js';\nexport { default as pullAllBy } from './pullAllBy.js';\nexport { default as pullAllWith } from './pullAllWith.js';\nexport { default as pullAt } from './pullAt.js';\nexport { default as random } from './random.js';\nexport { default as range } from './range.js';\nexport { default as rangeRight } from './rangeRight.js';\nexport { default as rearg } from './rearg.js';\nexport { default as reduce } from './reduce.js';\nexport { default as reduceRight } from './reduceRight.js';\nexport { default as reject } from './reject.js';\nexport { default as remove } from './remove.js';\nexport { default as repeat } from './repeat.js';\nexport { default as replace } from './replace.js';\nexport { default as rest } from './rest.js';\nexport { default as result } from './result.js';\nexport { default as reverse } from './reverse.js';\nexport { default as round } from './round.js';\nexport { default as sample } from './sample.js';\nexport { default as sampleSize } from './sampleSize.js';\nexport { default as set } from './set.js';\nexport { default as setWith } from './setWith.js';\nexport { default as shuffle } from './shuffle.js';\nexport { default as size } from './size.js';\nexport { default as slice } from './slice.js';\nexport { default as snakeCase } from './snakeCase.js';\nexport { default as some } from './some.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as sortedIndex } from './sortedIndex.js';\nexport { default as sortedIndexBy } from './sortedIndexBy.js';\nexport { default as sortedIndexOf } from './sortedIndexOf.js';\nexport { default as sortedLastIndex } from './sortedLastIndex.js';\nexport { default as sortedLastIndexBy } from './sortedLastIndexBy.js';\nexport { default as sortedLastIndexOf } from './sortedLastIndexOf.js';\nexport { default as sortedUniq } from './sortedUniq.js';\nexport { default as sortedUniqBy } from './sortedUniqBy.js';\nexport { default as split } from './split.js';\nexport { default as spread } from './spread.js';\nexport { default as startCase } from './startCase.js';\nexport { default as startsWith } from './startsWith.js';\nexport { default as stubArray } from './stubArray.js';\nexport { default as stubFalse } from './stubFalse.js';\nexport { default as stubObject } from './stubObject.js';\nexport { default as stubString } from './stubString.js';\nexport { default as stubTrue } from './stubTrue.js';\nexport { default as subtract } from './subtract.js';\nexport { default as sum } from './sum.js';\nexport { default as sumBy } from './sumBy.js';\nexport { default as tail } from './tail.js';\nexport { default as take } from './take.js';\nexport { default as takeRight } from './takeRight.js';\nexport { default as takeRightWhile } from './takeRightWhile.js';\nexport { default as takeWhile } from './takeWhile.js';\nexport { default as tap } from './tap.js';\nexport { default as template } from './template.js';\nexport { default as templateSettings } from './templateSettings.js';\nexport { default as throttle } from './throttle.js';\nexport { default as thru } from './thru.js';\nexport { default as times } from './times.js';\nexport { default as toArray } from './toArray.js';\nexport { default as toFinite } from './toFinite.js';\nexport { default as toInteger } from './toInteger.js';\nexport { default as toIterator } from './toIterator.js';\nexport { default as toJSON } from './toJSON.js';\nexport { default as toLength } from './toLength.js';\nexport { default as toLower } from './toLower.js';\nexport { default as toNumber } from './toNumber.js';\nexport { default as toPairs } from './toPairs.js';\nexport { default as toPairsIn } from './toPairsIn.js';\nexport { default as toPath } from './toPath.js';\nexport { default as toPlainObject } from './toPlainObject.js';\nexport { default as toSafeInteger } from './toSafeInteger.js';\nexport { default as toString } from './toString.js';\nexport { default as toUpper } from './toUpper.js';\nexport { default as transform } from './transform.js';\nexport { default as trim } from './trim.js';\nexport { default as trimEnd } from './trimEnd.js';\nexport { default as trimStart } from './trimStart.js';\nexport { default as truncate } from './truncate.js';\nexport { default as unary } from './unary.js';\nexport { default as unescape } from './unescape.js';\nexport { default as union } from './union.js';\nexport { default as unionBy } from './unionBy.js';\nexport { default as unionWith } from './unionWith.js';\nexport { default as uniq } from './uniq.js';\nexport { default as uniqBy } from './uniqBy.js';\nexport { default as uniqWith } from './uniqWith.js';\nexport { default as uniqueId } from './uniqueId.js';\nexport { default as unset } from './unset.js';\nexport { default as unzip } from './unzip.js';\nexport { default as unzipWith } from './unzipWith.js';\nexport { default as update } from './update.js';\nexport { default as updateWith } from './updateWith.js';\nexport { default as upperCase } from './upperCase.js';\nexport { default as upperFirst } from './upperFirst.js';\nexport { default as value } from './value.js';\nexport { default as valueOf } from './valueOf.js';\nexport { default as values } from './values.js';\nexport { default as valuesIn } from './valuesIn.js';\nexport { default as without } from './without.js';\nexport { default as words } from './words.js';\nexport { default as wrap } from './wrap.js';\nexport { default as wrapperAt } from './wrapperAt.js';\nexport { default as wrapperChain } from './wrapperChain.js';\nexport { default as wrapperCommit } from './commit.js';\nexport { default as wrapperLodash } from './wrapperLodash.js';\nexport { default as wrapperNext } from './next.js';\nexport { default as wrapperPlant } from './plant.js';\nexport { default as wrapperReverse } from './wrapperReverse.js';\nexport { default as wrapperToIterator } from './toIterator.js';\nexport { default as wrapperValue } from './wrapperValue.js';\nexport { default as xor } from './xor.js';\nexport { default as xorBy } from './xorBy.js';\nexport { default as xorWith } from './xorWith.js';\nexport { default as zip } from './zip.js';\nexport { default as zipObject } from './zipObject.js';\nexport { default as zipObjectDeep } from './zipObjectDeep.js';\nexport { default as zipWith } from './zipWith.js';\nexport { default } from './lodash.default.js';\n",
|
|
116
|
+
"import { env } from \"bun\";\nimport consola from \"consola\";\nimport type { CookbookOptions } from \"./cookbook-dto-types\";\nimport chalk from \"chalk\";\nimport { asciis } from \"./asciis\";\nimport { uniqWith } from \"lodash-es\";\nimport { exit } from \"node:process\";\nimport { search } from \"@inquirer/prompts\";\nimport type { Params } from \"..\";\n\nexport async function selectMode(options: CookbookOptions, params?: Params) {\n if (\n !options?.general?.modes ||\n options.general.modes.length === 0 ||\n options.general.modes.includes(\"test\") === false\n ) {\n consola.warn(\n \"The 'general->modes' is not configured. Edit your cookbook.toml file and add at least one mode, with 'test' being mandatory.\",\n );\n process.exit(1);\n }\n\n if (params?.subCommand) {\n let mode: string | undefined = undefined;\n if (options.general.modes.includes(params.subCommand)) mode = params.subCommand;\n for (const currMode of options.general.modes) {\n if (currMode.startsWith(params.subCommand)) {\n mode = currMode;\n break;\n }\n }\n if (!mode) {\n consola.error(\n `The mode '${params.subCommand}' is not configured. Edit your cookbook.toml file and add it to the 'general->modes' array.`,\n );\n process.exit(1);\n }\n return mode;\n }\n\n if (env?.COOKBOOK_MODE || env?.MODE) {\n const mode = `${env?.COOKBOOK_MODE || env?.MODE}`;\n if (mode) {\n if (options.general.modes.includes(mode) === false) {\n consola.warn(\n `The mode '${mode}' is not configured. Edit your cookbook.toml file and add it to the 'general->modes' array.`,\n );\n process.exit(1);\n }\n consola.info(`Mode: ${mode}`);\n return mode;\n }\n }\n\n console.log(asciis().join(\"\\n\"));\n console.log(\"\");\n consola.start(\n chalk.hex(\"#E6E7E9\")(\"The configurations used by milkio vary under different modes.\"),\n );\n consola.start(\n chalk.hex(\"#E6E7E9\")(\n \"If the MODE environment variable is set, it will skip the mode selection dialog.\",\n ),\n );\n\n const items: Array<{ value: string }> = [];\n const cancel: any = {};\n cancel.value = options.general.modes.at(0);\n\n for (const itemName in options.general.modes) {\n const item = options.general.modes[itemName];\n items.push({ value: item });\n }\n\n const selected = await search({\n message: \"Select a mode:\",\n source: async (input) => {\n if (!input) return items;\n const filtered = items.filter((item) =>\n containsCharsInOrder(input.toLowerCase(), item.value.toLowerCase()),\n );\n\n return uniqWith(filtered, (a, b) => a.value === b.value).sort((a, b) => {\n const scoreA = calculateScore(input, a.value);\n const scoreB = calculateScore(input, b.value);\n if (scoreB.maxContiguous !== scoreA.maxContiguous) {\n return scoreB.maxContiguous - scoreA.maxContiguous;\n }\n return scoreA.firstMatchIndex - scoreB.firstMatchIndex;\n });\n },\n });\n\n if (selected === \"<cancel>\") {\n consola.success(\"Cookbook cancelled\");\n exit(0);\n }\n\n if (!selected) {\n consola.success(\"Cookbook cancelled\");\n exit(0);\n }\n return selected;\n}\n\nconst containsCharsInOrder = (input: string, target: string): boolean => {\n let inputIndex = 0;\n for (const char of target) {\n if (char === input[inputIndex]) {\n inputIndex++;\n if (inputIndex === input.length) break;\n }\n }\n return inputIndex === input.length;\n};\nconst calculateScore = (input: string, target: string) => {\n let maxContiguous = 0;\n let currentContiguous = 0;\n let firstMatchIndex = -1;\n\n let inputIndex = 0;\n for (let i = 0; i < target.length; i++) {\n if (target[i] === input[inputIndex]) {\n if (firstMatchIndex === -1) firstMatchIndex = i;\n currentContiguous++;\n inputIndex++;\n maxContiguous = Math.max(maxContiguous, currentContiguous);\n } else {\n currentContiguous = 0;\n }\n }\n\n return { maxContiguous, firstMatchIndex };\n};\n",
|
|
117
|
+
"import net from \"node:net\";\nimport dgram from \"node:dgram\";\nimport { once } from \"node:events\";\n\nconst MIN_PORT = 32767;\nconst MAX_PORT = 65535;\n\nexport async function getRandomPort(): Promise<number> {\n const attemptedPorts = new Set<number>();\n\n while (true) {\n const port = Math.floor(Math.random() * (MAX_PORT - MIN_PORT + 1)) + MIN_PORT;\n\n if (attemptedPorts.has(port)) continue;\n attemptedPorts.add(port);\n\n if (await isPortAvailable(port)) {\n return port;\n }\n }\n}\n\nasync function isPortAvailable(port: number): Promise<boolean> {\n const tcpServer = net.createServer();\n tcpServer.unref();\n\n try {\n tcpServer.listen(port);\n await once(tcpServer, \"listening\");\n return await checkUDP(port);\n } catch (err: any) {\n if (err.code === \"EADDRINUSE\") return false;\n return await checkUDP(port);\n } finally {\n tcpServer.close();\n }\n}\n\nasync function checkUDP(port: number): Promise<boolean> {\n const udpSocket = dgram.createSocket(\"udp4\");\n udpSocket.unref();\n\n try {\n udpSocket.bind(port);\n await once(udpSocket, \"listening\");\n return true;\n } catch (err: any) {\n return err.code !== \"EADDRINUSE\";\n } finally {\n try {\n udpSocket.close();\n } catch {}\n }\n}\n",
|
|
118
|
+
"import type { CookbookOptions } from \"../utils/cookbook-dto-types\";\n\nexport type CookbookWatcherExtensionProject = CookbookOptions[\"projects\"][keyof CookbookOptions[\"projects\"]];\n\nexport type CookbookWatcherFile = {\n /**\n * Path relative to the project root directory, starting with the directory name rather than a leading `/`. Path separators must always be `/` regardless of the operating system.\n */\n path: string;\n /**\n * The parts of the path, e.g. `foo/bar/baz.ts` with parts `foo`, `bar`, `baz`. The first part is always the directory name of the project root directory. The last part is always the file name. The middle parts are the directory names in between.\n */\n parts: Array<string>;\n /**\n * The file name, e.g. `foo/bar/baz.ts` with file name `baz.ts`.\n */\n fileName: string;\n /**\n * Variable names that can be safely used in import statements, for example: `module$foo$indexTaction`\n */\n importName: string;\n /**\n * Angular-style file types, e.g. `foo.bar.ts` with type `bar`, `foo.ts` with type null.\n */\n type: string | null;\n /**\n * The project root path, it is an absolute path and its delimiter is consistent with the system. For example, on Windows, it uses `\\\\` instead of `/`. You can use `fs.join(file.projectFsPath, file.path)` to construct the actual absolute path of a file.\n */\n projectFsPath: string;\n /**\n * If true, it means this file itself may not have been altered, but dependencies it belongs to have been modified. Typically, in such cases, you need to rerun certain steps, such as typia generation.\n */\n dependencyChanged: boolean;\n};\n\nexport function defineWatcherExtension<\n T extends {\n async: boolean;\n filter: (file: CookbookWatcherFile) => boolean;\n setup?: (root: string, mode: string, options: CookbookOptions, project: CookbookWatcherExtensionProject, changeFiles: Array<CookbookWatcherFile>, allFiles: Array<CookbookWatcherFile>) => Promise<void>;\n declares?: (root: string, mode: string, options: CookbookOptions, project: CookbookWatcherExtensionProject, changeFiles: Array<CookbookWatcherFile>, allFiles: Array<CookbookWatcherFile>) => Promise<[string, string, string]>;\n },\n>(extension: T): T {\n return extension;\n}\n",
|
|
119
|
+
"import { join } from \"node:path\";\nimport { defineWatcherExtension } from \"../extensions\";\n\nexport const configWatcherExtension = defineWatcherExtension({\n async: true,\n filter: (file) => {\n return file.type === \"config\";\n },\n setup: async (root, mode, options, project, changeFiles, allFiles) => {\n const writePath = join(root, \".milkio\", \"config-schema.ts\");\n\n let typescriptImports = \"// config-schema\";\n let typescriptExports = `const mode = \"${mode}\";`;\n typescriptExports += \"\\n\\nexport const configSchema = { get: async () => {\\n return { mode,\";\n\n for await (const file of allFiles) {\n if (file.fileName !== `${mode}.config.ts` && file.fileName !== \"common.config.ts\") continue;\n typescriptImports += `\\nimport ${file.importName} from \"../app/${file.path}\";`;\n typescriptExports += `\\n // @ts-ignore\\n ...(await ${file.importName}(mode)),`;\n }\n typescriptExports += \"\\n }\\n}}\";\n const typescript = `${typescriptImports}\\n\\n${typescriptExports}`;\n\n await Bun.write(writePath, typescript);\n },\n declares: async (root, mode, options, project, changeFiles, allFiles) => {\n let header = \"\";\n let types = \"\";\n const content = \"\";\n\n header += `\\nimport type { configSchema } from \"./config-schema.ts\";`;\n types += \"\\n configSchema: typeof configSchema,\";\n\n return [header, types, content];\n },\n});\n",
|
|
120
|
+
"import { join } from \"node:path\";\nimport type { CookbookOptions } from \"../../utils/cookbook-dto-types\";\n\nexport async function nodeHandler(project: CookbookOptions[\"projects\"][\"key\"], milkioDirPath: string) {\n await Bun.write(\n join(milkioDirPath, \"run.ts\"),\n `#!/usr/bin/env node\nimport * as http from \"node:http\";\nimport { createRequestListener } from \"@mjackson/node-fetch-server\";\nimport { create } from \"../index.ts\";\nimport { env } from \"node:process\";\n\nasync function bootstrap() {\n const world = await create({\n port: ${project.port},\n develop: Boolean(env.COOKBOOK_BASE_URL),\n fetchEnv: (key: string) => env[key] ?? undefined,\n });\n\n function handler(request: Request) {\n return world.listener.fetch({\n request,\n env,\n envMode: env.COOKBOOK_MODE ?? \"test\",\n });\n }\n\n const server = http.createServer(createRequestListener(handler));\n server.listen(world.listener.port);\n}\n\nvoid bootstrap();`,\n );\n}\n",
|
|
121
|
+
"import { join } from \"node:path\";\nimport type { CookbookOptions } from \"../../utils/cookbook-dto-types\";\n\nexport async function denoHandler(project: CookbookOptions[\"projects\"][\"key\"], milkioDirPath: string) {\n await Bun.write(\n join(milkioDirPath, \"run.ts\"),\n `#!/usr/bin/env deno\nimport { create } from \"../index.ts\";\n\nasync function bootstrap() {\n const world = await create({\n port: ${project.port},\n develop: Boolean(Deno.env.get(\"COOKBOOK_BASE_URL\")),\n fetchEnv: (key: string) => Deno.env.get(key) ?? undefined,\n });\n Deno.serve({ port: world.listener.port }, async (request) => {\n return world.listener.fetch({\n request,\n env: Deno.env.toObject(),\n envMode: Deno.env.get(\"COOKBOOK_MODE\") ?? \"test\",\n });\n });\n}\n\nvoid bootstrap();`,\n );\n}\n",
|
|
122
|
+
"import { join } from \"node:path\";\nimport type { CookbookOptions } from \"../../utils/cookbook-dto-types\";\n\nexport async function bunHandler(project: CookbookOptions[\"projects\"][\"key\"], milkioDirPath: string) {\n await Bun.write(\n join(milkioDirPath, \"run.ts\"),\n `#!/usr/bin/env bun\nimport { create } from \"../index.ts\";\nimport { env } from \"bun\";\n\nasync function bootstrap() {\n const world = await create({\n port: ${project.port},\n develop: Boolean(env.COOKBOOK_BASE_URL),\n fetchEnv: (key: string) => env[key] ?? undefined,\n });\n Bun.serve({\n port: world.listener.port,\n async fetch(request) {\n return world.listener.fetch({\n request,\n env,\n envMode: env.COOKBOOK_MODE ?? \"test\",\n });\n },\n });\n}\n\nvoid bootstrap();`,\n );\n}\n",
|
|
123
|
+
"import { nodeHandler } from \"./node\";\nimport { denoHandler } from \"./deno\";\nimport { bunHandler } from \"./bun\";\nimport type { CookbookOptions } from \"../../utils/cookbook-dto-types\";\n\nexport async function generateRunTs(project: CookbookOptions[\"projects\"][\"key\"], milkioDirPath: string) {\n if (project.runtime === \"deno\") return await denoHandler(project, milkioDirPath);\n if (project.runtime === \"bun\") return await bunHandler(project, milkioDirPath);\n await nodeHandler(project, milkioDirPath);\n}\n",
|
|
124
|
+
"'use strict'\n\nexports.fromCallback = function (fn) {\n return Object.defineProperty(function (...args) {\n if (typeof args[args.length - 1] === 'function') fn.apply(this, args)\n else {\n return new Promise((resolve, reject) => {\n args.push((err, res) => (err != null) ? reject(err) : resolve(res))\n fn.apply(this, args)\n })\n }\n }, 'name', { value: fn.name })\n}\n\nexports.fromPromise = function (fn) {\n return Object.defineProperty(function (...args) {\n const cb = args[args.length - 1]\n if (typeof cb !== 'function') return fn.apply(this, args)\n else {\n args.pop()\n fn.apply(this, args).then(r => cb(null, r), cb)\n }\n }, 'name', { value: fn.name })\n}\n",
|
|
125
|
+
"var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n",
|
|
126
|
+
"var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n",
|
|
127
|
+
"'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n",
|
|
128
|
+
"var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n",
|
|
129
|
+
"'use strict'\n// This is adapted from https://github.com/normalize/mz\n// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\n\nconst api = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'close',\n 'copyFile',\n 'cp',\n 'fchmod',\n 'fchown',\n 'fdatasync',\n 'fstat',\n 'fsync',\n 'ftruncate',\n 'futimes',\n 'glob',\n 'lchmod',\n 'lchown',\n 'lutimes',\n 'link',\n 'lstat',\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir',\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm',\n 'rmdir',\n 'stat',\n 'statfs',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile'\n].filter(key => {\n // Some commands are not available on some systems. Ex:\n // fs.cp was added in Node.js v16.7.0\n // fs.statfs was added in Node v19.6.0, v18.15.0\n // fs.glob was added in Node.js v22.0.0\n // fs.lchown is not available on at least some Linux\n return typeof fs[key] === 'function'\n})\n\n// Export cloned fs:\nObject.assign(exports, fs)\n\n// Universalify async methods:\napi.forEach(method => {\n exports[method] = u(fs[method])\n})\n\n// We differ from mz/fs in that we still ship the old, broken, fs.exists()\n// since we are a drop-in replacement for the native module\nexports.exists = function (filename, callback) {\n if (typeof callback === 'function') {\n return fs.exists(filename, callback)\n }\n return new Promise(resolve => {\n return fs.exists(filename, resolve)\n })\n}\n\n// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args\n\nexports.read = function (fd, buffer, offset, length, position, callback) {\n if (typeof callback === 'function') {\n return fs.read(fd, buffer, offset, length, position, callback)\n }\n return new Promise((resolve, reject) => {\n fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffer })\n })\n })\n}\n\n// Function signature can be\n// fs.write(fd, buffer[, offset[, length[, position]]], callback)\n// OR\n// fs.write(fd, string[, position[, encoding]], callback)\n// We need to handle both cases, so we use ...args\nexports.write = function (fd, buffer, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.write(fd, buffer, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffer })\n })\n })\n}\n\n// Function signature is\n// s.readv(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.readv = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.readv(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffers })\n })\n })\n}\n\n// Function signature is\n// s.writev(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.writev = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.writev(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffers })\n })\n })\n}\n\n// fs.realpath.native sometimes not available if fs is monkey-patched\nif (typeof fs.realpath.native === 'function') {\n exports.realpath.native = u(fs.realpath.native)\n} else {\n process.emitWarning(\n 'fs.realpath.native is not a function. Is fs being monkey-patched?',\n 'Warning', 'fs-extra-WARN0003'\n )\n}\n",
|
|
130
|
+
"// Adapted from https://github.com/sindresorhus/make-dir\n// Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n// 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:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// 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.\n'use strict'\nconst path = require('path')\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nmodule.exports.checkPath = function checkPath (pth) {\n if (process.platform === 'win32') {\n const pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''))\n\n if (pathHasInvalidWinCharacters) {\n const error = new Error(`Path contains invalid characters: ${pth}`)\n error.code = 'EINVAL'\n throw error\n }\n }\n}\n",
|
|
131
|
+
"'use strict'\nconst fs = require('../fs')\nconst { checkPath } = require('./utils')\n\nconst getMode = options => {\n const defaults = { mode: 0o777 }\n if (typeof options === 'number') return options\n return ({ ...defaults, ...options }).mode\n}\n\nmodule.exports.makeDir = async (dir, options) => {\n checkPath(dir)\n\n return fs.mkdir(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n\nmodule.exports.makeDirSync = (dir, options) => {\n checkPath(dir)\n\n return fs.mkdirSync(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n",
|
|
132
|
+
"'use strict'\nconst u = require('universalify').fromPromise\nconst { makeDir: _makeDir, makeDirSync } = require('./make-dir')\nconst makeDir = u(_makeDir)\n\nmodule.exports = {\n mkdirs: makeDir,\n mkdirsSync: makeDirSync,\n // alias\n mkdirp: makeDir,\n mkdirpSync: makeDirSync,\n ensureDir: makeDir,\n ensureDirSync: makeDirSync\n}\n",
|
|
133
|
+
"'use strict'\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\n\nfunction pathExists (path) {\n return fs.access(path).then(() => true).catch(() => false)\n}\n\nmodule.exports = {\n pathExists: u(pathExists),\n pathExistsSync: fs.existsSync\n}\n",
|
|
134
|
+
"'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function utimesMillis (path, atime, mtime) {\n // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)\n const fd = await fs.open(path, 'r+')\n\n let closeErr = null\n\n try {\n await fs.futimes(fd, atime, mtime)\n } finally {\n try {\n await fs.close(fd)\n } catch (e) {\n closeErr = e\n }\n }\n\n if (closeErr) {\n throw closeErr\n }\n}\n\nfunction utimesMillisSync (path, atime, mtime) {\n const fd = fs.openSync(path, 'r+')\n fs.futimesSync(fd, atime, mtime)\n return fs.closeSync(fd)\n}\n\nmodule.exports = {\n utimesMillis: u(utimesMillis),\n utimesMillisSync\n}\n",
|
|
135
|
+
"'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst u = require('universalify').fromPromise\n\nfunction getStats (src, dest, opts) {\n const statFunc = opts.dereference\n ? (file) => fs.stat(file, { bigint: true })\n : (file) => fs.lstat(file, { bigint: true })\n return Promise.all([\n statFunc(src),\n statFunc(dest).catch(err => {\n if (err.code === 'ENOENT') return null\n throw err\n })\n ]).then(([srcStat, destStat]) => ({ srcStat, destStat }))\n}\n\nfunction getStatsSync (src, dest, opts) {\n let destStat\n const statFunc = opts.dereference\n ? (file) => fs.statSync(file, { bigint: true })\n : (file) => fs.lstatSync(file, { bigint: true })\n const srcStat = statFunc(src)\n try {\n destStat = statFunc(dest)\n } catch (err) {\n if (err.code === 'ENOENT') return { srcStat, destStat: null }\n throw err\n }\n return { srcStat, destStat }\n}\n\nasync function checkPaths (src, dest, funcName, opts) {\n const { srcStat, destStat } = await getStats(src, dest, opts)\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return { srcStat, destStat }\n}\n\nfunction checkPathsSync (src, dest, funcName, opts) {\n const { srcStat, destStat } = getStatsSync(src, dest, opts)\n\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return { srcStat, destStat }\n}\n\n// recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nasync function checkParentPaths (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n\n let destStat\n try {\n destStat = await fs.stat(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return checkParentPaths(src, srcStat, destParent, funcName)\n}\n\nfunction checkParentPathsSync (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n let destStat\n try {\n destStat = fs.statSync(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return checkParentPathsSync(src, srcStat, destParent, funcName)\n}\n\nfunction areIdentical (srcStat, destStat) {\n return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev\n}\n\n// return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n const srcArr = path.resolve(src).split(path.sep).filter(i => i)\n const destArr = path.resolve(dest).split(path.sep).filter(i => i)\n return srcArr.every((cur, i) => destArr[i] === cur)\n}\n\nfunction errMsg (src, dest, funcName) {\n return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`\n}\n\nmodule.exports = {\n // checkPaths\n checkPaths: u(checkPaths),\n checkPathsSync,\n // checkParent\n checkParentPaths: u(checkParentPaths),\n checkParentPathsSync,\n // Misc\n isSrcSubdir,\n areIdentical\n}\n",
|
|
136
|
+
"'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { mkdirs } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { utimesMillis } = require('../util/utimes')\nconst stat = require('../util/stat')\n\nasync function copy (src, dest, opts = {}) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0001'\n )\n }\n\n const { srcStat, destStat } = await stat.checkPaths(src, dest, 'copy', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'copy')\n\n const include = await runFilter(src, dest, opts)\n\n if (!include) return\n\n // check if the parent of dest exists, and create it if it doesn't exist\n const destParent = path.dirname(dest)\n const dirExists = await pathExists(destParent)\n if (!dirExists) {\n await mkdirs(destParent)\n }\n\n await getStatsAndPerformCopy(destStat, src, dest, opts)\n}\n\nasync function runFilter (src, dest, opts) {\n if (!opts.filter) return true\n return opts.filter(src, dest)\n}\n\nasync function getStatsAndPerformCopy (destStat, src, dest, opts) {\n const statFn = opts.dereference ? fs.stat : fs.lstat\n const srcStat = await statFn(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n\n if (\n srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()\n ) return onFile(srcStat, destStat, src, dest, opts)\n\n if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nasync function onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n\n if (opts.overwrite) {\n await fs.unlink(dest)\n return copyFile(srcStat, src, dest, opts)\n }\n if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nasync function copyFile (srcStat, src, dest, opts) {\n await fs.copyFile(src, dest)\n if (opts.preserveTimestamps) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcStat.mode)) {\n await makeFileWritable(dest, srcStat.mode)\n }\n\n // Set timestamps and mode correspondingly\n\n // Note that The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = await fs.stat(src)\n await utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n }\n\n return fs.chmod(dest, srcStat.mode)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return fs.chmod(dest, srcMode | 0o200)\n}\n\nasync function onDir (srcStat, destStat, src, dest, opts) {\n // the dest directory might not exist, create it\n if (!destStat) {\n await fs.mkdir(dest)\n }\n\n const promises = []\n\n // loop through the files in the current directory to copy everything\n for await (const item of await fs.opendir(src)) {\n const srcItem = path.join(src, item.name)\n const destItem = path.join(dest, item.name)\n\n promises.push(\n runFilter(srcItem, destItem, opts).then(include => {\n if (include) {\n // only copy the item if it matches the filter function\n return stat.checkPaths(srcItem, destItem, 'copy', opts).then(({ destStat }) => {\n // If the item is a copyable file, `getStatsAndPerformCopy` will copy it\n // If the item is a directory, `getStatsAndPerformCopy` will call `onDir` recursively\n return getStatsAndPerformCopy(destStat, srcItem, destItem, opts)\n })\n }\n })\n )\n }\n\n await Promise.all(promises)\n\n if (!destStat) {\n await fs.chmod(dest, srcStat.mode)\n }\n}\n\nasync function onLink (destStat, src, dest, opts) {\n let resolvedSrc = await fs.readlink(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n if (!destStat) {\n return fs.symlink(resolvedSrc, dest)\n }\n\n let resolvedDest = null\n try {\n resolvedDest = await fs.readlink(dest)\n } catch (e) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (e.code === 'EINVAL' || e.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest)\n throw e\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // do not copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n\n // copy the link\n await fs.unlink(dest)\n return fs.symlink(resolvedSrc, dest)\n}\n\nmodule.exports = copy\n",
|
|
137
|
+
"'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdirsSync = require('../mkdirs').mkdirsSync\nconst utimesMillisSync = require('../util/utimes').utimesMillisSync\nconst stat = require('../util/stat')\n\nfunction copySync (src, dest, opts) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts = opts || {}\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0002'\n )\n }\n\n const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'copy')\n if (opts.filter && !opts.filter(src, dest)) return\n const destParent = path.dirname(dest)\n if (!fs.existsSync(destParent)) mkdirsSync(destParent)\n return getStats(destStat, src, dest, opts)\n}\n\nfunction getStats (destStat, src, dest, opts) {\n const statSync = opts.dereference ? fs.statSync : fs.lstatSync\n const srcStat = statSync(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n else if (srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)\n else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n return mayCopyFile(srcStat, src, dest, opts)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts) {\n if (opts.overwrite) {\n fs.unlinkSync(dest)\n return copyFile(srcStat, src, dest, opts)\n } else if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nfunction copyFile (srcStat, src, dest, opts) {\n fs.copyFileSync(src, dest)\n if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest)\n return setDestMode(dest, srcStat.mode)\n}\n\nfunction handleTimestamps (srcMode, src, dest) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode)\n return setDestTimestamps(src, dest)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return setDestMode(dest, srcMode | 0o200)\n}\n\nfunction setDestMode (dest, srcMode) {\n return fs.chmodSync(dest, srcMode)\n}\n\nfunction setDestTimestamps (src, dest) {\n // The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = fs.statSync(src)\n return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)\n return copyDir(src, dest, opts)\n}\n\nfunction mkDirAndCopy (srcMode, src, dest, opts) {\n fs.mkdirSync(dest)\n copyDir(src, dest, opts)\n return setDestMode(dest, srcMode)\n}\n\nfunction copyDir (src, dest, opts) {\n const dir = fs.opendirSync(src)\n\n try {\n let dirent\n\n while ((dirent = dir.readSync()) !== null) {\n copyDirItem(dirent.name, src, dest, opts)\n }\n } finally {\n dir.closeSync()\n }\n}\n\nfunction copyDirItem (item, src, dest, opts) {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n if (opts.filter && !opts.filter(srcItem, destItem)) return\n const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts)\n return getStats(destStat, srcItem, destItem, opts)\n}\n\nfunction onLink (destStat, src, dest, opts) {\n let resolvedSrc = fs.readlinkSync(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n\n if (!destStat) {\n return fs.symlinkSync(resolvedSrc, dest)\n } else {\n let resolvedDest\n try {\n resolvedDest = fs.readlinkSync(dest)\n } catch (err) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)\n throw err\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // prevent copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n return copyLink(resolvedSrc, dest)\n }\n}\n\nfunction copyLink (resolvedSrc, dest) {\n fs.unlinkSync(dest)\n return fs.symlinkSync(resolvedSrc, dest)\n}\n\nmodule.exports = copySync\n",
|
|
138
|
+
"'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n copy: u(require('./copy')),\n copySync: require('./copy-sync')\n}\n",
|
|
139
|
+
"'use strict'\n\nconst fs = require('graceful-fs')\nconst u = require('universalify').fromCallback\n\nfunction remove (path, callback) {\n fs.rm(path, { recursive: true, force: true }, callback)\n}\n\nfunction removeSync (path) {\n fs.rmSync(path, { recursive: true, force: true })\n}\n\nmodule.exports = {\n remove: u(remove),\n removeSync\n}\n",
|
|
140
|
+
"'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst remove = require('../remove')\n\nconst emptyDir = u(async function emptyDir (dir) {\n let items\n try {\n items = await fs.readdir(dir)\n } catch {\n return mkdir.mkdirs(dir)\n }\n\n return Promise.all(items.map(item => remove.remove(path.join(dir, item))))\n})\n\nfunction emptyDirSync (dir) {\n let items\n try {\n items = fs.readdirSync(dir)\n } catch {\n return mkdir.mkdirsSync(dir)\n }\n\n items.forEach(item => {\n item = path.join(dir, item)\n remove.removeSync(item)\n })\n}\n\nmodule.exports = {\n emptyDirSync,\n emptydirSync: emptyDirSync,\n emptyDir,\n emptydir: emptyDir\n}\n",
|
|
141
|
+
"'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\n\nasync function createFile (file) {\n let stats\n try {\n stats = await fs.stat(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n\n let dirStats = null\n try {\n dirStats = await fs.stat(dir)\n } catch (err) {\n // if the directory doesn't exist, make it\n if (err.code === 'ENOENT') {\n await mkdir.mkdirs(dir)\n await fs.writeFile(file, '')\n return\n } else {\n throw err\n }\n }\n\n if (dirStats.isDirectory()) {\n await fs.writeFile(file, '')\n } else {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n await fs.readdir(dir)\n }\n}\n\nfunction createFileSync (file) {\n let stats\n try {\n stats = fs.statSync(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n try {\n if (!fs.statSync(dir).isDirectory()) {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n fs.readdirSync(dir)\n }\n } catch (err) {\n // If the stat call above failed because the directory doesn't exist, create it\n if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir)\n else throw err\n }\n\n fs.writeFileSync(file, '')\n}\n\nmodule.exports = {\n createFile: u(createFile),\n createFileSync\n}\n",
|
|
142
|
+
"'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { areIdentical } = require('../util/stat')\n\nasync function createLink (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = await fs.lstat(dstpath)\n } catch {\n // ignore error\n }\n\n let srcStat\n try {\n srcStat = await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n if (dstStat && areIdentical(srcStat, dstStat)) return\n\n const dir = path.dirname(dstpath)\n\n const dirExists = await pathExists(dir)\n\n if (!dirExists) {\n await mkdir.mkdirs(dir)\n }\n\n await fs.link(srcpath, dstpath)\n}\n\nfunction createLinkSync (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = fs.lstatSync(dstpath)\n } catch {}\n\n try {\n const srcStat = fs.lstatSync(srcpath)\n if (dstStat && areIdentical(srcStat, dstStat)) return\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n const dir = path.dirname(dstpath)\n const dirExists = fs.existsSync(dir)\n if (dirExists) return fs.linkSync(srcpath, dstpath)\n mkdir.mkdirsSync(dir)\n\n return fs.linkSync(srcpath, dstpath)\n}\n\nmodule.exports = {\n createLink: u(createLink),\n createLinkSync\n}\n",
|
|
143
|
+
"'use strict'\n\nconst path = require('path')\nconst fs = require('../fs')\nconst { pathExists } = require('../path-exists')\n\nconst u = require('universalify').fromPromise\n\n/**\n * Function that returns two types of paths, one relative to symlink, and one\n * relative to the current working directory. Checks if path is absolute or\n * relative. If the path is relative, this function checks if the path is\n * relative to symlink or relative to current working directory. This is an\n * initiative to find a smarter `srcpath` to supply when building symlinks.\n * This allows you to determine which path to use out of one of three possible\n * types of source paths. The first is an absolute path. This is detected by\n * `path.isAbsolute()`. When an absolute path is provided, it is checked to\n * see if it exists. If it does it's used, if not an error is returned\n * (callback)/ thrown (sync). The other two options for `srcpath` are a\n * relative url. By default Node's `fs.symlink` works by creating a symlink\n * using `dstpath` and expects the `srcpath` to be relative to the newly\n * created symlink. If you provide a `srcpath` that does not exist on the file\n * system it results in a broken symlink. To minimize this, the function\n * checks to see if the 'relative to symlink' source file exists, and if it\n * does it will use it. If it does not, it checks if there's a file that\n * exists that is relative to the current working directory, if does its used.\n * This preserves the expectations of the original fs.symlink spec and adds\n * the ability to pass in `relative to current working direcotry` paths.\n */\n\nasync function symlinkPaths (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n\n const exists = await pathExists(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nfunction symlinkPathsSync (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n const exists = fs.existsSync(srcpath)\n if (!exists) throw new Error('absolute srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n const exists = fs.existsSync(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n const srcExists = fs.existsSync(srcpath)\n if (!srcExists) throw new Error('relative srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nmodule.exports = {\n symlinkPaths: u(symlinkPaths),\n symlinkPathsSync\n}\n",
|
|
144
|
+
"'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function symlinkType (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = await fs.lstat(srcpath)\n } catch {\n return 'file'\n }\n\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nfunction symlinkTypeSync (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = fs.lstatSync(srcpath)\n } catch {\n return 'file'\n }\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nmodule.exports = {\n symlinkType: u(symlinkType),\n symlinkTypeSync\n}\n",
|
|
145
|
+
"'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\n\nconst { mkdirs, mkdirsSync } = require('../mkdirs')\n\nconst { symlinkPaths, symlinkPathsSync } = require('./symlink-paths')\nconst { symlinkType, symlinkTypeSync } = require('./symlink-type')\n\nconst { pathExists } = require('../path-exists')\n\nconst { areIdentical } = require('../util/stat')\n\nasync function createSymlink (srcpath, dstpath, type) {\n let stats\n try {\n stats = await fs.lstat(dstpath)\n } catch { }\n\n if (stats && stats.isSymbolicLink()) {\n const [srcStat, dstStat] = await Promise.all([\n fs.stat(srcpath),\n fs.stat(dstpath)\n ])\n\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = await symlinkPaths(srcpath, dstpath)\n srcpath = relative.toDst\n const toType = await symlinkType(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n\n if (!(await pathExists(dir))) {\n await mkdirs(dir)\n }\n\n return fs.symlink(srcpath, dstpath, toType)\n}\n\nfunction createSymlinkSync (srcpath, dstpath, type) {\n let stats\n try {\n stats = fs.lstatSync(dstpath)\n } catch { }\n if (stats && stats.isSymbolicLink()) {\n const srcStat = fs.statSync(srcpath)\n const dstStat = fs.statSync(dstpath)\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = symlinkPathsSync(srcpath, dstpath)\n srcpath = relative.toDst\n type = symlinkTypeSync(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n const exists = fs.existsSync(dir)\n if (exists) return fs.symlinkSync(srcpath, dstpath, type)\n mkdirsSync(dir)\n return fs.symlinkSync(srcpath, dstpath, type)\n}\n\nmodule.exports = {\n createSymlink: u(createSymlink),\n createSymlinkSync\n}\n",
|
|
146
|
+
"'use strict'\n\nconst { createFile, createFileSync } = require('./file')\nconst { createLink, createLinkSync } = require('./link')\nconst { createSymlink, createSymlinkSync } = require('./symlink')\n\nmodule.exports = {\n // file\n createFile,\n createFileSync,\n ensureFile: createFile,\n ensureFileSync: createFileSync,\n // link\n createLink,\n createLinkSync,\n ensureLink: createLink,\n ensureLinkSync: createLinkSync,\n // symlink\n createSymlink,\n createSymlinkSync,\n ensureSymlink: createSymlink,\n ensureSymlinkSync: createSymlinkSync\n}\n",
|
|
147
|
+
"function stringify (obj, { EOL = '\\n', finalEOL = true, replacer = null, spaces } = {}) {\n const EOF = finalEOL ? EOL : ''\n const str = JSON.stringify(obj, replacer, spaces)\n\n return str.replace(/\\n/g, EOL) + EOF\n}\n\nfunction stripBom (content) {\n // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified\n if (Buffer.isBuffer(content)) content = content.toString('utf8')\n return content.replace(/^\\uFEFF/, '')\n}\n\nmodule.exports = { stringify, stripBom }\n",
|
|
148
|
+
"let _fs\ntry {\n _fs = require('graceful-fs')\n} catch (_) {\n _fs = require('fs')\n}\nconst universalify = require('universalify')\nconst { stringify, stripBom } = require('./utils')\n\nasync function _readFile (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n let data = await universalify.fromCallback(fs.readFile)(file, options)\n\n data = stripBom(data)\n\n let obj\n try {\n obj = JSON.parse(data, options ? options.reviver : null)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n\n return obj\n}\n\nconst readFile = universalify.fromPromise(_readFile)\n\nfunction readFileSync (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n try {\n let content = fs.readFileSync(file, options)\n content = stripBom(content)\n return JSON.parse(content, options.reviver)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n}\n\nasync function _writeFile (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n\n await universalify.fromCallback(fs.writeFile)(file, str, options)\n}\n\nconst writeFile = universalify.fromPromise(_writeFile)\n\nfunction writeFileSync (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n // not sure if fs.writeFileSync returns anything, but just in case\n return fs.writeFileSync(file, str, options)\n}\n\nconst jsonfile = {\n readFile,\n readFileSync,\n writeFile,\n writeFileSync\n}\n\nmodule.exports = jsonfile\n",
|
|
149
|
+
"'use strict'\n\nconst jsonFile = require('jsonfile')\n\nmodule.exports = {\n // jsonfile exports\n readJson: jsonFile.readFile,\n readJsonSync: jsonFile.readFileSync,\n writeJson: jsonFile.writeFile,\n writeJsonSync: jsonFile.writeFileSync\n}\n",
|
|
150
|
+
"'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nasync function outputFile (file, data, encoding = 'utf-8') {\n const dir = path.dirname(file)\n\n if (!(await pathExists(dir))) {\n await mkdir.mkdirs(dir)\n }\n\n return fs.writeFile(file, data, encoding)\n}\n\nfunction outputFileSync (file, ...args) {\n const dir = path.dirname(file)\n if (!fs.existsSync(dir)) {\n mkdir.mkdirsSync(dir)\n }\n\n fs.writeFileSync(file, ...args)\n}\n\nmodule.exports = {\n outputFile: u(outputFile),\n outputFileSync\n}\n",
|
|
151
|
+
"'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFile } = require('../output-file')\n\nasync function outputJson (file, data, options = {}) {\n const str = stringify(data, options)\n\n await outputFile(file, str, options)\n}\n\nmodule.exports = outputJson\n",
|
|
152
|
+
"'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFileSync } = require('../output-file')\n\nfunction outputJsonSync (file, data, options) {\n const str = stringify(data, options)\n\n outputFileSync(file, str, options)\n}\n\nmodule.exports = outputJsonSync\n",
|
|
153
|
+
"'use strict'\n\nconst u = require('universalify').fromPromise\nconst jsonFile = require('./jsonfile')\n\njsonFile.outputJson = u(require('./output-json'))\njsonFile.outputJsonSync = require('./output-json-sync')\n// aliases\njsonFile.outputJSON = jsonFile.outputJson\njsonFile.outputJSONSync = jsonFile.outputJsonSync\njsonFile.writeJSON = jsonFile.writeJson\njsonFile.writeJSONSync = jsonFile.writeJsonSync\njsonFile.readJSON = jsonFile.readJson\njsonFile.readJSONSync = jsonFile.readJsonSync\n\nmodule.exports = jsonFile\n",
|
|
154
|
+
"'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { copy } = require('../copy')\nconst { remove } = require('../remove')\nconst { mkdirp } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst stat = require('../util/stat')\n\nasync function move (src, dest, opts = {}) {\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, 'move', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'move')\n\n // If the parent of dest is not root, make sure it exists before proceeding\n const destParent = path.dirname(dest)\n const parsedParentPath = path.parse(destParent)\n if (parsedParentPath.root !== destParent) {\n await mkdirp(destParent)\n }\n\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nasync function doRename (src, dest, overwrite, isChangingCase) {\n if (!isChangingCase) {\n if (overwrite) {\n await remove(dest)\n } else if (await pathExists(dest)) {\n throw new Error('dest already exists.')\n }\n }\n\n try {\n // Try w/ rename first, and try copy + remove if EXDEV\n await fs.rename(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') {\n throw err\n }\n await moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nasync function moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n\n await copy(src, dest, opts)\n return remove(src)\n}\n\nmodule.exports = move\n",
|
|
155
|
+
"'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst copySync = require('../copy').copySync\nconst removeSync = require('../remove').removeSync\nconst mkdirpSync = require('../mkdirs').mkdirpSync\nconst stat = require('../util/stat')\n\nfunction moveSync (src, dest, opts) {\n opts = opts || {}\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'move')\n if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nfunction isParentRoot (dest) {\n const parent = path.dirname(dest)\n const parsedPath = path.parse(parent)\n return parsedPath.root === parent\n}\n\nfunction doRename (src, dest, overwrite, isChangingCase) {\n if (isChangingCase) return rename(src, dest, overwrite)\n if (overwrite) {\n removeSync(dest)\n return rename(src, dest, overwrite)\n }\n if (fs.existsSync(dest)) throw new Error('dest already exists.')\n return rename(src, dest, overwrite)\n}\n\nfunction rename (src, dest, overwrite) {\n try {\n fs.renameSync(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') throw err\n return moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nfunction moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n copySync(src, dest, opts)\n return removeSync(src)\n}\n\nmodule.exports = moveSync\n",
|
|
156
|
+
"'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n move: u(require('./move')),\n moveSync: require('./move-sync')\n}\n",
|
|
157
|
+
"'use strict'\n\nmodule.exports = {\n // Export promiseified graceful-fs:\n ...require('./fs'),\n // Export extra methods:\n ...require('./copy'),\n ...require('./empty'),\n ...require('./ensure'),\n ...require('./json'),\n ...require('./mkdirs'),\n ...require('./move'),\n ...require('./output-file'),\n ...require('./path-exists'),\n ...require('./remove')\n}\n",
|
|
158
|
+
"import { exists, stat, unlink } from \"fs-extra\";\n\nexport async function unlinkIfTooLong(filePath: string) {\n try {\n if (!(await exists(filePath))) return;\n const stats = await stat(filePath);\n const fileMTime = stats.mtime;\n const now = Date.now();\n const diffMs = now - fileMTime.getTime();\n if (diffMs > 65535) await unlink(filePath);\n } catch (error) {}\n}\n",
|
|
159
|
+
"import { $ } from \"bun\";\nimport { exit } from \"node:process\";\nimport consola from \"consola\";\n\n// 缓存两个运行时的可用性状态\nlet runtimeAvailability: null | Promise<{ node: boolean; bun: boolean }> = null;\n\nexport async function getRuntime(preferredRuntime: \"node\" | \"bun\" = \"node\"): Promise<\"node\" | \"bun\"> {\n if (!runtimeAvailability) {\n runtimeAvailability = (async () => {\n let nodeAvailable = false;\n let bunAvailable = false;\n \n // Check Node.js\n try {\n await $`node --version`.quiet();\n nodeAvailable = true;\n } catch {\n // Node.js not available\n }\n \n // Check Bun\n try {\n await $`bun --version`.quiet();\n bunAvailable = true;\n } catch {\n // Bun not available\n }\n \n return {\n node: nodeAvailable,\n bun: bunAvailable\n };\n })();\n }\n\n const { node, bun } = await runtimeAvailability;\n\n if (preferredRuntime === \"node\" && node) {\n return \"node\";\n }\n if (preferredRuntime === \"bun\" && bun) {\n return \"bun\";\n }\n\n if (node) {\n return \"node\";\n }\n if (bun) {\n return \"bun\";\n }\n\n consola.error(\"Please install Node.js or Bun.js\");\n exit(1);\n}\n",
|
|
160
|
+
"import consola from \"consola\";\nimport { join } from \"node:path\";\nimport { cwd } from \"node:process\";\nimport { exists } from \"node:fs/promises\";\nimport { exit } from \"node:process\";\n\nlet typiaPath: Promise<string> | null = null;\n\nexport function getTypiaPath(): Promise<string> {\n if (typiaPath) return typiaPath;\n typiaPath = (async () => {\n let typiaPath = join(cwd(), \"./node_modules/typia/lib/executable/typia.js\");\n // check if typia is installed in the project, if not, try to find it in the global node_modules\n if (!(await exists(typiaPath))) typiaPath = join(cwd(), \"../../node_modules/typia/lib/executable/typia.js\");\n if (!(await exists(typiaPath))) {\n consola.error(`Typia is not installed, so it cannot be found in the following path: ${typiaPath}`);\n exit(1);\n }\n return typiaPath;\n })();\n return typiaPath;\n}\n",
|
|
161
|
+
"import { statSync } from \"node:fs\";\nimport { readdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nexport async function getLatestSchemaFolder(directoryPath: string): Promise<string> {\n const items = await readdir(directoryPath, { withFileTypes: true });\n\n const folders = items.filter((item) => item.isDirectory()).map((folder) => folder.name);\n\n if (folders.length === 0) {\n throw new Error(`No hash folders found in directory: ${directoryPath}`);\n }\n\n const foldersWithStats = folders.flatMap((folder) => {\n const schemaPath = join(directoryPath, folder, \"schema.ts\");\n try {\n const stats = statSync(schemaPath);\n return [\n {\n folder,\n birthtime: stats.birthtimeMs,\n },\n ];\n } catch {\n return [];\n }\n });\n\n if (foldersWithStats.length === 0) {\n throw new Error(`No valid schema.ts files found in any hash folders: ${directoryPath}`);\n }\n\n const latestFolder = foldersWithStats.reduce((latest, current) => (current.birthtime > latest.birthtime ? current : latest));\n\n return latestFolder.folder;\n}\n",
|
|
162
|
+
"import consola from \"consola\";\nimport { join } from \"node:path\";\nimport os from \"node:os\";\nimport { exec } from \"node:child_process\";\nimport { getRate } from \"../../progress\";\nimport { defineWatcherExtension } from \"../extensions\";\nimport { exists, mkdir, readdir, readFile, rm } from \"node:fs/promises\";\nimport { generateRunTs } from \"../generate-run-ts/__IMPORTS__\";\nimport { calcHash } from \"../../utils/calc-hash\";\nimport { unlinkIfTooLong } from \"../../utils/unlink-if-too-long\";\nimport { getRuntime } from \"../../utils/get-runtime\";\nimport { getTypiaPath } from \"../../utils/get-typia-path\";\nimport { getLatestSchemaFolder } from \"../../utils/get-latest-schema-folder\";\nimport { exit } from \"node:process\";\nimport chalk from \"chalk\";\n\nexport const routeWatcherExtension = defineWatcherExtension({\n async: false,\n filter: (file) => {\n return file.path.startsWith(\"modules/\") && (file.type === \"action\" || file.type === \"stream\");\n },\n setup: async (root, mode, options, project, changeFiles, allFiles) => {\n const milkioDirPath = join(root, \".milkio\");\n const milkioGeneratedDirPath = join(milkioDirPath, \"generated\");\n const milkioTranspiledDirPath = join(milkioDirPath, \"transpiled\");\n const milkioGeneratedRouteDirPath = join(milkioDirPath, \"generated\", \"routes\");\n const milkioTranspiledRouteDirPath = join(milkioDirPath, \"transpiled\", \"routes\");\n if (!(await exists(milkioGeneratedDirPath))) await mkdir(milkioGeneratedDirPath, { recursive: true });\n if (!(await exists(milkioTranspiledDirPath))) await mkdir(milkioTranspiledDirPath, { recursive: true });\n if (!(await exists(milkioGeneratedRouteDirPath))) await mkdir(milkioGeneratedRouteDirPath, { recursive: true });\n if (!(await exists(milkioTranspiledRouteDirPath))) await mkdir(milkioTranspiledRouteDirPath, { recursive: true });\n\n await generateRunTs(project, milkioDirPath);\n\n const hashes: Map<string, string> = new Map();\n const queue = new DynamicConcurrencyQueue();\n \n // 处理changeFiles的任务\n for (const file of changeFiles) {\n queue.add(async () => {\n let isGenerate = false;\n const hashFile = calcHash(await readFile(join(file.projectFsPath, file.path)));\n const hashFileName = `${hashFile}/schema.ts`;\n const generatedDirPath = join(milkioGeneratedRouteDirPath, file.importName);\n const transpiledDirPath = join(milkioTranspiledRouteDirPath, file.importName);\n const generatedHashFilePath = join(generatedDirPath, hashFileName);\n const transpiledHashFilePath = join(transpiledDirPath, hashFileName);\n hashes.set(file.importName, hashFile);\n\n if (!(await exists(generatedDirPath))) {\n isGenerate = true;\n await mkdir(generatedDirPath, { recursive: true });\n }\n if (!(await exists(transpiledDirPath))) {\n isGenerate = true;\n await mkdir(transpiledDirPath, { recursive: true });\n }\n\n if (!isGenerate && file.dependencyChanged) isGenerate = true;\n\n if (!isGenerate && (!(await exists(generatedHashFilePath)) || !(await exists(transpiledHashFilePath)))) isGenerate = true;\n\n if (isGenerate === false) return;\n\n let routeFileImports = \"// route-schema\";\n routeFileImports += `\\nimport typia, { type IValidation } from \"typia\";`;\n const typiaCommand = `${await getRuntime()} ${await getTypiaPath()} generate --input ${join(generatedDirPath, hashFile)} --output ${join(transpiledDirPath, hashFile)} --project ${join(root, \"tsconfig.json\")}`;\n let routeFileExports = `// typia command: ${typiaCommand}`;\n routeFileExports += \"\\nexport default { \";\n routeFileExports += `\\ntype: \"${file.type}\", `;\n routeFileExports += \"\\ntypes: undefined as any as { \";\n routeFileExports += `\\n\"🥛\": ${file.type === \"action\" ? \"boolean\" : \"number\"}, `;\n routeFileExports += `\\nmeta: typeof ${file.importName}[\"meta\"], `;\n routeFileExports += `\\nparams: Parameters<typeof ${file.importName}[\"handler\"]>[1], `;\n routeFileExports += `\\nresult: Awaited<ReturnType<typeof ${file.importName}[\"handler\"]>> `;\n routeFileExports += \"},\";\n if (project?.lazyRoutes === undefined || project?.lazyRoutes === true) {\n routeFileImports += `\\nimport type * as ${file.importName} from \"../../../../../app/${file.path}\";`;\n routeFileExports += `\\nmodule: () => import(\"../../../../../app/${file.path}\"), `;\n } else {\n routeFileImports += `\\nimport ${file.importName} from \"../../../../../app/${file.path}\";`;\n routeFileExports += `\\nmodule: () => ${file.importName}, `;\n }\n routeFileExports += `\\nvalidateParams: (params: any): IValidation<Parameters<typeof ${file.importName}[\"handler\"]>[1]> => typia.misc.validatePrune<Parameters<typeof ${file.importName}[\"handler\"]>[1]>(params) as any, `;\n routeFileExports += `\\nrandomParams: (): IValidation<Parameters<typeof ${file.importName}[\"handler\"]>[1]> => typia.random<Parameters<typeof ${file.importName}[\"handler\"]>[1]>() as any, `;\n routeFileExports += `\\nvalidateResults: (results: any): IValidation<Awaited<ReturnType<typeof ${file.importName}[\"handler\"]>>> => typia.misc.validatePrune<Awaited<ReturnType<typeof ${file.importName}[\"handler\"]>>>(results) as any, `;\n routeFileExports += `\\nresultsToJSON: (results: any): Awaited<ReturnType<typeof ${file.importName}[\"handler\"]>> => {\n // @ts-ignore\n return typia.json.stringify<Awaited<ReturnType<typeof ${file.importName}[\"handler\"]>>>(results) as any\n}, `;\n routeFileExports += \"\\n};\";\n\n const oldFiles = await readdir(generatedDirPath);\n\n await Bun.write(generatedHashFilePath, `${routeFileImports}\\n\\n${routeFileExports}\\n`);\n\n // 使用动态队列处理删除任务\n const deleteQueue = new DynamicConcurrencyQueue();\n for (const oldFile of oldFiles) {\n deleteQueue.add(async () => {\n const oldFileGeneratedPath = join(generatedDirPath, oldFile);\n const oldFileTranspiledPath = join(transpiledDirPath, oldFile);\n if (await exists(oldFileGeneratedPath)) await unlinkIfTooLong(oldFileGeneratedPath);\n if (await exists(oldFileTranspiledPath)) await unlinkIfTooLong(oldFileTranspiledPath);\n });\n }\n await deleteQueue.waitAll();\n\n try {\n const command = `${await getRuntime()} ${await getTypiaPath()} generate --input ${join(generatedDirPath, hashFile)} --output ${join(transpiledDirPath, hashFile)} --project ${join(root, \"tsconfig.json\")}`;\n const output = await new Promise<string>((resolve, reject) => {\n exec(command, { cwd: root }, (error, stdout, stderr) => {\n const fullOutput = stdout + stderr;\n if (error) {\n reject(new Error(fullOutput));\n } else {\n resolve(fullOutput);\n }\n });\n });\n if (output.includes(\"error \")) {\n consola.error(`[${getRate()}] 🚨 type-safety fail, skip: ${file.path}\\n${output}`);\n consola.error(`[${getRate()}] 🚨 want to debug typia, try running:\\n${typiaCommand}`);\n exit(1);\n }\n } catch (error) {\n consola.error(`[${getRate()}] 🚨 type-safety fail, skip: ${file.path}\\n${error}`);\n consola.error(`[${getRate()}] 🚨 want to debug typia, try running:\\n${typiaCommand}`);\n exit(1);\n }\n consola.info(chalk.gray(`[${getRate()}] ✨ type-safety now: ${file.path}`));\n });\n }\n\n // 等待所有changeFiles任务完成\n await queue.waitAll();\n\n const validImportNames = new Set(allFiles.map((file) => file.importName));\n\n // 处理清理任务\n const cleanupQueue = new DynamicConcurrencyQueue();\n \n cleanupQueue.add(async () => {\n const generatedRouteDirs = await readdir(milkioGeneratedRouteDirPath, { withFileTypes: true });\n for (const dir of generatedRouteDirs) {\n if (!dir.isDirectory()) continue;\n if (validImportNames.has(dir.name)) continue;\n\n const dirPath = join(milkioGeneratedRouteDirPath, dir.name);\n await rm(dirPath, { recursive: true, force: true });\n }\n });\n \n cleanupQueue.add(async () => {\n const transpiledRouteDirs = await readdir(milkioTranspiledRouteDirPath, { withFileTypes: true });\n for (const dir of transpiledRouteDirs) {\n if (!dir.isDirectory()) continue;\n if (validImportNames.has(dir.name)) continue;\n\n const dirPath = join(milkioTranspiledRouteDirPath, dir.name);\n await rm(dirPath, { recursive: true, force: true });\n }\n });\n\n // 等待所有清理任务完成\n await cleanupQueue.waitAll();\n\n let routeSchemaFileImports = \"// route-schema\";\n let routeSchemaFileExports = \"export default {\";\n\n const routePaths: Set<string> = new Set();\n for (const file of allFiles) {\n let hashFile = hashes.get(file.importName);\n if (!hashFile) hashFile = await getLatestSchemaFolder(join(milkioGeneratedRouteDirPath, file.importName));\n const hashFileName = `${hashFile}/schema.ts`;\n\n let routePath = file.path.slice(0, file.path.length - 10); // 10 === \".stream.ts\".length && 10 === \".action.ts\".length\n if (routePath.endsWith(\"/index\") || routePath === \"index\") routePath = routePath.slice(0, routePath.length - 5); // 5 === \"index\".length\n if (routePath === \"public\" && routePath.length > 1) routePath = routePath.slice(0, routePath.length - 1);\n if (routePath.startsWith(\"modules/\")) routePath = `${routePath.slice(8)}`; // 8 === \"modules/\".length\n if (routePath !== \"/\" && routePath.endsWith(\"/\")) routePath = routePath.slice(0, routePath.length - 1);\n if (file.type === \"stream\") routePath = `${routePath}~`;\n if (routePaths.has(routePath)) {\n consola.error(`Invalid path: \"${file.path}\". The most common reason for having paths duplicate is that you created a new \"${file}\" and have a \"${file}/index.ts\".\\n`);\n exit(1);\n }\n routePaths.add(routePath);\n\n routeSchemaFileImports += `\\nimport ${file.importName} from \"./transpiled/routes/${file.importName}/${hashFileName}\";`;\n routeSchemaFileExports += `\\n \"/${routePath}\": ${file.importName},`;\n }\n routeSchemaFileExports += \"\\n};\";\n\n const writePath = join(root, \".milkio\", \"route-schema.ts\");\n\n await Bun.write(writePath, `${routeSchemaFileImports}\\n\\n${routeSchemaFileExports}\\n`);\n },\n});\n\nclass DynamicConcurrencyQueue {\n private concurrency: number;\n private queue: Array<() => Promise<void>> = [];\n private running: number = 0;\n public completed: number = 0;\n public total: number = 0;\n\n constructor() {\n const numCPUs = os.cpus().length;\n const totalMemoryBytes = os.totalmem();\n const totalMemoryGB = Math.floor(totalMemoryBytes / (1024 * 1024 * 1024));\n const cpuBasedConcurrency = Math.max(1, Math.ceil(numCPUs / 2));\n const memoryBasedConcurrency = totalMemoryGB <= 4 ? 1 : Math.min(8, (totalMemoryGB - 4) + 1);\n this.concurrency = Math.min(cpuBasedConcurrency, memoryBasedConcurrency);\n this.concurrency = Math.max(1, Math.floor(this.concurrency / 2));\n }\n\n add(task: () => Promise<void>): void {\n this.queue.push(task);\n this.total++;\n this.runNext();\n }\n\n private runNext(): void {\n if (this.running >= this.concurrency || this.queue.length === 0) {\n return;\n }\n\n const task = this.queue.shift();\n if (!task) return;\n\n this.running++;\n \n task()\n .finally(() => {\n this.running--;\n this.completed++;\n this.runNext();\n });\n }\n\n async waitAll(): Promise<void> {\n if (this.total === 0) return;\n \n while (this.running > 0 || this.queue.length > 0) {\n await new Promise(resolve => setTimeout(resolve, 50));\n }\n }\n}",
|
|
163
|
+
"import { join } from \"node:path\";\nimport { defineWatcherExtension } from \"../extensions\";\n\nexport const handlerWatcherExtension = defineWatcherExtension({\n async: false,\n filter: (file) => {\n return file.type === \"handler\";\n },\n setup: async (root, mode, options, project, changeFiles, allFiles) => {\n const writePath = join(root, \".milkio\", \"handler-schema.ts\");\n\n let typescriptImports = \"// handler-schema\";\n let typescriptExports = \"export default {\";\n typescriptExports += \"\\n loadHandlers:(world: any) => ([\";\n\n for await (const file of allFiles) {\n typescriptImports += `\\nimport ${file.importName} from \"../app/${file.path}\";`;\n typescriptExports += `\\n ${file.importName}(world),`;\n }\n typescriptExports += \"\\n ]),\";\n typescriptExports += \"\\n}\";\n const typescript = `${typescriptImports}\\n\\n${typescriptExports}`;\n\n await Bun.write(writePath, typescript);\n },\n});\n",
|
|
164
|
+
"import { defineWatcherExtension } from \"../extensions\";\n\nexport const metaWatcherExtension = defineWatcherExtension({\n async: true,\n filter: (file) => {\n return file.type === \"meta\";\n },\n declares: async (root, mode, options, project, changeFiles, allFiles) => {\n let header = \"\";\n const types = \"\";\n let content = \"\";\n\n content += \"\\nexport interface MilkioMeta extends $meta\";\n let metaIndex = 0;\n for await (const file of allFiles) {\n header += `\\nimport type { _ as meta_${metaIndex} } from \"../app/${file.path}\";`;\n content += \", \";\n content += `meta_${metaIndex}`;\n ++metaIndex;\n }\n content += \" {}\";\n\n return [header, types, content];\n },\n});\n",
|
|
165
|
+
"import { defineWatcherExtension } from \"../extensions\";\n\nexport const contextWatcherExtension = defineWatcherExtension({\n async: true,\n filter: (file) => {\n return file.type === \"context\";\n },\n declares: async (root, mode, options, project, changeFiles, allFiles) => {\n let header = \"\";\n const types = \"\";\n let content = \"\";\n\n content += `\\ntype $contextMixin = {\n _: MilkioRuntimeInit<MilkioInit>;\n develop: boolean;\n executeId: string;\n path: string;\n logger: Logger;\n http: ContextHttp<Record<any, any>>;\n headers: Headers;\n config: Readonly<Awaited<ReturnType<(MilkioTypes[\"configSchema\"])[\"get\"]>>>;\n typia: Readonly<MilkioTypes[\"generated\"][\"typiaSchema\"]>;\n call: <Module extends Promise<Action<any>>>(module: Module, params: Parameters<Awaited<Module>[\"handler\"]>[1]) => Promise<ReturnType<Awaited<Module>[\"handler\"]>>;\n onFinally: (handler: () => void | Promise<void>) => void;\n /**\n * Emit event\n * @param key Event name\n * @param value Event data\n */\n emit: <Key extends keyof MilkioEvents, Value extends MilkioEvents[Key]>(key: Key, value: Value) => Promise<void>;\n /**\n * Emit event and check if any event handler returned true\n * @param key Event name\n * @param value Event data\n * @returns Whether any event handler returned true\n */\n emitAnyApproved: <Key extends keyof MilkioEvents, Value extends MilkioEvents[Key]>(key: Key, value: Value) => Promise<boolean>;\n /**\n * Emit event and check if all event handlers returned true\n * @param key Event name\n * @param value Event data\n * @returns Whether all event handlers returned true\n */\n emitAllApproved: <Key extends keyof MilkioEvents, Value extends MilkioEvents[Key]>(key: Key, value: Value) => Promise<boolean>;\n reject: <Code extends keyof MilkioRejectCode, RejectData extends MilkioRejectCode[Code]>(code: Code, data: RejectData) => MilkioRejectError<Code, RejectData>;\n};\n`;\n content += \"\\nexport interface MilkioContext extends $contextMixin\";\n let contextIndex = 0;\n for await (const file of allFiles) {\n header += `\\nimport type { _ as context_${contextIndex} } from \"../app/${file.path}\";`;\n content += \", \";\n content += `context_${contextIndex}`;\n ++contextIndex;\n }\n content += \" {}\";\n\n return [header, types, content];\n },\n});\n",
|
|
166
|
+
"import { join } from \"node:path\";\nimport { defineWatcherExtension } from \"../extensions\";\n\nexport const drizzleWatcherExtension = defineWatcherExtension({\n async: false,\n filter: (file) => {\n return file.type === \"table\";\n },\n setup: async (root, mode, options, project, changeFiles, allFiles) => {\n const writePath = join(root, \".milkio\", \"drizzle-schema.ts\");\n\n let typescriptImports = \"// drizzle-schema\";\n\n for await (const file of allFiles) {\n typescriptImports += `\\nexport * from \"../app/${file.path}\";`;\n }\n const typescript = `${typescriptImports}\\n`;\n\n await Bun.write(writePath, typescript);\n },\n});\n",
|
|
167
|
+
"import { defineWatcherExtension } from \"../extensions\";\n\nexport const eventWatcherExtension = defineWatcherExtension({\n async: true,\n filter: (file) => {\n return file.type === \"event\";\n },\n declares: async (root, mode, options, project, changeFiles, allFiles) => {\n let header = \"\";\n const types = \"\";\n let content = \"\";\n\n content += `\\ntype $eventsMixin = {\n \"*\": { key: keyof $events, value: any };\n \"milkio:httpRequest\": { executeId: string; path: string; logger: Logger; http: ContextHttp<Record<string, any>>, reject: <Code extends keyof MilkioRejectCode, RejectData extends MilkioRejectCode[Code]>(code: Code, data: RejectData) => MilkioRejectError<Code, RejectData> };\n \"milkio:httpResponse\": { executeId: string; path: string; logger: Logger; http: ContextHttp<Record<string, any>>; context: MilkioContext; success: boolean, reject: <Code extends keyof MilkioRejectCode, RejectData extends MilkioRejectCode[Code]>(code: Code, data: RejectData) => MilkioRejectError<Code, RejectData> };\n \"milkio:httpNotFound\": { executeId: string; path: string; logger: Logger; http: ContextHttp<Record<string, any>>, reject: <Code extends keyof MilkioRejectCode, RejectData extends MilkioRejectCode[Code]>(code: Code, data: RejectData) => MilkioRejectError<Code, RejectData> };\n \"milkio:executeBefore\": { executeId: string; path: string; logger: Logger; meta: MilkioMeta; context: MilkioContext, reject: <Code extends keyof MilkioRejectCode, RejectData extends MilkioRejectCode[Code]>(code: Code, data: RejectData) => MilkioRejectError<Code, RejectData> };\n \"milkio:executeAfter\": { executeId: string; path: string; logger: Logger; meta: MilkioMeta; context: MilkioContext; results: Results<any>, reject: <Code extends keyof MilkioRejectCode, RejectData extends MilkioRejectCode[Code]>(code: Code, data: RejectData) => MilkioRejectError<Code, RejectData> };\n}`;\n content += \"\\nexport interface MilkioEvents extends $eventsMixin\";\n let eventIndex = 0;\n for await (const file of allFiles) {\n header += `\\nimport type { _ as event_${eventIndex} } from \"../app/${file.path}\";`;\n content += \", \";\n content += `event_${eventIndex}`;\n ++eventIndex;\n }\n content += \" {}\";\n\n return [header, types, content];\n },\n});\n",
|
|
168
|
+
"import { $ } from \"bun\";\nimport consola from \"consola\";\nimport { join, dirname } from \"node:path\";\nimport { defineWatcherExtension } from \"../extensions\";\nimport { exists, mkdir, readdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport { calcHash } from \"../../utils/calc-hash\";\nimport { getRuntime } from \"../../utils/get-runtime\";\nimport { getTypiaPath } from \"../../utils/get-typia-path\";\nimport { getLatestSchemaFolder } from \"../../utils/get-latest-schema-folder.ts\";\n\nasync function processFileImports(filePath: string, projectFsPath: string, root: string) {\n const content = await readFile(filePath, \"utf-8\");\n const normalizedRoot = `${root.replace(/\\\\/g, \"/\").replace(/\\/$/, \"\")}/`;\n const fileDir = dirname(filePath);\n\n let result = \"\";\n let inTopArea = true;\n\n for (const line of content.split(\"\\n\")) {\n if (!inTopArea) {\n result += `${line}\\n`;\n continue;\n }\n\n const codeLine = line.split(\"//\")[0].trimEnd();\n if (codeLine.includes(\"/*\")) {\n result += `${line}\\n`;\n inTopArea = false;\n continue;\n }\n\n const importMatch = codeLine.match(/^\\s*(import|export)(?:\\s+[\\w*{},\\s]+)?\\s+from\\s+['\"]([^'\"]+)['\"]|^\\s*import\\s*['\"]([^'\"]+)['\"]/);\n if (importMatch) {\n const importPath = importMatch[2] || importMatch[3];\n if (importPath?.startsWith(\".\")) {\n const absoluteImportPath = join(fileDir, importPath).replace(/\\\\/g, \"/\");\n const projectImportPath = absoluteImportPath.replace(normalizedRoot, \"/\");\n\n const newLine = line.replace(importPath, `../../../../../app${projectImportPath.startsWith(\"//\") ? projectImportPath.slice(1) : projectImportPath}`);\n result += `${newLine}\\n`;\n } else {\n result += `${line}\\n`;\n }\n } else if (codeLine.trim() === \"\") {\n result += `${line}\\n`;\n } else {\n result += `${line}\\n`;\n inTopArea = false;\n }\n }\n\n return result;\n}\n\nexport const typiaWatcherExtension = defineWatcherExtension({\n async: true,\n filter: (file) => file.type === \"typia\",\n setup: async (root, mode, options, project, changeFiles, allFiles) => {\n const milkioDirPath = join(root, \".milkio\");\n const milkioGeneratedDirPath = join(milkioDirPath, \"generated\");\n const milkioTranspiledDirPath = join(milkioDirPath, \"transpiled\");\n const milkioGeneratedTypiaDirPath = join(milkioGeneratedDirPath, \"typia\");\n const milkioTranspiledTypiaDirPath = join(milkioTranspiledDirPath, \"typia\");\n\n await Promise.all([mkdir(milkioGeneratedDirPath, { recursive: true }), mkdir(milkioTranspiledDirPath, { recursive: true }), mkdir(milkioGeneratedTypiaDirPath, { recursive: true }), mkdir(milkioTranspiledTypiaDirPath, { recursive: true })]);\n\n const buildTasks: Array<Promise<any>> = [];\n const hashes: Map<string, string> = new Map();\n\n for (const file of changeFiles) {\n buildTasks.push(\n (async () => {\n const sourceFilePath = join(file.projectFsPath, file.path);\n\n const processedContent = await processFileImports(sourceFilePath, file.projectFsPath, root);\n\n const hash = calcHash(Buffer.from(processedContent));\n hashes.set(file.importName, hash);\n\n const generatedFilePath = join(milkioGeneratedTypiaDirPath, file.importName, hash, \"schema.ts\");\n const transpiledDirPath = join(milkioTranspiledTypiaDirPath, file.importName, hash);\n\n await Promise.all([mkdir(dirname(generatedFilePath), { recursive: true }), mkdir(transpiledDirPath, { recursive: true })]);\n\n await writeFile(generatedFilePath, processedContent, \"utf-8\");\n\n const deleteTasks: Array<Promise<void>> = [];\n const paths = [join(milkioGeneratedTypiaDirPath, file.importName), join(milkioTranspiledTypiaDirPath, file.importName)];\n\n for (const path of paths) {\n if (await exists(path)) {\n for (const oldHash of await readdir(path)) {\n if (oldHash !== hash) {\n deleteTasks.push(rm(join(path, oldHash), { recursive: true, force: true }));\n }\n }\n }\n }\n\n await Promise.all(deleteTasks);\n\n buildTasks.push($`${await getRuntime()} ${await getTypiaPath()} generate --input ${join(milkioGeneratedTypiaDirPath, file.importName, hash)} --output ${transpiledDirPath} --project ${join(root, \"tsconfig.json\")}`.quiet().cwd(root));\n })(),\n );\n }\n\n await Promise.all(buildTasks);\n\n const cleanupTasks: Array<Promise<void>> = [];\n const validImportNames = new Set(allFiles.map((file) => file.importName));\n\n for (const subDir of [\"generated\", \"transpiled\"]) {\n const typeDir = join(milkioDirPath, subDir, \"typia\");\n if (await exists(typeDir)) {\n for (const importName of await readdir(typeDir)) {\n if (!validImportNames.has(importName)) {\n cleanupTasks.push(rm(join(typeDir, importName), { recursive: true, force: true }));\n }\n }\n }\n }\n\n await Promise.all(cleanupTasks);\n\n const properties: string[] = [];\n const propertyNames = new Map<string, string>();\n\n for (const file of allFiles) {\n const fileName =\n file.path\n .split(\"/\")\n .pop()\n ?.replace(/\\.typia\\.ts$/, \"\") || \"\";\n const camelCaseName = `use${fileName.replace(/^[a-z]/, (match) => match.toUpperCase()).replace(/-([a-z])/g, (_, letter) => letter.toUpperCase())}`;\n\n if (propertyNames.has(camelCaseName)) {\n consola.warn(`Duplicate camelCase property name '${camelCaseName}' detected for files: '${file.path}' and '${propertyNames.get(camelCaseName)}'`);\n } else {\n propertyNames.set(camelCaseName, file.path);\n }\n\n let hash = hashes.get(file.importName);\n if (!hash) {\n const generatedDir = join(milkioGeneratedTypiaDirPath, file.importName);\n if (await exists(generatedDir)) {\n const latestDir = await getLatestSchemaFolder(generatedDir);\n if (latestDir) hash = latestDir;\n }\n }\n\n if (hash) {\n properties.push(` ${camelCaseName}: async () => (await import(\"./transpiled/typia/${file.importName}/${hash}/schema.ts\")),`);\n }\n }\n\n const typiaSchemaContent = [\"export default {\", ...properties, \"};\", \"\"].join(\"\\n\");\n\n await Bun.write(join(milkioDirPath, \"typia-schema.ts\"), typiaSchemaContent);\n },\n});\n",
|
|
169
|
+
"import { defineWatcherExtension } from \"../extensions\";\n\nexport const codeWatcherExtension = defineWatcherExtension({\n async: true,\n filter: (file) => {\n return file.type === \"code\";\n },\n declares: async (root, mode, options, project, changeFiles, allFiles) => {\n let header = \"\";\n const types = \"\";\n let content = \"\";\n\n content += `\\n\nexport type MilkioRejectError<Code extends keyof MilkioRejectCode = keyof MilkioRejectCode, RejectData extends MilkioRejectCode[Code] = MilkioRejectCode[Code]> = { code: Code; data: RejectData; stack: string; $milkioReject: true };\nexport interface MilkioRejectCode extends $rejectCode`;\n let codeIndex = 0;\n for await (const file of allFiles) {\n header += `\\nimport type { _ as code_${codeIndex} } from \"../app/${file.path}\";`;\n content += \", \";\n content += `code_${codeIndex}`;\n ++codeIndex;\n }\n content += \" {}\";\n\n return [header, types, content];\n },\n});\n",
|
|
170
|
+
"import { join } from \"node:path\";\nimport { defineWatcherExtension } from \"../extensions\";\n\nexport const seedWatcherExtension = defineWatcherExtension({\n async: false,\n filter: (file) => {\n return file.type === \"seed\";\n },\n setup: async (root, mode, options, project, changeFiles, allFiles) => {\n const writePath = join(root, \".milkio\", \"seed.ts\");\n\n let typescriptImports = \"// seed\";\n let typescriptExports = `export const executeSeed = async (params: Record<any, any>): Promise<void> => {`;\n typescriptExports += `\\n const mixParams: any = { ...params, mode: \"${mode}\" };`;\n typescriptExports += `\\n const tasks: Array<Promise<any>> = [];`;\n\n let index = 0;\n for await (const file of allFiles) {\n typescriptImports += `\\nimport * as seed\\$${index} from \"../app/${file.path}\";`;\n typescriptExports += `\\n if (\"onSeed\" in seed\\$${index} && typeof seed\\$${index}[\"onSeed\"] === \"function\") tasks.push(seed\\$${index}.onSeed(mixParams));`;\n ++index;\n }\n typescriptExports += `\\n await Promise.all(tasks);`;\n typescriptExports += `\\n};`;\n const typescript = `${typescriptImports}\\n\\n${typescriptExports}\\n`;\n\n await Bun.write(writePath, typescript);\n },\n});\n\n",
|
|
171
|
+
"import { configWatcherExtension } from \"./config\";\nimport { routeWatcherExtension } from \"./route\";\nimport { handlerWatcherExtension } from \"./handler\";\nimport { metaWatcherExtension } from \"./meta\";\nimport { contextWatcherExtension } from \"./context\";\nimport { drizzleWatcherExtension } from \"./drizzle\";\nimport { eventWatcherExtension } from \"./event\";\nimport type { defineWatcherExtension } from \"../extensions\";\nimport { typiaWatcherExtension } from \"./typia\";\nimport { codeWatcherExtension } from \"./code\";\nimport { seedWatcherExtension } from \"./seed\";\n\nexport const imports: Array<ReturnType<typeof defineWatcherExtension>> = [\n // extensions\n routeWatcherExtension,\n handlerWatcherExtension,\n configWatcherExtension,\n drizzleWatcherExtension,\n metaWatcherExtension,\n contextWatcherExtension,\n codeWatcherExtension,\n eventWatcherExtension,\n typiaWatcherExtension,\n seedWatcherExtension,\n];\n\nexport const indexTs = `// index\nimport type { MilkioMeta, MilkioContext, MilkioRejectCode, MilkioEvents } from \"./declares.ts\";\nimport typiaSchema from \"./typia-schema.ts\";\nimport routeSchema from \"./route-schema.ts\";\nimport handlerSchema from \"./handler-schema.ts\";\n\n\nexport const generated = {\n meta: undefined as unknown as MilkioMeta,\n context: undefined as unknown as MilkioContext,\n rejectCode: undefined as unknown as MilkioRejectCode,\n events: undefined as unknown as MilkioEvents,\n typiaSchema,\n routeSchema,\n handlerSchema,\n};\n`;\n",
|
|
172
|
+
"export const __VERSION__ = '1.0.0'",
|
|
173
|
+
"import { watch, type FSWatcher } from \"node:fs\";\nimport { dirname, join, relative, resolve } from \"node:path\";\nimport { exists, mkdir, readdir, rm } from \"node:fs/promises\";\nimport { cwd, exit } from \"node:process\";\nimport type { CookbookOptions } from \"../utils/cookbook-dto-types.ts\";\nimport { Glob } from \"bun\";\nimport type { CookbookWatcherExtensionProject, CookbookWatcherFile, defineWatcherExtension } from \"./extensions.ts\";\nimport consola from \"consola\";\nimport { readFile } from \"node:fs/promises\";\nimport { createInterface } from \"node:readline\";\nimport { Readable } from \"node:stream\";\nimport { imports, indexTs } from \"./extensions/__IMPORTS__.ts\";\nimport { __VERSION__ } from \"../../__VERSION__.ts\";\nimport chalk from \"chalk\";\nimport { getRate } from \"../progress/index.ts\";\n\nconst allFiles: Map<string, Map<string, CookbookWatcherFile>> = new Map();\nconst dependencyCache = new Map<string, Set<string>>();\nconst reverseDependencyGraph = new Map<string, Set<string>>();\nexport async function initWatcher(options: CookbookOptions, mode: string, watch: boolean) {\n const watchers: FSWatcher[] = [];\n const dispose = () => {\n for (const watcher of watchers) watcher.close();\n };\n\n try {\n const tasks: Array<Promise<void>> = [];\n for (const projectName in options.projects ?? []) {\n tasks.push(\n (async () => {\n const project = options.projects[projectName];\n const root = join(cwd(), \"projects\", projectName);\n if (project.type !== \"milkio\") return;\n if (!(await exists(root))) return;\n if (!(await exists(join(root, \".milkio\")))) await mkdir(join(root, \".milkio\"));\n\n const appRoot = join(root, \"app\");\n if (!(await exists(appRoot))) return;\n\n const entries = await readdir(appRoot, { withFileTypes: true });\n const validDirs = entries\n .filter((dirent) => dirent.isDirectory())\n .map((dirent) => dirent.name)\n .filter((name) => !name.startsWith(\".\") && name !== \"node_modules\");\n\n await initializeProject(mode, root, appRoot, validDirs, options, project);\n\n if (watch) {\n const watcher = setupWatcher(mode, root, appRoot, validDirs, options, project);\n watchers.push(watcher);\n }\n })(),\n );\n }\n await Promise.all(tasks);\n } catch (error) {\n dispose();\n throw error;\n }\n\n for (const projectName in options.projects) {\n if (!(await exists(join(cwd(), \"projects\", projectName, \".milkio\", \"index.ts\")))) await Bun.write(join(cwd(), \"projects\", projectName, \".milkio\", \"index.ts\"), indexTs);\n }\n\n return dispose;\n}\n\nasync function initializeProject(mode: string, root: string, appRoot: string, validDirs: string[], options: CookbookOptions, project: CookbookWatcherExtensionProject) {\n if (!(await exists(join(root, \".milkio\", \".version\"))) || (await readFile(join(root, \".milkio\", \".version\"), \"utf-8\")) !== `v${__VERSION__}.${mode}.${options.hash}`) {\n await rm(join(root, \".milkio\"), { recursive: true, force: true });\n try {\n await mkdir(join(root, \".milkio\"));\n } catch (error) { }\n await Bun.write(join(root, \".milkio\", \".version\"), `v${__VERSION__}.${mode}.${options.hash}`);\n }\n\n if (!allFiles.has(root)) {\n allFiles.set(root, new Map());\n }\n const projectFiles = allFiles.get(root)!;\n\n const globPattern = `{${validDirs.join(\",\")}}/**/*.ts`;\n const glob = new Glob(globPattern);\n const filesAsyncGenerator = glob.scan({ cwd: appRoot, onlyFiles: true });\n\n const extensionChangeFiles: Array<Array<CookbookWatcherFile>> = [];\n for (let i = 0; i < imports.length; i++) extensionChangeFiles.push([]);\n\n for await (const filePathRaw of filesAsyncGenerator) {\n if (filePathRaw.endsWith(\".test.ts\") || filePathRaw.endsWith(\".spec.ts\") || filePathRaw.includes(\" copy\")) continue;\n const filePath = filePathRaw.replaceAll(\"\\\\\", \"/\");\n const fileName = filePath.split(\"/\").pop()!;\n if (fileName.startsWith(\".\")) continue;\n if (fileName.startsWith(\"_\")) continue;\n const fileData = processFile(filePath, appRoot, fileName);\n fileData.dependencyChanged = false;\n if (!projectFiles.has(filePath)) projectFiles.set(filePath, fileData);\n for (let i = 0; i < imports.length; i++) {\n if (imports[i].filter(fileData)) {\n extensionChangeFiles[i].push(fileData);\n }\n }\n\n await parseAndCacheDependencies(resolve(appRoot, filePath), appRoot);\n }\n\n const asyncTasks = [];\n for (let i = 0; i < imports.length; i++) {\n if (imports[i].async) {\n asyncTasks.push(imports[i]?.setup?.(root, mode, options, project, filterChangeFiles(extensionChangeFiles[i]), filterAllFiles(root, imports[i])));\n } else {\n try {\n await imports[i]?.setup?.(root, mode, options, project, filterChangeFiles(extensionChangeFiles[i]), filterAllFiles(root, imports[i]));\n } catch (error) {\n consola.error(error);\n }\n }\n }\n if (asyncTasks.length > 0) {\n try {\n await Promise.all(asyncTasks);\n } catch (error) {\n consola.error(error);\n }\n }\n\n await generateDeclares(root, mode, options, project, extensionChangeFiles);\n}\n\nasync function generateDeclares(root: string, mode: string, options: CookbookOptions, project: CookbookWatcherExtensionProject, extensionChangeFiles: Array<Array<CookbookWatcherFile>>) {\n let header = \"// declares\";\n header += `\\nimport type { $context, $meta, $rejectCode, $events, Logger, Results, ContextHttp, MilkioRuntimeInit, MilkioInit, Action } from \"milkio\";`;\n header += `\\nimport type { generated } from \"./index.ts\";`;\n\n let content = `\\n`;\n let types = \"\";\n\n for (let i = 0; i < imports.length; i++) {\n if (!(\"declares\" in imports[i])) continue;\n const files = filterAllFiles(root, imports[i]);\n if (!files) continue;\n\n const [rtnHeader, rtnTypes, rtnContent] = await (imports[i] as any).declares(root, mode, options, project, extensionChangeFiles[i], files);\n\n header += rtnHeader;\n types += rtnTypes;\n content += rtnContent;\n }\n\n content += \"\\nexport interface MilkioTypes {\";\n content += \"\\n generated: typeof generated\";\n content += types;\n content += \"\\n};\";\n\n await Bun.write(join(root, \".milkio\", \"declares.ts\"), `${header}\\n${content}\\n`);\n}\n\nfunction setupWatcher(mode: string, root: string, appRoot: string, validDirs: string[], options: CookbookOptions, project: CookbookWatcherExtensionProject) {\n const extensionChangeFiles: Array<CookbookWatcherFile[]> = Array.from({ length: imports.length }, () => []);\n\n let isProcessing = false;\n let debounceTimer: any = null;\n const currentBatchChanges = new Map<string, boolean>();\n\n if (!allFiles.has(root)) {\n allFiles.set(root, new Map());\n }\n const projectFiles = allFiles.get(root)!;\n\n const processBatch = async () => {\n isProcessing = true;\n consola.info(chalk.gray(`[${getRate()}] ✨ type-safety applying..`));\n try {\n const batch = new Map(currentBatchChanges);\n currentBatchChanges.clear();\n\n for (const [filePath, isDependency] of batch) {\n const fileName = filePath.split(\"/\").pop()!;\n const fileData = processFile(filePath, appRoot, fileName);\n fileData.dependencyChanged = isDependency;\n if (!projectFiles.has(filePath)) projectFiles.set(filePath, fileData);\n for (let i = 0; i < imports.length; i++) {\n if (imports[i].filter(fileData)) {\n extensionChangeFiles[i].push(fileData);\n }\n }\n }\n\n const asyncTasks = [];\n for (let i = 0; i < imports.length; i++) {\n if (extensionChangeFiles[i].length > 0) {\n if (imports[i].async) {\n asyncTasks.push(\n (async () => {\n try {\n await imports[i]?.setup?.(root, mode, options, project, filterChangeFiles(extensionChangeFiles[i]), filterAllFiles(root, imports[i]));\n // oxlint-disable-next-line no-useless-catch\n } catch (error) {\n throw error;\n } finally {\n extensionChangeFiles[i] = [];\n }\n })(),\n );\n } else {\n try {\n await imports[i]?.setup?.(root, mode, options, project, filterChangeFiles(extensionChangeFiles[i]), filterAllFiles(root, imports[i]));\n } catch (error) {\n consola.error(error);\n }\n extensionChangeFiles[i] = [];\n }\n }\n }\n if (asyncTasks.length > 0) {\n try {\n await Promise.all(asyncTasks);\n } catch (error) {\n consola.error(error);\n }\n }\n\n await generateDeclares(root, mode, options, project, extensionChangeFiles);\n } finally {\n isProcessing = false;\n if (currentBatchChanges.size > 0) {\n setTimeout(processBatch, 0);\n }\n }\n };\n\n const watcher = watch(appRoot, { persistent: true, recursive: true }, async (event, filename) => {\n if (!filename) return;\n\n const filePath = filename.replaceAll(\"\\\\\", \"/\");\n\n const inValidDir = validDirs.some((dir) => filePath.startsWith(`${dir}/`));\n if (!inValidDir) return;\n if (!filePath.endsWith(\".ts\")) return;\n if (filePath.endsWith(\".test.ts\") || filePath.endsWith(\".spec.ts\")) return;\n\n const fileName = filePath.split(\"/\").pop()!;\n if (fileName.startsWith(\".\")) return;\n if (fileName.startsWith(\"_\")) return;\n\n const absolutePath = resolve(appRoot, filePath);\n\n currentBatchChanges.set(filePath, false);\n\n try {\n await parseAndCacheDependencies(absolutePath, appRoot);\n\n const affectedFiles = findAffectedFiles(absolutePath);\n for (const affectedFile of affectedFiles) {\n const relativePath = relative(appRoot, affectedFile).replaceAll(\"\\\\\", \"/\");\n if (!currentBatchChanges.has(relativePath)) {\n currentBatchChanges.set(relativePath, true);\n }\n }\n } catch (error) {\n consola.error(`Failed to process file: ${filePath}`);\n }\n\n if (isProcessing) {\n return;\n }\n\n if (debounceTimer) clearTimeout(debounceTimer);\n\n debounceTimer = setTimeout(processBatch, 768);\n });\n\n return watcher;\n}\n\nfunction processFile(filePath: string, appRoot: string, fileName: string): CookbookWatcherFile {\n const importName = generateImportName(filePath);\n const type = getFileType(filePath);\n\n const parts = filePath.split(\"/\");\n for (let i = 0; i < parts.length; i++) {\n const segment = parts[i];\n const isFileSegment = i === parts.length - 1;\n\n if (!segment) {\n consola.error(`Invalid path: '${segment}' (${join(appRoot, filePath)}). Path segments cannot be empty.`);\n exit(1);\n }\n\n if (!isFileSegment) {\n if (!/^\\$?[a-z0-9-]+$/.test(segment)) {\n consola.error(`Invalid folder: '${segment}' (${join(appRoot, filePath)}). Allow starting with $, followed by lowercase letters, digits, and hyphens. Files/directories starting with $ will not be exposed as routes.`);\n exit(1);\n }\n } else {\n const mainPart = segment.slice(0, -3);\n\n const dotCount = segment.split(\".\").length - 1;\n if (dotCount < 1 || dotCount > 2) {\n consola.error(`Invalid file: '${segment}' (${join(appRoot, filePath)}). Must contain 1-2 dots (including extension).`);\n exit(1);\n }\n\n if (!/^[a-z0-9-.]+$/.test(mainPart)) {\n consola.error(`Invalid file: '${segment}' (${join(appRoot, filePath)}). Only lowercase letters, digits, hyphens and dots are allowed.`);\n exit(1);\n }\n }\n }\n\n return {\n parts,\n projectFsPath: appRoot,\n path: filePath,\n fileName,\n importName,\n type,\n dependencyChanged: false,\n };\n}\n\nasync function parseAndCacheDependencies(filePath: string, appRoot: string): Promise<void> {\n const oldDependencies = dependencyCache.get(filePath) || new Set<string>();\n const newDependencies = await extractImports(filePath, appRoot);\n\n dependencyCache.set(filePath, newDependencies);\n\n for (const dep of oldDependencies) {\n if (reverseDependencyGraph.has(dep)) {\n const dependents = reverseDependencyGraph.get(dep)!;\n dependents.delete(filePath);\n if (dependents.size === 0) {\n reverseDependencyGraph.delete(dep);\n }\n }\n }\n\n for (const dep of newDependencies) {\n if (!reverseDependencyGraph.has(dep)) {\n reverseDependencyGraph.set(dep, new Set());\n }\n reverseDependencyGraph.get(dep)!.add(filePath);\n }\n}\n\nasync function extractImports(filePath: string, appRoot: string): Promise<Set<string>> {\n const imports = new Set<string>();\n\n try {\n const fileContent = await readFile(filePath, \"utf-8\");\n const rl = createInterface({\n input: Readable.from(fileContent),\n crlfDelay: Number.POSITIVE_INFINITY,\n });\n\n for await (const line of rl) {\n const trimmed = line.trim();\n\n if (!trimmed || trimmed.startsWith(\"//\")) continue;\n if (trimmed.startsWith(\"/*\") || !trimmed.startsWith(\"import\")) break;\n\n const match = line.match(/from\\s+[\"']([^\"']+)[\"']/);\n if (match) {\n const importPath = match[1];\n const resolved = resolveImportPath(importPath, filePath, appRoot);\n if (resolved) {\n imports.add(resolved);\n }\n }\n }\n } catch (error) {\n consola.error(`Failed to parse file: ${filePath}`);\n }\n\n return imports;\n}\n\nfunction resolveImportPath(importPath: string, importerPath: string, appRoot: string): string | null {\n if (importPath.startsWith(\".\") || importPath.startsWith(\"/\") || importPath.startsWith(\"~/\") || importPath.startsWith(\"@/\")) {\n let resolved: string;\n if (importPath.startsWith(\".\")) {\n resolved = resolve(dirname(importerPath), importPath);\n } else {\n const normalized = importPath.replace(/^(~|@)\\//, \"/\");\n resolved = resolve(appRoot, \"../\", normalized.slice(1));\n }\n\n if (!resolved.endsWith(\".ts\")) {\n resolved += \".ts\";\n }\n\n if (!resolved.includes(\"node_modules\") && !resolved.includes(\"/.\") && resolved.startsWith(dirname(appRoot))) {\n return resolved;\n }\n }\n\n return null;\n}\n\nfunction findAffectedFiles(changedFile: string): Set<string> {\n const affected = new Set<string>();\n const visited = new Set<string>();\n const queue = [changedFile];\n\n visited.add(changedFile);\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n if (reverseDependencyGraph.has(current)) {\n for (const dependent of reverseDependencyGraph.get(current)!) {\n if (!visited.has(dependent)) {\n visited.add(dependent);\n affected.add(dependent);\n queue.push(dependent);\n }\n }\n }\n }\n\n return affected;\n}\n\nfunction generateImportName(filePath: string): string {\n return filePath\n .slice(0, filePath.length - 3)\n .replaceAll(\"/\", \"__\")\n .replaceAll(\"$\", \"_\")\n .replaceAll(\"-\", \"_\")\n .replaceAll(\".\", \"T\");\n}\n\nfunction getFileType(path: string): string | null {\n let dot1 = -1;\n let dot2 = -1;\n\n for (let i = path.length - 1; i >= 0; i--) {\n if (path[i] === \".\") {\n if (dot1 === -1) {\n dot1 = i;\n } else {\n dot2 = i;\n break;\n }\n }\n }\n\n if (dot1 === -1 || dot2 === -1 || path.slice(dot1) !== \".ts\") {\n return null;\n }\n\n return path.slice(dot2 + 1, dot1);\n}\n\nfunction filterChangeFiles(changeFiles: Array<CookbookWatcherFile>): Array<CookbookWatcherFile> {\n const map = new Map<string, CookbookWatcherFile>();\n for (const item of changeFiles) {\n if (!map.has(item.path)) {\n map.set(item.path, item);\n }\n }\n return Array.from(map.values());\n}\n\nfunction filterAllFiles(root: string, extension: ReturnType<typeof defineWatcherExtension>) {\n const projectFiles = allFiles.get(root);\n if (!projectFiles) return [];\n const result = [...projectFiles.values()].filter((file) => extension.filter(file));\n return result;\n}\n",
|
|
174
|
+
"export function config<ConfigT extends Config>(config: ConfigT): ConfigT {\n return config;\n}\n\nexport type Config = (mode: string) => Promise<Record<string, unknown>> | Record<string, unknown>;\n\nexport interface ConfigEnvironments<T extends Config> {\n [key: string]: (env: Record<string, string>) => Partial<Awaited<ReturnType<T>>> | Promise<Partial<Awaited<ReturnType<T>>>>;\n}\n\nexport function envToString(value: string | number | undefined, defaultValue: string) {\n if (value === undefined) return defaultValue;\n\n return `${value}`;\n}\n\nexport function envToNumber(value: string | undefined, defaultValue: number) {\n if (value === undefined) return defaultValue;\n\n return Number.parseInt(value, 10);\n}\n\nexport function envToBoolean(value: string | number | undefined, defaultValue: boolean) {\n if (value === \"true\") return true;\n\n if (value === \"false\") return false;\n\n if (value === \"\") return false;\n\n if (undefined === value) return defaultValue;\n\n return Boolean(value);\n}\n",
|
|
175
|
+
"export function headersToJSON(headers: Headers) {\n const json: Record<string, string> = {};\n for (const [key, value] of (headers as any).entries()) {\n json[key] = value;\n }\n return json;\n}\n",
|
|
176
|
+
"function isPlainObject(value: any): value is Record<string, any> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function mergeDeep<T extends Record<string, any>, U extends Record<string, any>>(target: T, source: U): T {\n const merged = { ...target };\n\n for (const key in source) {\n if (!Object.prototype.hasOwnProperty.call(source, key)) continue;\n\n const sourceValue = source[key];\n const targetValue = target[key as keyof T];\n\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n if (isPlainObject(targetValue) && isPlainObject(sourceValue)) {\n merged[key as keyof T & keyof U] = mergeDeep(targetValue, sourceValue) as any;\n }\n } else {\n (merged as any)[key] = sourceValue;\n }\n }\n\n return merged as T & U;\n}\n",
|
|
177
|
+
"const isoDatePattern = /^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?)(Z|[+-]\\d{2}:?\\d{2})?$/;\n\nexport function reviveJSONParse<T>(json: T): T {\n if (json !== null && typeof json === 'object') {\n if (json instanceof Date || (typeof (json as any).getTime === 'function' && typeof (json as any).toISOString === 'function')) {\n return json;\n }\n if (Array.isArray(json)) {\n return json.map((item) => reviveJSONParse(item)) as any;\n }\n return Object.entries(json).reduce((acc, [key, value]) => {\n acc[key as keyof T] = reviveJSONParse(value);\n return acc;\n }, {} as T);\n }\n if (typeof json === 'string') {\n const match = json.match(isoDatePattern);\n if (match) {\n const normalizedDateString = match[2] ? `${match[1]}${match[2].replace(':', '')}` : `${match[1]}Z`;\n return new Date(normalizedDateString) as any;\n }\n }\n return json;\n}",
|
|
178
|
+
"import type { IValidation } from \"typia\";\nimport { reject } from \"../index.ts\";\nimport type { $context, $meta, Logger, Results, GeneratedInit } from \"../index.ts\";\nimport { headersToJSON } from \"../utils/headers-to-json.ts\";\nimport { mergeDeep } from \"../utils/merge-deep.ts\";\nimport { reviveJSONParse } from \"../utils/revive-json-parse.ts\";\n\nexport function __initExecuter(generated: GeneratedInit, runtime: any) {\n const __execute = async (\n routeSchema: any,\n options: {\n createdExecuteId: string;\n createdLogger: Logger;\n path: string;\n headers: Record<string, string> | Headers;\n context: any | undefined;\n } & (\n | {\n params: Record<any, any>;\n paramsType: \"raw\";\n }\n | {\n params: string;\n paramsType: \"string\";\n }\n ),\n ): Promise<{ executeId: string; headers: Headers; params: Record<any, unknown>; results: Results<any>; context: $context; meta: Readonly<$meta>; type: \"action\" | \"stream\"; emptyResult: boolean; resultsTypeSafety: boolean; finales: Array<() => void | Promise<void>> }> => {\n const type = options.path.endsWith(\"~\") ? \"stream\" : \"action\";\n const executeId: string = options.createdExecuteId;\n let headers: Headers;\n if (!(options.headers instanceof Headers)) {\n // @ts-ignore\n headers = new Headers({\n ...options.headers,\n });\n } else {\n headers = options.headers;\n }\n if (!(\"toJSON\" in headers)) (headers as any).toJSON = () => headersToJSON(headers);\n\n const finales: Array<any> = [];\n const onFinally = (handler: any) => finales.unshift(handler);\n\n let params: Record<any, unknown>;\n if (options.paramsType === \"raw\") {\n params = options.params;\n if (typeof params === \"undefined\") params = {};\n } else {\n if (!options.params || options.params === \"\" || options.params === \"{}\") {\n params = {};\n } else if (headers.get(\"content-type\")?.startsWith(\"application/json\")) {\n try {\n params = reviveJSONParse(JSON.parse(options.params));\n } catch (error) {\n throw reject(\"PARAMS_TYPE_NOT_SUPPORTED\", { expected: \"json\" });\n }\n if (typeof params === \"undefined\") params = {};\n } else if (headers.get(\"content-type\")?.startsWith(\"application/x-www-form-urlencoded\")) {\n try {\n const formData = new URLSearchParams(options.params);\n params = {};\n formData.forEach((value, key) => params[key] = value);\n } catch (error) {\n throw reject(\"PARAMS_TYPE_NOT_SUPPORTED\", { expected: \"form-urlencoded\" });\n }\n } else {\n throw reject(\"PARAMS_TYPE_NOT_SUPPORTED\", { expected: \"json\" });\n }\n }\n if (typeof params !== \"object\" || Array.isArray(params)) throw reject(\"PARAMS_TYPE_NOT_SUPPORTED\", { expected: \"json\" });\n if (\"$milkioGenerateParams\" in params && params.$milkioGenerateParams === \"enable\") {\n if (!runtime.develop) throw reject(\"NOT_DEVELOP_MODE\", \"This feature must be in cookbook to use.\");\n delete params.$milkioGenerateParams;\n let paramsRand = routeSchema.randomParams();\n if (paramsRand === undefined || paramsRand === null) paramsRand = {};\n params = mergeDeep(params, paramsRand);\n options.createdLogger.debug(\"✨ the generated params:\", JSON.stringify(params));\n }\n if (!options.context?.http?.notFound && options.context?.http?.params?.string) options.context.http.params.parsed = params;\n\n if (!options.context) options.context = {};\n options.context.develop = runtime.develop;\n options.context.path = options.path;\n options.context.logger = options.createdLogger;\n options.context.emit = runtime.emit;\n options.context.emitAnyApproved = runtime.emitAnyApproved;\n options.context.emitAllApproved = runtime.emitAllApproved;\n options.context.executeId = options.createdExecuteId;\n options.context.config = runtime.runtime.config;\n options.context.typia = generated.typiaSchema;\n options.context.call = (module: any, params: any) => __call(options.context, module, params);\n options.context.onFinally = onFinally;\n options.context._ = runtime;\n\n const results: Results<any> = { value: undefined };\n\n const module = routeSchema.module;\n const meta = (module?.meta ? module?.meta : {}) as unknown as Readonly<$meta>;\n\n if (options.context.http?.request?.method !== undefined) {\n const allowMethods = meta?.methods ?? [\"POST\"];\n if (!allowMethods.includes(options.context.http.request.method)) throw reject(\"METHOD_NOT_ALLOWED\", undefined);\n }\n\n if (meta?.typeSafety === undefined || meta.typeSafety === true || (Array.isArray(meta.typeSafety) && meta.typeSafety.includes(\"params\"))) {\n const validation = routeSchema.validateParams(params) as IValidation<any>;\n if (!validation.success) throw reject(\"PARAMS_TYPE_INCORRECT\", { ...validation.errors[0], message: `The value '${validation.errors[0].path}' is '${validation.errors[0].value}', which does not meet '${validation.errors[0].expected}' requirements.` });\n }\n\n await runtime.emit(\"milkio:executeBefore\", { executeId: options.createdExecuteId, logger: options.createdLogger, path: options.path, meta, context: options.context, reject });\n\n results.value = await module.handler(options.context, params);\n\n let emptyResult = false;\n if (results.value === undefined || results.value === null || results.value === \"\") {\n emptyResult = true;\n results.value = {};\n } else if (Array.isArray(results.value) || typeof results.value !== \"object\") {\n throw reject(\"REQUEST_FAIL\", \"The return type of the handler must be an 'object', which is currently an '${typeof typeof results.value}'.\");\n }\n\n let resultsTypeSafety = false;\n if (!emptyResult && type === \"action\" && (\n // Temporary: type-safe default is false and this setting should not be exposed to users\n // Due to current issues with typia, type safety cannot be achieved at the moment\n // Therefore, the next line of code is currently commented out\n // This means Milkio is using traditional JSON.stringify for result serialization\n // meta?.typeSafety === undefined || \n // @ts-ignore\n meta.typeSafety === true || (Array.isArray(meta.typeSafety) && meta.typeSafety.includes(\"results\")))) {\n resultsTypeSafety = true;\n const validation = routeSchema.validateResults(results.value) as IValidation<any>;\n if (!validation.success) throw reject(\"RESULTS_TYPE_INCORRECT\", { ...validation.errors[0], message: `The value '${validation.errors[0].path}' is '${validation.errors[0].value}', which does not meet '${validation.errors[0].expected}' requirements.` });\n }\n\n await runtime.emit(\"milkio:executeAfter\", { executeId: options.createdExecuteId, logger: options.createdLogger, path: options.path, meta, context: options.context, results, reject });\n\n return { executeId, headers, params, results, context: options.context, meta, type, emptyResult, resultsTypeSafety, finales };\n };\n\n const __call = async (context: $context, module: { meta: any, handler: any }, params?: any): Promise<any> => {\n const moduleAwaited = await module;\n return await moduleAwaited.handler(context, params);\n };\n\n return {\n __call,\n __execute,\n };\n}",
|
|
179
|
+
"import type { $context, ContextHttp, Results, Logger, $meta } from \"../index.ts\";\n\nexport interface $events {\n \"*\": { key: keyof $events, value: any };\n \"milkio:httpRequest\": { executeId: string; path: string; logger: Logger; http: ContextHttp<Record<string, any>> };\n \"milkio:httpResponse\": { executeId: string; path: string; logger: Logger; http: ContextHttp<Record<string, any>>; context: $context; success: boolean };\n \"milkio:httpNotFound\": { executeId: string; path: string; logger: Logger; http: ContextHttp<Record<string, any>> };\n \"milkio:executeBefore\": { executeId: string; path: string; logger: Logger; meta: $meta; context: $context };\n \"milkio:executeAfter\": { executeId: string; path: string; logger: Logger; meta: $meta; context: $context; results: Results<any> };\n}\n\nexport function __initEventManager() {\n const handlers = new Map<(event: any) => void, string>();\n const indexed = new Map<string, Set<(event: any) => Promise<void | boolean> | void | boolean>>();\n\n const eventManager = {\n on: <Key extends keyof $events, Handler extends (event: $events[Key]) => Promise<void | boolean> | void | boolean>(key: Key, handler: Handler) => {\n handlers.set(handler, key as string);\n if (key === '*') {\n if (indexed.has('*') === false) {\n indexed.set('*', new Set());\n }\n const wildcardSet = indexed.get('*')!;\n wildcardSet.add(handler);\n } else {\n if (indexed.has(key as string) === false) {\n indexed.set(key as string, new Set());\n }\n const set = indexed.get(key as string)!;\n set.add(handler);\n }\n\n return () => {\n handlers.delete(handler);\n if (key === '*') {\n const wildcardSet = indexed.get('*');\n if (wildcardSet) {\n wildcardSet.delete(handler);\n }\n } else {\n const set = indexed.get(key as string);\n if (set) {\n set.delete(handler);\n }\n }\n };\n },\n off: <Key extends keyof $events, Handler extends (event: $events[Key]) => void>(key: Key, handler: Handler) => {\n if (key === '*') {\n const wildcardSet = indexed.get('*');\n if (!wildcardSet) return;\n handlers.delete(handler);\n wildcardSet.delete(handler);\n } else {\n const set = indexed.get(key as string);\n if (!set) return;\n handlers.delete(handler);\n set.delete(handler);\n }\n },\n emit: async <Key extends keyof $events, Value extends $events[Key]>(key: Key, value: Value): Promise<void> => {\n const wildcardHandlers = indexed.get('*');\n if (wildcardHandlers) {\n for (const handler of wildcardHandlers) {\n await handler({ key, value });\n }\n }\n\n const h = indexed.get(key as string);\n if (h) {\n for (const handler of h) {\n await handler(value);\n }\n }\n },\n emitAnyApproved: async <Key extends keyof $events, Value extends $events[Key]>(key: Key, value: Value): Promise<boolean> => {\n const wildcardHandlers = indexed.get('*');\n let accepted = false;\n if (wildcardHandlers) {\n for (const handler of wildcardHandlers) {\n if ((await handler({ key, value })) === true) {\n accepted = true;\n }\n }\n }\n\n const h = indexed.get(key as string);\n if (h) {\n for (const handler of h) {\n if ((await handler(value)) === true) {\n accepted = true;\n }\n }\n }\n return accepted;\n },\n emitAllApproved: async <Key extends keyof $events, Value extends $events[Key]>(key: Key, value: Value): Promise<boolean> => {\n const wildcardHandlers = indexed.get('*');\n let approved = true;\n if (wildcardHandlers) {\n for (const handler of wildcardHandlers) {\n if ((await handler({ key, value })) !== true) {\n approved = false;\n }\n }\n }\n\n const h = indexed.get(key as string);\n if (h) {\n for (const handler of h) {\n if ((await handler(value)) !== true) {\n approved = false;\n }\n }\n }\n return approved;\n },\n };\n\n return eventManager;\n}\n",
|
|
180
|
+
"type IdGeneratorOptions = {\n length?: number;\n timestamp: boolean;\n sequential: boolean;\n};\n\nfunction defineIdGenerator(options: IdGeneratorOptions) {\n if (!options.length) options.length = 24;\n if (options.length < 1) throw new Error(\"Invalid length\");\n if (options.length > 61) throw new Error(\"Invalid length\");\n if (options.timestamp && options.length < 9) throw new Error(\"Invalid length\");\n let lastTime = 0;\n let lastDecimal = 0n;\n return {\n createId() {\n let randLength = options.length!;\n const now = Date.now();\n let id = \"\";\n if (options.timestamp) {\n randLength -= 8;\n id = `${id}${__bigIntToString(BigInt(now)).padStart(8, \"0\")}`;\n }\n if (options.sequential && lastTime === now) {\n id = `${id}${__bigIntToString(++lastDecimal).padStart(1, \"0\")}`;\n } else {\n lastTime = now;\n const min = 0n;\n const max = __getMaxValue(BigInt(randLength));\n lastDecimal = __secureRandomBigInt(min, max);\n id = `${id}${__bigIntToString(lastDecimal).padStart(randLength, \"0\")}`;\n }\n return id;\n },\n getIdTimestamp(id: string) {\n return options.timestamp ? Number(__stringToBigInt(id.slice(0, 8).replaceAll(\"0\", \"\"))) : 0;\n },\n };\n}\n\nconst ENCODING = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\nfunction __secureRandomBigInt(min: bigint, max: bigint): bigint {\n if (min >= max) throw new Error(\"Invalid range\");\n\n const range = max - min + 1n;\n const byteCount = Math.ceil(Number(BigInt(range.toString(2).length)) / 8);\n const entropyBytes = new Uint8Array(byteCount);\n\n let randomValue: bigint;\n do {\n crypto.getRandomValues(entropyBytes);\n randomValue =\n BigInt(\n `0x${Array.from(entropyBytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\")}`,\n ) % range;\n } while (randomValue < 0n);\n\n return min + randomValue;\n}\n\nfunction __bigIntToString(value: bigint): string {\n const base = BigInt(ENCODING.length);\n let result = \"\";\n let current = value;\n\n if (current === 0n) return ENCODING[0];\n\n while (current > 0n) {\n const remainder = current % base;\n result = ENCODING[Number(remainder)] + result;\n current = current / base;\n }\n return result;\n}\n\nfunction __stringToBigInt(str: string): bigint {\n const charMap: { [key: string]: number } = {};\n for (let i = 0; i < ENCODING.length; i++) {\n charMap[ENCODING[i]] = i;\n }\n\n const base = BigInt(ENCODING.length);\n let result = 0n;\n\n for (let i = 0; i < str.length; i++) {\n const char = str[i];\n if (!(char in charMap)) {\n throw new Error(`Invalid character '${char}' in input string`);\n }\n const value = BigInt(charMap[char]);\n result = result * base + value;\n }\n\n return result;\n}\n\nfunction __getMaxValue(n: bigint): bigint {\n return BigInt(ENCODING.length) ** n - 1n;\n}\n\nconst idGenerator = defineIdGenerator({ length: 24, timestamp: false, sequential: false });\n\nexport const __createId = idGenerator.createId;\n",
|
|
181
|
+
"import { __createId } from \"../utils/create-id.ts\";\n\nexport type ExecuteIdGenerator = (headers?: Headers) => string | Promise<string>;\n\nexport function defineDefaultExecuteIdGenerator() {\n return __createId;\n}\n",
|
|
182
|
+
"import { type $types, __initListener, __initExecuter, __initEventManager, type ExecuteId, type Logger, type Mixin, type GeneratedInit, type Ping, type LoggerSubmittingHandler, type LoggerInsertingHandler } from \"../index.ts\";\nimport { defineDefaultExecuteIdGenerator } from \"../execute/execute-id-generator.ts\";\n\nexport interface MilkioInit {\n port: number;\n develop: boolean;\n fetchEnv?: (key: string) => string | undefined;\n accessKey?: string;\n cors?: {\n corsAllowMethods?: string;\n corsAllowHeaders?: string;\n corsAllowOrigin?: string;\n };\n ignorePathLevel?: number;\n realIp?: (headers: Headers) => string;\n executeId?: (headers: Headers) => string | Promise<string>;\n onLoggerSubmitting?: LoggerSubmittingHandler;\n onLoggerInserting?: LoggerInsertingHandler;\n bootstraps?: Array<(world: any) => Promise<void> | void>;\n}\n\nexport type MilkioRuntimeInit<T extends MilkioInit> = Mixin<\n T,\n {\n executeId: (headers: Headers) => string | Promise<string>;\n runtime: {\n request: Map<ExecuteId, { logger: Logger }>;\n config: Awaited<ReturnType<$types[\"generated\"][\"configSchema\"]>>;\n app: any;\n };\n on: Awaited<ReturnType<typeof __initEventManager>>[\"on\"];\n off: Awaited<ReturnType<typeof __initEventManager>>[\"off\"];\n emit: Awaited<ReturnType<typeof __initEventManager>>[\"emit\"];\n emitAnyApproved: Awaited<ReturnType<typeof __initEventManager>>[\"emitAnyApproved\"];\n emitAllApproved: Awaited<ReturnType<typeof __initEventManager>>[\"emitAllApproved\"];\n }\n>;\n\nexport async function createWorld<MilkioOptions extends MilkioInit>(generated: GeneratedInit, configSchema: { get: () => Promise<Record<any, any>> }, options: MilkioOptions): Promise<unknown> {\n const executeId = options.executeId ?? defineDefaultExecuteIdGenerator();\n const config = await configSchema.get();\n\n const runtime = {\n request: new Map(),\n config,\n } as MilkioRuntimeInit<MilkioOptions>[\"runtime\"];\n\n const eventManager = __initEventManager();\n\n if (options.accessKey) options.ignorePathLevel = options.ignorePathLevel ? options.ignorePathLevel + 1 : 1;\n\n const _: MilkioRuntimeInit<MilkioOptions> = {\n ...options,\n executeId,\n runtime,\n on: eventManager.on,\n off: eventManager.off,\n emit: eventManager.emit,\n emitAnyApproved: eventManager.emitAnyApproved,\n emitAllApproved: eventManager.emitAllApproved,\n };\n\n const executer = __initExecuter(generated, _);\n const listener = __initListener(generated, _, executer);\n\n // Initialize the app\n const world = {\n _,\n // event manager\n on: eventManager.on,\n off: eventManager.off,\n emit: eventManager.emit,\n emitAnyApproved: eventManager.emitAnyApproved,\n emitAllApproved: eventManager.emitAllApproved,\n // listener\n listener,\n // function\n config,\n };\n\n runtime.app = world;\n\n if (Array.isArray(options.bootstraps)) {\n for (const bootstrap of options.bootstraps) {\n await bootstrap(world as MilkioWorld<GeneratedInit, MilkioOptions>);\n }\n }\n\n await Promise.all(generated.handlerSchema.loadHandlers(world));\n\n const routeKeys = Object.keys(generated.routeSchema as Record<string, any>);\n console.log(`\\n△ Routes:\\n ${routeKeys.join(\"\\n \")}\\n A total of ${routeKeys.length} routes.`);\n console.log(`\\n△ Server: http://localhost:${options.port}`);\n\n return world as unknown;\n}\n\nexport interface MilkioWorld<Generated extends GeneratedInit, MilkioOptions extends MilkioInit = MilkioInit> {\n _: MilkioRuntimeInit<MilkioOptions>;\n // event manager\n on: <Key extends keyof Generated[\"events\"], Handler extends (event: Generated[\"events\"][Key]) => void>(key: Key, handler: Handler) => (() => void);\n off: <Key extends keyof Generated[\"events\"], Handler extends (event: Generated[\"events\"][Key]) => void>(key: Key, handler: Handler) => void;\n emit: <Key extends keyof Generated[\"events\"], Value extends Generated[\"events\"][Key]>(key: Key, value: Value) => Promise<void>;\n emitAnyApproved: <Key extends keyof Generated[\"events\"], Value extends Generated[\"events\"][Key]>(key: Key, value: Value) => Promise<boolean>;\n emitAllApproved: <Key extends keyof Generated[\"events\"], Value extends Generated[\"events\"][Key]>(key: Key, value: Value) => Promise<boolean>;\n ping: (options?: { timeout?: number }) => Promise<Ping>;\n // listener\n listener: Awaited<ReturnType<typeof __initListener>>;\n config: Readonly<Awaited<ReturnType<$types[\"configSchema\"][\"get\"]>>>;\n}\n",
|
|
183
|
+
"/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n",
|
|
184
|
+
"import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n",
|
|
185
|
+
"import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n",
|
|
186
|
+
"let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n",
|
|
187
|
+
"import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n",
|
|
188
|
+
"import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n",
|
|
189
|
+
"import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n",
|
|
190
|
+
"import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n",
|
|
191
|
+
"import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n",
|
|
192
|
+
"import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n",
|
|
193
|
+
"import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n",
|
|
194
|
+
"import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n",
|
|
195
|
+
"/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n",
|
|
196
|
+
"import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n",
|
|
197
|
+
"import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n",
|
|
198
|
+
"const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n",
|
|
199
|
+
"export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n",
|
|
200
|
+
"import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n",
|
|
201
|
+
"const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n",
|
|
202
|
+
"/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n",
|
|
203
|
+
"import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n",
|
|
204
|
+
"export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n",
|
|
205
|
+
"export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n",
|
|
206
|
+
"import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n",
|
|
207
|
+
"import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n",
|
|
208
|
+
"export { enUS as defaultLocale } from \"../locale/en-US.js\";\n",
|
|
209
|
+
"import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n",
|
|
210
|
+
"import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n",
|
|
211
|
+
"import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n",
|
|
212
|
+
"import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n",
|
|
213
|
+
"import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n",
|
|
214
|
+
"export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n",
|
|
215
|
+
"import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n",
|
|
216
|
+
"import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n",
|
|
217
|
+
"const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n",
|
|
218
|
+
"const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n",
|
|
219
|
+
"import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n",
|
|
220
|
+
"// This file is generated automatically by `scripts/build/indices.ts`. Please, don't change it.\n\nexport * from \"./add.js\";\nexport * from \"./addBusinessDays.js\";\nexport * from \"./addDays.js\";\nexport * from \"./addHours.js\";\nexport * from \"./addISOWeekYears.js\";\nexport * from \"./addMilliseconds.js\";\nexport * from \"./addMinutes.js\";\nexport * from \"./addMonths.js\";\nexport * from \"./addQuarters.js\";\nexport * from \"./addSeconds.js\";\nexport * from \"./addWeeks.js\";\nexport * from \"./addYears.js\";\nexport * from \"./areIntervalsOverlapping.js\";\nexport * from \"./clamp.js\";\nexport * from \"./closestIndexTo.js\";\nexport * from \"./closestTo.js\";\nexport * from \"./compareAsc.js\";\nexport * from \"./compareDesc.js\";\nexport * from \"./constructFrom.js\";\nexport * from \"./constructNow.js\";\nexport * from \"./daysToWeeks.js\";\nexport * from \"./differenceInBusinessDays.js\";\nexport * from \"./differenceInCalendarDays.js\";\nexport * from \"./differenceInCalendarISOWeekYears.js\";\nexport * from \"./differenceInCalendarISOWeeks.js\";\nexport * from \"./differenceInCalendarMonths.js\";\nexport * from \"./differenceInCalendarQuarters.js\";\nexport * from \"./differenceInCalendarWeeks.js\";\nexport * from \"./differenceInCalendarYears.js\";\nexport * from \"./differenceInDays.js\";\nexport * from \"./differenceInHours.js\";\nexport * from \"./differenceInISOWeekYears.js\";\nexport * from \"./differenceInMilliseconds.js\";\nexport * from \"./differenceInMinutes.js\";\nexport * from \"./differenceInMonths.js\";\nexport * from \"./differenceInQuarters.js\";\nexport * from \"./differenceInSeconds.js\";\nexport * from \"./differenceInWeeks.js\";\nexport * from \"./differenceInYears.js\";\nexport * from \"./eachDayOfInterval.js\";\nexport * from \"./eachHourOfInterval.js\";\nexport * from \"./eachMinuteOfInterval.js\";\nexport * from \"./eachMonthOfInterval.js\";\nexport * from \"./eachQuarterOfInterval.js\";\nexport * from \"./eachWeekOfInterval.js\";\nexport * from \"./eachWeekendOfInterval.js\";\nexport * from \"./eachWeekendOfMonth.js\";\nexport * from \"./eachWeekendOfYear.js\";\nexport * from \"./eachYearOfInterval.js\";\nexport * from \"./endOfDay.js\";\nexport * from \"./endOfDecade.js\";\nexport * from \"./endOfHour.js\";\nexport * from \"./endOfISOWeek.js\";\nexport * from \"./endOfISOWeekYear.js\";\nexport * from \"./endOfMinute.js\";\nexport * from \"./endOfMonth.js\";\nexport * from \"./endOfQuarter.js\";\nexport * from \"./endOfSecond.js\";\nexport * from \"./endOfToday.js\";\nexport * from \"./endOfTomorrow.js\";\nexport * from \"./endOfWeek.js\";\nexport * from \"./endOfYear.js\";\nexport * from \"./endOfYesterday.js\";\nexport * from \"./format.js\";\nexport * from \"./formatDistance.js\";\nexport * from \"./formatDistanceStrict.js\";\nexport * from \"./formatDistanceToNow.js\";\nexport * from \"./formatDistanceToNowStrict.js\";\nexport * from \"./formatDuration.js\";\nexport * from \"./formatISO.js\";\nexport * from \"./formatISO9075.js\";\nexport * from \"./formatISODuration.js\";\nexport * from \"./formatRFC3339.js\";\nexport * from \"./formatRFC7231.js\";\nexport * from \"./formatRelative.js\";\nexport * from \"./fromUnixTime.js\";\nexport * from \"./getDate.js\";\nexport * from \"./getDay.js\";\nexport * from \"./getDayOfYear.js\";\nexport * from \"./getDaysInMonth.js\";\nexport * from \"./getDaysInYear.js\";\nexport * from \"./getDecade.js\";\nexport * from \"./getDefaultOptions.js\";\nexport * from \"./getHours.js\";\nexport * from \"./getISODay.js\";\nexport * from \"./getISOWeek.js\";\nexport * from \"./getISOWeekYear.js\";\nexport * from \"./getISOWeeksInYear.js\";\nexport * from \"./getMilliseconds.js\";\nexport * from \"./getMinutes.js\";\nexport * from \"./getMonth.js\";\nexport * from \"./getOverlappingDaysInIntervals.js\";\nexport * from \"./getQuarter.js\";\nexport * from \"./getSeconds.js\";\nexport * from \"./getTime.js\";\nexport * from \"./getUnixTime.js\";\nexport * from \"./getWeek.js\";\nexport * from \"./getWeekOfMonth.js\";\nexport * from \"./getWeekYear.js\";\nexport * from \"./getWeeksInMonth.js\";\nexport * from \"./getYear.js\";\nexport * from \"./hoursToMilliseconds.js\";\nexport * from \"./hoursToMinutes.js\";\nexport * from \"./hoursToSeconds.js\";\nexport * from \"./interval.js\";\nexport * from \"./intervalToDuration.js\";\nexport * from \"./intlFormat.js\";\nexport * from \"./intlFormatDistance.js\";\nexport * from \"./isAfter.js\";\nexport * from \"./isBefore.js\";\nexport * from \"./isDate.js\";\nexport * from \"./isEqual.js\";\nexport * from \"./isExists.js\";\nexport * from \"./isFirstDayOfMonth.js\";\nexport * from \"./isFriday.js\";\nexport * from \"./isFuture.js\";\nexport * from \"./isLastDayOfMonth.js\";\nexport * from \"./isLeapYear.js\";\nexport * from \"./isMatch.js\";\nexport * from \"./isMonday.js\";\nexport * from \"./isPast.js\";\nexport * from \"./isSameDay.js\";\nexport * from \"./isSameHour.js\";\nexport * from \"./isSameISOWeek.js\";\nexport * from \"./isSameISOWeekYear.js\";\nexport * from \"./isSameMinute.js\";\nexport * from \"./isSameMonth.js\";\nexport * from \"./isSameQuarter.js\";\nexport * from \"./isSameSecond.js\";\nexport * from \"./isSameWeek.js\";\nexport * from \"./isSameYear.js\";\nexport * from \"./isSaturday.js\";\nexport * from \"./isSunday.js\";\nexport * from \"./isThisHour.js\";\nexport * from \"./isThisISOWeek.js\";\nexport * from \"./isThisMinute.js\";\nexport * from \"./isThisMonth.js\";\nexport * from \"./isThisQuarter.js\";\nexport * from \"./isThisSecond.js\";\nexport * from \"./isThisWeek.js\";\nexport * from \"./isThisYear.js\";\nexport * from \"./isThursday.js\";\nexport * from \"./isToday.js\";\nexport * from \"./isTomorrow.js\";\nexport * from \"./isTuesday.js\";\nexport * from \"./isValid.js\";\nexport * from \"./isWednesday.js\";\nexport * from \"./isWeekend.js\";\nexport * from \"./isWithinInterval.js\";\nexport * from \"./isYesterday.js\";\nexport * from \"./lastDayOfDecade.js\";\nexport * from \"./lastDayOfISOWeek.js\";\nexport * from \"./lastDayOfISOWeekYear.js\";\nexport * from \"./lastDayOfMonth.js\";\nexport * from \"./lastDayOfQuarter.js\";\nexport * from \"./lastDayOfWeek.js\";\nexport * from \"./lastDayOfYear.js\";\nexport * from \"./lightFormat.js\";\nexport * from \"./max.js\";\nexport * from \"./milliseconds.js\";\nexport * from \"./millisecondsToHours.js\";\nexport * from \"./millisecondsToMinutes.js\";\nexport * from \"./millisecondsToSeconds.js\";\nexport * from \"./min.js\";\nexport * from \"./minutesToHours.js\";\nexport * from \"./minutesToMilliseconds.js\";\nexport * from \"./minutesToSeconds.js\";\nexport * from \"./monthsToQuarters.js\";\nexport * from \"./monthsToYears.js\";\nexport * from \"./nextDay.js\";\nexport * from \"./nextFriday.js\";\nexport * from \"./nextMonday.js\";\nexport * from \"./nextSaturday.js\";\nexport * from \"./nextSunday.js\";\nexport * from \"./nextThursday.js\";\nexport * from \"./nextTuesday.js\";\nexport * from \"./nextWednesday.js\";\nexport * from \"./parse.js\";\nexport * from \"./parseISO.js\";\nexport * from \"./parseJSON.js\";\nexport * from \"./previousDay.js\";\nexport * from \"./previousFriday.js\";\nexport * from \"./previousMonday.js\";\nexport * from \"./previousSaturday.js\";\nexport * from \"./previousSunday.js\";\nexport * from \"./previousThursday.js\";\nexport * from \"./previousTuesday.js\";\nexport * from \"./previousWednesday.js\";\nexport * from \"./quartersToMonths.js\";\nexport * from \"./quartersToYears.js\";\nexport * from \"./roundToNearestHours.js\";\nexport * from \"./roundToNearestMinutes.js\";\nexport * from \"./secondsToHours.js\";\nexport * from \"./secondsToMilliseconds.js\";\nexport * from \"./secondsToMinutes.js\";\nexport * from \"./set.js\";\nexport * from \"./setDate.js\";\nexport * from \"./setDay.js\";\nexport * from \"./setDayOfYear.js\";\nexport * from \"./setDefaultOptions.js\";\nexport * from \"./setHours.js\";\nexport * from \"./setISODay.js\";\nexport * from \"./setISOWeek.js\";\nexport * from \"./setISOWeekYear.js\";\nexport * from \"./setMilliseconds.js\";\nexport * from \"./setMinutes.js\";\nexport * from \"./setMonth.js\";\nexport * from \"./setQuarter.js\";\nexport * from \"./setSeconds.js\";\nexport * from \"./setWeek.js\";\nexport * from \"./setWeekYear.js\";\nexport * from \"./setYear.js\";\nexport * from \"./startOfDay.js\";\nexport * from \"./startOfDecade.js\";\nexport * from \"./startOfHour.js\";\nexport * from \"./startOfISOWeek.js\";\nexport * from \"./startOfISOWeekYear.js\";\nexport * from \"./startOfMinute.js\";\nexport * from \"./startOfMonth.js\";\nexport * from \"./startOfQuarter.js\";\nexport * from \"./startOfSecond.js\";\nexport * from \"./startOfToday.js\";\nexport * from \"./startOfTomorrow.js\";\nexport * from \"./startOfWeek.js\";\nexport * from \"./startOfWeekYear.js\";\nexport * from \"./startOfYear.js\";\nexport * from \"./startOfYesterday.js\";\nexport * from \"./sub.js\";\nexport * from \"./subBusinessDays.js\";\nexport * from \"./subDays.js\";\nexport * from \"./subHours.js\";\nexport * from \"./subISOWeekYears.js\";\nexport * from \"./subMilliseconds.js\";\nexport * from \"./subMinutes.js\";\nexport * from \"./subMonths.js\";\nexport * from \"./subQuarters.js\";\nexport * from \"./subSeconds.js\";\nexport * from \"./subWeeks.js\";\nexport * from \"./subYears.js\";\nexport * from \"./toDate.js\";\nexport * from \"./transpose.js\";\nexport * from \"./weeksToDays.js\";\nexport * from \"./yearsToDays.js\";\nexport * from \"./yearsToMonths.js\";\nexport * from \"./yearsToQuarters.js\";\n",
|
|
221
|
+
"import type { Log, MilkioInit, MilkioRuntimeInit } from \"../index.ts\";\n\ninterface CookbookEvent {\n type: \"milkio@logger\";\n log: Log;\n}\n\nexport async function sendCookbookEvent(runtime: MilkioRuntimeInit<MilkioInit>, event: CookbookEvent) {\n // try {\n // const response = await fetch(`http://localhost:${runtime.cookbook.cookbookPort}/$action`, {\n // method: \"POST\",\n // headers: {\n // \"Content-Type\": \"application/json\",\n // },\n // body: JSON.stringify(event),\n // });\n // if (!response.ok) {\n // console.log(\"[COOKBOOK]\", await response.text());\n // console.log(\"[COOKBOOK]\", \"Is Cookbook closed? There is an abnormality in the communication with Cookbook.\");\n // }\n // } catch (error) {\n // console.log(\"[COOKBOOK]\", error);\n // console.log(\"[COOKBOOK]\", \"Is Cookbook closed? There is an abnormality in the communication with Cookbook.\");\n // }\n}\n",
|
|
222
|
+
"import { format } from \"date-fns\";\nimport type { $context, MilkioInit, MilkioRuntimeInit } from \"../index.ts\";\nimport { sendCookbookEvent } from \"../utils/send-cookbook-event.ts\";\n\nexport type Log = [\"(debug)\" | \"(info)\" | \"(warn)\" | \"(error)\" | \"(request)\" | \"(response)\", string /* executeId */, string, string, string, ...Array<unknown>];\n\nexport interface Logger {\n _: {\n logs: Array<Log>;\n tags: Map<string, unknown>;\n submit: (context: $context) => Promise<void> | void;\n };\n setTag: (key: string, value: unknown) => void;\n setLog: (...log: Log) => void;\n debug: (description: string, ...params: Array<unknown>) => Log;\n info: (description: string, ...params: Array<unknown>) => Log;\n warn: (description: string, ...params: Array<unknown>) => Log;\n error: (description: string, ...params: Array<unknown>) => Log;\n request: (description: string, ...params: Array<unknown>) => Log;\n response: (description: string, ...params: Array<unknown>) => Log;\n}\n\nexport type LoggerInsertingHandler = (log: Log) => boolean;\n\nexport type LoggerSubmittingHandler = (context: $context, logs: Array<Log>, tags: Map<string, unknown>) => Promise<void> | void;\n\nexport function createLogger<MilkioRuntime extends MilkioRuntimeInit<MilkioRuntimeInit<MilkioInit>> = MilkioRuntimeInit<MilkioInit>>(runtime: MilkioRuntime, path: string, executeId: string): Logger {\n const logger = {} as Logger;\n\n logger._ = {\n logs: [],\n tags: new Map(),\n submit: (context: $context) => {\n if (!runtime.onLoggerSubmitting) return;\n return runtime.onLoggerSubmitting(context, logger._.logs, logger._.tags);\n },\n };\n\n const __tagPush = (key: string, value: unknown): void => {\n logger._.tags.set(key, value);\n };\n const __logPush = (log: Log): Log => {\n const inserting = runtime.onLoggerInserting\n ? runtime.onLoggerInserting\n : (log: Log) => {\n log = [...log];\n log[0] = `\\n${log[0]}` as any;\n console.log(...log);\n return true;\n };\n\n if (!inserting(log)) return log;\n\n logger._.logs.push([...log]);\n\n if (runtime.develop) {\n void sendCookbookEvent(runtime, {\n type: \"milkio@logger\",\n log,\n });\n }\n\n return log;\n };\n\n logger.setTag = (key: string, value: unknown) => __tagPush(key, value);\n logger.setLog = (...log: Log) => __logPush(log);\n\n const getNow = () => `${format(new Date(), \"(yyyy-MM-dd hh:mm:ss)\")}`;\n\n logger.debug = (description: string, ...params: Array<unknown>) => __logPush([\"(debug)\", path, executeId, getNow(), `\\n${description}`, ...params]);\n logger.info = (description: string, ...params: Array<unknown>) => __logPush([\"(info)\", path, executeId, getNow(), `\\n${description}`, ...params]);\n logger.warn = (description: string, ...params: Array<unknown>) => __logPush([\"(warn)\", path, executeId, getNow(), `\\n${description}`, ...params]);\n logger.error = (description: string, ...params: Array<unknown>) => __logPush([\"(error)\", path, executeId, getNow(), `\\n${description}`, ...params]);\n logger.request = (description: string, ...params: Array<unknown>) => __logPush([\"(request)\", path, executeId, getNow(), `\\n${description}`, ...params]);\n logger.response = (description: string, ...params: Array<unknown>) => __logPush([\"(response)\", path, executeId, getNow(), `\\n${description}`, ...params]);\n\n return logger;\n}\n",
|
|
223
|
+
"export class Trie<T> {\n private root: TrieNode<T>;\n\n constructor() {\n this.root = new TrieNode();\n }\n\n add(path: string, value: T): void {\n const parts = path\n .replace(/^\\/+|\\/+$/g, \"\")\n .split(\"/\")\n .filter((p) => p !== \"\");\n let currentNode = this.root;\n if (parts.length === 0) {\n currentNode.value = value;\n return;\n }\n for (const part of parts) {\n if (!currentNode.children.has(part)) {\n currentNode.children.set(part, new TrieNode());\n }\n currentNode = currentNode.children.get(part)!;\n }\n currentNode.value = value;\n }\n\n get(path: string): T | null {\n const parts = path\n .replace(/^\\/+|\\/+$/g, \"\")\n .split(\"/\")\n .filter((p) => p !== \"\");\n let currentNode = this.root;\n for (const part of parts) {\n if (!currentNode.children.has(part)) return null;\n currentNode = currentNode.children.get(part)!;\n }\n return currentNode.value;\n }\n\n has(path: string): boolean {\n const parts = path\n .replace(/^\\/+|\\/+$/g, \"\")\n .split(\"/\")\n .filter((p) => p !== \"\");\n let currentNode = this.root;\n if (parts.length === 0) return currentNode.value !== null;\n for (const part of parts) {\n if (!currentNode.children.has(part)) return false;\n else currentNode = currentNode.children.get(part)!;\n }\n return currentNode.value !== null;\n }\n}\n\nclass TrieNode<T> {\n children: Map<string, TrieNode<T>>;\n value: T | null;\n\n constructor() {\n this.children = new Map();\n this.value = null;\n }\n}\n",
|
|
224
|
+
"import { createLogger, exceptionHandler, reject } from \"../index.ts\";\nimport type { Mixin, GeneratedInit, $types, ContextHttp, MilkioResponseReject, Results, MilkioResponseSuccess } from \"../index.ts\";\nimport type { __initExecuter } from \"../execute/index.ts\";\nimport { __createId } from \"../utils/create-id.ts\";\nimport { Trie } from \"../utils/trie.ts\";\n\nexport type MilkioHttpRequest = Request;\n\nexport type MilkioHttpResponse = Mixin<\n ResponseInit,\n {\n // body: string | Blob | FormData | URLSearchParams | ReadableStream<Uint8Array>;\n body: any;\n status: number;\n headers: Record<string, string>;\n }\n>;\n\nexport function __initListener(generated: GeneratedInit, runtime: any, executer: ReturnType<typeof __initExecuter>) {\n const port = runtime.port;\n const trie = new Trie<any>();\n const fetch = async (options: {\n request: MilkioHttpRequest;\n envMode?: string;\n env?: Record<any, any>;\n routeSchema?: any;\n }): Promise<Response> => {\n if (options.request.method === \"OPTIONS\") {\n return new Response(undefined, {\n headers: {\n \"Access-Control-Allow-Methods\": runtime.cors?.corsAllowMethods ?? \"*\",\n \"Access-Control-Allow-Origin\": runtime.cors?.corsAllowOrigin ?? \"*\",\n \"Access-Control-Allow-Headers\": runtime.cors?.corsAllowHeaders ?? \"*\",\n },\n });\n }\n\n if (options.request.url.endsWith(\"/generate_204\")) {\n return new Response(null, {\n status: 204,\n headers: {\n Server: \"milkio\",\n \"Access-Control-Allow-Methods\": runtime.cors?.corsAllowMethods ?? \"*\",\n \"Access-Control-Allow-Origin\": runtime.cors?.corsAllowOrigin ?? \"*\",\n \"Access-Control-Allow-Headers\": runtime.cors?.corsAllowHeaders ?? \"*\",\n \"Cache-Control\": \"no-store\",\n \"Content-Type\": `text/plain; time=${Date.now()}`,\n },\n });\n }\n\n const url = new URL(options.request.url);\n let pathArray = url.pathname.substring(1).split(\"/\");\n if (runtime.accessKey && pathArray.at(0) !== runtime.accessKey) {\n return new Response(undefined, {\n status: 403,\n headers: {\n \"Access-Control-Allow-Methods\": runtime.cors?.corsAllowMethods ?? \"*\",\n \"Access-Control-Allow-Origin\": runtime.cors?.corsAllowOrigin ?? \"*\",\n \"Access-Control-Allow-Headers\": runtime.cors?.corsAllowHeaders ?? \"*\",\n },\n });\n }\n if (runtime.ignorePathLevel !== undefined && runtime.ignorePathLevel !== 0) pathArray = pathArray.slice(runtime.ignorePathLevel);\n const pathString = `/${pathArray.join(\"/\")}`;\n\n const executeId = runtime?.executeId ? await runtime.executeId(options.request.headers) : __createId();\n\n const logger = createLogger(runtime, pathString, executeId);\n runtime.runtime.request.set(executeId, { logger });\n const response: MilkioHttpResponse = {\n body: \"\",\n status: 200,\n headers: {\n \"Access-Control-Allow-Methods\": runtime.cors?.corsAllowMethods ?? \"*\",\n \"Access-Control-Allow-Origin\": runtime.cors?.corsAllowOrigin ?? \"*\",\n \"Access-Control-Allow-Headers\": runtime.cors?.corsAllowHeaders ?? \"*\",\n \"Cache-Control\": \"no-store\",\n \"Content-Type\": \"application/json\",\n },\n };\n\n let finales: Array<() => void | Promise<void>> = [];\n\n\n const http = (await (async () => {\n const ip = runtime.realIp ? runtime.realIp(options.request.headers) : \"::1\";\n const params = {\n string: await options.request.text(),\n parsed: undefined,\n };\n\n return {\n url,\n ip,\n path: { string: pathString as keyof $types[\"generated\"][\"routeSchema\"], array: pathArray },\n params,\n request: options.request,\n response,\n } as ContextHttp;\n })())!;\n\n const context: any = { reject };\n try {\n await runtime.emit(\"milkio:httpRequest\", { executeId, logger, path: http.path.string as string, http, reject });\n\n if (!options.request.headers.get(\"Accept\")?.startsWith(\"text/event-stream\")) {\n // action\n let routeSchema = options.routeSchema;\n if ((http.path.string as string).includes(\"$\") || !routeSchema) {\n routeSchema = trie.get(http.path.string as string);\n if (routeSchema === null) {\n routeSchema = generated.routeSchema?.[http.path.string];\n if (routeSchema === undefined) {\n await runtime.emit(\"milkio:httpNotFound\", { executeId, logger, path: http.path.string as string, http, reject });\n throw reject(\"NOT_FOUND\", { path: http.path.string as string });\n }\n if (typeof routeSchema.module !== \"function\") routeSchema.module = await routeSchema.module;\n else routeSchema.module = await routeSchema.module();\n trie.add(http.path.string as string, routeSchema);\n }\n\n if (routeSchema.type !== \"action\") throw reject(\"UNACCEPTABLE\", { expected: \"stream\", message: `Not acceptable, the Accept in the request header should be \"text/event-stream\". If you are using the \"@milkio/stargate\" package, please add \\`type: \"stream\"\\` to the execute options.` });\n }\n\n context.http = http;\n context.headers = http.request.headers;\n\n const executed = await executer.__execute(routeSchema, {\n createdExecuteId: executeId,\n createdLogger: logger,\n path: http.path.string as string,\n headers: options.request.headers as Headers,\n context,\n params: http.params.string,\n paramsType: \"string\",\n });\n finales = executed.finales;\n\n if (response.body === \"\" && executed.results.value !== undefined) {\n if (executed.emptyResult) {\n response.body = `{\"data\":{},\"executeId\":\"${executeId}\",\"success\":true}`;\n } else if (executed.resultsTypeSafety) {\n response.body = `{\"data\":${routeSchema.resultsToJSON(executed.results.value)},\"executeId\":\"${executeId}\",\"success\":true}`;\n } else {\n response.body = `{\"data\":${JSON.stringify(executed.results.value)},\"executeId\":\"${executeId}\",\"success\":true}`;\n }\n }\n\n await runtime.emit(\"milkio:httpResponse\", { executeId, logger, path: http.path.string as string, http, headers: http.request.headers, context: executed.context, success: true, reject });\n\n for (const handler of finales) {\n try {\n await handler();\n } catch (error) {\n logger.error(\"An error occurred inside onFinally.\", error);\n }\n }\n\n runtime.runtime.request.delete(executeId);\n return new Response(response.body, response);\n } else {\n // stream\n let routeSchema = options.routeSchema;\n if (!routeSchema) {\n routeSchema = trie.get(http.path.string as string);\n if ((http.path.string as string).includes(\"$\") || !(http.path.string as string).endsWith(\"~\") || routeSchema === null) {\n routeSchema = generated.routeSchema?.[http.path.string];\n if (routeSchema === undefined) {\n await runtime.emit(\"milkio:httpNotFound\", { executeId, logger, path: http.path.string as string, http, reject });\n throw reject(\"NOT_FOUND\", { path: http.path.string as string });\n }\n if (typeof routeSchema.module !== \"function\") routeSchema.module = await routeSchema.module;\n else routeSchema.module = await routeSchema.module();\n trie.add(http.path.string as string, routeSchema);\n }\n if (routeSchema.type !== \"stream\") throw reject(\"UNACCEPTABLE\", { expected: \"stream\", message: `Not acceptable, the Accept in the request header should be \"application/json\". If you are using the \"@milkio/stargate\" package, please remove \\`type: \"stream\"\\` to the execute options.` });\n }\n\n const handleClose = async () => {\n runtime.runtime.request.delete(executeId);\n for (const handler of finales) {\n try {\n await handler();\n } catch (error) {\n logger.error(\"An error occurred inside onFinally.\", error);\n }\n }\n };\n\n context.http = http;\n context.headers = http.request.headers;\n\n const executed = await executer.__execute(routeSchema, {\n createdExecuteId: executeId,\n createdLogger: logger,\n path: http.path.string as string,\n headers: options.request.headers as Headers,\n context,\n params: http.params.string,\n paramsType: \"string\",\n });\n finales = executed.finales;\n // @ts-ignore: bun\n let stream: ReadableStream;\n // @ts-ignore: bun\n let control: ReadableStreamDirectController | ReadableStreamDefaultController;\n\n // @ts-ignore: bun\n if (typeof Bun !== \"undefined\") {\n // @ts-ignore: bun\n stream = new ReadableStream({\n type: \"direct\",\n // @ts-ignore: bun\n async pull(controller: ReadableStreamDirectController) {\n control = controller;\n try {\n controller.write(`data:@${JSON.stringify({ success: true, data: undefined, executeId } satisfies MilkioResponseSuccess<any>)}\\n\\n`);\n for await (const value of executed.results.value) {\n if (!options.request.signal.aborted) {\n const result: string = JSON.stringify([null, value]);\n controller.write(`data:${result}\\n\\n`);\n } else {\n executed.results.value.return(undefined);\n await handleClose();\n controller.close();\n }\n }\n } catch (error) {\n const exception = exceptionHandler(executeId, logger, error);\n const result: any = {};\n result[exception.code] = exception.reject;\n controller.write(`data:${JSON.stringify([result, null])}\\n\\n`);\n }\n await new Promise((resolve) => setTimeout(resolve, 0));\n await handleClose();\n controller.close();\n },\n async cancel() {\n await handleClose();\n control.close();\n },\n } as any);\n } else {\n // node.js or others\n // @ts-ignore: bun\n stream = new ReadableStream({\n // @ts-ignore: bun\n async pull(controller) {\n control = controller;\n try {\n controller.enqueue(`data:@${JSON.stringify({ success: true, data: undefined, executeId } satisfies MilkioResponseSuccess<any>)}\\n\\n`);\n for await (const value of executed.results.value) {\n if (!options.request.signal.aborted) {\n const result: string = JSON.stringify([null, value]);\n controller.enqueue(`data:${result}\\n\\n`);\n } else {\n executed.results.value.return(undefined);\n await handleClose();\n controller.close();\n }\n }\n } catch (error) {\n const exception = exceptionHandler(executeId, logger, error);\n const result: any = {};\n result[exception.code] = exception.reject;\n controller.enqueue(`data:${JSON.stringify([result, null])}\\n\\n`);\n }\n await handleClose();\n await new Promise((resolve) => setTimeout(resolve, 0));\n controller.close();\n },\n async cancel() {\n await handleClose();\n control.close();\n },\n } as any);\n }\n\n response.body = stream;\n response.headers[\"Content-Type\"] = \"text/event-stream\";\n response.headers[\"Cache-Control\"] = \"no-cache\";\n\n await runtime.emit(\"milkio:httpResponse\", { executeId, logger, path: http.path.string as string, http, headers: http.request.headers, context: executed.context, success: true, reject });\n\n return new Response(response.body, response);\n }\n } catch (error) {\n const results: Results<MilkioResponseReject> = {\n value: exceptionHandler(executeId, logger, error),\n };\n if (results.value !== undefined) response.body = JSON.stringify(results.value);\n await runtime.emit(\"milkio:httpResponse\", { executeId, logger, path: http.path.string as string, http, headers: http.request.headers, context, success: false, reject });\n runtime.runtime.request.delete(executeId);\n return new Response(response.body, response);\n }\n };\n\n const streamClosers: Map<string, { generator: AsyncGenerator; handleClose: any }> = new Map();\n const handleMessage = async (\n port: { postMessage(message: any): void },\n options:\n | {\n executeId: string;\n path: string;\n params?: Record<any, any>;\n headers?: Record<string, string>;\n }\n | string,\n ) => {\n if (typeof options === \"string\") {\n if (options === \"PING\") {\n port.postMessage(\"PONG\");\n }\n if (options.startsWith(\"CLOSE_STREAM:\")) {\n const executeId = options.split(\"CLOSE_STREAM:\")[1];\n const streamCloser = streamClosers.get(executeId);\n if (streamCloser) {\n streamCloser.generator.return(undefined);\n streamCloser.handleClose(\"stream\");\n }\n }\n return;\n }\n let routeSchema = trie.get(options.path);\n if (routeSchema === null) {\n routeSchema = generated.routeSchema?.[options.path];\n if (routeSchema === undefined) {\n throw reject(\"NOT_FOUND\", { path: options.path });\n }\n if (typeof routeSchema.module !== \"function\") routeSchema.module = await routeSchema.module;\n else routeSchema.module = await routeSchema.module();\n trie.add(options.path, routeSchema);\n }\n\n const headers = new Headers(options.headers);\n const params = options.params ?? {};\n const logger = createLogger(runtime, options.path, options.executeId);\n let finales: Array<() => void | Promise<void>> = [];\n\n const http = new Proxy(\n {},\n {\n get: (target, property) => {\n if (property === \"notFound\") return true;\n return undefined;\n },\n set: () => {\n throw reject(\"UNACCEPTABLE\", { expected: \"context.http\", message: \"This request was invoked through the execute method. Since no actual request was generated, the HTTP methods under the context cannot be accessed.\" });\n },\n },\n );\n\n const handleClose = async (type: \"action\" | \"stream\") => {\n if (type === \"stream\") streamClosers.delete(options.executeId);\n runtime.runtime.request.delete(options.executeId);\n for (const handler of finales) {\n try {\n await handler();\n } catch (error) {\n logger.error(\"An error occurred inside onFinally.\", error);\n }\n }\n };\n\n const context = { http: http, headers, reject };\n\n try {\n if (routeSchema.type === \"action\") {\n const executed = await executer.__execute(routeSchema, {\n createdExecuteId: options.executeId,\n createdLogger: logger,\n path: options.path,\n headers,\n context,\n params,\n paramsType: \"raw\",\n });\n finales = executed.finales;\n\n await handleClose(\"action\");\n\n if (executed.emptyResult) {\n port.postMessage({\n executeId: options.executeId,\n success: true,\n data: undefined,\n });\n } else {\n port.postMessage({\n executeId: options.executeId,\n success: true,\n data: executed.results.value,\n });\n }\n }\n if (routeSchema.type === \"stream\") {\n const executed = await executer.__execute(routeSchema, {\n createdExecuteId: options.executeId,\n createdLogger: logger,\n path: options.path,\n headers,\n context,\n params,\n paramsType: \"raw\",\n });\n finales = executed.finales;\n\n try {\n port.postMessage({ success: true, data: undefined, executeId: options.executeId, done: false });\n streamClosers.set(options.executeId, { generator: executed.results.value, handleClose });\n for await (const value of executed.results.value) {\n const data = { success: true, data: [null, value], executeId: options.executeId, done: false };\n port.postMessage(data);\n }\n port.postMessage({ success: true, data: undefined, executeId: options.executeId, done: true });\n } catch (error) {\n const exception = exceptionHandler(options.executeId, logger, error);\n const result: any = {};\n result[exception.code] = exception.reject;\n port.postMessage({ success: true, data: [result, null], executeId: options.executeId, done: true });\n }\n await handleClose(\"stream\");\n }\n } catch (error) {\n const result = exceptionHandler(options.executeId, logger, error);\n port.postMessage({ success: false, data: undefined, error: result, executeId: options.executeId, done: true });\n }\n };\n\n return {\n port,\n fetch,\n handleMessage,\n };\n}\n",
|
|
225
|
+
"import type { MilkioResponseReject, Logger } from \"../index.ts\";\n\nexport interface $rejectCode {\n REQUEST_FAIL: any;\n NOT_DEVELOP_MODE: string;\n REQUEST_TIMEOUT: { timeout: number; message: string };\n NOT_FOUND: { path: string };\n PARAMS_TYPE_INCORRECT: { path: string; expected: string; value: any; message: string } | null;\n RESULTS_TYPE_INCORRECT: { path: string; expected: string; value: any; message: string } | null;\n UNACCEPTABLE: { expected: string; message: string };\n PARAMS_TYPE_NOT_SUPPORTED: { expected: string };\n RESULTS_TYPE_NOT_SUPPORTED: { expected: string };\n INTERNAL_SERVER_ERROR: undefined;\n METHOD_NOT_ALLOWED: undefined;\n NETWORK_ERROR: undefined;\n}\n\nexport function reject<Code extends keyof $rejectCode, RejectData extends $rejectCode[Code]>(code: Code, data: RejectData): MilkioRejectError<Code, RejectData> {\n const error = { $milkioReject: true, code, data } as MilkioRejectError<Code, RejectData>;\n Error.captureStackTrace(error);\n return error;\n}\n\nexport type MilkioRejectError<Code extends keyof $rejectCode = keyof $rejectCode, RejectData extends $rejectCode[Code] = $rejectCode[Code]> = { code: Code; data: RejectData; stack: string; $milkioReject: true };\n\nexport function exceptionHandler(executeId: string, logger: Logger, error: MilkioRejectError<any, any> | any): MilkioResponseReject {\n try {\n if (\"viteServer\" in globalThis) (globalThis as any).viteServer?.ssrFixStacktrace(error); // fix vite ssr stacktrace\n } catch (error) { }\n if (error instanceof Error && \"viteServer\" in globalThis) (globalThis as any).viteServer.ssrFixStacktrace(error);\n const name = error?.code ?? error?.name ?? error?.constructor?.name ?? \"Unnamed Exception\";\n\n if (error?.$milkioReject === true && error?.code === \"NOT_FOUND\") {\n logger.info(name, error?.data?.path ?? \"Unknown path\");\n } else {\n try {\n const stack = error?.$milkioReject ? (error?.stack ?? \"\").split(\"\\n\").slice(2).join(\"\\n\") : (error?.stack ?? \"\");\n logger.error(name, `\\n${JSON.stringify(error?.data)}`, `\\n${stack}\\n`);\n } catch (_) {\n logger.error(name, `\\n${error?.toString()}`, `\\n${error?.stack}\\n`);\n }\n }\n\n let result: MilkioResponseReject;\n\n if (error?.$milkioReject === true) result = { success: false, code: error.code, reject: error.data, executeId };\n else result = { success: false, code: \"INTERNAL_SERVER_ERROR\", reject: undefined, executeId };\n\n return result;\n}\n",
|
|
226
|
+
"export * from \"./utils/part.ts\";\nexport * from \"./type-safety/index.ts\";\nexport * from \"./types/index.ts\";\nexport * from \"./config/index.ts\";\nexport * from \"./execute/index.ts\";\nexport * from \"./event/index.ts\";\nexport * from \"./flow/index.ts\";\nexport * from \"./world/index.ts\";\nexport * from \"./action/index.ts\";\nexport * from \"./stream/index.ts\";\nexport * from \"./typia/index.ts\";\nexport * from \"./logger/index.ts\";\nexport * from \"./context/index.ts\";\nexport * from \"./meta/index.ts\";\nexport * from \"./step/index.ts\";\nexport * from \"./listener/index.ts\";\nexport * from \"./exception/index.ts\";\n",
|
|
227
|
+
"export default {\n};\n",
|
|
228
|
+
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._validateReport = void 0;\nconst _validateReport = (array) => {\n const reportable = (path) => {\n if (array.length === 0)\n return true;\n const last = array[array.length - 1].path;\n return path.length > last.length || last.substring(0, path.length) !== path;\n };\n return (exceptable, error) => {\n if (exceptable && reportable(error.path))\n array.push(error);\n return false;\n };\n};\nexports._validateReport = _validateReport;\n//# sourceMappingURL=_validateReport.js.map",
|
|
229
|
+
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._jsonStringifyString = void 0;\n/**\n * In the past, name of `typia` was `typescript-json`, and supported\n * JSON serialization by wrapping `fast-json-stringify. `typescript-json` was\n * a helper library of `fast-json-stringify`, which can skip manual JSON schema\n * definition just by putting pure TypeScript type.\n *\n * This `$string` function is a part of `fast-json-stringify` at that time, and\n * still being used in `typia` for the string serialization.\n *\n * @reference https://github.com/fastify/fast-json-stringify/blob/master/lib/serializer.js\n * @blog https://dev.to/samchon/good-bye-typescript-is-ancestor-of-typia-20000x-faster-validator-49fi\n */\nconst _jsonStringifyString = (str) => {\n const len = str.length;\n let result = \"\";\n let last = -1;\n let point = 255;\n // eslint-disable-next-line\n for (var i = 0; i < len; i++) {\n point = str.charCodeAt(i);\n if (point < 32) {\n return JSON.stringify(str);\n }\n if (point >= 0xd800 && point <= 0xdfff) {\n // The current character is a surrogate.\n return JSON.stringify(str);\n }\n if (point === 0x22 || // '\"'\n point === 0x5c // '\\'\n ) {\n last === -1 && (last = 0);\n result += str.slice(last, i) + \"\\\\\";\n last = i;\n }\n }\n return ((last === -1 && '\"' + str + '\"') || '\"' + result + str.slice(last) + '\"');\n};\nexports._jsonStringifyString = _jsonStringifyString;\n//# sourceMappingURL=_jsonStringifyString.js.map",
|
|
230
|
+
"import { type $context, type $meta } from \"milkio\";\n\nexport const meta: $meta = {}\n\nexport async function handler(\n context: $context,\n params: {},\n): Promise<{ mode: string }> {\n const mode = context.config.mode;\n return { mode };\n}",
|
|
231
|
+
"import * as __typia_transform__validateReport from \"typia/lib/internal/_validateReport.js\";\nimport * as __typia_transform__jsonStringifyString from \"typia/lib/internal/_jsonStringifyString.js\";\n// route-schema\nimport typia, { type IValidation } from \"typia\";\nimport type * as modules__mode__readTaction from \"../../../../../app/modules/mode/read.action.ts\";\n// typia command: node /home/runner/work/milkio/milkio/node_modules/typia/lib/executable/typia.js generate --input /home/runner/work/milkio/milkio/projects/cookbook-server/.milkio/generated/routes/modules__mode__readTaction/2x4z7s79mu6e9 --output /home/runner/work/milkio/milkio/projects/cookbook-server/.milkio/transpiled/routes/modules__mode__readTaction/2x4z7s79mu6e9 --project /home/runner/work/milkio/milkio/projects/cookbook-server/tsconfig.json\nexport default {\n type: \"action\",\n types: undefined as any as {\n \"🥛\": boolean;\n meta: typeof modules__mode__readTaction[\"meta\"];\n params: Parameters<typeof modules__mode__readTaction[\"handler\"]>[1];\n result: Awaited<ReturnType<typeof modules__mode__readTaction[\"handler\"]>>;\n },\n module: () => import(\"../../../../../app/modules/mode/read.action.ts\"),\n validateParams: (params: any): IValidation<Parameters<typeof modules__mode__readTaction[\"handler\"]>[1]> => (() => { const _io0 = (input: any): boolean => true; const _vo0 = (input: any, _path: string, _exceptionable: boolean = true): boolean => true; const _po0 = (input: any): any => {\n for (const key of Object.keys(input))\n delete input[key];\n }; const __is = (input: any): input is Parameters<typeof modules__mode__readTaction[\"handler\"]>[1] => \"object\" === typeof input && null !== input && false === Array.isArray(input) && _io0(input); let errors: any; let _report: any; const __validate = (input: any): import(\"typia\").IValidation<Parameters<typeof modules__mode__readTaction[\"handler\"]>[1]> => {\n if (false === __is(input)) {\n errors = [];\n _report = (__typia_transform__validateReport._validateReport as any)(errors);\n ((input: any, _path: string, _exceptionable: boolean = true) => (\"object\" === typeof input && null !== input && false === Array.isArray(input) || _report(true, {\n path: _path + \"\",\n expected: \"__type\",\n value: input\n })) && _vo0(input, _path + \"\", true) || _report(true, {\n path: _path + \"\",\n expected: \"__type\",\n value: input\n }))(input, \"$input\", true);\n const success = 0 === errors.length;\n return success ? {\n success,\n data: input\n } : {\n success,\n errors,\n data: input\n } as any;\n }\n return {\n success: true,\n data: input\n } as any;\n }; const __prune = (input: Parameters<typeof modules__mode__readTaction[\"handler\"]>[1]): void => {\n if (\"object\" === typeof input && null !== input)\n _po0(input);\n }; return (input: any): import(\"typia\").IValidation<Parameters<typeof modules__mode__readTaction[\"handler\"]>[1]> => {\n const result = __validate(input);\n if (result.success)\n __prune(input);\n return result;\n }; })()(params) as any,\n randomParams: (): IValidation<Parameters<typeof modules__mode__readTaction[\"handler\"]>[1]> => (() => { const _ro0 = (_recursive: boolean = false, _depth: number = 0): any => ({}); let _generator: Partial<import(\"typia\").IRandomGenerator> | undefined; return (generator?: Partial<import(\"typia\").IRandomGenerator>): import(\"typia\").Resolved<Parameters<typeof modules__mode__readTaction[\"handler\"]>[1]> => {\n _generator = generator;\n return _ro0();\n }; })()() as any,\n validateResults: (results: any): IValidation<Awaited<ReturnType<typeof modules__mode__readTaction[\"handler\"]>>> => (() => { const _io0 = (input: any): boolean => \"string\" === typeof input.mode; const _vo0 = (input: any, _path: string, _exceptionable: boolean = true): boolean => [\"string\" === typeof input.mode || _report(_exceptionable, {\n path: _path + \".mode\",\n expected: \"string\",\n value: input.mode\n })].every((flag: boolean) => flag); const _po0 = (input: any): any => {\n for (const key of Object.keys(input)) {\n if (\"mode\" === key)\n continue;\n delete input[key];\n }\n }; const __is = (input: any): input is Awaited<ReturnType<typeof modules__mode__readTaction[\"handler\"]>> => \"object\" === typeof input && null !== input && _io0(input); let errors: any; let _report: any; const __validate = (input: any): import(\"typia\").IValidation<Awaited<ReturnType<typeof modules__mode__readTaction[\"handler\"]>>> => {\n if (false === __is(input)) {\n errors = [];\n _report = (__typia_transform__validateReport._validateReport as any)(errors);\n ((input: any, _path: string, _exceptionable: boolean = true) => (\"object\" === typeof input && null !== input || _report(true, {\n path: _path + \"\",\n expected: \"__type\",\n value: input\n })) && _vo0(input, _path + \"\", true) || _report(true, {\n path: _path + \"\",\n expected: \"__type\",\n value: input\n }))(input, \"$input\", true);\n const success = 0 === errors.length;\n return success ? {\n success,\n data: input\n } : {\n success,\n errors,\n data: input\n } as any;\n }\n return {\n success: true,\n data: input\n } as any;\n }; const __prune = (input: Awaited<ReturnType<typeof modules__mode__readTaction[\"handler\"]>>): void => {\n if (\"object\" === typeof input && null !== input)\n _po0(input);\n }; return (input: any): import(\"typia\").IValidation<Awaited<ReturnType<typeof modules__mode__readTaction[\"handler\"]>>> => {\n const result = __validate(input);\n if (result.success)\n __prune(input);\n return result;\n }; })()(results) as any,\n resultsToJSON: (results: any): Awaited<ReturnType<typeof modules__mode__readTaction[\"handler\"]>> => {\n // @ts-ignore\n return (() => { const _so0 = (input: any): any => `{\"mode\":${__typia_transform__jsonStringifyString._jsonStringifyString(input.mode)}}`; return (input: Awaited<ReturnType<typeof modules__mode__readTaction[\"handler\"]>>): string => _so0(input); })()(results) as any;\n },\n};\n",
|
|
232
|
+
"// route-schema\nimport modules__mode__readTaction from \"./transpiled/routes/modules__mode__readTaction/2x4z7s79mu6e9/schema.ts\";\n\nexport default {\n \"/mode/read\": modules__mode__readTaction,\n};\n",
|
|
233
|
+
"// handler-schema\n\nexport default {\n loadHandlers:(world: any) => ([\n ]),\n}",
|
|
234
|
+
"// index\nimport type { MilkioMeta, MilkioContext, MilkioRejectCode, MilkioEvents } from \"./declares.ts\";\nimport typiaSchema from \"./typia-schema.ts\";\nimport routeSchema from \"./route-schema.ts\";\nimport handlerSchema from \"./handler-schema.ts\";\n\n\nexport const generated = {\n meta: undefined as unknown as MilkioMeta,\n context: undefined as unknown as MilkioContext,\n rejectCode: undefined as unknown as MilkioRejectCode,\n events: undefined as unknown as MilkioEvents,\n typiaSchema,\n routeSchema,\n handlerSchema,\n};\n",
|
|
235
|
+
"import { config } from 'milkio'\n\nexport default config(mode => ({\n}))\n",
|
|
236
|
+
"// config-schema\nimport configs__commonTconfig from \"../app/configs/common.config.ts\";\n\nconst mode = \"test\";\n\nexport const configSchema = { get: async () => {\n return { mode,\n // @ts-ignore\n ...(await configs__commonTconfig(mode)),\n }\n}}",
|
|
237
|
+
"import { env } from \"bun\";\nimport { createWorld } from \"milkio\";\nimport { generated } from \"./.milkio/index.ts\";\nimport { configSchema } from \"./.milkio/config-schema.ts\";\n\nconst worldPromise = Promise.withResolvers();\n\nexport const useCookbookWorld = () => worldPromise.promise;\n\nexport async function startCookbookServer(options: { port: number; accessKey: string }) {\n const world = await createWorld(generated, configSchema, {\n port: options.port,\n accessKey: options.accessKey,\n develop: false,\n });\n\n worldPromise.resolve(world);\n\n const serve = Bun.serve({\n port: options.port,\n async fetch(request) {\n return world.listener.fetch({\n request,\n env,\n envMode: \"production\",\n });\n },\n });\n\n return { world, serve };\n}\n\nexport type World = Awaited<ReturnType<typeof startCookbookServer>>[\"world\"];\n\nexport const create = (..._: Array<any>): any => {\n throw new Error(\"Not implemented\");\n};\n",
|
|
238
|
+
"import chalk from \"chalk\";\n\nlet maxNameLength = \"cookbook\".length;\nconst colors = [\"448aff\", \"ff4081\", \"7c4dff\", \"b2ff59\", \"ffd740\"];\n\nexport function outputPrefix(key: string, id: number, icon = \"・\") {\n setMaxNameLength(key);\n let prefix = `${chalk.hex(\"a626a4\")(icon)}${chalk.hex(colors[id % colors.length])(`[${key}]`)}`;\n for (let index = 0; index <= maxNameLength - key.length; index++) prefix += \" \";\n return prefix;\n}\n\nexport function setMaxNameLength(key: string) {\n if (maxNameLength < key.length) maxNameLength = key.length;\n}\n",
|
|
239
|
+
"import os from \"node:os\";\nimport { join } from \"node:path\";\nimport { cwd, stdout } from \"node:process\";\nimport type { CookbookOptions } from \"../utils/cookbook-dto-types.ts\";\nimport { spawn, type ChildProcess } from \"node:child_process\";\nimport { env } from \"bun\";\nimport killPort from \"kill-port\";\nimport { outputPrefix, setMaxNameLength } from \"../utils/output-prefix.ts\";\n// import { useCookbookWorld } from \"@milkio/cookbook-server\";\n\nconst platform = os.platform();\nlet workerId = 1;\nexport const workers = new Map<string, Worker>();\nexport interface Worker {\n id: number;\n key: string;\n state: \"running\" | \"stopped\";\n connect: boolean;\n meta: CookbookOptions[\"projects\"][keyof CookbookOptions[\"projects\"]][\"meta\"];\n kill: () => Promise<void>;\n run: (meta?: CookbookOptions[\"projects\"][keyof CookbookOptions[\"projects\"]][\"meta\"]) => void;\n testConnect: (timeout?: number) => Promise<{\n success: boolean;\n error?: string;\n }>;\n}\n\n// const world = await useCookbookWorld();\n\nexport async function initWorkers(options: CookbookOptions, mode: string, baseUrl: string) {\n for (const projectName in options.projects ?? []) {\n const project = options.projects[projectName];\n const env: Record<string, string | undefined> = { MODE: mode, VITE_MODE: mode, COOKBOOK_MODE: mode, COOKBOOK_BASE_URL: baseUrl, MILKIO_PORT: `${project.port}` };\n const worker = createWorker(projectName, {\n env,\n command: project.start ?? `${options.general.packageManager} run dev`,\n cwd: join(cwd(), \"projects\", projectName),\n port: project.port,\n connectTestUrl: project?.connectTestUrl ?? (project.type !== \"milkio\" ? `http://localhost:${project.port}/` : `http://localhost:${project.port}/generate_204`),\n });\n workers.set(projectName, worker);\n if (project.autoStart || project.autoStart === undefined) setTimeout(() => worker.run(), (project.autoStartDelay ?? 0) * 1000);\n }\n}\n\nexport function createWorker(\n key: string,\n options: {\n command: string;\n cwd?: string;\n env?: NodeJS.ProcessEnv;\n stdout?: \"pipe\" | \"ignore\";\n connectTestUrl?: string;\n port?: number;\n },\n): Worker {\n let spawnProcess: ChildProcess | null = null;\n setMaxNameLength(key);\n\n const handleExit = (code: number | null, signal: string) => {\n // const message = `Process exited with:${code ?? null}`;\n if (code !== 0 && options.stdout !== \"ignore\") {\n // const message = `\\n-- code: ${code ?? signal}\\n`;\n // world.emit(\"cookbook:worker:log\", { key, chunk: message, type: \"stderr\" });\n }\n\n // world.emit(\"cookbook:worker:state\", { key, state: \"stopped\", code });\n worker.state = \"stopped\";\n };\n\n const worker: Worker = {\n id: workerId++,\n key,\n state: \"stopped\",\n connect: false,\n meta: {\n inspect: false,\n },\n kill: async () => {\n if (worker.state === \"stopped\") return;\n // world.emit(\"cookbook:worker:state\", { key, state: \"stopped\", code: null });\n if (!spawnProcess) return Promise.resolve();\n await Promise.all([\n new Promise((resolve) => {\n spawnProcess?.once(\"exit\", () => resolve(undefined));\n }),\n (async () => {\n try {\n spawnProcess?.kill(\"SIGINT\");\n if (options.port) await killPort(options.port);\n } catch (error) { }\n })(),\n ]);\n worker.state = \"stopped\";\n },\n run: async (meta?: CookbookOptions[\"projects\"][keyof CookbookOptions[\"projects\"]][\"meta\"]) => {\n if (worker.state === \"running\") return;\n if (meta) {\n worker.meta = {\n ...worker.meta,\n ...meta,\n };\n }\n try {\n if (options.port) await killPort(options.port);\n } catch (error) { }\n // const message = `\\n--------------------------------\\n# Start ${key}\\n--------------------------------`;\n // world.emit(\"cookbook:worker:log\", { key, chunk: message, type: \"stdout\" });\n try {\n const envMixed: Record<string, string> = { ...env, ...options.env, IS_COOKBOOK: \"1\" };\n if (worker.meta.inspect) envMixed.NODE_OPTIONS = \"--inspect\";\n spawnProcess = spawn(platform === \"win32\" ? \"powershell.exe\" : \"bash\", [\"-c\", options.command], {\n cwd: options.cwd,\n env: envMixed,\n stdio: [\"ignore\", options.stdout !== \"ignore\" ? \"pipe\" : \"ignore\", \"pipe\"],\n });\n\n const handleStreamError = (err: Error) => {\n console.error(\"Stream error:\", err);\n handleExit(1, \"SIGERR\");\n };\n\n if (spawnProcess.stdout) {\n spawnProcess.stdout.on(\"data\", (chunk) => handleMessage(worker, key, chunk, \"stdout\")).on(\"error\", handleStreamError);\n }\n if (spawnProcess.stderr) {\n spawnProcess.stderr.on(\"data\", (chunk) => handleMessage(worker, key, chunk, \"stderr\")).on(\"error\", handleStreamError);\n }\n spawnProcess\n .on(\"error\", (err) => {\n console.error(\"Process error:\", err);\n handleExit(null, \"SIGERR\");\n })\n .on(\"exit\", handleExit);\n\n // world.emit(\"cookbook:worker:state\", { key, state: \"running\", code: null });\n worker.state = \"running\";\n } catch (err) {\n console.error(\"Spawn error:\", err);\n handleExit(1, \"SIGERR\");\n }\n },\n testConnect: async (timeout?: number) => {\n const connectTestUrl = options.connectTestUrl;\n if (!connectTestUrl) {\n worker.connect = false;\n return {\n success: false,\n error: \"connectTestUrl is not defined\",\n };\n }\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout ?? 4096);\n try {\n const response = await fetch(connectTestUrl, {\n ...options,\n signal: controller.signal,\n });\n clearTimeout(timeoutId);\n if (response.status >= 500) {\n worker.connect = false;\n return {\n success: false,\n error: `The HTTP status code is ${response.status}.`,\n };\n }\n worker.connect = true;\n return {\n success: true,\n };\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n worker.connect = false;\n return {\n success: false,\n error: \"The request timed out.\",\n };\n }\n worker.connect = false;\n return {\n success: false,\n error: (error?.toString() ?? JSON.stringify(error)) || \"Unknown error\",\n };\n }\n },\n };\n\n return worker;\n}\n\nconst textDecoder = new TextDecoder();\nconst handleMessage = (worker: Worker, key: string, chunk: ArrayBuffer, type: \"stdout\" | \"stderr\") => {\n const strRaw = textDecoder.decode(chunk);\n // oxlint-disable-next-line no-unused-vars, no-control-regex\n const str = strRaw.replace(/\\x1b\\[\\d*;?]*m/g, \"\");\n\n const prefix = outputPrefix(key, worker.id);\n stdout.write(replaceNewlines(strRaw, prefix));\n\n // world.emit(\"cookbook:worker:log\", { key, chunk: str, type });\n};\n\nfunction replaceNewlines(str: string, prefix: string): string {\n const parts = str.split(\"\\n\");\n const newlineCount = parts.length - 1;\n\n if (newlineCount <= 1) {\n return `${prefix}${str}`;\n }\n\n const processed = `${parts.slice(0, -1).join(`\\n${prefix}`)}\\n${parts[parts.length - 1]}`;\n return `${prefix}${processed}`;\n}\n",
|
|
240
|
+
"import chalk from \"chalk\";\nimport { defineCookbookCommand } from \"@milkio/cookbook-command\";\nimport { progress } from \"../progress\";\nimport { getCookbookToml } from \"../utils/get-cookbook-toml\";\nimport { selectMode } from \"../utils/select-mode\";\nimport { join } from \"node:path\";\nimport consola from \"consola\";\nimport { cwd, exit } from \"node:process\";\nimport { calcHash } from \"../utils/calc-hash\";\nimport { getRandomPort } from \"../utils/get-random-port\";\nimport { writeFile } from \"node:fs/promises\";\n\nexport default await defineCookbookCommand(async (utils) => {\n const cookbookToml = Bun.file(join(cwd(), \"cookbook.toml\"));\n if (!(await cookbookToml.exists())) {\n consola.error(`The \"cookbook.toml\" file does not exist in the current directory: ${join(cwd())}`);\n exit(0);\n }\n const cookbookTomlText = await cookbookToml.text();\n const cookbookTomlHash = calcHash(cookbookTomlText);\n const options = await getCookbookToml(cookbookTomlText, progress);\n options.hash = cookbookTomlHash;\n\n const start = async (mode: string) => {\n (globalThis as any).__COOKBOOK_OPTIONS__ = options;\n\n progress.open(\"cookbook is starting..\");\n const startTime = new Date();\n const { initWatcher } = await import(\"../watcher\");\n await initWatcher(options, mode, true);\n\n const cookbookServerAccessKey = `c${await calcHash(crypto.randomUUID())}`;\n\n const cookbookServerPort = await getRandomPort();\n const cookbookServerBaseUrl = `http://localhost:${cookbookServerPort}/${cookbookServerAccessKey}`;\n await writeFile(join(cwd(), \"node_modules\", \".cookbook\"), cookbookServerBaseUrl);\n\n const { startCookbookServer } = await import(\"@milkio/cookbook-server\");\n const _server = await startCookbookServer({ port: cookbookServerPort, accessKey: cookbookServerAccessKey });\n\n const { initWorkers } = await import(\"../workers\");\n await initWorkers(options, mode, cookbookServerBaseUrl);\n\n const endTime = new Date();\n const time = Math.max(endTime.getTime() - startTime.getTime(), 0);\n await progress.close(chalk.gray(\"cookbook is ready.\"));\n console.log(chalk.hex(\"#24B56A\")(\"△ \") + chalk.hex(\"#E6E7E9\")(\"Time taken: \") + chalk.hex(\"#24B56A\")(`${time}ms`) + (time > 8192 ? chalk.gray(\" (✨ cached! next start faster)\") : \"\"));\n console.log(chalk.hex(\"#24B56A\")(\"△ \") + chalk.hex(\"#E6E7E9\")(\"Current mode: \") + chalk.hex(\"#24B56A\")(mode));\n console.log(chalk.hex(\"#24B56A\")(\"△ \") + chalk.hex(\"#E6E7E9\")(\"Current mode: \") + chalk.hex(\"#24B56A\")(mode));\n\n console.log(chalk.hex(\"#24B56A\")(\"△ \") + chalk.hex(\"#E6E7E9\")(\"Base URL: \") + chalk.hex(\"#24B56A\")(cookbookServerBaseUrl));\n\n console.log(\"\");\n };\n\n const params = utils.getParams();\n void start(await selectMode(options, params));\n\n const resolvers = Promise.withResolvers();\n await resolvers.promise; // let the never exit\n});\n",
|
|
241
|
+
"import { search } from \"@inquirer/prompts\";\nimport type { CookbookOptions } from \"./cookbook-dto-types\";\nimport { uniqWith } from \"lodash-es\";\nimport { join } from \"node:path\";\nimport { cwd, exit } from \"node:process\";\nimport consola from \"consola\";\n\nexport async function selectProject(\n cookbookToml: CookbookOptions,\n options?: {\n withRoot?: boolean;\n filter?: (project: CookbookOptions[\"projects\"][0] & { value: string }) => boolean | Promise<boolean>;\n projectUsed?: string;\n },\n): Promise<CookbookOptions[\"projects\"][0] & { value: any; path: string }> {\n const projects: Array<CookbookOptions[\"projects\"] & { value: any }> = [{ value: \"<cancel>\", description: \"Cancel and exit cookbook\" } as any];\n if (options?.withRoot === true) {\n projects.push({ value: \"<root>\", description: `Select project root directory: ${cwd()}` } as any);\n }\n for (const projectName in cookbookToml.projects) {\n let project = cookbookToml.projects[projectName] as any;\n project = { ...project, name: project.name ?? project.key, value: projectName };\n if (options?.filter === undefined || (await options.filter(project))) projects.push(project);\n }\n\n const selected =\n options?.projectUsed ??\n (await search({\n message: \"Select the project to operate on:\",\n source: async (input) => {\n if (!input) return projects;\n const filtered = projects.filter((project) => containsCharsInOrder(input.toLowerCase(), project.value.toLowerCase()));\n return uniqWith(filtered, (a, b) => a.value === b.value).sort((a, b) => {\n const scoreA = calculateScore(input, a.value);\n const scoreB = calculateScore(input, b.value);\n if (scoreB.maxContiguous !== scoreA.maxContiguous) {\n return scoreB.maxContiguous - scoreA.maxContiguous;\n }\n return scoreA.firstMatchIndex - scoreB.firstMatchIndex;\n });\n },\n }));\n\n if (selected === \"<cancel>\") {\n consola.success(\"Cookbook cancelled\");\n exit(0);\n }\n if (selected === \"<root>\") {\n return { value: \"<root>\", path: cwd() } as any;\n }\n const project = projects.find((project) => project.value === selected);\n if (!project) {\n consola.success(\"Cookbook cancelled\");\n exit(0);\n }\n return { ...project, path: join(cwd(), \"projects\", project.value) } as any;\n}\n\nconst containsCharsInOrder = (input: string, target: string): boolean => {\n let inputIndex = 0;\n for (const char of target) {\n if (char === input[inputIndex]) {\n inputIndex++;\n if (inputIndex === input.length) break;\n }\n }\n return inputIndex === input.length;\n};\nconst calculateScore = (input: string, target: string) => {\n let maxContiguous = 0;\n let currentContiguous = 0;\n let firstMatchIndex = -1;\n\n let inputIndex = 0;\n for (let i = 0; i < target.length; i++) {\n if (target[i] === input[inputIndex]) {\n if (firstMatchIndex === -1) firstMatchIndex = i;\n currentContiguous++;\n inputIndex++;\n maxContiguous = Math.max(maxContiguous, currentContiguous);\n } else {\n currentContiguous = 0;\n }\n }\n\n return { maxContiguous, firstMatchIndex };\n};\n",
|
|
242
|
+
"import { consola } from \"consola\";\nimport { platform } from \"node:process\";\nimport { spawn, type SpawnOptionsWithoutStdio } from \"node:child_process\";\nimport * as readline from \"node:readline\";\n\nexport async function execScript(script: string, options: SpawnOptionsWithoutStdio) {\n const shell = platform === \"win32\" ? \"powershell.exe\" : \"bash\";\n const shellOptions = platform === \"win32\" ? \"-Command\" : \"-c\";\n\n let scriptDisplay = script;\n if (platform === \"win32\") {\n scriptDisplay = `${script.replaceAll(\"&&\", \";\")}`;\n }\n\n consola.start(`${scriptDisplay}`);\n\n let scriptRaw = script;\n if (platform === \"win32\") {\n scriptRaw = `$ErrorActionPreference = \"Stop\"; ${script.replaceAll(\"&&\", \";\")}`;\n }\n scriptRaw = `\"${scriptRaw.replaceAll('\"', '\\\\\"')}\"`.trim();\n\n const child = spawn(shell, [shellOptions, scriptRaw], {\n ...options,\n shell: true,\n stdio: \"pipe\",\n env: {\n ...process.env,\n ...options.env,\n ...(process.stdout.isTTY\n ? {\n TERM: process.env.TERM || \"xterm-256color\",\n COLORTERM: process.env.COLORTERM || \"1\",\n }\n : {}),\n ...options.env,\n },\n });\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n terminal: true,\n });\n\n rl.on(\"line\", (line) => {\n child.stdin.write(`${line}\\n`);\n });\n\n process.stdin.on(\"data\", (data) => {\n if (!child.stdin.destroyed) {\n child.stdin.write(data);\n }\n });\n\n child.stdout.pipe(process.stdout);\n child.stderr.pipe(process.stderr);\n\n return await new Promise<number>((resolve) => {\n child.on(\"exit\", (code, signal) => {\n rl.close();\n if (child.stdin.writable) child.stdin.end();\n\n const exitCode = code !== null ? code : signal ? 1 : 0;\n if (exitCode !== 0) {\n consola.fail(`Script failed with exit code ${exitCode}`);\n process.exit(exitCode);\n }\n resolve(exitCode);\n });\n\n const handleSignal = (signal: NodeJS.Signals) => {\n if (!child.killed) {\n child.kill(signal);\n }\n };\n process.on(\"SIGINT\", handleSignal);\n process.on(\"SIGTERM\", handleSignal);\n });\n}\n",
|
|
243
|
+
"import { search } from \"@inquirer/prompts\";\nimport consola from \"consola\";\nimport { uniqWith } from \"lodash-es\";\nimport { exit } from \"node:process\";\n\nexport async function select<Data extends Record<any, any>>(message: `${string}:`, data: Array<Data>, key: keyof Data, used?: string): Promise<Data> {\n const items: Array<{ value: string }> = [];\n const cancel: any = {};\n cancel.value = \"<cancel>\";\n items.unshift(cancel);\n\n for (const itemName in data) {\n const item = data[itemName];\n items.push({ value: item[key] });\n }\n\n const selected =\n used ??\n (await search({\n message: message,\n source: async (input) => {\n if (!input) return items;\n const filtered = items.filter((item) => containsCharsInOrder(input.toLowerCase(), item.value.toLowerCase()));\n\n return uniqWith(filtered, (a, b) => a.value === b.value).sort((a, b) => {\n const scoreA = calculateScore(input, a.value);\n const scoreB = calculateScore(input, b.value);\n if (scoreB.maxContiguous !== scoreA.maxContiguous) {\n return scoreB.maxContiguous - scoreA.maxContiguous;\n }\n return scoreA.firstMatchIndex - scoreB.firstMatchIndex;\n });\n },\n }));\n\n if (selected === \"<cancel>\") {\n consola.success(\"Cookbook cancelled\");\n exit(0);\n }\n\n const item = data.find((item) => item[key] === selected);\n if (!item) {\n consola.success(\"Cookbook cancelled\");\n exit(0);\n }\n return { ...item };\n}\n\nconst containsCharsInOrder = (input: string, target: string): boolean => {\n let inputIndex = 0;\n for (const char of target) {\n if (char === input[inputIndex]) {\n inputIndex++;\n if (inputIndex === input.length) break;\n }\n }\n return inputIndex === input.length;\n};\nconst calculateScore = (input: string, target: string) => {\n let maxContiguous = 0;\n let currentContiguous = 0;\n let firstMatchIndex = -1;\n\n let inputIndex = 0;\n for (let i = 0; i < target.length; i++) {\n if (target[i] === input[inputIndex]) {\n if (firstMatchIndex === -1) firstMatchIndex = i;\n currentContiguous++;\n inputIndex++;\n maxContiguous = Math.max(maxContiguous, currentContiguous);\n } else {\n currentContiguous = 0;\n }\n }\n\n return { maxContiguous, firstMatchIndex };\n};\n",
|
|
244
|
+
"import { cwd, exit } from \"node:process\";\nimport { defineCookbookCommand } from \"@milkio/cookbook-command\";\nimport { selectProject } from \"../utils/select-project\";\nimport { join } from \"node:path\";\nimport { exists, mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { execScript } from \"../utils/exec-script\";\nimport { select } from \"../utils/select\";\nimport { env } from \"bun\";\nimport { existsSync } from \"fs-extra\";\nimport consola from \"consola\";\nimport { progress } from \"../progress\";\nimport { getRuntime } from \"../utils/get-runtime\";\n\nexport default await defineCookbookCommand(async (utils, userCommand?: string, projectUsed?: string, modeUsed?: string) => {\n const params = utils.getParams();\n const cookbookToml = await utils.getCookbookToml();\n \n // Get mode from environment variables if available\n modeUsed = modeUsed || env.COOKBOOK_MODE || env.MODE;\n \n // Project selection logic with params.options.project support\n let project;\n const isMigrationOrGenerate = (params.commands.at(0) === \"migrate\" || userCommand === \"migrate\" || params.commands.at(0) === \"generate\" || userCommand === \"generate\");\n \n if (params.options.project && isMigrationOrGenerate) {\n // Find project by matching params.options.project\n const projectName = params.options.project;\n for (const name in cookbookToml.projects) {\n if (name === projectName) {\n let proj = cookbookToml.projects[name] as any;\n proj = { ...proj, name: proj.name ?? proj.key, value: name };\n project = { ...proj, path: join(cwd(), \"projects\", name) };\n break;\n }\n }\n \n if (!project) {\n consola.error(`Project '${projectName}' not found in cookbook.toml`);\n exit(1);\n }\n } else {\n // Use normal project selection\n project = await selectProject(cookbookToml, {\n filter: async (project) => {\n return (await exists(join(cwd(), \"projects\", project.value, \"drizzle\"))) || (await exists(join(cwd(), \"projects\", project.value, \"drizzle.config.ts\")));\n },\n projectUsed,\n });\n if (!project) exit(0);\n }\n \n \n const packageJson = await readFile(join(cwd(), \"projects\", project.value, \"package.json\"), \"utf-8\");\n const packageJsonParsed = JSON.parse(packageJson);\n if (packageJsonParsed?.scripts?.drizzle === undefined || packageJsonParsed.scripts.drizzle === \"\") {\n if (!packageJsonParsed) packageJsonParsed.scripts = {};\n packageJsonParsed.scripts.drizzle = \"drizzle-kit\";\n await writeFile(join(cwd(), \"projects\", project.value, \"package.json\"), JSON.stringify(packageJsonParsed, null, 2));\n }\n\n if (!params.commands.at(0) && !userCommand) {\n const command = `${cookbookToml.general.packageManager} run drizzle`;\n await execScript(command, {\n cwd: project.path,\n env: {\n ...env,\n },\n });\n exit(0);\n }\n\n if (!project.drizzle || project.drizzle.length === 0) {\n consola.error(\"Drizzle configuration not found, please add a mode in your cookbook.toml.\");\n exit(1);\n }\n\n const mode: any = await select(\"Select the mode:\", project.drizzle ?? [], \"mode\", modeUsed);\n if (!mode?.migrateMode) {\n consola.error(\"Drizzle configuration not found, please add a 'migrateMode = \\\"generate\\\"' in your cookbook.toml.\");\n exit(1);\n }\n\n if (mode.migrateMode === \"push\" && (params.commands.at(0) === \"generate\" || params.commands.at(0) === \"migrate\")) {\n consola.error(\"The mode is configured with 'migrateMode = \\\"push\\\"', but you are trying to execute the generate or migrate command. To avoid accidental command execution, this command has been stopped.\");\n exit(1);\n }\n\n if (mode.migrateMode === \"generate\" && (params.commands.at(0) === \"push\" || params.commands.at(0) === \"pull\")) {\n consola.error(\"The mode is configured with 'migrateMode = \\\"generate\\\"', but you are trying to execute the push or pull command. To avoid accidental command execution, this command has been stopped.\");\n exit(1);\n }\n\n const command = `${cookbookToml.general.packageManager} run drizzle ${userCommand ?? params.commands.join(\" \")}`;\n\n if (!(await exists(join(project.path, \"drizzle.config.ts\")))) return;\n if (!(await exists(join(project.path, \".milkio\")))) await mkdir(join(project.path, \".milkio\"));\n\n progress.open(\"cookbook building..\");\n const { initWatcher } = await import(\"../watcher\");\n await initWatcher(cookbookToml, mode.mode, false);\n progress.close(\"\");\n\n env.DATABASE_URL = mode.migrateDatabaseUrl;\n process.env.DATABASE_URL = mode.migrateDatabaseUrl;\n\n \n\n if ((params.commands.at(0) !== \"migrate\" && userCommand !== \"migrate\") || !existsSync(join(project.path, \"drizzle.migrate.ts\"))) {\n await execScript(command, {\n cwd: project.path,\n env: { DATABASE_URL: mode.migrateDatabaseUrl },\n });\n }\n\n if ((params.commands.at(0) === \"migrate\" || userCommand === \"migrate\") && existsSync(join(project.path, \"drizzle.migrate.ts\"))) {\n const runtime = await getRuntime(\"bun\");\n const scriptPath = join(project.path, \"drizzle.migrate.ts\");\n await execScript(`${runtime} ${scriptPath}`, {\n cwd: project.path,\n env: { DATABASE_URL: mode.migrateDatabaseUrl },\n });\n exit(0);\n }\n\n if (params.commands.at(0) === \"generate\" || userCommand === \"generate\") {\n const journal = JSON.parse(await readFile(join(project.path, \"drizzle\", \"meta\", \"_journal.json\"), \"utf-8\"));\n for (const entry of journal.entries) {\n entry.sql = await readFile(join(project.path, \"drizzle\", `${entry.tag}.sql`), \"utf-8\");\n }\n await writeFile(join(project.path, \".milkio\", \"drizzle-migrations.ts\"), `export const drizzleMigrations = ${JSON.stringify(journal)}`);\n consola.success(\"Drizzle migration successfully generated.\");\n if (existsSync(join(project.path, \"drizzle.migrate.ts\"))) {\n const runtime = await getRuntime(\"bun\");\n const scriptPath = join(project.path, \"drizzle.migrate.ts\");\n await execScript(`${runtime} ${scriptPath}`, {\n cwd: project.path,\n env: { DATABASE_URL: mode.migrateDatabaseUrl },\n });\n exit(0);\n } else {\n consola.info(\"If you want to automatically execute the `migrate` command after `generate`, you can try creating a `drizzle.migrate.ts` file, which will be automatically executed by the cookbook.\");\n }\n }\n});\n",
|
|
245
|
+
"import chalk from \"chalk\";\nimport { defineCookbookCommand } from \"@milkio/cookbook-command\";\nimport { progress } from \"../progress\";\nimport { getCookbookToml } from \"../utils/get-cookbook-toml\";\nimport { join } from \"node:path\";\nimport consola from \"consola\";\nimport { cwd, exit } from \"node:process\";\nimport { calcHash } from \"../utils/calc-hash\";\nimport { getRandomPort } from \"../utils/get-random-port\";\nimport { exists, readFile, writeFile } from \"node:fs/promises\";\nimport { execScript } from \"../utils/exec-script\";\n\nexport default await defineCookbookCommand(async (utils) => {\n const cookbookToml = Bun.file(join(cwd(), \"cookbook.toml\"));\n if (!(await cookbookToml.exists())) {\n consola.error(`The \"cookbook.toml\" file does not exist in the current directory: ${join(cwd())}`);\n exit(0);\n }\n const cookbookTomlText = await cookbookToml.text();\n const cookbookTomlHash = calcHash(cookbookTomlText);\n const options = await getCookbookToml(cookbookTomlText, progress);\n options.hash = cookbookTomlHash;\n\n const packageJson = (await exists(join(cwd(), \"package.json\"))) ? JSON.parse(await readFile(join(cwd(), \"package.json\"), \"utf-8\")) : undefined;\n if (!packageJson?.scripts?.test) {\n consola.error(`The \"test\" script is not defined in the \"package.json\" file, try add it.`);\n exit(1);\n }\n\n if (!packageJson?.devDependencies?.vitest && !packageJson?.dependencies?.vitest) {\n consola.error(`The \"vitest\" package is not defined in the \"package.json\" file, try run:\\n${options.general.packageManager} i vitest`);\n exit(1);\n }\n\n const start = async (mode: string) => {\n (globalThis as any).__COOKBOOK_OPTIONS__ = options;\n\n progress.open(\"cookbook is starting..\");\n const startTime = new Date();\n const { initWatcher } = await import(\"../watcher\");\n await initWatcher(options, mode, true);\n\n const cookbookServerAccessKey = `c${await calcHash(crypto.randomUUID())}`;\n\n const cookbookServerPort = await getRandomPort();\n const cookbookServerBaseUrl = `http://localhost:${cookbookServerPort}/${cookbookServerAccessKey}`;\n await writeFile(join(cwd(), \"node_modules\", \".cookbook\"), cookbookServerBaseUrl);\n\n const { startCookbookServer } = await import(\"@milkio/cookbook-server\");\n const _server = await startCookbookServer({ port: cookbookServerPort, accessKey: cookbookServerAccessKey });\n\n const { initWorkers } = await import(\"../workers\");\n await initWorkers(options, mode, cookbookServerBaseUrl);\n\n const endTime = new Date();\n const time = Math.max(endTime.getTime() - startTime.getTime(), 0);\n await progress.close(chalk.gray(\"cookbook is ready.\"));\n console.log(chalk.hex(\"#24B56A\")(\"△ \") + chalk.hex(\"#E6E7E9\")(\"Time taken: \") + chalk.hex(\"#24B56A\")(`${time}ms`) + (time > 8192 ? chalk.gray(\" (✨ cached! next start faster)\") : \"\"));\n console.log(chalk.hex(\"#24B56A\")(\"△ \") + chalk.hex(\"#E6E7E9\")(\"Current mode: \") + chalk.hex(\"#24B56A\")(mode));\n console.log(chalk.hex(\"#24B56A\")(\"△ \") + chalk.hex(\"#E6E7E9\")(\"Current mode: \") + chalk.hex(\"#24B56A\")(mode));\n\n console.log(chalk.hex(\"#24B56A\")(\"△ \") + chalk.hex(\"#E6E7E9\")(\"Base URL: \") + chalk.hex(\"#24B56A\")(cookbookServerBaseUrl));\n\n console.log(\"\");\n };\n\n const params = utils.getParams();\n\n await start(\"test\");\n\n const scriptParts = [`${options.general.packageManager} run test`, ...params.raw.map((arg) => `\"${arg}\"`)];\n const exitcode = await execScript(scriptParts.join(\" \"), { cwd: cwd() });\n\n if (exitcode !== 0) {\n consola.error(`Test command failed with exit code ${exitcode}.`);\n exit(exitcode);\n }\n\n await writeFile(join(cwd(), \"node_modules\", \".cookbook__success-time-of-test-run\"), `${Date.now()}`);\n\n consola.info(\"The timestamp of the completed test run has been written to \\\"/node_modules/.cookbook__success-time-of-test-run\\\". If you need to avoid re-running the tests in the CI step, you can refer to the time in this file.\\n\");\n\n consola.success(\"Test command completed!\");\n});\n",
|
|
246
|
+
"'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst { pipeline: pump } = require('stream');\n\n// file/fileBuffer/stream\nexports.sourceType = source => {\n if (!source) return undefined;\n\n if (source instanceof Buffer) return 'buffer';\n if (typeof source._read === 'function' || typeof source._transform === 'function') return 'stream';\n if (typeof source !== 'string') {\n const err = new Error('Type is not supported, must be a file path, file buffer, or a readable stream');\n err.name = 'IlligalSourceError';\n throw err;\n }\n\n return 'file';\n};\n\nfunction destType(dest) {\n if (typeof dest._write === 'function' || typeof dest._transform === 'function') return 'stream';\n if (typeof dest !== 'string') {\n const err = new Error('Type is not supported, must be a file path, or a writable stream');\n err.name = 'IlligalDestinationError';\n throw err;\n }\n return 'path';\n}\n\nexports.destType = destType;\n\nconst illigalEntryError = new Error('Type is not supported, must be a file path, directory path, file buffer, or a readable stream');\nilligalEntryError.name = 'IlligalEntryError';\n\n// fileOrDir/fileBuffer/stream\nexports.entryType = entry => {\n if (!entry) return;\n\n if (entry instanceof Buffer) return 'buffer';\n if (typeof entry._read === 'function' || typeof entry._transform === 'function') return 'stream';\n if (typeof entry !== 'string') throw illigalEntryError;\n\n return 'fileOrDir';\n};\n\n\nexports.clone = obj => {\n const newObj = {};\n for (const i in obj) {\n newObj[i] = obj[i];\n }\n return newObj;\n};\n\nexports.makeFileProcessFn = StreamClass => {\n return (source, dest, opts) => {\n opts = opts || {};\n opts.source = source;\n const destStream = destType(dest) === 'path' ? fs.createWriteStream(dest) : dest;\n const compressStream = new StreamClass(opts);\n return safePipe([ compressStream, destStream ]);\n };\n};\n\nexports.makeCompressDirFn = StreamClass => {\n return (dir, dest, opts) => {\n const destStream = destType(dest) === 'path' ? fs.createWriteStream(dest) : dest;\n const compressStream = new StreamClass();\n compressStream.addEntry(dir, opts);\n return safePipe([ compressStream, destStream ]);\n };\n};\n\nexports.makeUncompressFn = StreamClass => {\n return (source, destDir, opts) => {\n opts = opts || {};\n opts.source = source;\n if (!source) { // !source 和 sourceType中返回undeined对应\n const error = new Error('Type is not supported, must be a file path, file buffer, or a readable stream');\n error.name = 'IlligalSourceError';\n throw error;\n }\n if (destType(destDir) !== 'path') {\n const error = new Error('uncompress destination must be a directory');\n error.name = 'IlligalDestError';\n throw error;\n }\n\n return new Promise((resolve, reject) => {\n fs.mkdir(destDir, { recursive: true }, err => {\n if (err) return reject(err);\n\n let entryCount = 0;\n let successCount = 0;\n let isFinish = false;\n function done() {\n // resolve when both stream finish and file write finish\n if (isFinish && entryCount === successCount) resolve();\n }\n\n new StreamClass(opts)\n .on('finish', () => {\n isFinish = true;\n done();\n })\n .on('error', reject)\n .on('entry', (header, stream, next) => {\n stream.on('end', next);\n const destFilePath = path.join(destDir, header.name);\n\n if (header.type === 'file') {\n const dir = path.dirname(destFilePath);\n fs.mkdir(dir, { recursive: true }, err => {\n if (err) return reject(err);\n\n entryCount++;\n pump(stream, fs.createWriteStream(destFilePath, { mode: opts.mode || header.mode }), err => {\n if (err) return reject(err);\n successCount++;\n done();\n });\n });\n } else if (header.type === 'symlink') {\n const dir = path.dirname(destFilePath);\n const target = path.resolve(dir, header.linkname);\n entryCount++;\n\n fs.mkdir(dir, { recursive: true }, err => {\n if (err) return reject(err);\n\n const relativeTarget = path.relative(dir, target);\n fs.symlink(relativeTarget, destFilePath, err => {\n if (err) return reject(err);\n successCount++;\n stream.resume();\n });\n });\n } else { // directory\n fs.mkdir(destFilePath, { recursive: true }, err => {\n if (err) return reject(err);\n stream.resume();\n });\n }\n });\n });\n });\n };\n};\n\nexports.streamToBuffer = stream => {\n return new Promise((resolve, reject) => {\n const chunks = [];\n stream\n .on('readable', () => {\n let chunk;\n while ((chunk = stream.read())) chunks.push(chunk);\n })\n .on('end', () => resolve(Buffer.concat(chunks)))\n .on('error', err => reject(err));\n });\n};\n\nfunction safePipe(streams) {\n return new Promise((resolve, reject) => {\n pump(streams[0], streams[1], err => {\n if (err) return reject(err);\n resolve();\n });\n });\n}\n\nexports.safePipe = safePipe;\n\nfunction normalizePath(fileName) {\n fileName = path.normalize(fileName);\n // https://nodejs.org/api/path.html#path_path_normalize_path\n if (process.platform === 'win32') fileName = fileName.replace(/\\\\+/g, '/');\n return fileName;\n}\n\nfunction stripFileName(strip, fileName, type) {\n // before\n // node/package.json\n // node/lib/index.js\n //\n // when strip 1\n // package.json\n // lib/index.js\n //\n // when strip 2\n // package.json\n // index.js\n if (Buffer.isBuffer(fileName)) fileName = fileName.toString();\n\n // use / instead of \\\\\n if (fileName.indexOf('\\\\') !== -1) fileName = fileName.replace(/\\\\+/g, '/');\n\n // fix absolute path\n // /foo => foo\n if (fileName[0] === '/') fileName = fileName.replace(/^\\/+/, '');\n\n // fix case\n // ./foo/bar => foo/bar\n if (fileName) {\n fileName = normalizePath(fileName);\n }\n\n let s = fileName.split('/');\n\n // fix relative path\n // foo/../bar/../../asdf/\n // => asdf/\n if (s.indexOf('..') !== -1) {\n // replace '../' on ../../foo/bar\n fileName = fileName.replace(/(\\.\\.\\/)+/, '');\n if (type === 'directory' && fileName && fileName[fileName.length - 1] !== '/') {\n fileName += '/';\n }\n s = fileName.split('/');\n }\n\n strip = Math.min(strip, s.length - 1);\n return s.slice(strip).join('/') || '/';\n}\n\nexports.stripFileName = stripFileName;\n",
|
|
247
|
+
"var Buffer = require('buffer').Buffer;\n\nvar CRC_TABLE = [\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,\n 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,\n 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,\n 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,\n 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,\n 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,\n 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,\n 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,\n 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,\n 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,\n 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,\n 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,\n 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,\n 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,\n 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,\n 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,\n 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,\n 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,\n 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,\n 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,\n 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,\n 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,\n 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,\n 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,\n 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,\n 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,\n 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,\n 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,\n 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,\n 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,\n 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,\n 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,\n 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,\n 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,\n 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,\n 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,\n 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,\n 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,\n 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,\n 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,\n 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,\n 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,\n 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,\n 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,\n 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,\n 0x2d02ef8d\n];\n\nif (typeof Int32Array !== 'undefined') {\n CRC_TABLE = new Int32Array(CRC_TABLE);\n}\n\nfunction ensureBuffer(input) {\n if (Buffer.isBuffer(input)) {\n return input;\n }\n\n var hasNewBufferAPI =\n typeof Buffer.alloc === \"function\" &&\n typeof Buffer.from === \"function\";\n\n if (typeof input === \"number\") {\n return hasNewBufferAPI ? Buffer.alloc(input) : new Buffer(input);\n }\n else if (typeof input === \"string\") {\n return hasNewBufferAPI ? Buffer.from(input) : new Buffer(input);\n }\n else {\n throw new Error(\"input must be buffer, number, or string, received \" +\n typeof input);\n }\n}\n\nfunction bufferizeInt(num) {\n var tmp = ensureBuffer(4);\n tmp.writeInt32BE(num, 0);\n return tmp;\n}\n\nfunction _crc32(buf, previous) {\n buf = ensureBuffer(buf);\n if (Buffer.isBuffer(previous)) {\n previous = previous.readUInt32BE(0);\n }\n var crc = ~~previous ^ -1;\n for (var n = 0; n < buf.length; n++) {\n crc = CRC_TABLE[(crc ^ buf[n]) & 0xff] ^ (crc >>> 8);\n }\n return (crc ^ -1);\n}\n\nfunction crc32() {\n return bufferizeInt(_crc32.apply(null, arguments));\n}\ncrc32.signed = function () {\n return _crc32.apply(null, arguments);\n};\ncrc32.unsigned = function () {\n return _crc32.apply(null, arguments) >>> 0;\n};\n\nmodule.exports = crc32;\n",
|
|
248
|
+
"var fs = require(\"fs\");\nvar Transform = require(\"stream\").Transform;\nvar PassThrough = require(\"stream\").PassThrough;\nvar zlib = require(\"zlib\");\nvar util = require(\"util\");\nvar EventEmitter = require(\"events\").EventEmitter;\nvar crc32 = require(\"buffer-crc32\");\n\nexports.ZipFile = ZipFile;\nexports.dateToDosDateTime = dateToDosDateTime;\n\nutil.inherits(ZipFile, EventEmitter);\nfunction ZipFile() {\n this.outputStream = new PassThrough();\n this.entries = [];\n this.outputStreamCursor = 0;\n this.ended = false; // .end() sets this\n this.allDone = false; // set when we've written the last bytes\n this.forceZip64Eocd = false; // configurable in .end()\n}\n\nZipFile.prototype.addFile = function(realPath, metadataPath, options) {\n var self = this;\n metadataPath = validateMetadataPath(metadataPath, false);\n if (options == null) options = {};\n\n var entry = new Entry(metadataPath, false, options);\n self.entries.push(entry);\n fs.stat(realPath, function(err, stats) {\n if (err) return self.emit(\"error\", err);\n if (!stats.isFile()) return self.emit(\"error\", new Error(\"not a file: \" + realPath));\n entry.uncompressedSize = stats.size;\n if (options.mtime == null) entry.setLastModDate(stats.mtime);\n if (options.mode == null) entry.setFileAttributesMode(stats.mode);\n entry.setFileDataPumpFunction(function() {\n var readStream = fs.createReadStream(realPath);\n entry.state = Entry.FILE_DATA_IN_PROGRESS;\n readStream.on(\"error\", function(err) {\n self.emit(\"error\", err);\n });\n pumpFileDataReadStream(self, entry, readStream);\n });\n pumpEntries(self);\n });\n};\n\nZipFile.prototype.addReadStream = function(readStream, metadataPath, options) {\n var self = this;\n metadataPath = validateMetadataPath(metadataPath, false);\n if (options == null) options = {};\n var entry = new Entry(metadataPath, false, options);\n self.entries.push(entry);\n entry.setFileDataPumpFunction(function() {\n entry.state = Entry.FILE_DATA_IN_PROGRESS;\n pumpFileDataReadStream(self, entry, readStream);\n });\n pumpEntries(self);\n};\n\nZipFile.prototype.addBuffer = function(buffer, metadataPath, options) {\n var self = this;\n metadataPath = validateMetadataPath(metadataPath, false);\n if (buffer.length > 0x3fffffff) throw new Error(\"buffer too large: \" + buffer.length + \" > \" + 0x3fffffff);\n if (options == null) options = {};\n if (options.size != null) throw new Error(\"options.size not allowed\");\n var entry = new Entry(metadataPath, false, options);\n entry.uncompressedSize = buffer.length;\n entry.crc32 = crc32.unsigned(buffer);\n entry.crcAndFileSizeKnown = true;\n self.entries.push(entry);\n if (!entry.compress) {\n setCompressedBuffer(buffer);\n } else {\n zlib.deflateRaw(buffer, function(err, compressedBuffer) {\n setCompressedBuffer(compressedBuffer);\n });\n }\n function setCompressedBuffer(compressedBuffer) {\n entry.compressedSize = compressedBuffer.length;\n entry.setFileDataPumpFunction(function() {\n writeToOutputStream(self, compressedBuffer);\n writeToOutputStream(self, entry.getDataDescriptor());\n entry.state = Entry.FILE_DATA_DONE;\n\n // don't call pumpEntries() recursively.\n // (also, don't call process.nextTick recursively.)\n setImmediate(function() {\n pumpEntries(self);\n });\n });\n pumpEntries(self);\n }\n};\n\nZipFile.prototype.addEmptyDirectory = function(metadataPath, options) {\n var self = this;\n metadataPath = validateMetadataPath(metadataPath, true);\n if (options == null) options = {};\n if (options.size != null) throw new Error(\"options.size not allowed\");\n if (options.compress != null) throw new Error(\"options.compress not allowed\");\n var entry = new Entry(metadataPath, true, options);\n self.entries.push(entry);\n entry.setFileDataPumpFunction(function() {\n writeToOutputStream(self, entry.getDataDescriptor());\n entry.state = Entry.FILE_DATA_DONE;\n pumpEntries(self);\n });\n pumpEntries(self);\n};\n\nvar eocdrSignatureBuffer = bufferFrom([0x50, 0x4b, 0x05, 0x06]);\n\nZipFile.prototype.end = function(options, finalSizeCallback) {\n if (typeof options === \"function\") {\n finalSizeCallback = options;\n options = null;\n }\n if (options == null) options = {};\n if (this.ended) return;\n this.ended = true;\n this.finalSizeCallback = finalSizeCallback;\n this.forceZip64Eocd = !!options.forceZip64Format;\n if (options.comment) {\n if (typeof options.comment === \"string\") {\n this.comment = encodeCp437(options.comment);\n } else {\n // It should be a Buffer\n this.comment = options.comment;\n }\n if (this.comment.length > 0xffff) throw new Error(\"comment is too large\");\n // gotta check for this, because the zipfile format is actually ambiguous.\n if (bufferIncludes(this.comment, eocdrSignatureBuffer)) throw new Error(\"comment contains end of central directory record signature\");\n } else {\n // no comment.\n this.comment = EMPTY_BUFFER;\n }\n pumpEntries(this);\n};\n\nfunction writeToOutputStream(self, buffer) {\n self.outputStream.write(buffer);\n self.outputStreamCursor += buffer.length;\n}\n\nfunction pumpFileDataReadStream(self, entry, readStream) {\n var crc32Watcher = new Crc32Watcher();\n var uncompressedSizeCounter = new ByteCounter();\n var compressor = entry.compress ? new zlib.DeflateRaw() : new PassThrough();\n var compressedSizeCounter = new ByteCounter();\n readStream.pipe(crc32Watcher)\n .pipe(uncompressedSizeCounter)\n .pipe(compressor)\n .pipe(compressedSizeCounter)\n .pipe(self.outputStream, {end: false});\n compressedSizeCounter.on(\"end\", function() {\n entry.crc32 = crc32Watcher.crc32;\n if (entry.uncompressedSize == null) {\n entry.uncompressedSize = uncompressedSizeCounter.byteCount;\n } else {\n if (entry.uncompressedSize !== uncompressedSizeCounter.byteCount) return self.emit(\"error\", new Error(\"file data stream has unexpected number of bytes\"));\n }\n entry.compressedSize = compressedSizeCounter.byteCount;\n self.outputStreamCursor += entry.compressedSize;\n writeToOutputStream(self, entry.getDataDescriptor());\n entry.state = Entry.FILE_DATA_DONE;\n pumpEntries(self);\n });\n}\n\nfunction pumpEntries(self) {\n if (self.allDone) return;\n // first check if finalSize is finally known\n if (self.ended && self.finalSizeCallback != null) {\n var finalSize = calculateFinalSize(self);\n if (finalSize != null) {\n // we have an answer\n self.finalSizeCallback(finalSize);\n self.finalSizeCallback = null;\n }\n }\n\n // pump entries\n var entry = getFirstNotDoneEntry();\n function getFirstNotDoneEntry() {\n for (var i = 0; i < self.entries.length; i++) {\n var entry = self.entries[i];\n if (entry.state < Entry.FILE_DATA_DONE) return entry;\n }\n return null;\n }\n if (entry != null) {\n // this entry is not done yet\n if (entry.state < Entry.READY_TO_PUMP_FILE_DATA) return; // input file not open yet\n if (entry.state === Entry.FILE_DATA_IN_PROGRESS) return; // we'll get there\n // start with local file header\n entry.relativeOffsetOfLocalHeader = self.outputStreamCursor;\n var localFileHeader = entry.getLocalFileHeader();\n writeToOutputStream(self, localFileHeader);\n entry.doFileDataPump();\n } else {\n // all cought up on writing entries\n if (self.ended) {\n // head for the exit\n self.offsetOfStartOfCentralDirectory = self.outputStreamCursor;\n self.entries.forEach(function(entry) {\n var centralDirectoryRecord = entry.getCentralDirectoryRecord();\n writeToOutputStream(self, centralDirectoryRecord);\n });\n writeToOutputStream(self, getEndOfCentralDirectoryRecord(self));\n self.outputStream.end();\n self.allDone = true;\n }\n }\n}\n\nfunction calculateFinalSize(self) {\n var pretendOutputCursor = 0;\n var centralDirectorySize = 0;\n for (var i = 0; i < self.entries.length; i++) {\n var entry = self.entries[i];\n // compression is too hard to predict\n if (entry.compress) return -1;\n if (entry.state >= Entry.READY_TO_PUMP_FILE_DATA) {\n // if addReadStream was called without providing the size, we can't predict the final size\n if (entry.uncompressedSize == null) return -1;\n } else {\n // if we're still waiting for fs.stat, we might learn the size someday\n if (entry.uncompressedSize == null) return null;\n }\n // we know this for sure, and this is important to know if we need ZIP64 format.\n entry.relativeOffsetOfLocalHeader = pretendOutputCursor;\n var useZip64Format = entry.useZip64Format();\n\n pretendOutputCursor += LOCAL_FILE_HEADER_FIXED_SIZE + entry.utf8FileName.length;\n pretendOutputCursor += entry.uncompressedSize;\n if (!entry.crcAndFileSizeKnown) {\n // use a data descriptor\n if (useZip64Format) {\n pretendOutputCursor += ZIP64_DATA_DESCRIPTOR_SIZE;\n } else {\n pretendOutputCursor += DATA_DESCRIPTOR_SIZE;\n }\n }\n\n centralDirectorySize += CENTRAL_DIRECTORY_RECORD_FIXED_SIZE + entry.utf8FileName.length + entry.fileComment.length;\n if (useZip64Format) {\n centralDirectorySize += ZIP64_EXTENDED_INFORMATION_EXTRA_FIELD_SIZE;\n }\n }\n\n var endOfCentralDirectorySize = 0;\n if (self.forceZip64Eocd ||\n self.entries.length >= 0xffff ||\n centralDirectorySize >= 0xffff ||\n pretendOutputCursor >= 0xffffffff) {\n // use zip64 end of central directory stuff\n endOfCentralDirectorySize += ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_SIZE + ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIZE;\n }\n endOfCentralDirectorySize += END_OF_CENTRAL_DIRECTORY_RECORD_SIZE + self.comment.length;\n return pretendOutputCursor + centralDirectorySize + endOfCentralDirectorySize;\n}\n\nvar ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_SIZE = 56;\nvar ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIZE = 20;\nvar END_OF_CENTRAL_DIRECTORY_RECORD_SIZE = 22;\nfunction getEndOfCentralDirectoryRecord(self, actuallyJustTellMeHowLongItWouldBe) {\n var needZip64Format = false;\n var normalEntriesLength = self.entries.length;\n if (self.forceZip64Eocd || self.entries.length >= 0xffff) {\n normalEntriesLength = 0xffff;\n needZip64Format = true;\n }\n var sizeOfCentralDirectory = self.outputStreamCursor - self.offsetOfStartOfCentralDirectory;\n var normalSizeOfCentralDirectory = sizeOfCentralDirectory;\n if (self.forceZip64Eocd || sizeOfCentralDirectory >= 0xffffffff) {\n normalSizeOfCentralDirectory = 0xffffffff;\n needZip64Format = true;\n }\n var normalOffsetOfStartOfCentralDirectory = self.offsetOfStartOfCentralDirectory;\n if (self.forceZip64Eocd || self.offsetOfStartOfCentralDirectory >= 0xffffffff) {\n normalOffsetOfStartOfCentralDirectory = 0xffffffff;\n needZip64Format = true;\n }\n if (actuallyJustTellMeHowLongItWouldBe) {\n if (needZip64Format) {\n return (\n ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_SIZE +\n ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIZE +\n END_OF_CENTRAL_DIRECTORY_RECORD_SIZE\n );\n } else {\n return END_OF_CENTRAL_DIRECTORY_RECORD_SIZE;\n }\n }\n\n var eocdrBuffer = bufferAlloc(END_OF_CENTRAL_DIRECTORY_RECORD_SIZE + self.comment.length);\n // end of central dir signature 4 bytes (0x06054b50)\n eocdrBuffer.writeUInt32LE(0x06054b50, 0);\n // number of this disk 2 bytes\n eocdrBuffer.writeUInt16LE(0, 4);\n // number of the disk with the start of the central directory 2 bytes\n eocdrBuffer.writeUInt16LE(0, 6);\n // total number of entries in the central directory on this disk 2 bytes\n eocdrBuffer.writeUInt16LE(normalEntriesLength, 8);\n // total number of entries in the central directory 2 bytes\n eocdrBuffer.writeUInt16LE(normalEntriesLength, 10);\n // size of the central directory 4 bytes\n eocdrBuffer.writeUInt32LE(normalSizeOfCentralDirectory, 12);\n // offset of start of central directory with respect to the starting disk number 4 bytes\n eocdrBuffer.writeUInt32LE(normalOffsetOfStartOfCentralDirectory, 16);\n // .ZIP file comment length 2 bytes\n eocdrBuffer.writeUInt16LE(self.comment.length, 20);\n // .ZIP file comment (variable size)\n self.comment.copy(eocdrBuffer, 22);\n\n if (!needZip64Format) return eocdrBuffer;\n\n // ZIP64 format\n // ZIP64 End of Central Directory Record\n var zip64EocdrBuffer = bufferAlloc(ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_SIZE);\n // zip64 end of central dir signature 4 bytes (0x06064b50)\n zip64EocdrBuffer.writeUInt32LE(0x06064b50, 0);\n // size of zip64 end of central directory record 8 bytes\n writeUInt64LE(zip64EocdrBuffer, ZIP64_END_OF_CENTRAL_DIRECTORY_RECORD_SIZE - 12, 4);\n // version made by 2 bytes\n zip64EocdrBuffer.writeUInt16LE(VERSION_MADE_BY, 12);\n // version needed to extract 2 bytes\n zip64EocdrBuffer.writeUInt16LE(VERSION_NEEDED_TO_EXTRACT_ZIP64, 14);\n // number of this disk 4 bytes\n zip64EocdrBuffer.writeUInt32LE(0, 16);\n // number of the disk with the start of the central directory 4 bytes\n zip64EocdrBuffer.writeUInt32LE(0, 20);\n // total number of entries in the central directory on this disk 8 bytes\n writeUInt64LE(zip64EocdrBuffer, self.entries.length, 24);\n // total number of entries in the central directory 8 bytes\n writeUInt64LE(zip64EocdrBuffer, self.entries.length, 32);\n // size of the central directory 8 bytes\n writeUInt64LE(zip64EocdrBuffer, sizeOfCentralDirectory, 40);\n // offset of start of central directory with respect to the starting disk number 8 bytes\n writeUInt64LE(zip64EocdrBuffer, self.offsetOfStartOfCentralDirectory, 48);\n // zip64 extensible data sector (variable size)\n // nothing in the zip64 extensible data sector\n\n\n // ZIP64 End of Central Directory Locator\n var zip64EocdlBuffer = bufferAlloc(ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIZE);\n // zip64 end of central dir locator signature 4 bytes (0x07064b50)\n zip64EocdlBuffer.writeUInt32LE(0x07064b50, 0);\n // number of the disk with the start of the zip64 end of central directory 4 bytes\n zip64EocdlBuffer.writeUInt32LE(0, 4);\n // relative offset of the zip64 end of central directory record 8 bytes\n writeUInt64LE(zip64EocdlBuffer, self.outputStreamCursor, 8);\n // total number of disks 4 bytes\n zip64EocdlBuffer.writeUInt32LE(1, 16);\n\n\n return Buffer.concat([\n zip64EocdrBuffer,\n zip64EocdlBuffer,\n eocdrBuffer,\n ]);\n}\n\nfunction validateMetadataPath(metadataPath, isDirectory) {\n if (metadataPath === \"\") throw new Error(\"empty metadataPath\");\n metadataPath = metadataPath.replace(/\\\\/g, \"/\");\n if (/^[a-zA-Z]:/.test(metadataPath) || /^\\//.test(metadataPath)) throw new Error(\"absolute path: \" + metadataPath);\n if (metadataPath.split(\"/\").indexOf(\"..\") !== -1) throw new Error(\"invalid relative path: \" + metadataPath);\n var looksLikeDirectory = /\\/$/.test(metadataPath);\n if (isDirectory) {\n // append a trailing '/' if necessary.\n if (!looksLikeDirectory) metadataPath += \"/\";\n } else {\n if (looksLikeDirectory) throw new Error(\"file path cannot end with '/': \" + metadataPath);\n }\n return metadataPath;\n}\n\nvar EMPTY_BUFFER = bufferAlloc(0);\n\n// this class is not part of the public API\nfunction Entry(metadataPath, isDirectory, options) {\n this.utf8FileName = bufferFrom(metadataPath);\n if (this.utf8FileName.length > 0xffff) throw new Error(\"utf8 file name too long. \" + utf8FileName.length + \" > \" + 0xffff);\n this.isDirectory = isDirectory;\n this.state = Entry.WAITING_FOR_METADATA;\n this.setLastModDate(options.mtime != null ? options.mtime : new Date());\n if (options.mode != null) {\n this.setFileAttributesMode(options.mode);\n } else {\n this.setFileAttributesMode(isDirectory ? 0o40775 : 0o100664);\n }\n if (isDirectory) {\n this.crcAndFileSizeKnown = true;\n this.crc32 = 0;\n this.uncompressedSize = 0;\n this.compressedSize = 0;\n } else {\n // unknown so far\n this.crcAndFileSizeKnown = false;\n this.crc32 = null;\n this.uncompressedSize = null;\n this.compressedSize = null;\n if (options.size != null) this.uncompressedSize = options.size;\n }\n if (isDirectory) {\n this.compress = false;\n } else {\n this.compress = true; // default\n if (options.compress != null) this.compress = !!options.compress;\n }\n this.forceZip64Format = !!options.forceZip64Format;\n if (options.fileComment) {\n if (typeof options.fileComment === \"string\") {\n this.fileComment = bufferFrom(options.fileComment, \"utf-8\");\n } else {\n // It should be a Buffer\n this.fileComment = options.fileComment;\n }\n if (this.fileComment.length > 0xffff) throw new Error(\"fileComment is too large\");\n } else {\n // no comment.\n this.fileComment = EMPTY_BUFFER;\n }\n}\nEntry.WAITING_FOR_METADATA = 0;\nEntry.READY_TO_PUMP_FILE_DATA = 1;\nEntry.FILE_DATA_IN_PROGRESS = 2;\nEntry.FILE_DATA_DONE = 3;\nEntry.prototype.setLastModDate = function(date) {\n var dosDateTime = dateToDosDateTime(date);\n this.lastModFileTime = dosDateTime.time;\n this.lastModFileDate = dosDateTime.date;\n};\nEntry.prototype.setFileAttributesMode = function(mode) {\n if ((mode & 0xffff) !== mode) throw new Error(\"invalid mode. expected: 0 <= \" + mode + \" <= \" + 0xffff);\n // http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute/14727#14727\n this.externalFileAttributes = (mode << 16) >>> 0;\n};\n// doFileDataPump() should not call pumpEntries() directly. see issue #9.\nEntry.prototype.setFileDataPumpFunction = function(doFileDataPump) {\n this.doFileDataPump = doFileDataPump;\n this.state = Entry.READY_TO_PUMP_FILE_DATA;\n};\nEntry.prototype.useZip64Format = function() {\n return (\n (this.forceZip64Format) ||\n (this.uncompressedSize != null && this.uncompressedSize > 0xfffffffe) ||\n (this.compressedSize != null && this.compressedSize > 0xfffffffe) ||\n (this.relativeOffsetOfLocalHeader != null && this.relativeOffsetOfLocalHeader > 0xfffffffe)\n );\n}\nvar LOCAL_FILE_HEADER_FIXED_SIZE = 30;\nvar VERSION_NEEDED_TO_EXTRACT_UTF8 = 20;\nvar VERSION_NEEDED_TO_EXTRACT_ZIP64 = 45;\n// 3 = unix. 63 = spec version 6.3\nvar VERSION_MADE_BY = (3 << 8) | 63;\nvar FILE_NAME_IS_UTF8 = 1 << 11;\nvar UNKNOWN_CRC32_AND_FILE_SIZES = 1 << 3;\nEntry.prototype.getLocalFileHeader = function() {\n var crc32 = 0;\n var compressedSize = 0;\n var uncompressedSize = 0;\n if (this.crcAndFileSizeKnown) {\n crc32 = this.crc32;\n compressedSize = this.compressedSize;\n uncompressedSize = this.uncompressedSize;\n }\n\n var fixedSizeStuff = bufferAlloc(LOCAL_FILE_HEADER_FIXED_SIZE);\n var generalPurposeBitFlag = FILE_NAME_IS_UTF8;\n if (!this.crcAndFileSizeKnown) generalPurposeBitFlag |= UNKNOWN_CRC32_AND_FILE_SIZES;\n\n // local file header signature 4 bytes (0x04034b50)\n fixedSizeStuff.writeUInt32LE(0x04034b50, 0);\n // version needed to extract 2 bytes\n fixedSizeStuff.writeUInt16LE(VERSION_NEEDED_TO_EXTRACT_UTF8, 4);\n // general purpose bit flag 2 bytes\n fixedSizeStuff.writeUInt16LE(generalPurposeBitFlag, 6);\n // compression method 2 bytes\n fixedSizeStuff.writeUInt16LE(this.getCompressionMethod(), 8);\n // last mod file time 2 bytes\n fixedSizeStuff.writeUInt16LE(this.lastModFileTime, 10);\n // last mod file date 2 bytes\n fixedSizeStuff.writeUInt16LE(this.lastModFileDate, 12);\n // crc-32 4 bytes\n fixedSizeStuff.writeUInt32LE(crc32, 14);\n // compressed size 4 bytes\n fixedSizeStuff.writeUInt32LE(compressedSize, 18);\n // uncompressed size 4 bytes\n fixedSizeStuff.writeUInt32LE(uncompressedSize, 22);\n // file name length 2 bytes\n fixedSizeStuff.writeUInt16LE(this.utf8FileName.length, 26);\n // extra field length 2 bytes\n fixedSizeStuff.writeUInt16LE(0, 28);\n return Buffer.concat([\n fixedSizeStuff,\n // file name (variable size)\n this.utf8FileName,\n // extra field (variable size)\n // no extra fields\n ]);\n};\nvar DATA_DESCRIPTOR_SIZE = 16;\nvar ZIP64_DATA_DESCRIPTOR_SIZE = 24;\nEntry.prototype.getDataDescriptor = function() {\n if (this.crcAndFileSizeKnown) {\n // the Mac Archive Utility requires this not be present unless we set general purpose bit 3\n return EMPTY_BUFFER;\n }\n if (!this.useZip64Format()) {\n var buffer = bufferAlloc(DATA_DESCRIPTOR_SIZE);\n // optional signature (required according to Archive Utility)\n buffer.writeUInt32LE(0x08074b50, 0);\n // crc-32 4 bytes\n buffer.writeUInt32LE(this.crc32, 4);\n // compressed size 4 bytes\n buffer.writeUInt32LE(this.compressedSize, 8);\n // uncompressed size 4 bytes\n buffer.writeUInt32LE(this.uncompressedSize, 12);\n return buffer;\n } else {\n // ZIP64 format\n var buffer = bufferAlloc(ZIP64_DATA_DESCRIPTOR_SIZE);\n // optional signature (unknown if anyone cares about this)\n buffer.writeUInt32LE(0x08074b50, 0);\n // crc-32 4 bytes\n buffer.writeUInt32LE(this.crc32, 4);\n // compressed size 8 bytes\n writeUInt64LE(buffer, this.compressedSize, 8);\n // uncompressed size 8 bytes\n writeUInt64LE(buffer, this.uncompressedSize, 16);\n return buffer;\n }\n};\nvar CENTRAL_DIRECTORY_RECORD_FIXED_SIZE = 46;\nvar ZIP64_EXTENDED_INFORMATION_EXTRA_FIELD_SIZE = 28;\nEntry.prototype.getCentralDirectoryRecord = function() {\n var fixedSizeStuff = bufferAlloc(CENTRAL_DIRECTORY_RECORD_FIXED_SIZE);\n var generalPurposeBitFlag = FILE_NAME_IS_UTF8;\n if (!this.crcAndFileSizeKnown) generalPurposeBitFlag |= UNKNOWN_CRC32_AND_FILE_SIZES;\n\n var normalCompressedSize = this.compressedSize;\n var normalUncompressedSize = this.uncompressedSize;\n var normalRelativeOffsetOfLocalHeader = this.relativeOffsetOfLocalHeader;\n var versionNeededToExtract;\n var zeiefBuffer;\n if (this.useZip64Format()) {\n normalCompressedSize = 0xffffffff;\n normalUncompressedSize = 0xffffffff;\n normalRelativeOffsetOfLocalHeader = 0xffffffff;\n versionNeededToExtract = VERSION_NEEDED_TO_EXTRACT_ZIP64;\n\n // ZIP64 extended information extra field\n zeiefBuffer = bufferAlloc(ZIP64_EXTENDED_INFORMATION_EXTRA_FIELD_SIZE);\n // 0x0001 2 bytes Tag for this \"extra\" block type\n zeiefBuffer.writeUInt16LE(0x0001, 0);\n // Size 2 bytes Size of this \"extra\" block\n zeiefBuffer.writeUInt16LE(ZIP64_EXTENDED_INFORMATION_EXTRA_FIELD_SIZE - 4, 2);\n // Original Size 8 bytes Original uncompressed file size\n writeUInt64LE(zeiefBuffer, this.uncompressedSize, 4);\n // Compressed Size 8 bytes Size of compressed data\n writeUInt64LE(zeiefBuffer, this.compressedSize, 12);\n // Relative Header Offset 8 bytes Offset of local header record\n writeUInt64LE(zeiefBuffer, this.relativeOffsetOfLocalHeader, 20);\n // Disk Start Number 4 bytes Number of the disk on which this file starts\n // (omit)\n } else {\n versionNeededToExtract = VERSION_NEEDED_TO_EXTRACT_UTF8;\n zeiefBuffer = EMPTY_BUFFER;\n }\n\n // central file header signature 4 bytes (0x02014b50)\n fixedSizeStuff.writeUInt32LE(0x02014b50, 0);\n // version made by 2 bytes\n fixedSizeStuff.writeUInt16LE(VERSION_MADE_BY, 4);\n // version needed to extract 2 bytes\n fixedSizeStuff.writeUInt16LE(versionNeededToExtract, 6);\n // general purpose bit flag 2 bytes\n fixedSizeStuff.writeUInt16LE(generalPurposeBitFlag, 8);\n // compression method 2 bytes\n fixedSizeStuff.writeUInt16LE(this.getCompressionMethod(), 10);\n // last mod file time 2 bytes\n fixedSizeStuff.writeUInt16LE(this.lastModFileTime, 12);\n // last mod file date 2 bytes\n fixedSizeStuff.writeUInt16LE(this.lastModFileDate, 14);\n // crc-32 4 bytes\n fixedSizeStuff.writeUInt32LE(this.crc32, 16);\n // compressed size 4 bytes\n fixedSizeStuff.writeUInt32LE(normalCompressedSize, 20);\n // uncompressed size 4 bytes\n fixedSizeStuff.writeUInt32LE(normalUncompressedSize, 24);\n // file name length 2 bytes\n fixedSizeStuff.writeUInt16LE(this.utf8FileName.length, 28);\n // extra field length 2 bytes\n fixedSizeStuff.writeUInt16LE(zeiefBuffer.length, 30);\n // file comment length 2 bytes\n fixedSizeStuff.writeUInt16LE(this.fileComment.length, 32);\n // disk number start 2 bytes\n fixedSizeStuff.writeUInt16LE(0, 34);\n // internal file attributes 2 bytes\n fixedSizeStuff.writeUInt16LE(0, 36);\n // external file attributes 4 bytes\n fixedSizeStuff.writeUInt32LE(this.externalFileAttributes, 38);\n // relative offset of local header 4 bytes\n fixedSizeStuff.writeUInt32LE(normalRelativeOffsetOfLocalHeader, 42);\n\n return Buffer.concat([\n fixedSizeStuff,\n // file name (variable size)\n this.utf8FileName,\n // extra field (variable size)\n zeiefBuffer,\n // file comment (variable size)\n this.fileComment,\n ]);\n};\nEntry.prototype.getCompressionMethod = function() {\n var NO_COMPRESSION = 0;\n var DEFLATE_COMPRESSION = 8;\n return this.compress ? DEFLATE_COMPRESSION : NO_COMPRESSION;\n};\n\nfunction dateToDosDateTime(jsDate) {\n var date = 0;\n date |= jsDate.getDate() & 0x1f; // 1-31\n date |= ((jsDate.getMonth() + 1) & 0xf) << 5; // 0-11, 1-12\n date |= ((jsDate.getFullYear() - 1980) & 0x7f) << 9; // 0-128, 1980-2108\n\n var time = 0;\n time |= Math.floor(jsDate.getSeconds() / 2); // 0-59, 0-29 (lose odd numbers)\n time |= (jsDate.getMinutes() & 0x3f) << 5; // 0-59\n time |= (jsDate.getHours() & 0x1f) << 11; // 0-23\n\n return {date: date, time: time};\n}\n\nfunction writeUInt64LE(buffer, n, offset) {\n // can't use bitshift here, because JavaScript only allows bitshifting on 32-bit integers.\n var high = Math.floor(n / 0x100000000);\n var low = n % 0x100000000;\n buffer.writeUInt32LE(low, offset);\n buffer.writeUInt32LE(high, offset + 4);\n}\n\nfunction defaultCallback(err) {\n if (err) throw err;\n}\n\nutil.inherits(ByteCounter, Transform);\nfunction ByteCounter(options) {\n Transform.call(this, options);\n this.byteCount = 0;\n}\nByteCounter.prototype._transform = function(chunk, encoding, cb) {\n this.byteCount += chunk.length;\n cb(null, chunk);\n};\n\nutil.inherits(Crc32Watcher, Transform);\nfunction Crc32Watcher(options) {\n Transform.call(this, options);\n this.crc32 = 0;\n}\nCrc32Watcher.prototype._transform = function(chunk, encoding, cb) {\n this.crc32 = crc32.unsigned(chunk, this.crc32);\n cb(null, chunk);\n};\n\nvar cp437 = '\\u0000☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ';\nif (cp437.length !== 256) throw new Error(\"assertion failure\");\nvar reverseCp437 = null;\n\nfunction encodeCp437(string) {\n if (/^[\\x20-\\x7e]*$/.test(string)) {\n // CP437, ASCII, and UTF-8 overlap in this range.\n return bufferFrom(string, \"utf-8\");\n }\n\n // This is the slow path.\n if (reverseCp437 == null) {\n // cache this once\n reverseCp437 = {};\n for (var i = 0; i < cp437.length; i++) {\n reverseCp437[cp437[i]] = i;\n }\n }\n\n var result = bufferAlloc(string.length);\n for (var i = 0; i < string.length; i++) {\n var b = reverseCp437[string[i]];\n if (b == null) throw new Error(\"character not encodable in CP437: \" + JSON.stringify(string[i]));\n result[i] = b;\n }\n\n return result;\n}\n\nfunction bufferAlloc(size) {\n bufferAlloc = modern;\n try {\n return bufferAlloc(size);\n } catch (e) {\n bufferAlloc = legacy;\n return bufferAlloc(size);\n }\n function modern(size) {\n return Buffer.allocUnsafe(size);\n }\n function legacy(size) {\n return new Buffer(size);\n }\n}\nfunction bufferFrom(something, encoding) {\n bufferFrom = modern;\n try {\n return bufferFrom(something, encoding);\n } catch (e) {\n bufferFrom = legacy;\n return bufferFrom(something, encoding);\n }\n function modern(something, encoding) {\n return Buffer.from(something, encoding);\n }\n function legacy(something, encoding) {\n return new Buffer(something, encoding);\n }\n}\nfunction bufferIncludes(buffer, content) {\n bufferIncludes = modern;\n try {\n return bufferIncludes(buffer, content);\n } catch (e) {\n bufferIncludes = legacy;\n return bufferIncludes(buffer, content);\n }\n function modern(buffer, content) {\n return buffer.includes(content);\n }\n function legacy(buffer, content) {\n for (var i = 0; i <= buffer.length - content.length; i++) {\n for (var j = 0;; j++) {\n if (j === content.length) return true;\n if (buffer[i + j] !== content[j]) break;\n }\n }\n return false;\n }\n}\n",
|
|
249
|
+
"'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n",
|
|
250
|
+
"var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n",
|
|
251
|
+
"/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n",
|
|
252
|
+
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n",
|
|
253
|
+
"if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n",
|
|
254
|
+
"try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n",
|
|
255
|
+
"'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}",
|
|
256
|
+
"'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};",
|
|
257
|
+
"\n/**\n * For Node.js, simply re-export the core `util.deprecate` function.\n */\n\nmodule.exports = require('util').deprecate;\n",
|
|
258
|
+
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};",
|
|
259
|
+
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};",
|
|
260
|
+
"/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n",
|
|
261
|
+
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}",
|
|
262
|
+
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, { hasUnpiped: false });\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}",
|
|
263
|
+
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}",
|
|
264
|
+
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};",
|
|
265
|
+
"var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n module.exports = Stream;\n exports = module.exports = Stream.Readable;\n exports.Readable = Stream.Readable;\n exports.Writable = Stream.Writable;\n exports.Duplex = Stream.Duplex;\n exports.Transform = Stream.Transform;\n exports.PassThrough = Stream.PassThrough;\n exports.Stream = Stream;\n} else {\n exports = module.exports = require('./lib/_stream_readable.js');\n exports.Stream = Stream || exports;\n exports.Readable = exports;\n exports.Writable = require('./lib/_stream_writable.js');\n exports.Duplex = require('./lib/_stream_duplex.js');\n exports.Transform = require('./lib/_stream_transform.js');\n exports.PassThrough = require('./lib/_stream_passthrough.js');\n}\n",
|
|
266
|
+
"module.exports = require('./readable').Duplex\n",
|
|
267
|
+
"/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n",
|
|
268
|
+
"var DuplexStream = require('readable-stream/duplex')\n , util = require('util')\n , Buffer = require('safe-buffer').Buffer\n\n\nfunction BufferList (callback) {\n if (!(this instanceof BufferList))\n return new BufferList(callback)\n\n this._bufs = []\n this.length = 0\n\n if (typeof callback == 'function') {\n this._callback = callback\n\n var piper = function piper (err) {\n if (this._callback) {\n this._callback(err)\n this._callback = null\n }\n }.bind(this)\n\n this.on('pipe', function onPipe (src) {\n src.on('error', piper)\n })\n this.on('unpipe', function onUnpipe (src) {\n src.removeListener('error', piper)\n })\n } else {\n this.append(callback)\n }\n\n DuplexStream.call(this)\n}\n\n\nutil.inherits(BufferList, DuplexStream)\n\n\nBufferList.prototype._offset = function _offset (offset) {\n var tot = 0, i = 0, _t\n if (offset === 0) return [ 0, 0 ]\n for (; i < this._bufs.length; i++) {\n _t = tot + this._bufs[i].length\n if (offset < _t || i == this._bufs.length - 1)\n return [ i, offset - tot ]\n tot = _t\n }\n}\n\n\nBufferList.prototype.append = function append (buf) {\n var i = 0\n\n if (Buffer.isBuffer(buf)) {\n this._appendBuffer(buf);\n } else if (Array.isArray(buf)) {\n for (; i < buf.length; i++)\n this.append(buf[i])\n } else if (buf instanceof BufferList) {\n // unwrap argument into individual BufferLists\n for (; i < buf._bufs.length; i++)\n this.append(buf._bufs[i])\n } else if (buf != null) {\n // coerce number arguments to strings, since Buffer(number) does\n // uninitialized memory allocation\n if (typeof buf == 'number')\n buf = buf.toString()\n\n this._appendBuffer(Buffer.from(buf));\n }\n\n return this\n}\n\n\nBufferList.prototype._appendBuffer = function appendBuffer (buf) {\n this._bufs.push(buf)\n this.length += buf.length\n}\n\n\nBufferList.prototype._write = function _write (buf, encoding, callback) {\n this._appendBuffer(buf)\n\n if (typeof callback == 'function')\n callback()\n}\n\n\nBufferList.prototype._read = function _read (size) {\n if (!this.length)\n return this.push(null)\n\n size = Math.min(size, this.length)\n this.push(this.slice(0, size))\n this.consume(size)\n}\n\n\nBufferList.prototype.end = function end (chunk) {\n DuplexStream.prototype.end.call(this, chunk)\n\n if (this._callback) {\n this._callback(null, this.slice())\n this._callback = null\n }\n}\n\n\nBufferList.prototype.get = function get (index) {\n return this.slice(index, index + 1)[0]\n}\n\n\nBufferList.prototype.slice = function slice (start, end) {\n if (typeof start == 'number' && start < 0)\n start += this.length\n if (typeof end == 'number' && end < 0)\n end += this.length\n return this.copy(null, 0, start, end)\n}\n\n\nBufferList.prototype.copy = function copy (dst, dstStart, srcStart, srcEnd) {\n if (typeof srcStart != 'number' || srcStart < 0)\n srcStart = 0\n if (typeof srcEnd != 'number' || srcEnd > this.length)\n srcEnd = this.length\n if (srcStart >= this.length)\n return dst || Buffer.alloc(0)\n if (srcEnd <= 0)\n return dst || Buffer.alloc(0)\n\n var copy = !!dst\n , off = this._offset(srcStart)\n , len = srcEnd - srcStart\n , bytes = len\n , bufoff = (copy && dstStart) || 0\n , start = off[1]\n , l\n , i\n\n // copy/slice everything\n if (srcStart === 0 && srcEnd == this.length) {\n if (!copy) { // slice, but full concat if multiple buffers\n return this._bufs.length === 1\n ? this._bufs[0]\n : Buffer.concat(this._bufs, this.length)\n }\n\n // copy, need to copy individual buffers\n for (i = 0; i < this._bufs.length; i++) {\n this._bufs[i].copy(dst, bufoff)\n bufoff += this._bufs[i].length\n }\n\n return dst\n }\n\n // easy, cheap case where it's a subset of one of the buffers\n if (bytes <= this._bufs[off[0]].length - start) {\n return copy\n ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes)\n : this._bufs[off[0]].slice(start, start + bytes)\n }\n\n if (!copy) // a slice, we need something to copy in to\n dst = Buffer.allocUnsafe(len)\n\n for (i = off[0]; i < this._bufs.length; i++) {\n l = this._bufs[i].length - start\n\n if (bytes > l) {\n this._bufs[i].copy(dst, bufoff, start)\n bufoff += l\n } else {\n this._bufs[i].copy(dst, bufoff, start, start + bytes)\n bufoff += l\n break\n }\n\n bytes -= l\n\n if (start)\n start = 0\n }\n\n // safeguard so that we don't return uninitialized memory\n if (dst.length > bufoff) return dst.slice(0, bufoff)\n\n return dst\n}\n\nBufferList.prototype.shallowSlice = function shallowSlice (start, end) {\n start = start || 0\n end = end || this.length\n\n if (start < 0)\n start += this.length\n if (end < 0)\n end += this.length\n\n var startOffset = this._offset(start)\n , endOffset = this._offset(end)\n , buffers = this._bufs.slice(startOffset[0], endOffset[0] + 1)\n\n if (endOffset[1] == 0)\n buffers.pop()\n else\n buffers[buffers.length-1] = buffers[buffers.length-1].slice(0, endOffset[1])\n\n if (startOffset[1] != 0)\n buffers[0] = buffers[0].slice(startOffset[1])\n\n return new BufferList(buffers)\n}\n\nBufferList.prototype.toString = function toString (encoding, start, end) {\n return this.slice(start, end).toString(encoding)\n}\n\nBufferList.prototype.consume = function consume (bytes) {\n // first, normalize the argument, in accordance with how Buffer does it\n bytes = Math.trunc(bytes)\n // do nothing if not a positive number\n if (Number.isNaN(bytes) || bytes <= 0) return this\n\n while (this._bufs.length) {\n if (bytes >= this._bufs[0].length) {\n bytes -= this._bufs[0].length\n this.length -= this._bufs[0].length\n this._bufs.shift()\n } else {\n this._bufs[0] = this._bufs[0].slice(bytes)\n this.length -= bytes\n break\n }\n }\n return this\n}\n\n\nBufferList.prototype.duplicate = function duplicate () {\n var i = 0\n , copy = new BufferList()\n\n for (; i < this._bufs.length; i++)\n copy.append(this._bufs[i])\n\n return copy\n}\n\n\nBufferList.prototype.destroy = function destroy () {\n this._bufs.length = 0\n this.length = 0\n this.push(null)\n}\n\n\n;(function () {\n var methods = {\n 'readDoubleBE' : 8\n , 'readDoubleLE' : 8\n , 'readFloatBE' : 4\n , 'readFloatLE' : 4\n , 'readInt32BE' : 4\n , 'readInt32LE' : 4\n , 'readUInt32BE' : 4\n , 'readUInt32LE' : 4\n , 'readInt16BE' : 2\n , 'readInt16LE' : 2\n , 'readUInt16BE' : 2\n , 'readUInt16LE' : 2\n , 'readInt8' : 1\n , 'readUInt8' : 1\n }\n\n for (var m in methods) {\n (function (m) {\n BufferList.prototype[m] = function (offset) {\n return this.slice(offset, offset + methods[m])[m](0)\n }\n }(m))\n }\n}())\n\n\nmodule.exports = BufferList\n",
|
|
269
|
+
"module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n",
|
|
270
|
+
"var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n",
|
|
271
|
+
"'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n",
|
|
272
|
+
"'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n",
|
|
273
|
+
"'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n",
|
|
274
|
+
"'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n",
|
|
275
|
+
"'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n",
|
|
276
|
+
"'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n",
|
|
277
|
+
"'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n",
|
|
278
|
+
"'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n",
|
|
279
|
+
"'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n",
|
|
280
|
+
"'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n",
|
|
281
|
+
"'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n",
|
|
282
|
+
"'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n",
|
|
283
|
+
"'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n",
|
|
284
|
+
"'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n",
|
|
285
|
+
"'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n",
|
|
286
|
+
"'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n",
|
|
287
|
+
"'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n",
|
|
288
|
+
"'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n",
|
|
289
|
+
"'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n",
|
|
290
|
+
"'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n",
|
|
291
|
+
"'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n",
|
|
292
|
+
"'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n",
|
|
293
|
+
"'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n",
|
|
294
|
+
"'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n",
|
|
295
|
+
"'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n",
|
|
296
|
+
"'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n",
|
|
297
|
+
"'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n",
|
|
298
|
+
"'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n",
|
|
299
|
+
"'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n",
|
|
300
|
+
"'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n",
|
|
301
|
+
"'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n",
|
|
302
|
+
"'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n",
|
|
303
|
+
"'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n",
|
|
304
|
+
"'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n",
|
|
305
|
+
"'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n",
|
|
306
|
+
"'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n",
|
|
307
|
+
"'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {<This, A extends readonly unknown[]>(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\n/** @type {<This, S extends string>(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\n/** @type {<This, O>(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (isArray(list)) {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n",
|
|
308
|
+
"'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n",
|
|
309
|
+
"'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType<typeof availableTypedArrays>} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n",
|
|
310
|
+
"'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n",
|
|
311
|
+
"'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n",
|
|
312
|
+
"'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n",
|
|
313
|
+
"'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n",
|
|
314
|
+
"'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n",
|
|
315
|
+
"'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n",
|
|
316
|
+
"'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType<typeof tryAllTypedArrays>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType<typeof tryAllSlices>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n",
|
|
317
|
+
"'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n",
|
|
318
|
+
"'use strict';\n\nvar $TypeError = require('es-errors/type');\n\nvar callBound = require('call-bound');\n\n/** @type {undefined | ((thisArg: import('.').TypedArray) => Buffer<ArrayBufferLike>)} */\nvar $typedArrayBuffer = callBound('TypedArray.prototype.buffer', true);\n\nvar isTypedArray = require('is-typed-array');\n\n/** @type {import('.')} */\n// node <= 0.10, < 0.11.4 has a nonconfigurable own property instead of a prototype getter\nmodule.exports = $typedArrayBuffer || function typedArrayBuffer(x) {\n\tif (!isTypedArray(x)) {\n\t\tthrow new $TypeError('Not a Typed Array');\n\t}\n\treturn x.buffer;\n};\n",
|
|
319
|
+
"'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar isArray = require('isarray');\nvar typedArrayBuffer = require('typed-array-buffer');\n\nvar isView = ArrayBuffer.isView || function isView(obj) {\n\ttry {\n\t\ttypedArrayBuffer(obj);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar useUint8Array = typeof Uint8Array !== 'undefined';\nvar useArrayBuffer = typeof ArrayBuffer !== 'undefined'\n\t&& typeof Uint8Array !== 'undefined';\nvar useFromArrayBuffer = useArrayBuffer && (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);\n\nmodule.exports = function toBuffer(data, encoding) {\n\t/*\n\t * No need to do anything for exact instance\n\t * This is only valid when safe-buffer.Buffer === buffer.Buffer, i.e. when Buffer.from/Buffer.alloc existed\n\t */\n\tif (data instanceof Buffer) {\n\t\treturn data;\n\t}\n\n\tif (typeof data === 'string') {\n\t\treturn Buffer.from(data, encoding);\n\t}\n\n\t/*\n\t * Wrap any TypedArray instances and DataViews\n\t * Makes sense only on engines with full TypedArray support -- let Buffer detect that\n\t */\n\tif (useArrayBuffer && isView(data)) {\n\t\t// Bug in Node.js <6.3.1, which treats this as out-of-bounds\n\t\tif (data.byteLength === 0) {\n\t\t\treturn Buffer.alloc(0);\n\t\t}\n\n\t\t// When Buffer is based on Uint8Array, we can just construct it from ArrayBuffer\n\t\tif (useFromArrayBuffer) {\n\t\t\tvar res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n\t\t\t/*\n\t\t\t * Recheck result size, as offset/length doesn't work on Node.js <5.10\n\t\t\t * We just go to Uint8Array case if this fails\n\t\t\t */\n\t\t\tif (res.byteLength === data.byteLength) {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\n\t\t// Convert to Uint8Array bytes and then to Buffer\n\t\tvar uint8 = data instanceof Uint8Array ? data : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n\t\tvar result = Buffer.from(uint8);\n\n\t\t/*\n\t\t * Let's recheck that conversion succeeded\n\t\t * We have .length but not .byteLength when useFromArrayBuffer is false\n\t\t */\n\t\tif (result.length === data.byteLength) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\t/*\n\t * Uint8Array in engines where Buffer.from might not work with ArrayBuffer, just copy over\n\t * Doesn't make sense with other TypedArray instances\n\t */\n\tif (useUint8Array && data instanceof Uint8Array) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tvar isArr = isArray(data);\n\tif (isArr) {\n\t\tfor (var i = 0; i < data.length; i += 1) {\n\t\t\tvar x = data[i];\n\t\t\tif (\n\t\t\t\ttypeof x !== 'number'\n\t\t\t\t|| x < 0\n\t\t\t\t|| x > 255\n\t\t\t\t|| ~~x !== x // NaN and integer check\n\t\t\t) {\n\t\t\t\tthrow new RangeError('Array items must be numbers in the range 0-255.');\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Old Buffer polyfill on an engine that doesn't have TypedArray support\n\t * Also, this is from a different Buffer polyfill implementation then we have, as instanceof check failed\n\t * Convert to our current Buffer implementation\n\t */\n\tif (\n\t\tisArr || (\n\t\t\tBuffer.isBuffer(data)\n\t\t\t\t&& data.constructor\n\t\t\t\t&& typeof data.constructor.isBuffer === 'function'\n\t\t\t\t&& data.constructor.isBuffer(data)\n\t\t)\n\t) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tthrow new TypeError('The \"data\" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.');\n};\n",
|
|
320
|
+
"/* Node.js 6.4.0 and up has full support */\nvar hasFullSupport = (function () {\n try {\n if (!Buffer.isEncoding('latin1')) {\n return false\n }\n\n var buf = Buffer.alloc ? Buffer.alloc(4) : new Buffer(4)\n\n buf.fill('ab', 'ucs2')\n\n return (buf.toString('hex') === '61006200')\n } catch (_) {\n return false\n }\n}())\n\nfunction isSingleByte (val) {\n return (val.length === 1 && val.charCodeAt(0) < 256)\n}\n\nfunction fillWithNumber (buffer, val, start, end) {\n if (start < 0 || end > buffer.length) {\n throw new RangeError('Out of range index')\n }\n\n start = start >>> 0\n end = end === undefined ? buffer.length : end >>> 0\n\n if (end > start) {\n buffer.fill(val, start, end)\n }\n\n return buffer\n}\n\nfunction fillWithBuffer (buffer, val, start, end) {\n if (start < 0 || end > buffer.length) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return buffer\n }\n\n start = start >>> 0\n end = end === undefined ? buffer.length : end >>> 0\n\n var pos = start\n var len = val.length\n while (pos <= (end - len)) {\n val.copy(buffer, pos)\n pos += len\n }\n\n if (pos !== end) {\n val.copy(buffer, pos, 0, end - pos)\n }\n\n return buffer\n}\n\nfunction fill (buffer, val, start, end, encoding) {\n if (hasFullSupport) {\n return buffer.fill(val, start, end, encoding)\n }\n\n if (typeof val === 'number') {\n return fillWithNumber(buffer, val, start, end)\n }\n\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = buffer.length\n } else if (typeof end === 'string') {\n encoding = end\n end = buffer.length\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n\n if (encoding === 'latin1') {\n encoding = 'binary'\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n if (val === '') {\n return fillWithNumber(buffer, 0, start, end)\n }\n\n if (isSingleByte(val)) {\n return fillWithNumber(buffer, val.charCodeAt(0), start, end)\n }\n\n val = new Buffer(val, encoding)\n }\n\n if (Buffer.isBuffer(val)) {\n return fillWithBuffer(buffer, val, start, end)\n }\n\n // Other values (e.g. undefined, boolean, object) results in zero-fill\n return fillWithNumber(buffer, 0, start, end)\n}\n\nmodule.exports = fill\n",
|
|
321
|
+
"function allocUnsafe (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n }\n\n if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n\n if (Buffer.allocUnsafe) {\n return Buffer.allocUnsafe(size)\n } else {\n return new Buffer(size)\n }\n}\n\nmodule.exports = allocUnsafe\n",
|
|
322
|
+
"var bufferFill = require('buffer-fill')\nvar allocUnsafe = require('buffer-alloc-unsafe')\n\nmodule.exports = function alloc (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n }\n\n if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n\n if (Buffer.alloc) {\n return Buffer.alloc(size, fill, encoding)\n }\n\n var buffer = allocUnsafe(size)\n\n if (size === 0) {\n return buffer\n }\n\n if (fill === undefined) {\n return bufferFill(buffer, 0)\n }\n\n if (typeof encoding !== 'string') {\n encoding = undefined\n }\n\n return bufferFill(buffer, fill, encoding)\n}\n",
|
|
323
|
+
"var toBuffer = require('to-buffer')\nvar alloc = require('buffer-alloc')\n\nvar ZEROS = '0000000000000000000'\nvar SEVENS = '7777777777777777777'\nvar ZERO_OFFSET = '0'.charCodeAt(0)\nvar USTAR = 'ustar\\x0000'\nvar MASK = parseInt('7777', 8)\n\nvar clamp = function (index, len, defaultValue) {\n if (typeof index !== 'number') return defaultValue\n index = ~~index // Coerce to integer.\n if (index >= len) return len\n if (index >= 0) return index\n index += len\n if (index >= 0) return index\n return 0\n}\n\nvar toType = function (flag) {\n switch (flag) {\n case 0:\n return 'file'\n case 1:\n return 'link'\n case 2:\n return 'symlink'\n case 3:\n return 'character-device'\n case 4:\n return 'block-device'\n case 5:\n return 'directory'\n case 6:\n return 'fifo'\n case 7:\n return 'contiguous-file'\n case 72:\n return 'pax-header'\n case 55:\n return 'pax-global-header'\n case 27:\n return 'gnu-long-link-path'\n case 28:\n case 30:\n return 'gnu-long-path'\n }\n\n return null\n}\n\nvar toTypeflag = function (flag) {\n switch (flag) {\n case 'file':\n return 0\n case 'link':\n return 1\n case 'symlink':\n return 2\n case 'character-device':\n return 3\n case 'block-device':\n return 4\n case 'directory':\n return 5\n case 'fifo':\n return 6\n case 'contiguous-file':\n return 7\n case 'pax-header':\n return 72\n }\n\n return 0\n}\n\nvar indexOf = function (block, num, offset, end) {\n for (; offset < end; offset++) {\n if (block[offset] === num) return offset\n }\n return end\n}\n\nvar cksum = function (block) {\n var sum = 8 * 32\n for (var i = 0; i < 148; i++) sum += block[i]\n for (var j = 156; j < 512; j++) sum += block[j]\n return sum\n}\n\nvar encodeOct = function (val, n) {\n val = val.toString(8)\n if (val.length > n) return SEVENS.slice(0, n) + ' '\n else return ZEROS.slice(0, n - val.length) + val + ' '\n}\n\n/* Copied from the node-tar repo and modified to meet\n * tar-stream coding standard.\n *\n * Source: https://github.com/npm/node-tar/blob/51b6627a1f357d2eb433e7378e5f05e83b7aa6cd/lib/header.js#L349\n */\nfunction parse256 (buf) {\n // first byte MUST be either 80 or FF\n // 80 for positive, FF for 2's comp\n var positive\n if (buf[0] === 0x80) positive = true\n else if (buf[0] === 0xFF) positive = false\n else return null\n\n // build up a base-256 tuple from the least sig to the highest\n var zero = false\n var tuple = []\n for (var i = buf.length - 1; i > 0; i--) {\n var byte = buf[i]\n if (positive) tuple.push(byte)\n else if (zero && byte === 0) tuple.push(0)\n else if (zero) {\n zero = false\n tuple.push(0x100 - byte)\n } else tuple.push(0xFF - byte)\n }\n\n var sum = 0\n var l = tuple.length\n for (i = 0; i < l; i++) {\n sum += tuple[i] * Math.pow(256, i)\n }\n\n return positive ? sum : -1 * sum\n}\n\nvar decodeOct = function (val, offset, length) {\n val = val.slice(offset, offset + length)\n offset = 0\n\n // If prefixed with 0x80 then parse as a base-256 integer\n if (val[offset] & 0x80) {\n return parse256(val)\n } else {\n // Older versions of tar can prefix with spaces\n while (offset < val.length && val[offset] === 32) offset++\n var end = clamp(indexOf(val, 32, offset, val.length), val.length, val.length)\n while (offset < end && val[offset] === 0) offset++\n if (end === offset) return 0\n return parseInt(val.slice(offset, end).toString(), 8)\n }\n}\n\nvar decodeStr = function (val, offset, length, encoding) {\n return val.slice(offset, indexOf(val, 0, offset, offset + length)).toString(encoding)\n}\n\nvar addLength = function (str) {\n var len = Buffer.byteLength(str)\n var digits = Math.floor(Math.log(len) / Math.log(10)) + 1\n if (len + digits >= Math.pow(10, digits)) digits++\n\n return (len + digits) + str\n}\n\nexports.decodeLongPath = function (buf, encoding) {\n return decodeStr(buf, 0, buf.length, encoding)\n}\n\nexports.encodePax = function (opts) { // TODO: encode more stuff in pax\n var result = ''\n if (opts.name) result += addLength(' path=' + opts.name + '\\n')\n if (opts.linkname) result += addLength(' linkpath=' + opts.linkname + '\\n')\n var pax = opts.pax\n if (pax) {\n for (var key in pax) {\n result += addLength(' ' + key + '=' + pax[key] + '\\n')\n }\n }\n return toBuffer(result)\n}\n\nexports.decodePax = function (buf) {\n var result = {}\n\n while (buf.length) {\n var i = 0\n while (i < buf.length && buf[i] !== 32) i++\n var len = parseInt(buf.slice(0, i).toString(), 10)\n if (!len) return result\n\n var b = buf.slice(i + 1, len - 1).toString()\n var keyIndex = b.indexOf('=')\n if (keyIndex === -1) return result\n result[b.slice(0, keyIndex)] = b.slice(keyIndex + 1)\n\n buf = buf.slice(len)\n }\n\n return result\n}\n\nexports.encode = function (opts) {\n var buf = alloc(512)\n var name = opts.name\n var prefix = ''\n\n if (opts.typeflag === 5 && name[name.length - 1] !== '/') name += '/'\n if (Buffer.byteLength(name) !== name.length) return null // utf-8\n\n while (Buffer.byteLength(name) > 100) {\n var i = name.indexOf('/')\n if (i === -1) return null\n prefix += prefix ? '/' + name.slice(0, i) : name.slice(0, i)\n name = name.slice(i + 1)\n }\n\n if (Buffer.byteLength(name) > 100 || Buffer.byteLength(prefix) > 155) return null\n if (opts.linkname && Buffer.byteLength(opts.linkname) > 100) return null\n\n buf.write(name)\n buf.write(encodeOct(opts.mode & MASK, 6), 100)\n buf.write(encodeOct(opts.uid, 6), 108)\n buf.write(encodeOct(opts.gid, 6), 116)\n buf.write(encodeOct(opts.size, 11), 124)\n buf.write(encodeOct((opts.mtime.getTime() / 1000) | 0, 11), 136)\n\n buf[156] = ZERO_OFFSET + toTypeflag(opts.type)\n\n if (opts.linkname) buf.write(opts.linkname, 157)\n\n buf.write(USTAR, 257)\n if (opts.uname) buf.write(opts.uname, 265)\n if (opts.gname) buf.write(opts.gname, 297)\n buf.write(encodeOct(opts.devmajor || 0, 6), 329)\n buf.write(encodeOct(opts.devminor || 0, 6), 337)\n\n if (prefix) buf.write(prefix, 345)\n\n buf.write(encodeOct(cksum(buf), 6), 148)\n\n return buf\n}\n\nexports.decode = function (buf, filenameEncoding) {\n var typeflag = buf[156] === 0 ? 0 : buf[156] - ZERO_OFFSET\n\n var name = decodeStr(buf, 0, 100, filenameEncoding)\n var mode = decodeOct(buf, 100, 8)\n var uid = decodeOct(buf, 108, 8)\n var gid = decodeOct(buf, 116, 8)\n var size = decodeOct(buf, 124, 12)\n var mtime = decodeOct(buf, 136, 12)\n var type = toType(typeflag)\n var linkname = buf[157] === 0 ? null : decodeStr(buf, 157, 100, filenameEncoding)\n var uname = decodeStr(buf, 265, 32)\n var gname = decodeStr(buf, 297, 32)\n var devmajor = decodeOct(buf, 329, 8)\n var devminor = decodeOct(buf, 337, 8)\n\n if (buf[345]) name = decodeStr(buf, 345, 155, filenameEncoding) + '/' + name\n\n // to support old tar versions that use trailing / to indicate dirs\n if (typeflag === 0 && name && name[name.length - 1] === '/') typeflag = 5\n\n var c = cksum(buf)\n\n // checksum is still initial value if header was null.\n if (c === 8 * 32) return null\n\n // valid checksum\n if (c !== decodeOct(buf, 148, 8)) throw new Error('Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?')\n\n return {\n name: name,\n mode: mode,\n uid: uid,\n gid: gid,\n size: size,\n mtime: new Date(1000 * mtime),\n type: type,\n linkname: linkname,\n uname: uname,\n gname: gname,\n devmajor: devmajor,\n devminor: devminor\n }\n}\n",
|
|
324
|
+
"var util = require('util')\nvar bl = require('bl')\nvar xtend = require('xtend')\nvar headers = require('./headers')\n\nvar Writable = require('readable-stream').Writable\nvar PassThrough = require('readable-stream').PassThrough\n\nvar noop = function () {}\n\nvar overflow = function (size) {\n size &= 511\n return size && 512 - size\n}\n\nvar emptyStream = function (self, offset) {\n var s = new Source(self, offset)\n s.end()\n return s\n}\n\nvar mixinPax = function (header, pax) {\n if (pax.path) header.name = pax.path\n if (pax.linkpath) header.linkname = pax.linkpath\n if (pax.size) header.size = parseInt(pax.size, 10)\n header.pax = pax\n return header\n}\n\nvar Source = function (self, offset) {\n this._parent = self\n this.offset = offset\n PassThrough.call(this)\n}\n\nutil.inherits(Source, PassThrough)\n\nSource.prototype.destroy = function (err) {\n this._parent.destroy(err)\n}\n\nvar Extract = function (opts) {\n if (!(this instanceof Extract)) return new Extract(opts)\n Writable.call(this, opts)\n\n opts = opts || {}\n\n this._offset = 0\n this._buffer = bl()\n this._missing = 0\n this._partial = false\n this._onparse = noop\n this._header = null\n this._stream = null\n this._overflow = null\n this._cb = null\n this._locked = false\n this._destroyed = false\n this._pax = null\n this._paxGlobal = null\n this._gnuLongPath = null\n this._gnuLongLinkPath = null\n\n var self = this\n var b = self._buffer\n\n var oncontinue = function () {\n self._continue()\n }\n\n var onunlock = function (err) {\n self._locked = false\n if (err) return self.destroy(err)\n if (!self._stream) oncontinue()\n }\n\n var onstreamend = function () {\n self._stream = null\n var drain = overflow(self._header.size)\n if (drain) self._parse(drain, ondrain)\n else self._parse(512, onheader)\n if (!self._locked) oncontinue()\n }\n\n var ondrain = function () {\n self._buffer.consume(overflow(self._header.size))\n self._parse(512, onheader)\n oncontinue()\n }\n\n var onpaxglobalheader = function () {\n var size = self._header.size\n self._paxGlobal = headers.decodePax(b.slice(0, size))\n b.consume(size)\n onstreamend()\n }\n\n var onpaxheader = function () {\n var size = self._header.size\n self._pax = headers.decodePax(b.slice(0, size))\n if (self._paxGlobal) self._pax = xtend(self._paxGlobal, self._pax)\n b.consume(size)\n onstreamend()\n }\n\n var ongnulongpath = function () {\n var size = self._header.size\n this._gnuLongPath = headers.decodeLongPath(b.slice(0, size), opts.filenameEncoding)\n b.consume(size)\n onstreamend()\n }\n\n var ongnulonglinkpath = function () {\n var size = self._header.size\n this._gnuLongLinkPath = headers.decodeLongPath(b.slice(0, size), opts.filenameEncoding)\n b.consume(size)\n onstreamend()\n }\n\n var onheader = function () {\n var offset = self._offset\n var header\n try {\n header = self._header = headers.decode(b.slice(0, 512), opts.filenameEncoding)\n } catch (err) {\n self.emit('error', err)\n }\n b.consume(512)\n\n if (!header) {\n self._parse(512, onheader)\n oncontinue()\n return\n }\n if (header.type === 'gnu-long-path') {\n self._parse(header.size, ongnulongpath)\n oncontinue()\n return\n }\n if (header.type === 'gnu-long-link-path') {\n self._parse(header.size, ongnulonglinkpath)\n oncontinue()\n return\n }\n if (header.type === 'pax-global-header') {\n self._parse(header.size, onpaxglobalheader)\n oncontinue()\n return\n }\n if (header.type === 'pax-header') {\n self._parse(header.size, onpaxheader)\n oncontinue()\n return\n }\n\n if (self._gnuLongPath) {\n header.name = self._gnuLongPath\n self._gnuLongPath = null\n }\n\n if (self._gnuLongLinkPath) {\n header.linkname = self._gnuLongLinkPath\n self._gnuLongLinkPath = null\n }\n\n if (self._pax) {\n self._header = header = mixinPax(header, self._pax)\n self._pax = null\n }\n\n self._locked = true\n\n if (!header.size || header.type === 'directory') {\n self._parse(512, onheader)\n self.emit('entry', header, emptyStream(self, offset), onunlock)\n return\n }\n\n self._stream = new Source(self, offset)\n\n self.emit('entry', header, self._stream, onunlock)\n self._parse(header.size, onstreamend)\n oncontinue()\n }\n\n this._onheader = onheader\n this._parse(512, onheader)\n}\n\nutil.inherits(Extract, Writable)\n\nExtract.prototype.destroy = function (err) {\n if (this._destroyed) return\n this._destroyed = true\n\n if (err) this.emit('error', err)\n this.emit('close')\n if (this._stream) this._stream.emit('close')\n}\n\nExtract.prototype._parse = function (size, onparse) {\n if (this._destroyed) return\n this._offset += size\n this._missing = size\n if (onparse === this._onheader) this._partial = false\n this._onparse = onparse\n}\n\nExtract.prototype._continue = function () {\n if (this._destroyed) return\n var cb = this._cb\n this._cb = noop\n if (this._overflow) this._write(this._overflow, undefined, cb)\n else cb()\n}\n\nExtract.prototype._write = function (data, enc, cb) {\n if (this._destroyed) return\n\n var s = this._stream\n var b = this._buffer\n var missing = this._missing\n if (data.length) this._partial = true\n\n // we do not reach end-of-chunk now. just forward it\n\n if (data.length < missing) {\n this._missing -= data.length\n this._overflow = null\n if (s) return s.write(data, cb)\n b.append(data)\n return cb()\n }\n\n // end-of-chunk. the parser should call cb.\n\n this._cb = cb\n this._missing = 0\n\n var overflow = null\n if (data.length > missing) {\n overflow = data.slice(missing)\n data = data.slice(0, missing)\n }\n\n if (s) s.end(data)\n else b.append(data)\n\n this._overflow = overflow\n this._onparse()\n}\n\nExtract.prototype._final = function (cb) {\n if (this._partial) return this.destroy(new Error('Unexpected end of data'))\n cb()\n}\n\nmodule.exports = Extract\n",
|
|
325
|
+
"module.exports = require('fs').constants || require('constants')\n",
|
|
326
|
+
"// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n",
|
|
327
|
+
"var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n",
|
|
328
|
+
"var once = require('once');\n\nvar noop = function() {};\n\nvar qnt = global.Bare ? queueMicrotask : process.nextTick.bind(process);\n\nvar isRequest = function(stream) {\n\treturn stream.setHeader && typeof stream.abort === 'function';\n};\n\nvar isChildProcess = function(stream) {\n\treturn stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3\n};\n\nvar eos = function(stream, opts, callback) {\n\tif (typeof opts === 'function') return eos(stream, null, opts);\n\tif (!opts) opts = {};\n\n\tcallback = once(callback || noop);\n\n\tvar ws = stream._writableState;\n\tvar rs = stream._readableState;\n\tvar readable = opts.readable || (opts.readable !== false && stream.readable);\n\tvar writable = opts.writable || (opts.writable !== false && stream.writable);\n\tvar cancelled = false;\n\n\tvar onlegacyfinish = function() {\n\t\tif (!stream.writable) onfinish();\n\t};\n\n\tvar onfinish = function() {\n\t\twritable = false;\n\t\tif (!readable) callback.call(stream);\n\t};\n\n\tvar onend = function() {\n\t\treadable = false;\n\t\tif (!writable) callback.call(stream);\n\t};\n\n\tvar onexit = function(exitCode) {\n\t\tcallback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);\n\t};\n\n\tvar onerror = function(err) {\n\t\tcallback.call(stream, err);\n\t};\n\n\tvar onclose = function() {\n\t\tqnt(onclosenexttick);\n\t};\n\n\tvar onclosenexttick = function() {\n\t\tif (cancelled) return;\n\t\tif (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close'));\n\t\tif (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close'));\n\t};\n\n\tvar onrequest = function() {\n\t\tstream.req.on('finish', onfinish);\n\t};\n\n\tif (isRequest(stream)) {\n\t\tstream.on('complete', onfinish);\n\t\tstream.on('abort', onclose);\n\t\tif (stream.req) onrequest();\n\t\telse stream.on('request', onrequest);\n\t} else if (writable && !ws) { // legacy streams\n\t\tstream.on('end', onlegacyfinish);\n\t\tstream.on('close', onlegacyfinish);\n\t}\n\n\tif (isChildProcess(stream)) stream.on('exit', onexit);\n\n\tstream.on('end', onend);\n\tstream.on('finish', onfinish);\n\tif (opts.error !== false) stream.on('error', onerror);\n\tstream.on('close', onclose);\n\n\treturn function() {\n\t\tcancelled = true;\n\t\tstream.removeListener('complete', onfinish);\n\t\tstream.removeListener('abort', onclose);\n\t\tstream.removeListener('request', onrequest);\n\t\tif (stream.req) stream.req.removeListener('finish', onfinish);\n\t\tstream.removeListener('end', onlegacyfinish);\n\t\tstream.removeListener('close', onlegacyfinish);\n\t\tstream.removeListener('finish', onfinish);\n\t\tstream.removeListener('exit', onexit);\n\t\tstream.removeListener('end', onend);\n\t\tstream.removeListener('error', onerror);\n\t\tstream.removeListener('close', onclose);\n\t};\n};\n\nmodule.exports = eos;\n",
|
|
329
|
+
"var constants = require('fs-constants')\nvar eos = require('end-of-stream')\nvar util = require('util')\nvar alloc = require('buffer-alloc')\nvar toBuffer = require('to-buffer')\n\nvar Readable = require('readable-stream').Readable\nvar Writable = require('readable-stream').Writable\nvar StringDecoder = require('string_decoder').StringDecoder\n\nvar headers = require('./headers')\n\nvar DMODE = parseInt('755', 8)\nvar FMODE = parseInt('644', 8)\n\nvar END_OF_TAR = alloc(1024)\n\nvar noop = function () {}\n\nvar overflow = function (self, size) {\n size &= 511\n if (size) self.push(END_OF_TAR.slice(0, 512 - size))\n}\n\nfunction modeToType (mode) {\n switch (mode & constants.S_IFMT) {\n case constants.S_IFBLK: return 'block-device'\n case constants.S_IFCHR: return 'character-device'\n case constants.S_IFDIR: return 'directory'\n case constants.S_IFIFO: return 'fifo'\n case constants.S_IFLNK: return 'symlink'\n }\n\n return 'file'\n}\n\nvar Sink = function (to) {\n Writable.call(this)\n this.written = 0\n this._to = to\n this._destroyed = false\n}\n\nutil.inherits(Sink, Writable)\n\nSink.prototype._write = function (data, enc, cb) {\n this.written += data.length\n if (this._to.push(data)) return cb()\n this._to._drain = cb\n}\n\nSink.prototype.destroy = function () {\n if (this._destroyed) return\n this._destroyed = true\n this.emit('close')\n}\n\nvar LinkSink = function () {\n Writable.call(this)\n this.linkname = ''\n this._decoder = new StringDecoder('utf-8')\n this._destroyed = false\n}\n\nutil.inherits(LinkSink, Writable)\n\nLinkSink.prototype._write = function (data, enc, cb) {\n this.linkname += this._decoder.write(data)\n cb()\n}\n\nLinkSink.prototype.destroy = function () {\n if (this._destroyed) return\n this._destroyed = true\n this.emit('close')\n}\n\nvar Void = function () {\n Writable.call(this)\n this._destroyed = false\n}\n\nutil.inherits(Void, Writable)\n\nVoid.prototype._write = function (data, enc, cb) {\n cb(new Error('No body allowed for this entry'))\n}\n\nVoid.prototype.destroy = function () {\n if (this._destroyed) return\n this._destroyed = true\n this.emit('close')\n}\n\nvar Pack = function (opts) {\n if (!(this instanceof Pack)) return new Pack(opts)\n Readable.call(this, opts)\n\n this._drain = noop\n this._finalized = false\n this._finalizing = false\n this._destroyed = false\n this._stream = null\n}\n\nutil.inherits(Pack, Readable)\n\nPack.prototype.entry = function (header, buffer, callback) {\n if (this._stream) throw new Error('already piping an entry')\n if (this._finalized || this._destroyed) return\n\n if (typeof buffer === 'function') {\n callback = buffer\n buffer = null\n }\n\n if (!callback) callback = noop\n\n var self = this\n\n if (!header.size || header.type === 'symlink') header.size = 0\n if (!header.type) header.type = modeToType(header.mode)\n if (!header.mode) header.mode = header.type === 'directory' ? DMODE : FMODE\n if (!header.uid) header.uid = 0\n if (!header.gid) header.gid = 0\n if (!header.mtime) header.mtime = new Date()\n\n if (typeof buffer === 'string') buffer = toBuffer(buffer)\n if (Buffer.isBuffer(buffer)) {\n header.size = buffer.length\n this._encode(header)\n this.push(buffer)\n overflow(self, header.size)\n process.nextTick(callback)\n return new Void()\n }\n\n if (header.type === 'symlink' && !header.linkname) {\n var linkSink = new LinkSink()\n eos(linkSink, function (err) {\n if (err) { // stream was closed\n self.destroy()\n return callback(err)\n }\n\n header.linkname = linkSink.linkname\n self._encode(header)\n callback()\n })\n\n return linkSink\n }\n\n this._encode(header)\n\n if (header.type !== 'file' && header.type !== 'contiguous-file') {\n process.nextTick(callback)\n return new Void()\n }\n\n var sink = new Sink(this)\n\n this._stream = sink\n\n eos(sink, function (err) {\n self._stream = null\n\n if (err) { // stream was closed\n self.destroy()\n return callback(err)\n }\n\n if (sink.written !== header.size) { // corrupting tar\n self.destroy()\n return callback(new Error('size mismatch'))\n }\n\n overflow(self, header.size)\n if (self._finalizing) self.finalize()\n callback()\n })\n\n return sink\n}\n\nPack.prototype.finalize = function () {\n if (this._stream) {\n this._finalizing = true\n return\n }\n\n if (this._finalized) return\n this._finalized = true\n this.push(END_OF_TAR)\n this.push(null)\n}\n\nPack.prototype.destroy = function (err) {\n if (this._destroyed) return\n this._destroyed = true\n\n if (err) this.emit('error', err)\n this.emit('close')\n if (this._stream && this._stream.destroy) this._stream.destroy()\n}\n\nPack.prototype._encode = function (header) {\n if (!header.pax) {\n var buf = headers.encode(header)\n if (buf) {\n this.push(buf)\n return\n }\n }\n this._encodePax(header)\n}\n\nPack.prototype._encodePax = function (header) {\n var paxHeader = headers.encodePax({\n name: header.name,\n linkname: header.linkname,\n pax: header.pax\n })\n\n var newHeader = {\n name: 'PaxHeader',\n mode: header.mode,\n uid: header.uid,\n gid: header.gid,\n size: paxHeader.length,\n mtime: header.mtime,\n type: 'pax-header',\n linkname: header.linkname && 'PaxHeader',\n uname: header.uname,\n gname: header.gname,\n devmajor: header.devmajor,\n devminor: header.devminor\n }\n\n this.push(headers.encode(newHeader))\n this.push(paxHeader)\n overflow(this, paxHeader.length)\n\n newHeader.size = header.size\n newHeader.type = header.type\n this.push(headers.encode(newHeader))\n}\n\nPack.prototype._read = function (n) {\n var drain = this._drain\n this._drain = noop\n drain()\n}\n\nmodule.exports = Pack\n",
|
|
330
|
+
"exports.extract = require('./extract')\nexports.pack = require('./pack')\n",
|
|
331
|
+
"'use strict';\n\nconst stream = require('stream');\n\nclass BaseStream extends stream.Readable {\n addEntry(/* entry, opts */) {\n throw new Error('.addEntry not implemented in sub class!');\n }\n\n _read() {}\n\n emit(event, data) {\n if (event === 'error') {\n const error = data;\n if (error.name === 'Error') {\n error.name = this.constructor.name + 'Error';\n }\n }\n super.emit(event, data);\n }\n}\n\nmodule.exports = BaseStream;\n",
|
|
332
|
+
"'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst stream = require('stream');\nconst tar = require('tar-stream');\nconst utils = require('../utils');\nconst BaseStream = require('../base_stream');\n\nclass TarStream extends BaseStream {\n constructor(opts) {\n super(opts);\n\n this._waitingEntries = [];\n this._processing = false;\n this._init(opts);\n }\n\n _init() {\n const pack = this._pack = tar.pack();\n pack.on('end', () => this.push(null));\n pack.on('data', chunk => this.push(chunk));\n pack.on('error', err => this.emit('error', err));\n }\n\n addEntry(entry, opts) {\n if (this._processing) {\n return this._waitingEntries.push([ entry, opts ]);\n }\n\n opts = opts || {};\n this._processing = true;\n\n const entryType = utils.entryType(entry);\n if (!entryType) return; // TODO\n\n if (entryType === 'fileOrDir') {\n this._addFileOrDirEntry(entry, opts);\n } else if (entryType === 'buffer') {\n this._addBufferEntry(entry, opts);\n } else { // stream\n this._addStreamEntry(entry, opts);\n }\n\n }\n\n _addFileOrDirEntry(entry, opts) {\n fs.stat(entry, (err, stat) => {\n if (err) return this.emit('error', err);\n if (stat.isDirectory()) return this._addDirEntry(entry, opts);\n if (stat.isFile()) return this._addFileEntry(entry, opts);\n\n const illigalEntryError = new Error('Type is not supported, must be a file path, directory path, file buffer, or a readable stream');\n illigalEntryError.name = 'IlligalEntryError';\n this.emit('error', illigalEntryError);\n });\n }\n\n _addFileEntry(entry, opts) {\n // stat file to get file size\n fs.stat(entry, (err, stat) => {\n if (err) return this.emit('error', err);\n const entryStream = this._pack.entry({ name: opts.relativePath || path.basename(entry), size: stat.size, mode: stat.mode & 0o777 }, this._onEntryFinish.bind(this));\n const stream = fs.createReadStream(entry, opts.fs);\n stream.on('error', err => this.emit('error', err));\n stream.pipe(entryStream);\n });\n }\n\n _addDirEntry(entry, opts) {\n fs.readdir(entry, (err, files) => {\n if (err) return this.emit('error', err);\n\n const relativePath = opts.relativePath || '';\n files.forEach(fileOrDir => {\n const newOpts = utils.clone(opts);\n if (opts.ignoreBase) {\n newOpts.relativePath = path.posix.join(relativePath, fileOrDir);\n } else {\n newOpts.relativePath = path.posix.join(relativePath, path.basename(entry), fileOrDir);\n }\n newOpts.ignoreBase = true;\n this.addEntry(path.posix.join(entry, fileOrDir), newOpts);\n });\n this._onEntryFinish();\n });\n }\n\n _addBufferEntry(entry, opts) {\n if (!opts.relativePath) return this.emit('error', 'opts.relativePath is required if entry is a buffer');\n this._pack.entry({ name: opts.relativePath }, entry, this._onEntryFinish.bind(this));\n }\n\n _addStreamEntry(entry, opts) {\n entry.on('error', err => this.emit('error', err));\n\n if (!opts.relativePath) return this.emit('error', new Error('opts.relativePath is required'));\n\n if (opts.size) {\n const entryStream = this._pack.entry({ name: opts.relativePath, size: opts.size }, this._onEntryFinish.bind(this));\n entry.pipe(entryStream);\n } else {\n if (!opts.suppressSizeWarning) {\n console.warn('You should specify the size of streamming data by opts.size to prevent all streaming data from loading into memory. If you are sure about memory cost, pass opts.suppressSizeWarning: true to suppress this warning');\n }\n const buf = [];\n const collectStream = new stream.Writable({\n write(chunk, _, callback) {\n buf.push(chunk);\n callback();\n },\n });\n collectStream.on('error', err => this.emit('error', err));\n collectStream.on('finish', () => {\n this._pack.entry({ name: opts.relativePath }, Buffer.concat(buf), this._onEntryFinish.bind(this));\n });\n entry.pipe(collectStream);\n }\n }\n\n _read() {}\n\n _onEntryFinish(err) {\n if (err) return this.emit('error', err);\n\n this._processing = false;\n const waitingEntry = this._waitingEntries.shift();\n if (waitingEntry) {\n this.addEntry.apply(this, waitingEntry);\n } else {\n this._finalize();\n }\n }\n\n _finalize() {\n this._pack.finalize();\n }\n}\n\nmodule.exports = TarStream;\n",
|
|
333
|
+
"'use strict';\n\nconst path = require('path');\nconst yazl = require('yazl');\nconst TarStream = require('../tar/stream');\n\nclass ZipStream extends TarStream {\n _init() {\n const zipfile = this._zipfile = new yazl.ZipFile();\n const stream = zipfile.outputStream;\n stream.on('end', () => this.push(null));\n stream.on('data', chunk => this.push(chunk));\n stream.on('error', err => this.emit('error', err));\n }\n\n _addFileEntry(entry, opts) {\n this._zipfile.addFile(entry, opts.relativePath || path.basename(entry), opts);\n this._onEntryFinish();\n }\n\n _addBufferEntry(entry, opts) {\n if (!opts.relativePath) return this.emit('error', new Error('opts.relativePath is required if entry is a buffer'));\n this._zipfile.addBuffer(entry, opts.relativePath, opts);\n this._onEntryFinish();\n }\n\n _addStreamEntry(entry, opts) {\n if (!opts.relativePath) return this.emit('error', new Error('opts.relativePath is required if entry is a stream'));\n\n entry.on('error', err => this.emit('error', err));\n this._zipfile.addReadStream(entry, opts.relativePath, opts);\n this._onEntryFinish();\n }\n\n _finalize() {\n this._zipfile.end();\n }\n}\n\nmodule.exports = ZipStream;\n",
|
|
334
|
+
"'use strict';\n\nfunction ready(flagOrFunction) {\n this._ready = !!this._ready;\n this._readyCallbacks = this._readyCallbacks || [];\n\n if (arguments.length === 0) {\n // return a promise\n // support `this.ready().then(onready);` and `yield this.ready()`;\n return new Promise(function (resolve) {\n if (this._ready) {\n return resolve();\n }\n this._readyCallbacks.push(resolve);\n }.bind(this));\n } else if (typeof flagOrFunction === 'function') {\n this._readyCallbacks.push(flagOrFunction);\n } else {\n this._ready = !!flagOrFunction;\n }\n\n if (this._ready) {\n this._readyCallbacks.splice(0, Infinity).forEach(function(callback) {\n process.nextTick(callback);\n });\n }\n}\n\nfunction mixin(object) {\n object.ready = ready;\n}\n\nmodule.exports = mixin;\nmodule.exports.mixin = mixin;\n",
|
|
335
|
+
"'use strict';\n\nconst path = require('path');\nconst yazl = require('yazl');\nconst assert = require('assert');\nconst stream = require('stream');\nconst utils = require('../utils');\nconst ready = require('get-ready');\n\nclass ZipFileStream extends stream.Transform {\n constructor(opts) {\n super(opts);\n\n const sourceType = utils.sourceType(opts.source);\n\n const zipfile = new yazl.ZipFile();\n const zipStream = zipfile.outputStream;\n zipStream.on('data', data => this.push(data));\n zipStream.on('end', () => this.ready(true));\n zipfile.on('error', err => this.emit('error', err));\n\n if (sourceType !== 'file') {\n assert(opts.relativePath, 'opts.relativePath is required when compressing a buffer, or a stream');\n }\n\n if (sourceType) {\n this.end();\n }\n\n if (sourceType === 'file') {\n zipfile.addFile(opts.source, opts.relativePath || path.basename(opts.source), opts.yazl);\n } else if (sourceType === 'buffer') {\n zipfile.addBuffer(opts.source, opts.relativePath, opts.yazl);\n } else if (sourceType === 'stream') {\n zipfile.addReadStream(opts.source, opts.relativePath, opts.yazl);\n } else { // undefined\n const passThrough = this._passThrough = new stream.PassThrough();\n this.on('finish', () => passThrough.end());\n zipfile.addReadStream(passThrough, opts.relativePath, opts.yazl);\n }\n zipfile.end(opts.yazl);\n }\n\n _transform(chunk, encoding, callback) {\n if (this._passThrough) {\n this._passThrough.write(chunk, encoding, callback);\n }\n }\n\n _flush(callback) {\n this.ready(callback);\n }\n}\n\nready.mixin(ZipFileStream.prototype);\nmodule.exports = ZipFileStream;\n",
|
|
336
|
+
"module.exports = Pend;\n\nfunction Pend() {\n this.pending = 0;\n this.max = Infinity;\n this.listeners = [];\n this.waiting = [];\n this.error = null;\n}\n\nPend.prototype.go = function(fn) {\n if (this.pending < this.max) {\n pendGo(this, fn);\n } else {\n this.waiting.push(fn);\n }\n};\n\nPend.prototype.wait = function(cb) {\n if (this.pending === 0) {\n cb(this.error);\n } else {\n this.listeners.push(cb);\n }\n};\n\nPend.prototype.hold = function() {\n return pendHold(this);\n};\n\nfunction pendHold(self) {\n self.pending += 1;\n var called = false;\n return onCb;\n function onCb(err) {\n if (called) throw new Error(\"callback called twice\");\n called = true;\n self.error = self.error || err;\n self.pending -= 1;\n if (self.waiting.length > 0 && self.pending < self.max) {\n pendGo(self, self.waiting.shift());\n } else if (self.pending === 0) {\n var listeners = self.listeners;\n self.listeners = [];\n listeners.forEach(cbListener);\n }\n }\n function cbListener(listener) {\n listener(self.error);\n }\n}\n\nfunction pendGo(self, fn) {\n fn(pendHold(self));\n}\n",
|
|
337
|
+
"const fs = require('fs');\nconst { Readable, Writable, PassThrough } = require('stream');\nconst Pend = require('pend');\nconst { EventEmitter } = require('events');\n\nclass FdSlicer extends EventEmitter {\n constructor(fd, options = {}) {\n super();\n\n this.fd = fd;\n this.pend = new Pend();\n this.pend.max = 1;\n this.refCount = 0;\n this.autoClose = !!options.autoClose;\n }\n\n read(buffer, offset, length, position, callback) {\n this.pend.go(cb => {\n fs.read(this.fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n cb();\n callback(err, bytesRead, buffer);\n });\n });\n }\n\n write(buffer, offset, length, position, callback) {\n this.pend.go(cb => {\n fs.write(this.fd, buffer, offset, length, position, (err, written, buffer) => {\n cb();\n callback(err, written, buffer);\n });\n });\n }\n\n createReadStream(options) {\n return new ReadStream(this, options);\n }\n\n createWriteStream(options) {\n return new WriteStream(this, options);\n }\n\n ref() {\n this.refCount += 1;\n }\n\n unref() {\n this.refCount -= 1;\n\n if (this.refCount > 0) return;\n if (this.refCount < 0) throw new Error(\"invalid unref\");\n\n if (this.autoClose) {\n fs.close(this.fd, err => {\n if (err) {\n this.emit('error', err);\n } else {\n this.emit('close');\n }\n });\n }\n }\n}\n\nclass ReadStream extends Readable {\n constructor(context, options = {}) {\n super(options);\n\n this.context = context;\n this.context.ref();\n\n this.start = options.start || 0;\n this.endOffset = options.end;\n this.pos = this.start;\n this.destroyed = false;\n }\n\n _read(n) {\n if (this.destroyed) return;\n\n let toRead = Math.min(this._readableState.highWaterMark, n);\n if (this.endOffset != null) {\n toRead = Math.min(toRead, this.endOffset - this.pos);\n }\n if (toRead <= 0) {\n this.destroyed = true;\n this.push(null);\n this.context.unref();\n return;\n }\n this.context.pend.go(cb => {\n if (this.destroyed) return cb();\n const buffer = Buffer.alloc(toRead);\n fs.read(this.context.fd, buffer, 0, toRead, this.pos, (err, bytesRead) => {\n if (err) {\n this.destroy(err);\n } else if (bytesRead === 0) {\n this.destroyed = true;\n this.push(null);\n this.context.unref();\n } else {\n this.pos += bytesRead;\n this.push(buffer.slice(0, bytesRead));\n }\n cb();\n });\n });\n }\n\n destroy(err) {\n if (this.destroyed) return;\n err = err || new Error(\"stream destroyed\");\n this.destroyed = true;\n this.emit('error', err);\n this.context.unref();\n }\n}\n\nclass WriteStream extends Writable {\n constructor(context, options = {}) {\n super(options);\n\n this.context = context;\n this.context.ref();\n\n this.start = options.start || 0;\n this.endOffset = (options.end == null) ? Infinity : +options.end;\n this.bytesWritten = 0;\n this.pos = this.start;\n this.destroyed = false;\n\n this.on('finish', this.destroy.bind(this));\n }\n\n _write(buffer, _encoding, callback) {\n if (this.destroyed) return;\n\n if (this.pos + buffer.length > this.endOffset) {\n const err = new Error(\"maximum file length exceeded\");\n err.code = 'ETOOBIG';\n this.destroy();\n callback(err);\n return;\n }\n this.context.pend.go(cb => {\n if (this.destroyed) return cb();\n fs.write(this.context.fd, buffer, 0, buffer.length, this.pos, (err, bytes) => {\n if (err) {\n this.destroy();\n cb();\n callback(err);\n } else {\n this.bytesWritten += bytes;\n this.pos += bytes;\n this.emit('progress');\n cb();\n callback();\n }\n });\n });\n }\n\n destroy() {\n if (this.destroyed) return;\n this.destroyed = true;\n this.context.unref();\n }\n}\n\nconst { MAX_SAFE_INTEGER } = Number;\n\nclass BufferSlicer extends EventEmitter {\n constructor(buffer, options) {\n super();\n\n options = options || {};\n this.refCount = 0;\n this.buffer = buffer;\n this.maxChunkSize = options.maxChunkSize || MAX_SAFE_INTEGER;\n }\n\n read(buffer, offset, length, position, callback) {\n const end = position + length;\n const delta = end - this.buffer.length;\n const written = (delta > 0) ? delta : length;\n this.buffer.copy(buffer, offset, position, end);\n setImmediate(() => {\n callback(null, written);\n });\n }\n\n write(buffer, offset, length, position, callback) {\n buffer.copy(this.buffer, position, offset, offset + length);\n setImmediate(() => {\n callback(null, length, buffer);\n });\n }\n\n createReadStream(options = {}) {\n const readStream = new PassThrough(options);\n readStream.destroyed = false;\n readStream.start = options.start || 0;\n readStream.endOffset = options.end;\n // by the time this function returns, we'll be done.\n readStream.pos = readStream.endOffset || this.buffer.length;\n\n // respect the maxChunkSize option to slice up the chunk into smaller pieces.\n const entireSlice = this.buffer.slice(readStream.start, readStream.pos);\n let offset = 0;\n while (true) {\n const nextOffset = offset + this.maxChunkSize;\n if (nextOffset >= entireSlice.length) {\n // last chunk\n if (offset < entireSlice.length) {\n readStream.write(entireSlice.slice(offset, entireSlice.length));\n }\n break;\n }\n readStream.write(entireSlice.slice(offset, nextOffset));\n offset = nextOffset;\n }\n\n readStream.end();\n readStream.destroy = () => {\n readStream.destroyed = true;\n };\n return readStream;\n }\n\n createWriteStream(options) {\n const bufferSlicer = this;\n options = options || {};\n const writeStream = new Writable(options);\n writeStream.start = options.start || 0;\n writeStream.endOffset = (options.end == null) ? this.buffer.length : +options.end;\n writeStream.bytesWritten = 0;\n writeStream.pos = writeStream.start;\n writeStream.destroyed = false;\n writeStream._write = (buffer, encoding, callback) => {\n if (writeStream.destroyed) return;\n\n const end = writeStream.pos + buffer.length;\n if (end > writeStream.endOffset) {\n const err = new Error(\"maximum file length exceeded\");\n err.code = 'ETOOBIG';\n writeStream.destroyed = true;\n callback(err);\n return;\n }\n buffer.copy(bufferSlicer.buffer, writeStream.pos, 0, buffer.length);\n\n writeStream.bytesWritten += buffer.length;\n writeStream.pos = end;\n writeStream.emit('progress');\n callback();\n };\n writeStream.destroy = () => {\n writeStream.destroyed = true;\n };\n return writeStream;\n }\n\n ref() {\n this.refCount += 1;\n }\n\n unref() {\n this.refCount -= 1;\n\n if (this.refCount < 0) {\n throw new Error(\"invalid unref\");\n }\n }\n}\n\nfunction createFromBuffer(buffer, options) {\n return new BufferSlicer(buffer, options);\n}\n\nfunction createFromFd(fd, options) {\n return new FdSlicer(fd, options);\n}\n\nexports.createFromBuffer = createFromBuffer;\nexports.createFromFd = createFromFd;\nexports.BufferSlicer = BufferSlicer;\nexports.FdSlicer = FdSlicer;\n",
|
|
338
|
+
"var fs = require(\"fs\");\nvar zlib = require(\"zlib\");\nvar fd_slicer = require(\"fd-slicer2\");\nvar crc32 = require(\"buffer-crc32\");\nvar util = require(\"util\");\nvar EventEmitter = require(\"events\").EventEmitter;\nvar Transform = require(\"stream\").Transform;\nvar PassThrough = require(\"stream\").PassThrough;\nvar Writable = require(\"stream\").Writable;\n\nexports.open = open;\nexports.fromFd = fromFd;\nexports.fromBuffer = fromBuffer;\nexports.fromRandomAccessReader = fromRandomAccessReader;\nexports.dosDateTimeToDate = dosDateTimeToDate;\nexports.validateFileName = validateFileName;\nexports.ZipFile = ZipFile;\nexports.Entry = Entry;\nexports.RandomAccessReader = RandomAccessReader;\n\nfunction open(path, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = null;\n }\n if (options == null) options = {};\n if (options.autoClose == null) options.autoClose = true;\n if (options.lazyEntries == null) options.lazyEntries = false;\n if (options.decodeStrings == null) options.decodeStrings = true;\n if (options.validateEntrySizes == null) options.validateEntrySizes = true;\n if (options.strictFileNames == null) options.strictFileNames = false;\n if (callback == null) callback = defaultCallback;\n fs.open(path, \"r\", function(err, fd) {\n if (err) return callback(err);\n fromFd(fd, options, function(err, zipfile) {\n if (err) fs.close(fd, defaultCallback);\n callback(err, zipfile);\n });\n });\n}\n\nfunction fromFd(fd, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = null;\n }\n if (options == null) options = {};\n if (options.autoClose == null) options.autoClose = false;\n if (options.lazyEntries == null) options.lazyEntries = false;\n if (options.decodeStrings == null) options.decodeStrings = true;\n if (options.validateEntrySizes == null) options.validateEntrySizes = true;\n if (options.strictFileNames == null) options.strictFileNames = false;\n if (callback == null) callback = defaultCallback;\n fs.fstat(fd, function(err, stats) {\n if (err) return callback(err);\n var reader = fd_slicer.createFromFd(fd, {autoClose: true});\n fromRandomAccessReader(reader, stats.size, options, callback);\n });\n}\n\nfunction fromBuffer(buffer, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = null;\n }\n if (options == null) options = {};\n options.autoClose = false;\n if (options.lazyEntries == null) options.lazyEntries = false;\n if (options.decodeStrings == null) options.decodeStrings = true;\n if (options.validateEntrySizes == null) options.validateEntrySizes = true;\n if (options.strictFileNames == null) options.strictFileNames = false;\n // limit the max chunk size. see https://github.com/thejoshwolfe/yauzl/issues/87\n var reader = fd_slicer.createFromBuffer(buffer, {maxChunkSize: 0x10000});\n fromRandomAccessReader(reader, buffer.length, options, callback);\n}\n\nfunction fromRandomAccessReader(reader, totalSize, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = null;\n }\n if (options == null) options = {};\n if (options.autoClose == null) options.autoClose = true;\n if (options.lazyEntries == null) options.lazyEntries = false;\n if (options.decodeStrings == null) options.decodeStrings = true;\n var decodeStrings = !!options.decodeStrings;\n if (options.validateEntrySizes == null) options.validateEntrySizes = true;\n if (options.strictFileNames == null) options.strictFileNames = false;\n if (callback == null) callback = defaultCallback;\n if (typeof totalSize !== \"number\") throw new Error(\"expected totalSize parameter to be a number\");\n if (totalSize > Number.MAX_SAFE_INTEGER) {\n throw new Error(\"zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double.\");\n }\n\n // the matching unref() call is in zipfile.close()\n reader.ref();\n\n // eocdr means End of Central Directory Record.\n // search backwards for the eocdr signature.\n // the last field of the eocdr is a variable-length comment.\n // the comment size is encoded in a 2-byte field in the eocdr, which we can't find without trudging backwards through the comment to find it.\n // as a consequence of this design decision, it's possible to have ambiguous zip file metadata if a coherent eocdr was in the comment.\n // we search backwards for a eocdr signature, and hope that whoever made the zip file was smart enough to forbid the eocdr signature in the comment.\n var eocdrWithoutCommentSize = 22;\n var maxCommentSize = 0xffff; // 2-byte size\n var bufferSize = Math.min(eocdrWithoutCommentSize + maxCommentSize, totalSize);\n var buffer = newBuffer(bufferSize);\n var bufferReadStart = totalSize - buffer.length;\n readAndAssertNoEof(reader, buffer, 0, bufferSize, bufferReadStart, function(err) {\n if (err) return callback(err);\n for (var i = bufferSize - eocdrWithoutCommentSize; i >= 0; i -= 1) {\n if (buffer.readUInt32LE(i) !== 0x06054b50) continue;\n // found eocdr\n var eocdrBuffer = buffer.slice(i);\n\n // 0 - End of central directory signature = 0x06054b50\n // 4 - Number of this disk\n var diskNumber = eocdrBuffer.readUInt16LE(4);\n if (diskNumber !== 0) {\n return callback(new Error(\"multi-disk zip files are not supported: found disk number: \" + diskNumber));\n }\n // 6 - Disk where central directory starts\n // 8 - Number of central directory records on this disk\n // 10 - Total number of central directory records\n var entryCount = eocdrBuffer.readUInt16LE(10);\n // 12 - Size of central directory (bytes)\n // 16 - Offset of start of central directory, relative to start of archive\n var centralDirectoryOffset = eocdrBuffer.readUInt32LE(16);\n // 20 - Comment length\n var commentLength = eocdrBuffer.readUInt16LE(20);\n var expectedCommentLength = eocdrBuffer.length - eocdrWithoutCommentSize;\n if (commentLength !== expectedCommentLength) {\n return callback(new Error(\"invalid comment length. expected: \" + expectedCommentLength + \". found: \" + commentLength));\n }\n // 22 - Comment\n // the encoding is always cp437.\n var comment = decodeStrings ? decodeBuffer(eocdrBuffer, 22, eocdrBuffer.length, false)\n : eocdrBuffer.slice(22);\n\n if (!(entryCount === 0xffff || centralDirectoryOffset === 0xffffffff)) {\n return callback(null, new ZipFile(reader, centralDirectoryOffset, totalSize, entryCount, comment, options.autoClose, options.lazyEntries, decodeStrings, options.validateEntrySizes, options.strictFileNames));\n }\n\n // ZIP64 format\n\n // ZIP64 Zip64 end of central directory locator\n var zip64EocdlBuffer = newBuffer(20);\n var zip64EocdlOffset = bufferReadStart + i - zip64EocdlBuffer.length;\n readAndAssertNoEof(reader, zip64EocdlBuffer, 0, zip64EocdlBuffer.length, zip64EocdlOffset, function(err) {\n if (err) return callback(err);\n\n // 0 - zip64 end of central dir locator signature = 0x07064b50\n if (zip64EocdlBuffer.readUInt32LE(0) !== 0x07064b50) {\n return callback(new Error(\"invalid zip64 end of central directory locator signature\"));\n }\n // 4 - number of the disk with the start of the zip64 end of central directory\n // 8 - relative offset of the zip64 end of central directory record\n var zip64EocdrOffset = readUInt64LE(zip64EocdlBuffer, 8);\n // 16 - total number of disks\n\n // ZIP64 end of central directory record\n var zip64EocdrBuffer = newBuffer(56);\n readAndAssertNoEof(reader, zip64EocdrBuffer, 0, zip64EocdrBuffer.length, zip64EocdrOffset, function(err) {\n if (err) return callback(err);\n\n // 0 - zip64 end of central dir signature 4 bytes (0x06064b50)\n if (zip64EocdrBuffer.readUInt32LE(0) !== 0x06064b50) {\n return callback(new Error(\"invalid zip64 end of central directory record signature\"));\n }\n // 4 - size of zip64 end of central directory record 8 bytes\n // 12 - version made by 2 bytes\n // 14 - version needed to extract 2 bytes\n // 16 - number of this disk 4 bytes\n // 20 - number of the disk with the start of the central directory 4 bytes\n // 24 - total number of entries in the central directory on this disk 8 bytes\n // 32 - total number of entries in the central directory 8 bytes\n entryCount = readUInt64LE(zip64EocdrBuffer, 32);\n // 40 - size of the central directory 8 bytes\n // 48 - offset of start of central directory with respect to the starting disk number 8 bytes\n centralDirectoryOffset = readUInt64LE(zip64EocdrBuffer, 48);\n // 56 - zip64 extensible data sector (variable size)\n return callback(null, new ZipFile(reader, centralDirectoryOffset, totalSize, entryCount, comment, options.autoClose, options.lazyEntries, decodeStrings, options.validateEntrySizes, options.strictFileNames));\n });\n });\n return;\n }\n callback(new Error(\"end of central directory record signature not found\"));\n });\n}\n\nutil.inherits(ZipFile, EventEmitter);\nfunction ZipFile(reader, centralDirectoryOffset, fileSize, entryCount, comment, autoClose, lazyEntries, decodeStrings, validateEntrySizes, strictFileNames) {\n var self = this;\n EventEmitter.call(self);\n self.reader = reader;\n // forward close events\n self.reader.on(\"error\", function(err) {\n // error closing the fd\n emitError(self, err);\n });\n self.reader.once(\"close\", function() {\n self.emit(\"close\");\n });\n self.readEntryCursor = centralDirectoryOffset;\n self.fileSize = fileSize;\n self.entryCount = entryCount;\n self.comment = comment;\n self.entriesRead = 0;\n self.autoClose = !!autoClose;\n self.lazyEntries = !!lazyEntries;\n self.decodeStrings = !!decodeStrings;\n self.validateEntrySizes = !!validateEntrySizes;\n self.strictFileNames = !!strictFileNames;\n self.isOpen = true;\n self.emittedError = false;\n\n if (!self.lazyEntries) self._readEntry();\n}\nZipFile.prototype.close = function() {\n if (!this.isOpen) return;\n this.isOpen = false;\n this.reader.unref();\n};\n\nfunction emitErrorAndAutoClose(self, err) {\n if (self.autoClose) self.close();\n emitError(self, err);\n}\nfunction emitError(self, err) {\n if (self.emittedError) return;\n self.emittedError = true;\n self.emit(\"error\", err);\n}\n\nZipFile.prototype.readEntry = function() {\n if (!this.lazyEntries) throw new Error(\"readEntry() called without lazyEntries:true\");\n this._readEntry();\n};\nZipFile.prototype._readEntry = function() {\n var self = this;\n if (self.entryCount === self.entriesRead) {\n // done with metadata\n setImmediate(function() {\n if (self.autoClose) self.close();\n if (self.emittedError) return;\n self.emit(\"end\");\n });\n return;\n }\n if (self.emittedError) return;\n var buffer = newBuffer(46);\n readAndAssertNoEof(self.reader, buffer, 0, buffer.length, self.readEntryCursor, function(err) {\n if (err) return emitErrorAndAutoClose(self, err);\n if (self.emittedError) return;\n var entry = new Entry();\n // 0 - Central directory file header signature\n var signature = buffer.readUInt32LE(0);\n if (signature !== 0x02014b50) return emitErrorAndAutoClose(self, new Error(\"invalid central directory file header signature: 0x\" + signature.toString(16)));\n // 4 - Version made by\n entry.versionMadeBy = buffer.readUInt16LE(4);\n // 6 - Version needed to extract (minimum)\n entry.versionNeededToExtract = buffer.readUInt16LE(6);\n // 8 - General purpose bit flag\n entry.generalPurposeBitFlag = buffer.readUInt16LE(8);\n // 10 - Compression method\n entry.compressionMethod = buffer.readUInt16LE(10);\n // 12 - File last modification time\n entry.lastModFileTime = buffer.readUInt16LE(12);\n // 14 - File last modification date\n entry.lastModFileDate = buffer.readUInt16LE(14);\n // 16 - CRC-32\n entry.crc32 = buffer.readUInt32LE(16);\n // 20 - Compressed size\n entry.compressedSize = buffer.readUInt32LE(20);\n // 24 - Uncompressed size\n entry.uncompressedSize = buffer.readUInt32LE(24);\n // 28 - File name length (n)\n entry.fileNameLength = buffer.readUInt16LE(28);\n // 30 - Extra field length (m)\n entry.extraFieldLength = buffer.readUInt16LE(30);\n // 32 - File comment length (k)\n entry.fileCommentLength = buffer.readUInt16LE(32);\n // 34 - Disk number where file starts\n // 36 - Internal file attributes\n entry.internalFileAttributes = buffer.readUInt16LE(36);\n // 38 - External file attributes\n entry.externalFileAttributes = buffer.readUInt32LE(38);\n // 42 - Relative offset of local file header\n entry.relativeOffsetOfLocalHeader = buffer.readUInt32LE(42);\n\n if (entry.generalPurposeBitFlag & 0x40) return emitErrorAndAutoClose(self, new Error(\"strong encryption is not supported\"));\n\n self.readEntryCursor += 46;\n\n buffer = newBuffer(entry.fileNameLength + entry.extraFieldLength + entry.fileCommentLength);\n readAndAssertNoEof(self.reader, buffer, 0, buffer.length, self.readEntryCursor, function(err) {\n if (err) return emitErrorAndAutoClose(self, err);\n if (self.emittedError) return;\n // 46 - File name\n var isUtf8 = (entry.generalPurposeBitFlag & 0x800) !== 0;\n entry.fileName = self.decodeStrings ? decodeBuffer(buffer, 0, entry.fileNameLength, isUtf8)\n : buffer.slice(0, entry.fileNameLength);\n\n // 46+n - Extra field\n var fileCommentStart = entry.fileNameLength + entry.extraFieldLength;\n var extraFieldBuffer = buffer.slice(entry.fileNameLength, fileCommentStart);\n entry.extraFields = [];\n var i = 0;\n while (i < extraFieldBuffer.length - 3) {\n var headerId = extraFieldBuffer.readUInt16LE(i + 0);\n var dataSize = extraFieldBuffer.readUInt16LE(i + 2);\n var dataStart = i + 4;\n var dataEnd = dataStart + dataSize;\n if (dataEnd > extraFieldBuffer.length) return emitErrorAndAutoClose(self, new Error(\"extra field length exceeds extra field buffer size\"));\n var dataBuffer = newBuffer(dataSize);\n extraFieldBuffer.copy(dataBuffer, 0, dataStart, dataEnd);\n entry.extraFields.push({\n id: headerId,\n data: dataBuffer,\n });\n i = dataEnd;\n }\n\n // 46+n+m - File comment\n entry.fileComment = self.decodeStrings ? decodeBuffer(buffer, fileCommentStart, fileCommentStart + entry.fileCommentLength, isUtf8)\n : buffer.slice(fileCommentStart, fileCommentStart + entry.fileCommentLength);\n // compatibility hack for https://github.com/thejoshwolfe/yauzl/issues/47\n entry.comment = entry.fileComment;\n\n self.readEntryCursor += buffer.length;\n self.entriesRead += 1;\n\n if (entry.uncompressedSize === 0xffffffff ||\n entry.compressedSize === 0xffffffff ||\n entry.relativeOffsetOfLocalHeader === 0xffffffff) {\n // ZIP64 format\n // find the Zip64 Extended Information Extra Field\n var zip64EiefBuffer = null;\n for (var i = 0; i < entry.extraFields.length; i++) {\n var extraField = entry.extraFields[i];\n if (extraField.id === 0x0001) {\n zip64EiefBuffer = extraField.data;\n break;\n }\n }\n if (zip64EiefBuffer == null) {\n return emitErrorAndAutoClose(self, new Error(\"expected zip64 extended information extra field\"));\n }\n var index = 0;\n // 0 - Original Size 8 bytes\n if (entry.uncompressedSize === 0xffffffff) {\n if (index + 8 > zip64EiefBuffer.length) {\n return emitErrorAndAutoClose(self, new Error(\"zip64 extended information extra field does not include uncompressed size\"));\n }\n entry.uncompressedSize = readUInt64LE(zip64EiefBuffer, index);\n index += 8;\n }\n // 8 - Compressed Size 8 bytes\n if (entry.compressedSize === 0xffffffff) {\n if (index + 8 > zip64EiefBuffer.length) {\n return emitErrorAndAutoClose(self, new Error(\"zip64 extended information extra field does not include compressed size\"));\n }\n entry.compressedSize = readUInt64LE(zip64EiefBuffer, index);\n index += 8;\n }\n // 16 - Relative Header Offset 8 bytes\n if (entry.relativeOffsetOfLocalHeader === 0xffffffff) {\n if (index + 8 > zip64EiefBuffer.length) {\n return emitErrorAndAutoClose(self, new Error(\"zip64 extended information extra field does not include relative header offset\"));\n }\n entry.relativeOffsetOfLocalHeader = readUInt64LE(zip64EiefBuffer, index);\n index += 8;\n }\n // 24 - Disk Start Number 4 bytes\n }\n\n // check for Info-ZIP Unicode Path Extra Field (0x7075)\n // see https://github.com/thejoshwolfe/yauzl/issues/33\n if (self.decodeStrings) {\n for (var i = 0; i < entry.extraFields.length; i++) {\n var extraField = entry.extraFields[i];\n if (extraField.id === 0x7075) {\n if (extraField.data.length < 6) {\n // too short to be meaningful\n continue;\n }\n // Version 1 byte version of this extra field, currently 1\n if (extraField.data.readUInt8(0) !== 1) {\n // > Changes may not be backward compatible so this extra\n // > field should not be used if the version is not recognized.\n continue;\n }\n // NameCRC32 4 bytes File Name Field CRC32 Checksum\n var oldNameCrc32 = extraField.data.readUInt32LE(1);\n if (crc32.unsigned(buffer.slice(0, entry.fileNameLength)) !== oldNameCrc32) {\n // > If the CRC check fails, this UTF-8 Path Extra Field should be\n // > ignored and the File Name field in the header should be used instead.\n continue;\n }\n // UnicodeName Variable UTF-8 version of the entry File Name\n entry.fileName = decodeBuffer(extraField.data, 5, extraField.data.length, true);\n break;\n }\n }\n }\n\n // validate file size\n if (self.validateEntrySizes && entry.compressionMethod === 0) {\n var expectedCompressedSize = entry.uncompressedSize;\n if (entry.isEncrypted()) {\n // traditional encryption prefixes the file data with a header\n expectedCompressedSize += 12;\n }\n if (entry.compressedSize !== expectedCompressedSize) {\n var msg = \"compressed/uncompressed size mismatch for stored file: \" + entry.compressedSize + \" != \" + entry.uncompressedSize;\n return emitErrorAndAutoClose(self, new Error(msg));\n }\n }\n\n if (self.decodeStrings) {\n if (!self.strictFileNames) {\n // allow backslash\n entry.fileName = entry.fileName.replace(/\\\\/g, \"/\");\n }\n var errorMessage = validateFileName(entry.fileName, self.validateFileNameOptions);\n if (errorMessage != null) return emitErrorAndAutoClose(self, new Error(errorMessage));\n }\n self.emit(\"entry\", entry);\n\n if (!self.lazyEntries) self._readEntry();\n });\n });\n};\n\nZipFile.prototype.openReadStream = function(entry, options, callback) {\n var self = this;\n // parameter validation\n var relativeStart = 0;\n var relativeEnd = entry.compressedSize;\n if (callback == null) {\n callback = options;\n options = {};\n } else {\n // validate options that the caller has no excuse to get wrong\n if (options.decrypt != null) {\n if (!entry.isEncrypted()) {\n throw new Error(\"options.decrypt can only be specified for encrypted entries\");\n }\n if (options.decrypt !== false) throw new Error(\"invalid options.decrypt value: \" + options.decrypt);\n if (entry.isCompressed()) {\n if (options.decompress !== false) throw new Error(\"entry is encrypted and compressed, and options.decompress !== false\");\n }\n }\n if (options.decompress != null) {\n if (!entry.isCompressed()) {\n throw new Error(\"options.decompress can only be specified for compressed entries\");\n }\n if (!(options.decompress === false || options.decompress === true)) {\n throw new Error(\"invalid options.decompress value: \" + options.decompress);\n }\n }\n if (options.start != null || options.end != null) {\n if (entry.isCompressed() && options.decompress !== false) {\n throw new Error(\"start/end range not allowed for compressed entry without options.decompress === false\");\n }\n if (entry.isEncrypted() && options.decrypt !== false) {\n throw new Error(\"start/end range not allowed for encrypted entry without options.decrypt === false\");\n }\n }\n if (options.start != null) {\n relativeStart = options.start;\n if (relativeStart < 0) throw new Error(\"options.start < 0\");\n if (relativeStart > entry.compressedSize) throw new Error(\"options.start > entry.compressedSize\");\n }\n if (options.end != null) {\n relativeEnd = options.end;\n if (relativeEnd < 0) throw new Error(\"options.end < 0\");\n if (relativeEnd > entry.compressedSize) throw new Error(\"options.end > entry.compressedSize\");\n if (relativeEnd < relativeStart) throw new Error(\"options.end < options.start\");\n }\n }\n // any further errors can either be caused by the zipfile,\n // or were introduced in a minor version of yauzl,\n // so should be passed to the client rather than thrown.\n if (!self.isOpen) return callback(new Error(\"closed\"));\n if (entry.isEncrypted()) {\n if (options.decrypt !== false) return callback(new Error(\"entry is encrypted, and options.decrypt !== false\"));\n }\n // make sure we don't lose the fd before we open the actual read stream\n self.reader.ref();\n var buffer = newBuffer(30);\n readAndAssertNoEof(self.reader, buffer, 0, buffer.length, entry.relativeOffsetOfLocalHeader, function(err) {\n try {\n if (err) return callback(err);\n // 0 - Local file header signature = 0x04034b50\n var signature = buffer.readUInt32LE(0);\n if (signature !== 0x04034b50) {\n return callback(new Error(\"invalid local file header signature: 0x\" + signature.toString(16)));\n }\n // all this should be redundant\n // 4 - Version needed to extract (minimum)\n // 6 - General purpose bit flag\n // 8 - Compression method\n // 10 - File last modification time\n // 12 - File last modification date\n // 14 - CRC-32\n // 18 - Compressed size\n // 22 - Uncompressed size\n // 26 - File name length (n)\n var fileNameLength = buffer.readUInt16LE(26);\n // 28 - Extra field length (m)\n var extraFieldLength = buffer.readUInt16LE(28);\n // 30 - File name\n // 30+n - Extra field\n var localFileHeaderEnd = entry.relativeOffsetOfLocalHeader + buffer.length + fileNameLength + extraFieldLength;\n var decompress;\n if (entry.compressionMethod === 0) {\n // 0 - The file is stored (no compression)\n decompress = false;\n } else if (entry.compressionMethod === 8) {\n // 8 - The file is Deflated\n decompress = options.decompress != null ? options.decompress : true;\n } else {\n return callback(new Error(\"unsupported compression method: \" + entry.compressionMethod));\n }\n var fileDataStart = localFileHeaderEnd;\n var fileDataEnd = fileDataStart + entry.compressedSize;\n if (entry.compressedSize !== 0) {\n // bounds check now, because the read streams will probably not complain loud enough.\n // since we're dealing with an unsigned offset plus an unsigned size,\n // we only have 1 thing to check for.\n if (fileDataEnd > self.fileSize) {\n return callback(new Error(\"file data overflows file bounds: \" +\n fileDataStart + \" + \" + entry.compressedSize + \" > \" + self.fileSize));\n }\n }\n var readStream = self.reader.createReadStream({\n start: fileDataStart + relativeStart,\n end: fileDataStart + relativeEnd,\n });\n var endpointStream = readStream;\n if (decompress) {\n var destroyed = false;\n var inflateFilter = zlib.createInflateRaw();\n readStream.on(\"error\", function(err) {\n // setImmediate here because errors can be emitted during the first call to pipe()\n setImmediate(function() {\n if (!destroyed) inflateFilter.emit(\"error\", err);\n });\n });\n readStream.pipe(inflateFilter);\n\n if (self.validateEntrySizes) {\n endpointStream = new AssertByteCountStream(entry.uncompressedSize);\n inflateFilter.on(\"error\", function(err) {\n // forward zlib errors to the client-visible stream\n setImmediate(function() {\n if (!destroyed) endpointStream.emit(\"error\", err);\n });\n });\n inflateFilter.pipe(endpointStream);\n } else {\n // the zlib filter is the client-visible stream\n endpointStream = inflateFilter;\n }\n // this is part of yauzl's API, so implement this function on the client-visible stream\n endpointStream.destroy = function() {\n destroyed = true;\n if (inflateFilter !== endpointStream) inflateFilter.unpipe(endpointStream);\n readStream.unpipe(inflateFilter);\n // TODO: the inflateFilter may cause a memory leak. see Issue #27.\n readStream.destroy();\n };\n }\n callback(null, endpointStream);\n } finally {\n self.reader.unref();\n }\n });\n};\n\nfunction Entry() {\n}\nEntry.prototype.getLastModDate = function() {\n return dosDateTimeToDate(this.lastModFileDate, this.lastModFileTime);\n};\nEntry.prototype.isEncrypted = function() {\n return (this.generalPurposeBitFlag & 0x1) !== 0;\n};\nEntry.prototype.isCompressed = function() {\n return this.compressionMethod === 8;\n};\n\nfunction dosDateTimeToDate(date, time) {\n var day = date & 0x1f; // 1-31\n var month = (date >> 5 & 0xf) - 1; // 1-12, 0-11\n var year = (date >> 9 & 0x7f) + 1980; // 0-128, 1980-2108\n\n var millisecond = 0;\n var second = (time & 0x1f) * 2; // 0-29, 0-58 (even numbers)\n var minute = time >> 5 & 0x3f; // 0-59\n var hour = time >> 11 & 0x1f; // 0-23\n\n return new Date(year, month, day, hour, minute, second, millisecond);\n}\n\nfunction validateFileName(fileName) {\n if (fileName.indexOf(\"\\\\\") !== -1) {\n return \"invalid characters in fileName: \" + fileName;\n }\n if (/^[a-zA-Z]:/.test(fileName) || /^\\//.test(fileName)) {\n return \"absolute path: \" + fileName;\n }\n if (fileName.split(\"/\").indexOf(\"..\") !== -1) {\n return \"invalid relative path: \" + fileName;\n }\n // all good\n return null;\n}\n\nfunction readAndAssertNoEof(reader, buffer, offset, length, position, callback) {\n if (length === 0) {\n // fs.read will throw an out-of-bounds error if you try to read 0 bytes from a 0 byte file\n return setImmediate(function() { callback(null, newBuffer(0)); });\n }\n reader.read(buffer, offset, length, position, function(err, bytesRead) {\n if (err) return callback(err);\n if (bytesRead < length) {\n return callback(new Error(\"unexpected EOF\"));\n }\n callback();\n });\n}\n\nutil.inherits(AssertByteCountStream, Transform);\nfunction AssertByteCountStream(byteCount) {\n Transform.call(this);\n this.actualByteCount = 0;\n this.expectedByteCount = byteCount;\n}\nAssertByteCountStream.prototype._transform = function(chunk, encoding, cb) {\n this.actualByteCount += chunk.length;\n if (this.actualByteCount > this.expectedByteCount) {\n var msg = \"too many bytes in the stream. expected \" + this.expectedByteCount + \". got at least \" + this.actualByteCount;\n return cb(new Error(msg));\n }\n cb(null, chunk);\n};\nAssertByteCountStream.prototype._flush = function(cb) {\n if (this.actualByteCount < this.expectedByteCount) {\n var msg = \"not enough bytes in the stream. expected \" + this.expectedByteCount + \". got only \" + this.actualByteCount;\n return cb(new Error(msg));\n }\n cb();\n};\n\nutil.inherits(RandomAccessReader, EventEmitter);\nfunction RandomAccessReader() {\n EventEmitter.call(this);\n this.refCount = 0;\n}\nRandomAccessReader.prototype.ref = function() {\n this.refCount += 1;\n};\nRandomAccessReader.prototype.unref = function() {\n var self = this;\n self.refCount -= 1;\n\n if (self.refCount > 0) return;\n if (self.refCount < 0) throw new Error(\"invalid unref\");\n\n self.close(onCloseDone);\n\n function onCloseDone(err) {\n if (err) return self.emit('error', err);\n self.emit('close');\n }\n};\nRandomAccessReader.prototype.createReadStream = function(options) {\n var start = options.start;\n var end = options.end;\n if (start === end) {\n var emptyStream = new PassThrough();\n setImmediate(function() {\n emptyStream.end();\n });\n return emptyStream;\n }\n var stream = this._readStreamForRange(start, end);\n\n var destroyed = false;\n var refUnrefFilter = new RefUnrefFilter(this);\n stream.on(\"error\", function(err) {\n setImmediate(function() {\n if (!destroyed) refUnrefFilter.emit(\"error\", err);\n });\n });\n refUnrefFilter.destroy = function() {\n stream.unpipe(refUnrefFilter);\n refUnrefFilter.unref();\n stream.destroy();\n };\n\n var byteCounter = new AssertByteCountStream(end - start);\n refUnrefFilter.on(\"error\", function(err) {\n setImmediate(function() {\n if (!destroyed) byteCounter.emit(\"error\", err);\n });\n });\n byteCounter.destroy = function() {\n destroyed = true;\n refUnrefFilter.unpipe(byteCounter);\n refUnrefFilter.destroy();\n };\n\n return stream.pipe(refUnrefFilter).pipe(byteCounter);\n};\nRandomAccessReader.prototype._readStreamForRange = function(start, end) {\n throw new Error(\"not implemented\");\n};\nRandomAccessReader.prototype.read = function(buffer, offset, length, position, callback) {\n var readStream = this.createReadStream({start: position, end: position + length});\n var writeStream = new Writable();\n var written = 0;\n writeStream._write = function(chunk, encoding, cb) {\n chunk.copy(buffer, offset + written, 0, chunk.length);\n written += chunk.length;\n cb();\n };\n writeStream.on(\"finish\", callback);\n readStream.on(\"error\", function(error) {\n callback(error);\n });\n readStream.pipe(writeStream);\n};\nRandomAccessReader.prototype.close = function(callback) {\n setImmediate(callback);\n};\n\nutil.inherits(RefUnrefFilter, PassThrough);\nfunction RefUnrefFilter(context) {\n PassThrough.call(this);\n this.context = context;\n this.context.ref();\n this.unreffedYet = false;\n}\nRefUnrefFilter.prototype._flush = function(cb) {\n this.unref();\n cb();\n};\nRefUnrefFilter.prototype.unref = function(cb) {\n if (this.unreffedYet) return;\n this.unreffedYet = true;\n this.context.unref();\n};\n\nvar cp437 = '\\u0000☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ';\nfunction decodeBuffer(buffer, start, end, isUtf8) {\n if (isUtf8) {\n return buffer.toString(\"utf8\", start, end);\n } else {\n var result = \"\";\n for (var i = start; i < end; i++) {\n result += cp437[buffer[i]];\n }\n return result;\n }\n}\n\nfunction readUInt64LE(buffer, offset) {\n // there is no native function for this, because we can't actually store 64-bit integers precisely.\n // after 53 bits, JavaScript's Number type (IEEE 754 double) can't store individual integers anymore.\n // but since 53 bits is a whole lot more than 32 bits, we do our best anyway.\n var lower32 = buffer.readUInt32LE(offset);\n var upper32 = buffer.readUInt32LE(offset + 4);\n // we can't use bitshifting here, because JavaScript bitshifting only works on 32-bit integers.\n return upper32 * 0x100000000 + lower32;\n // as long as we're bounds checking the result of this function against the total file size,\n // we'll catch any overflow errors, because we already made sure the total file size was within reason.\n}\n\n// Node 10 deprecated new Buffer().\nvar newBuffer;\nif (typeof Buffer.allocUnsafe === \"function\") {\n newBuffer = function(len) {\n return Buffer.allocUnsafe(len);\n };\n} else {\n newBuffer = function(len) {\n return new Buffer(len);\n };\n}\n\nfunction defaultCallback(err) {\n if (err) throw err;\n}\n",
|
|
339
|
+
"'use strict';\n\nconst stream = require('stream');\n\nclass UncompressBaseStream extends stream.Writable {\n emit(event, data) {\n if (event === 'error') {\n const error = data;\n if (error.name === 'Error') {\n error.name = this.constructor.name + 'Error';\n }\n }\n super.emit.apply(this, arguments);\n }\n}\n\nmodule.exports = UncompressBaseStream;\n",
|
|
340
|
+
"/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n",
|
|
341
|
+
"\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n this.encoder = encoder;\n this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n if (this.addBOM) {\n str = BOMChar + str;\n this.addBOM = false;\n }\n\n return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n this.decoder = decoder;\n this.pass = false;\n this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n var res = this.decoder.write(buf);\n if (this.pass || !res)\n return res;\n\n if (res[0] === BOMChar) {\n res = res.slice(1);\n if (typeof this.options.stripBOM === 'function')\n this.options.stripBOM();\n }\n\n this.pass = true;\n return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n return this.decoder.end();\n}\n\n",
|
|
342
|
+
"\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n // Encodings\n utf8: { type: \"_internal\", bomAware: true},\n cesu8: { type: \"_internal\", bomAware: true},\n unicode11utf8: \"utf8\",\n\n ucs2: { type: \"_internal\", bomAware: true},\n utf16le: \"ucs2\",\n\n binary: { type: \"_internal\" },\n base64: { type: \"_internal\" },\n hex: { type: \"_internal\" },\n\n // Codec.\n _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n this.enc = codecOptions.encodingName;\n this.bomAware = codecOptions.bomAware;\n\n if (this.enc === \"base64\")\n this.encoder = InternalEncoderBase64;\n else if (this.enc === \"cesu8\") {\n this.enc = \"utf8\"; // Use utf8 for decoding.\n this.encoder = InternalEncoderCesu8;\n\n // Add decoder for versions of Node not supporting CESU-8\n if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') {\n this.decoder = InternalDecoderCesu8;\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n }\n }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n StringDecoder.call(this, codec.enc);\n}\n\nInternalDecoder.prototype = StringDecoder.prototype;\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n str = this.prevStr + str;\n var completeQuads = str.length - (str.length % 4);\n this.prevStr = str.slice(completeQuads);\n str = str.slice(0, completeQuads);\n\n return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i);\n // Naive implementation, but it works because CESU-8 is especially easy\n // to convert from UTF-16 (which all JS strings are encoded in).\n if (charCode < 0x80)\n buf[bufIdx++] = charCode;\n else if (charCode < 0x800) {\n buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n else { // charCode will always be < 0x10000 in javascript.\n buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n }\n return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n this.acc = 0;\n this.contBytes = 0;\n this.accBytes = 0;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n res = '';\n for (var i = 0; i < buf.length; i++) {\n var curByte = buf[i];\n if ((curByte & 0xC0) !== 0x80) { // Leading byte\n if (contBytes > 0) { // Previous code is invalid\n res += this.defaultCharUnicode;\n contBytes = 0;\n }\n\n if (curByte < 0x80) { // Single-byte code\n res += String.fromCharCode(curByte);\n } else if (curByte < 0xE0) { // Two-byte code\n acc = curByte & 0x1F;\n contBytes = 1; accBytes = 1;\n } else if (curByte < 0xF0) { // Three-byte code\n acc = curByte & 0x0F;\n contBytes = 2; accBytes = 1;\n } else { // Four or more are not supported for CESU-8.\n res += this.defaultCharUnicode;\n }\n } else { // Continuation byte\n if (contBytes > 0) { // We're waiting for it.\n acc = (acc << 6) | (curByte & 0x3f);\n contBytes--; accBytes++;\n if (contBytes === 0) {\n // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n if (accBytes === 2 && acc < 0x80 && acc > 0)\n res += this.defaultCharUnicode;\n else if (accBytes === 3 && acc < 0x800)\n res += this.defaultCharUnicode;\n else\n // Actually add character.\n res += String.fromCharCode(acc);\n }\n } else { // Unexpected continuation byte\n res += this.defaultCharUnicode;\n }\n }\n }\n this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n var res = 0;\n if (this.contBytes > 0)\n res += this.defaultCharUnicode;\n return res;\n}\n",
|
|
343
|
+
"'use strict';\n\nvar Buffer = require('safer-buffer').Buffer;\n\n// == UTF32-LE/BE codec. ==========================================================\n\nexports._utf32 = Utf32Codec;\n\nfunction Utf32Codec(codecOptions, iconv) {\n this.iconv = iconv;\n this.bomAware = true;\n this.isLE = codecOptions.isLE;\n}\n\nexports.utf32le = { type: '_utf32', isLE: true };\nexports.utf32be = { type: '_utf32', isLE: false };\n\n// Aliases\nexports.ucs4le = 'utf32le';\nexports.ucs4be = 'utf32be';\n\nUtf32Codec.prototype.encoder = Utf32Encoder;\nUtf32Codec.prototype.decoder = Utf32Decoder;\n\n// -- Encoding\n\nfunction Utf32Encoder(options, codec) {\n this.isLE = codec.isLE;\n this.highSurrogate = 0;\n}\n\nUtf32Encoder.prototype.write = function(str) {\n var src = Buffer.from(str, 'ucs2');\n var dst = Buffer.alloc(src.length * 2);\n var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;\n var offset = 0;\n\n for (var i = 0; i < src.length; i += 2) {\n var code = src.readUInt16LE(i);\n var isHighSurrogate = (0xD800 <= code && code < 0xDC00);\n var isLowSurrogate = (0xDC00 <= code && code < 0xE000);\n\n if (this.highSurrogate) {\n if (isHighSurrogate || !isLowSurrogate) {\n // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low\n // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character\n // (technically wrong, but expected by some applications, like Windows file names).\n write32.call(dst, this.highSurrogate, offset);\n offset += 4;\n }\n else {\n // Create 32-bit value from high and low surrogates;\n var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000;\n\n write32.call(dst, codepoint, offset);\n offset += 4;\n this.highSurrogate = 0;\n\n continue;\n }\n }\n\n if (isHighSurrogate)\n this.highSurrogate = code;\n else {\n // Even if the current character is a low surrogate, with no previous high surrogate, we'll\n // encode it as a semi-invalid stand-alone character for the same reasons expressed above for\n // unpaired high surrogates.\n write32.call(dst, code, offset);\n offset += 4;\n this.highSurrogate = 0;\n }\n }\n\n if (offset < dst.length)\n dst = dst.slice(0, offset);\n\n return dst;\n};\n\nUtf32Encoder.prototype.end = function() {\n // Treat any leftover high surrogate as a semi-valid independent character.\n if (!this.highSurrogate)\n return;\n\n var buf = Buffer.alloc(4);\n\n if (this.isLE)\n buf.writeUInt32LE(this.highSurrogate, 0);\n else\n buf.writeUInt32BE(this.highSurrogate, 0);\n\n this.highSurrogate = 0;\n\n return buf;\n};\n\n// -- Decoding\n\nfunction Utf32Decoder(options, codec) {\n this.isLE = codec.isLE;\n this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);\n this.overflow = null;\n}\n\nUtf32Decoder.prototype.write = function(src) {\n if (src.length === 0)\n return '';\n\n if (this.overflow)\n src = Buffer.concat([this.overflow, src]);\n\n var goodLength = src.length - src.length % 4;\n\n if (src.length !== goodLength) {\n this.overflow = src.slice(goodLength);\n src = src.slice(0, goodLength);\n }\n else\n this.overflow = null;\n\n var dst = Buffer.alloc(goodLength);\n var offset = 0;\n\n for (var i = 0; i < goodLength; i += 4) {\n var codepoint = this.isLE ? src.readUInt32LE(i) : src.readUInt32BE(i);\n\n if (codepoint < 0x10000) {\n // Simple 16-bit character\n dst.writeUInt16LE(codepoint, offset);\n offset += 2;\n }\n else {\n if (codepoint > 0x10FFFF) {\n // Not a valid Unicode codepoint\n dst.writeUInt16LE(this.badChar, offset);\n offset += 2;\n }\n else {\n // Create high and low surrogates.\n codepoint -= 0x10000;\n var high = 0xD800 | (codepoint >> 10);\n var low = 0xDC00 + (codepoint & 0x3FF);\n dst.writeUInt16LE(high, offset);\n offset += 2;\n dst.writeUInt16LE(low, offset);\n offset += 2;\n }\n }\n }\n\n return dst.slice(0, offset).toString('ucs2');\n};\n\nUtf32Decoder.prototype.end = function() {\n this.overflow = null;\n};\n\n// == UTF-32 Auto codec =============================================================\n// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.\n// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32\n// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});\n\n// Encoder prepends BOM (which can be overridden with (addBOM: false}).\n\nexports.utf32 = Utf32AutoCodec;\nexports.ucs4 = Utf32AutoCodec;\n\nfunction Utf32AutoCodec(options, iconv) {\n this.iconv = iconv;\n}\n\nUtf32AutoCodec.prototype.encoder = Utf32AutoEncoder;\nUtf32AutoCodec.prototype.decoder = Utf32AutoDecoder;\n\n// -- Encoding\n\nfunction Utf32AutoEncoder(options, codec) {\n options = options || {};\n\n if (options.addBOM === undefined)\n options.addBOM = true;\n\n this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options);\n}\n\nUtf32AutoEncoder.prototype.write = function(str) {\n return this.encoder.write(str);\n};\n\nUtf32AutoEncoder.prototype.end = function() {\n return this.encoder.end();\n};\n\n// -- Decoding\n\nfunction Utf32AutoDecoder(options, codec) {\n this.decoder = null;\n this.initialBytes = [];\n this.initialBytesLen = 0;\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf32AutoDecoder.prototype.write = function(buf) {\n if (!this.decoder) {\n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBytes.push(buf);\n this.initialBytesLen += buf.length;\n\n if (this.initialBytesLen < 32) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var buf2 = Buffer.concat(this.initialBytes),\n encoding = detectEncoding(buf2, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n this.initialBytes.length = this.initialBytesLen = 0;\n }\n\n return this.decoder.write(buf);\n};\n\nUtf32AutoDecoder.prototype.end = function() {\n if (!this.decoder) {\n var buf = Buffer.concat(this.initialBytes),\n encoding = detectEncoding(buf, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var res = this.decoder.write(buf),\n trail = this.decoder.end();\n\n return trail ? (res + trail) : res;\n }\n\n return this.decoder.end();\n};\n\nfunction detectEncoding(buf, defaultEncoding) {\n var enc = defaultEncoding || 'utf-32le';\n\n if (buf.length >= 4) {\n // Check BOM.\n if (buf.readUInt32BE(0) === 0xFEFF) // UTF-32LE BOM\n enc = 'utf-32be';\n else if (buf.readUInt32LE(0) === 0xFEFF) // UTF-32LE BOM\n enc = 'utf-32le';\n else {\n // No BOM found. Try to deduce encoding from initial content.\n // Using the wrong endian-ism for UTF-32 will very often result in codepoints that are beyond\n // the valid Unicode limit of 0x10FFFF. That will be used as the primary determinant.\n //\n // Further, we can suppose the content is mostly plain ASCII chars (U+00**).\n // So, we count ASCII as if it was LE or BE, and decide from that.\n var invalidLE = 0, invalidBE = 0;\n var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions\n _len = Math.min(buf.length - (buf.length % 4), 128); // Len is always even.\n\n for (var i = 0; i < _len; i += 4) {\n var b0 = buf[i], b1 = buf[i + 1], b2 = buf[i + 2], b3 = buf[i + 3];\n\n if (b0 !== 0 || b1 > 0x10) ++invalidBE;\n if (b3 !== 0 || b2 > 0x10) ++invalidLE;\n\n if (b0 === 0 && b1 === 0 && b2 === 0 && b3 !== 0) asciiCharsBE++;\n if (b0 !== 0 && b1 === 0 && b2 === 0 && b3 === 0) asciiCharsLE++;\n }\n\n if (invalidBE < invalidLE)\n enc = 'utf-32be';\n else if (invalidLE < invalidBE)\n enc = 'utf-32le';\n if (asciiCharsBE > asciiCharsLE)\n enc = 'utf-32be';\n else if (asciiCharsBE < asciiCharsLE)\n enc = 'utf-32le';\n }\n }\n\n return enc;\n}\n",
|
|
344
|
+
"\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n var buf = Buffer.from(str, 'ucs2');\n for (var i = 0; i < buf.length; i += 2) {\n var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n }\n return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n if (buf.length == 0)\n return '';\n\n var buf2 = Buffer.alloc(buf.length + 1),\n i = 0, j = 0;\n\n if (this.overflowByte !== -1) {\n buf2[0] = buf[0];\n buf2[1] = this.overflowByte;\n i = 1; j = 2;\n }\n\n for (; i < buf.length-1; i += 2, j+= 2) {\n buf2[j] = buf[i+1];\n buf2[j+1] = buf[i];\n }\n\n this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n options = options || {};\n if (options.addBOM === undefined)\n options.addBOM = true;\n this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n this.decoder = null;\n this.initialBytes = [];\n this.initialBytesLen = 0;\n\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n if (!this.decoder) {\n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBytes.push(buf);\n this.initialBytesLen += buf.length;\n \n if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var buf = Buffer.concat(this.initialBytes),\n encoding = detectEncoding(buf, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n this.initialBytes.length = this.initialBytesLen = 0;\n }\n\n return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n if (!this.decoder) {\n var buf = Buffer.concat(this.initialBytes),\n encoding = detectEncoding(buf, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var res = this.decoder.write(buf),\n trail = this.decoder.end();\n\n return trail ? (res + trail) : res;\n }\n return this.decoder.end();\n}\n\nfunction detectEncoding(buf, defaultEncoding) {\n var enc = defaultEncoding || 'utf-16le';\n\n if (buf.length >= 2) {\n // Check BOM.\n if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM\n enc = 'utf-16be';\n else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM\n enc = 'utf-16le';\n else {\n // No BOM found. Try to deduce encoding from initial content.\n // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n // So, we count ASCII as if it was LE or BE, and decide from that.\n var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions\n _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even.\n\n for (var i = 0; i < _len; i += 2) {\n if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++;\n if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++;\n }\n\n if (asciiCharsBE > asciiCharsLE)\n enc = 'utf-16be';\n else if (asciiCharsBE < asciiCharsLE)\n enc = 'utf-16le';\n }\n }\n\n return enc;\n}\n\n\n",
|
|
345
|
+
"\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n // Naive implementation.\n // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n return \"+\" + (chunk === '+' ? '' : \n this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n + \"-\";\n }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n minusChar = '-'.charCodeAt(0),\n andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '+'\n if (buf[i] == plusChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64Chars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n res += \"+\";\n } else {\n var b64str = base64Accum + buf.slice(lastI, i).toString();\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus is absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + buf.slice(lastI).toString();\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n// * Base64 part is started by \"&\" instead of \"+\"\n// * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n// * In Base64, \",\" is used instead of \"/\"\n// * Base64 must not be used to represent direct characters.\n// * No implicit shift back from Base64 (should always end with '-')\n// * String must end in non-shifted position.\n// * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = Buffer.alloc(6);\n this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n var inBase64 = this.inBase64,\n base64Accum = this.base64Accum,\n base64AccumIdx = this.base64AccumIdx,\n buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n for (var i = 0; i < str.length; i++) {\n var uChar = str.charCodeAt(i);\n if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n if (inBase64) {\n if (base64AccumIdx > 0) {\n bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n inBase64 = false;\n }\n\n if (!inBase64) {\n buf[bufIdx++] = uChar; // Write direct character\n\n if (uChar === andChar) // Ampersand -> '&-'\n buf[bufIdx++] = minusChar;\n }\n\n } else { // Non-direct character\n if (!inBase64) {\n buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n inBase64 = true;\n }\n if (inBase64) {\n base64Accum[base64AccumIdx++] = uChar >> 8;\n base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n if (base64AccumIdx == base64Accum.length) {\n bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n base64AccumIdx = 0;\n }\n }\n }\n }\n\n this.inBase64 = inBase64;\n this.base64AccumIdx = base64AccumIdx;\n\n return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n var buf = Buffer.alloc(10), bufIdx = 0;\n if (this.inBase64) {\n if (this.base64AccumIdx > 0) {\n bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n this.base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n this.inBase64 = false;\n }\n\n return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '&'\n if (buf[i] == andChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n res += \"&\";\n } else {\n var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/');\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus may be absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/');\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n",
|
|
346
|
+
"\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n if (!codecOptions)\n throw new Error(\"SBCS codec is called without the data.\")\n \n // Prepare char buffer for decoding.\n if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n \n if (codecOptions.chars.length === 128) {\n var asciiString = \"\";\n for (var i = 0; i < 128; i++)\n asciiString += String.fromCharCode(i);\n codecOptions.chars = asciiString + codecOptions.chars;\n }\n\n this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n \n // Encoding buffer.\n var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n for (var i = 0; i < codecOptions.chars.length; i++)\n encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length);\n for (var i = 0; i < str.length; i++)\n buf[i] = this.encodeBuf[str.charCodeAt(i)];\n \n return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n var decodeBuf = this.decodeBuf;\n var newBuf = Buffer.alloc(buf.length*2);\n var idx1 = 0, idx2 = 0;\n for (var i = 0; i < buf.length; i++) {\n idx1 = buf[i]*2; idx2 = i*2;\n newBuf[idx2] = decodeBuf[idx1];\n newBuf[idx2+1] = decodeBuf[idx1+1];\n }\n return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n",
|
|
347
|
+
"\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n // Not supported by iconv, not sure why.\n \"10029\": \"maccenteuro\",\n \"maccenteuro\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ\"\n },\n\n \"808\": \"cp808\",\n \"ibm808\": \"cp808\",\n \"cp808\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ \"\n },\n\n \"mik\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n\n \"cp720\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\x80\\x81éâ\\x84à\\x86çêëèïî\\x8d\\x8e\\x8f\\x90\\u0651\\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\\u064b\\u064c\\u064d\\u064e\\u064f\\u0650≈°∙·√ⁿ²■\\u00a0\"\n },\n\n // Aliases of generated encodings.\n \"ascii8bit\": \"ascii\",\n \"usascii\": \"ascii\",\n \"ansix34\": \"ascii\",\n \"ansix341968\": \"ascii\",\n \"ansix341986\": \"ascii\",\n \"csascii\": \"ascii\",\n \"cp367\": \"ascii\",\n \"ibm367\": \"ascii\",\n \"isoir6\": \"ascii\",\n \"iso646us\": \"ascii\",\n \"iso646irv\": \"ascii\",\n \"us\": \"ascii\",\n\n \"latin1\": \"iso88591\",\n \"latin2\": \"iso88592\",\n \"latin3\": \"iso88593\",\n \"latin4\": \"iso88594\",\n \"latin5\": \"iso88599\",\n \"latin6\": \"iso885910\",\n \"latin7\": \"iso885913\",\n \"latin8\": \"iso885914\",\n \"latin9\": \"iso885915\",\n \"latin10\": \"iso885916\",\n\n \"csisolatin1\": \"iso88591\",\n \"csisolatin2\": \"iso88592\",\n \"csisolatin3\": \"iso88593\",\n \"csisolatin4\": \"iso88594\",\n \"csisolatincyrillic\": \"iso88595\",\n \"csisolatinarabic\": \"iso88596\",\n \"csisolatingreek\" : \"iso88597\",\n \"csisolatinhebrew\": \"iso88598\",\n \"csisolatin5\": \"iso88599\",\n \"csisolatin6\": \"iso885910\",\n\n \"l1\": \"iso88591\",\n \"l2\": \"iso88592\",\n \"l3\": \"iso88593\",\n \"l4\": \"iso88594\",\n \"l5\": \"iso88599\",\n \"l6\": \"iso885910\",\n \"l7\": \"iso885913\",\n \"l8\": \"iso885914\",\n \"l9\": \"iso885915\",\n \"l10\": \"iso885916\",\n\n \"isoir14\": \"iso646jp\",\n \"isoir57\": \"iso646cn\",\n \"isoir100\": \"iso88591\",\n \"isoir101\": \"iso88592\",\n \"isoir109\": \"iso88593\",\n \"isoir110\": \"iso88594\",\n \"isoir144\": \"iso88595\",\n \"isoir127\": \"iso88596\",\n \"isoir126\": \"iso88597\",\n \"isoir138\": \"iso88598\",\n \"isoir148\": \"iso88599\",\n \"isoir157\": \"iso885910\",\n \"isoir166\": \"tis620\",\n \"isoir179\": \"iso885913\",\n \"isoir199\": \"iso885914\",\n \"isoir203\": \"iso885915\",\n \"isoir226\": \"iso885916\",\n\n \"cp819\": \"iso88591\",\n \"ibm819\": \"iso88591\",\n\n \"cyrillic\": \"iso88595\",\n\n \"arabic\": \"iso88596\",\n \"arabic8\": \"iso88596\",\n \"ecma114\": \"iso88596\",\n \"asmo708\": \"iso88596\",\n\n \"greek\" : \"iso88597\",\n \"greek8\" : \"iso88597\",\n \"ecma118\" : \"iso88597\",\n \"elot928\" : \"iso88597\",\n\n \"hebrew\": \"iso88598\",\n \"hebrew8\": \"iso88598\",\n\n \"turkish\": \"iso88599\",\n \"turkish8\": \"iso88599\",\n\n \"thai\": \"iso885911\",\n \"thai8\": \"iso885911\",\n\n \"celtic\": \"iso885914\",\n \"celtic8\": \"iso885914\",\n \"isoceltic\": \"iso885914\",\n\n \"tis6200\": \"tis620\",\n \"tis62025291\": \"tis620\",\n \"tis62025330\": \"tis620\",\n\n \"10000\": \"macroman\",\n \"10006\": \"macgreek\",\n \"10007\": \"maccyrillic\",\n \"10079\": \"maciceland\",\n \"10081\": \"macturkish\",\n\n \"cspc8codepage437\": \"cp437\",\n \"cspc775baltic\": \"cp775\",\n \"cspc850multilingual\": \"cp850\",\n \"cspcp852\": \"cp852\",\n \"cspc862latinhebrew\": \"cp862\",\n \"cpgr\": \"cp869\",\n\n \"msee\": \"cp1250\",\n \"mscyrl\": \"cp1251\",\n \"msansi\": \"cp1252\",\n \"msgreek\": \"cp1253\",\n \"msturk\": \"cp1254\",\n \"mshebr\": \"cp1255\",\n \"msarab\": \"cp1256\",\n \"winbaltrim\": \"cp1257\",\n\n \"cp20866\": \"koi8r\",\n \"20866\": \"koi8r\",\n \"ibm878\": \"koi8r\",\n \"cskoi8r\": \"koi8r\",\n\n \"cp21866\": \"koi8u\",\n \"21866\": \"koi8u\",\n \"ibm1168\": \"koi8u\",\n\n \"strk10482002\": \"rk1048\",\n\n \"tcvn5712\": \"tcvn\",\n \"tcvn57121\": \"tcvn\",\n\n \"gb198880\": \"iso646cn\",\n \"cn\": \"iso646cn\",\n\n \"csiso14jisc6220ro\": \"iso646jp\",\n \"jisc62201969ro\": \"iso646jp\",\n \"jp\": \"iso646jp\",\n\n \"cshproman8\": \"hproman8\",\n \"r8\": \"hproman8\",\n \"roman8\": \"hproman8\",\n \"xroman8\": \"hproman8\",\n \"ibm1051\": \"hproman8\",\n\n \"mac\": \"macintosh\",\n \"csmacintosh\": \"macintosh\",\n};\n\n",
|
|
348
|
+
"\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n \"437\": \"cp437\",\n \"737\": \"cp737\",\n \"775\": \"cp775\",\n \"850\": \"cp850\",\n \"852\": \"cp852\",\n \"855\": \"cp855\",\n \"856\": \"cp856\",\n \"857\": \"cp857\",\n \"858\": \"cp858\",\n \"860\": \"cp860\",\n \"861\": \"cp861\",\n \"862\": \"cp862\",\n \"863\": \"cp863\",\n \"864\": \"cp864\",\n \"865\": \"cp865\",\n \"866\": \"cp866\",\n \"869\": \"cp869\",\n \"874\": \"windows874\",\n \"922\": \"cp922\",\n \"1046\": \"cp1046\",\n \"1124\": \"cp1124\",\n \"1125\": \"cp1125\",\n \"1129\": \"cp1129\",\n \"1133\": \"cp1133\",\n \"1161\": \"cp1161\",\n \"1162\": \"cp1162\",\n \"1163\": \"cp1163\",\n \"1250\": \"windows1250\",\n \"1251\": \"windows1251\",\n \"1252\": \"windows1252\",\n \"1253\": \"windows1253\",\n \"1254\": \"windows1254\",\n \"1255\": \"windows1255\",\n \"1256\": \"windows1256\",\n \"1257\": \"windows1257\",\n \"1258\": \"windows1258\",\n \"28591\": \"iso88591\",\n \"28592\": \"iso88592\",\n \"28593\": \"iso88593\",\n \"28594\": \"iso88594\",\n \"28595\": \"iso88595\",\n \"28596\": \"iso88596\",\n \"28597\": \"iso88597\",\n \"28598\": \"iso88598\",\n \"28599\": \"iso88599\",\n \"28600\": \"iso885910\",\n \"28601\": \"iso885911\",\n \"28603\": \"iso885913\",\n \"28604\": \"iso885914\",\n \"28605\": \"iso885915\",\n \"28606\": \"iso885916\",\n \"windows874\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"win874\": \"windows874\",\n \"cp874\": \"windows874\",\n \"windows1250\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n },\n \"win1250\": \"windows1250\",\n \"cp1250\": \"windows1250\",\n \"windows1251\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"win1251\": \"windows1251\",\n \"cp1251\": \"windows1251\",\n \"windows1252\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"win1252\": \"windows1252\",\n \"cp1252\": \"windows1252\",\n \"windows1253\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n },\n \"win1253\": \"windows1253\",\n \"cp1253\": \"windows1253\",\n \"windows1254\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n },\n \"win1254\": \"windows1254\",\n \"cp1254\": \"windows1254\",\n \"windows1255\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת���\"\n },\n \"win1255\": \"windows1255\",\n \"cp1255\": \"windows1255\",\n \"windows1256\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œں ،¢£¤¥¦§¨©ھ«¬®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûüے\"\n },\n \"win1256\": \"windows1256\",\n \"cp1256\": \"windows1256\",\n \"windows1257\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙\"\n },\n \"win1257\": \"windows1257\",\n \"cp1257\": \"windows1257\",\n \"windows1258\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"win1258\": \"windows1258\",\n \"cp1258\": \"windows1258\",\n \"iso88591\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"cp28591\": \"iso88591\",\n \"iso88592\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
Ą˘Ł¤ĽŚ§¨ŠŞŤŹŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n },\n \"cp28592\": \"iso88592\",\n \"iso88593\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
Ħ˘£¤�Ĥ§¨İŞĞĴ�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙\"\n },\n \"cp28593\": \"iso88593\",\n \"iso88594\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ĄĸŖ¤Ĩϧ¨ŠĒĢŦޝ°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙\"\n },\n \"cp28594\": \"iso88594\",\n \"iso88595\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ЁЂЃЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ\"\n },\n \"cp28595\": \"iso88595\",\n \"iso88596\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
���¤�������،�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������\"\n },\n \"cp28596\": \"iso88596\",\n \"iso88597\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
‘’£€₯¦§¨©ͺ«¬�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n },\n \"cp28597\": \"iso88597\",\n \"iso88598\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
�¢£¤¥¦§¨©×«¬®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת���\"\n },\n \"cp28598\": \"iso88598\",\n \"iso88599\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n },\n \"cp28599\": \"iso88599\",\n \"iso885910\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ĄĒĢĪĨͧĻĐŠŦŽŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ\"\n },\n \"cp28600\": \"iso885910\",\n \"iso885911\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"cp28601\": \"iso885911\",\n \"iso885913\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
”¢£¤„¦§Ø©Ŗ«¬®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’\"\n },\n \"cp28603\": \"iso885913\",\n \"iso885914\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ\"\n },\n \"cp28604\": \"iso885914\",\n \"iso885915\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"cp28605\": \"iso885915\",\n \"iso885916\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ĄąŁ€„Чš©Ș«ŹźŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ\"\n },\n \"cp28606\": \"iso885916\",\n \"cp437\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm437\": \"cp437\",\n \"csibm437\": \"cp437\",\n \"cp737\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ \"\n },\n \"ibm737\": \"cp737\",\n \"csibm737\": \"cp737\",\n \"cp775\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’±“¾¶§÷„°∙·¹³²■ \"\n },\n \"ibm775\": \"cp775\",\n \"csibm775\": \"cp775\",\n \"cp850\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm850\": \"cp850\",\n \"csibm850\": \"cp850\",\n \"cp852\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´˝˛ˇ˘§÷¸°¨˙űŘř■ \"\n },\n \"ibm852\": \"cp852\",\n \"csibm852\": \"cp852\",\n \"cp855\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№ыЫзЗшШэЭщЩчЧ§■ \"\n },\n \"ibm855\": \"cp855\",\n \"csibm855\": \"cp855\",\n \"cp856\": {\n \"type\": \"_sbcs\",\n \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm856\": \"cp856\",\n \"csibm856\": \"cp856\",\n \"cp857\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´±�¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm857\": \"cp857\",\n \"csibm857\": \"cp857\",\n \"cp858\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm858\": \"cp858\",\n \"csibm858\": \"cp858\",\n \"cp860\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm860\": \"cp860\",\n \"csibm860\": \"cp860\",\n \"cp861\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm861\": \"cp861\",\n \"csibm861\": \"cp861\",\n \"cp862\": {\n \"type\": \"_sbcs\",\n \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm862\": \"cp862\",\n \"csibm862\": \"cp862\",\n \"cp863\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm863\": \"cp863\",\n \"csibm863\": \"cp863\",\n \"cp864\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�\"\n },\n \"ibm864\": \"cp864\",\n \"csibm864\": \"cp864\",\n \"cp865\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm865\": \"cp865\",\n \"csibm865\": \"cp865\",\n \"cp866\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ \"\n },\n \"ibm866\": \"cp866\",\n \"csibm866\": \"cp866\",\n \"cp869\": {\n \"type\": \"_sbcs\",\n \"chars\": \"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄±υφχ§ψ΅°¨ωϋΰώ■ \"\n },\n \"ibm869\": \"cp869\",\n \"csibm869\": \"cp869\",\n \"cp922\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
¡¢£¤¥¦§¨©ª«¬®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ\"\n },\n \"ibm922\": \"cp922\",\n \"csibm922\": \"cp922\",\n \"cp1046\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�\"\n },\n \"ibm1046\": \"cp1046\",\n \"csibm1046\": \"cp1046\",\n \"cp1124\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ЁЂҐЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ\"\n },\n \"ibm1124\": \"cp1124\",\n \"csibm1124\": \"cp1124\",\n \"cp1125\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ \"\n },\n \"ibm1125\": \"cp1125\",\n \"csibm1125\": \"cp1125\",\n \"cp1129\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
¡¢£¤¥¦§œ©ª«¬®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"ibm1129\": \"cp1129\",\n \"csibm1129\": \"cp1129\",\n \"cp1133\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�\"\n },\n \"ibm1133\": \"cp1133\",\n \"csibm1133\": \"cp1133\",\n \"cp1161\": {\n \"type\": \"_sbcs\",\n \"chars\": \"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ \"\n },\n \"ibm1161\": \"cp1161\",\n \"csibm1161\": \"cp1161\",\n \"cp1162\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"ibm1162\": \"cp1162\",\n \"csibm1162\": \"cp1162\",\n \"cp1163\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
¡¢£€¥¦§œ©ª«¬®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"ibm1163\": \"cp1163\",\n \"csibm1163\": \"cp1163\",\n \"maccroatian\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ\"\n },\n \"maccyrillic\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n },\n \"macgreek\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�\"\n },\n \"maciceland\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macroman\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macromania\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macthai\": {\n \"type\": \"_sbcs\",\n \"chars\": \"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\uFEFF–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����\"\n },\n \"macturkish\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macukraine\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n },\n \"koi8r\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8u\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8ru\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8t\": {\n \"type\": \"_sbcs\",\n \"chars\": \"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"armscii8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
�և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�\"\n },\n \"rk1048\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"tcvn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000ÚỤ\\u0003ỪỬỮ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010ỨỰỲỶỸÝỴ\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ\"\n },\n \"georgianacademy\": {\n \"type\": \"_sbcs\",\n \"chars\": \"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"georgianps\": {\n \"type\": \"_sbcs\",\n \"chars\": \"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"pt154\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"viscii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001Ẳ\\u0003\\u0004ẴẪ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Ỷ\\u0015\\u0016\\u0017\\u0018Ỹ\\u001a\\u001b\\u001c\\u001dỴ\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ\"\n },\n \"iso646cn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"iso646jp\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"hproman8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"
ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�\"\n },\n \"macintosh\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"ascii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"tis620\": {\n \"type\": \"_sbcs\",\n \"chars\": \"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n }\n}",
|
|
349
|
+
"\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n GB18030_CODE = -2,\n SEQ_START = -10,\n NODE_START = -1000,\n UNASSIGNED_NODE = new Array(0x100),\n DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n this.encodingName = codecOptions.encodingName;\n if (!codecOptions)\n throw new Error(\"DBCS codec is called without the data.\")\n if (!codecOptions.table)\n throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n // Load tables.\n var mappingTable = codecOptions.table();\n\n\n // Decode tables: MBCS -> Unicode.\n\n // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n // Trie root is decodeTables[0].\n // Values: >= 0 -> unicode character code. can be > 0xFFFF\n // == UNASSIGNED -> unknown/unassigned sequence.\n // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n // <= NODE_START -> index of the next node in our trie to process next byte.\n // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.\n this.decodeTables = [];\n this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n this.decodeTableSeq = [];\n\n // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n for (var i = 0; i < mappingTable.length; i++)\n this._addDecodeChunk(mappingTable[i]);\n\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n \n // Encode tables: Unicode -> DBCS.\n\n // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n // == UNASSIGNED -> no conversion found. Output a default char.\n // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n this.encodeTable = [];\n \n // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n // means end of sequence (needed when one sequence is a strict subsequence of another).\n // Objects are kept separately from encodeTable to increase performance.\n this.encodeTableSeq = [];\n\n // Some chars can be decoded, but need not be encoded.\n var skipEncodeChars = {};\n if (codecOptions.encodeSkipVals)\n for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n var val = codecOptions.encodeSkipVals[i];\n if (typeof val === 'number')\n skipEncodeChars[val] = true;\n else\n for (var j = val.from; j <= val.to; j++)\n skipEncodeChars[j] = true;\n }\n \n // Use decode trie to recursively fill out encode tables.\n this._fillEncodeTable(0, 0, skipEncodeChars);\n\n // Add more encoding pairs when needed.\n if (codecOptions.encodeAdd) {\n for (var uChar in codecOptions.encodeAdd)\n if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n }\n\n this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n\n\n // Load & create GB18030 tables when needed.\n if (typeof codecOptions.gb18030 === 'function') {\n this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n // Add GB18030 decode tables.\n var thirdByteNodeIdx = this.decodeTables.length;\n var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n var fourthByteNodeIdx = this.decodeTables.length;\n var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n for (var i = 0x81; i <= 0xFE; i++) {\n var secondByteNodeIdx = NODE_START - this.decodeTables[0][i];\n var secondByteNode = this.decodeTables[secondByteNodeIdx];\n for (var j = 0x30; j <= 0x39; j++)\n secondByteNode[j] = NODE_START - thirdByteNodeIdx;\n }\n for (var i = 0x81; i <= 0xFE; i++)\n thirdByteNode[i] = NODE_START - fourthByteNodeIdx;\n for (var i = 0x30; i <= 0x39; i++)\n fourthByteNode[i] = GB18030_CODE\n } \n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n var bytes = [];\n for (; addr > 0; addr >>= 8)\n bytes.push(addr & 0xFF);\n if (bytes.length == 0)\n bytes.push(0);\n\n var node = this.decodeTables[0];\n for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n var val = node[bytes[i]];\n\n if (val == UNASSIGNED) { // Create new node.\n node[bytes[i]] = NODE_START - this.decodeTables.length;\n this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n }\n else if (val <= NODE_START) { // Existing node.\n node = this.decodeTables[NODE_START - val];\n }\n else\n throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n }\n return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n // First element of chunk is the hex mbcs code where we start.\n var curAddr = parseInt(chunk[0], 16);\n\n // Choose the decoding node where we'll write our chars.\n var writeTable = this._getDecodeTrieNode(curAddr);\n curAddr = curAddr & 0xFF;\n\n // Write all other elements of the chunk to the table.\n for (var k = 1; k < chunk.length; k++) {\n var part = chunk[k];\n if (typeof part === \"string\") { // String, write as-is.\n for (var l = 0; l < part.length;) {\n var code = part.charCodeAt(l++);\n if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n var codeTrail = part.charCodeAt(l++);\n if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n else\n throw new Error(\"Incorrect surrogate pair in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n var len = 0xFFF - code + 2;\n var seq = [];\n for (var m = 0; m < len; m++)\n seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n this.decodeTableSeq.push(seq);\n }\n else\n writeTable[curAddr++] = code; // Basic char\n }\n } \n else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n var charCode = writeTable[curAddr - 1] + 1;\n for (var l = 0; l < part; l++)\n writeTable[curAddr++] = charCode++;\n }\n else\n throw new Error(\"Incorrect type '\" + typeof part + \"' given in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n if (curAddr > 0xFF)\n throw new Error(\"Incorrect chunk in \" + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n if (this.encodeTable[high] === undefined)\n this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n if (bucket[low] <= SEQ_START)\n this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n else if (bucket[low] == UNASSIGNED)\n bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n \n // Get the root of character tree according to first character of the sequence.\n var uCode = seq[0];\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n\n var node;\n if (bucket[low] <= SEQ_START) {\n // There's already a sequence with - use it.\n node = this.encodeTableSeq[SEQ_START-bucket[low]];\n }\n else {\n // There was no sequence object - allocate a new one.\n node = {};\n if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n bucket[low] = SEQ_START - this.encodeTableSeq.length;\n this.encodeTableSeq.push(node);\n }\n\n // Traverse the character tree, allocating new nodes as needed.\n for (var j = 1; j < seq.length-1; j++) {\n var oldVal = node[uCode];\n if (typeof oldVal === 'object')\n node = oldVal;\n else {\n node = node[uCode] = {}\n if (oldVal !== undefined)\n node[DEF_CHAR] = oldVal\n }\n }\n\n // Set the leaf to given dbcsCode.\n uCode = seq[seq.length-1];\n node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n var node = this.decodeTables[nodeIdx];\n for (var i = 0; i < 0x100; i++) {\n var uCode = node[i];\n var mbCode = prefix + i;\n if (skipEncodeChars[mbCode])\n continue;\n\n if (uCode >= 0)\n this._setEncodeChar(uCode, mbCode);\n else if (uCode <= NODE_START)\n this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);\n else if (uCode <= SEQ_START)\n this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n }\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n // Encoder state\n this.leadSurrogate = -1;\n this.seqObj = undefined;\n \n // Static data\n this.encodeTable = codec.encodeTable;\n this.encodeTableSeq = codec.encodeTableSeq;\n this.defaultCharSingleByte = codec.defCharSB;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n leadSurrogate = this.leadSurrogate,\n seqObj = this.seqObj, nextChar = -1,\n i = 0, j = 0;\n\n while (true) {\n // 0. Get next character.\n if (nextChar === -1) {\n if (i == str.length) break;\n var uCode = str.charCodeAt(i++);\n }\n else {\n var uCode = nextChar;\n nextChar = -1; \n }\n\n // 1. Handle surrogates.\n if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n if (uCode < 0xDC00) { // We've got lead surrogate.\n if (leadSurrogate === -1) {\n leadSurrogate = uCode;\n continue;\n } else {\n leadSurrogate = uCode;\n // Double lead surrogate found.\n uCode = UNASSIGNED;\n }\n } else { // We've got trail surrogate.\n if (leadSurrogate !== -1) {\n uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n leadSurrogate = -1;\n } else {\n // Incomplete surrogate pair - only trail surrogate found.\n uCode = UNASSIGNED;\n }\n \n }\n }\n else if (leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n leadSurrogate = -1;\n }\n\n // 2. Convert uCode character.\n var dbcsCode = UNASSIGNED;\n if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n var resCode = seqObj[uCode];\n if (typeof resCode === 'object') { // Sequence continues.\n seqObj = resCode;\n continue;\n\n } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n dbcsCode = resCode;\n\n } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n // Try default character for this sequence\n resCode = seqObj[DEF_CHAR];\n if (resCode !== undefined) {\n dbcsCode = resCode; // Found. Write it.\n nextChar = uCode; // Current character will be written too in the next iteration.\n\n } else {\n // TODO: What if we have no default? (resCode == undefined)\n // Then, we should write first char of the sequence as-is and try the rest recursively.\n // Didn't do it for now because no encoding has this situation yet.\n // Currently, just skip the sequence and write current char.\n }\n }\n seqObj = undefined;\n }\n else if (uCode >= 0) { // Regular character\n var subtable = this.encodeTable[uCode >> 8];\n if (subtable !== undefined)\n dbcsCode = subtable[uCode & 0xFF];\n \n if (dbcsCode <= SEQ_START) { // Sequence start\n seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n continue;\n }\n\n if (dbcsCode == UNASSIGNED && this.gb18030) {\n // Use GB18030 algorithm to find character(s) to write.\n var idx = findIdx(this.gb18030.uChars, uCode);\n if (idx != -1) {\n var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n newBuf[j++] = 0x30 + dbcsCode;\n continue;\n }\n }\n }\n\n // 3. Write dbcsCode character.\n if (dbcsCode === UNASSIGNED)\n dbcsCode = this.defaultCharSingleByte;\n \n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else if (dbcsCode < 0x10000) {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n else {\n newBuf[j++] = dbcsCode >> 16;\n newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n }\n }\n\n this.seqObj = seqObj;\n this.leadSurrogate = leadSurrogate;\n return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n if (this.leadSurrogate === -1 && this.seqObj === undefined)\n return; // All clean. Most often case.\n\n var newBuf = Buffer.alloc(10), j = 0;\n\n if (this.seqObj) { // We're in the sequence.\n var dbcsCode = this.seqObj[DEF_CHAR];\n if (dbcsCode !== undefined) { // Write beginning of the sequence.\n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n } else {\n // See todo above.\n }\n this.seqObj = undefined;\n }\n\n if (this.leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n newBuf[j++] = this.defaultCharSingleByte;\n this.leadSurrogate = -1;\n }\n \n return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n // Decoder state\n this.nodeIdx = 0;\n this.prevBuf = Buffer.alloc(0);\n\n // Static data\n this.decodeTables = codec.decodeTables;\n this.decodeTableSeq = codec.decodeTableSeq;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n var newBuf = Buffer.alloc(buf.length*2),\n nodeIdx = this.nodeIdx, \n prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length,\n seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence.\n uCode;\n\n if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later.\n prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]);\n \n for (var i = 0, j = 0; i < buf.length; i++) {\n var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset];\n\n // Lookup in current trie node.\n var uCode = this.decodeTables[nodeIdx][curByte];\n\n if (uCode >= 0) { \n // Normal character, just use it.\n }\n else if (uCode === UNASSIGNED) { // Unknown char.\n // TODO: Callback with seq.\n //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle).\n uCode = this.defaultCharUnicode.charCodeAt(0);\n }\n else if (uCode === GB18030_CODE) {\n var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30);\n var idx = findIdx(this.gb18030.gbChars, ptr);\n uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n }\n else if (uCode <= NODE_START) { // Go to next trie node.\n nodeIdx = NODE_START - uCode;\n continue;\n }\n else if (uCode <= SEQ_START) { // Output a sequence of chars.\n var seq = this.decodeTableSeq[SEQ_START - uCode];\n for (var k = 0; k < seq.length - 1; k++) {\n uCode = seq[k];\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n }\n uCode = seq[seq.length-1];\n }\n else\n throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n // Write the character to buffer, handling higher planes using surrogate pair.\n if (uCode > 0xFFFF) { \n uCode -= 0x10000;\n var uCodeLead = 0xD800 + Math.floor(uCode / 0x400);\n newBuf[j++] = uCodeLead & 0xFF;\n newBuf[j++] = uCodeLead >> 8;\n\n uCode = 0xDC00 + uCode % 0x400;\n }\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n\n // Reset trie node.\n nodeIdx = 0; seqStart = i+1;\n }\n\n this.nodeIdx = nodeIdx;\n this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);\n return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n var ret = '';\n\n // Try to parse all remaining chars.\n while (this.prevBuf.length > 0) {\n // Skip 1 character in the buffer.\n ret += this.defaultCharUnicode;\n var buf = this.prevBuf.slice(1);\n\n // Parse remaining as usual.\n this.prevBuf = Buffer.alloc(0);\n this.nodeIdx = 0;\n if (buf.length > 0)\n ret += this.write(buf);\n }\n\n this.nodeIdx = 0;\n return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n if (table[0] > val)\n return -1;\n\n var l = 0, r = table.length;\n while (l < r-1) { // always table[l] <= val < table[r]\n var mid = l + Math.floor((r-l+1)/2);\n if (table[mid] <= val)\n l = mid;\n else\n r = mid;\n }\n return l;\n}\n\n",
|
|
350
|
+
"\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n \n // == Japanese/ShiftJIS ====================================================\n // All japanese encodings are based on JIS X set of standards:\n // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.\n // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n // Has several variations in 1978, 1983, 1990 and 1997.\n // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n // 2 planes, first is superset of 0208, second - revised 0212.\n // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n // Byte encodings are:\n // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.\n // 0x00-0x7F - lower part of 0201\n // 0x8E, 0xA1-0xDF - upper part of 0201\n // (0xA1-0xFE)x2 - 0208 plane (94x94).\n // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n // Used as-is in ISO2022 family.\n // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n // 0201-1976 Roman, 0208-1978, 0208-1983.\n // * ISO2022-JP-1: Adds esc seq for 0212-1990.\n // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n //\n // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n //\n // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n 'shiftjis': {\n type: '_dbcs',\n table: function() { return require('./tables/shiftjis.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n },\n 'csshiftjis': 'shiftjis',\n 'mskanji': 'shiftjis',\n 'sjis': 'shiftjis',\n 'windows31j': 'shiftjis',\n 'ms31j': 'shiftjis',\n 'xsjis': 'shiftjis',\n 'windows932': 'shiftjis',\n 'ms932': 'shiftjis',\n '932': 'shiftjis',\n 'cp932': 'shiftjis',\n\n 'eucjp': {\n type: '_dbcs',\n table: function() { return require('./tables/eucjp.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n },\n\n // TODO: KDDI extension to Shift_JIS\n // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n // == Chinese/GBK ==========================================================\n // http://en.wikipedia.org/wiki/GBK\n // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n 'gb2312': 'cp936',\n 'gb231280': 'cp936',\n 'gb23121980': 'cp936',\n 'csgb2312': 'cp936',\n 'csiso58gb231280': 'cp936',\n 'euccn': 'cp936',\n\n // Microsoft's CP936 is a subset and approximation of GBK.\n 'windows936': 'cp936',\n 'ms936': 'cp936',\n '936': 'cp936',\n 'cp936': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json') },\n },\n\n // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n 'gbk': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n },\n 'xgbk': 'gbk',\n 'isoir58': 'gbk',\n\n // GB18030 is an algorithmic extension of GBK.\n // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n // http://icu-project.org/docs/papers/gb18030.html\n // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n 'gb18030': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n gb18030: function() { return require('./tables/gb18030-ranges.json') },\n encodeSkipVals: [0x80],\n encodeAdd: {'€': 0xA2E3},\n },\n\n 'chinese': 'gb18030',\n\n\n // == Korean ===============================================================\n // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n 'windows949': 'cp949',\n 'ms949': 'cp949',\n '949': 'cp949',\n 'cp949': {\n type: '_dbcs',\n table: function() { return require('./tables/cp949.json') },\n },\n\n 'cseuckr': 'cp949',\n 'csksc56011987': 'cp949',\n 'euckr': 'cp949',\n 'isoir149': 'cp949',\n 'korean': 'cp949',\n 'ksc56011987': 'cp949',\n 'ksc56011989': 'cp949',\n 'ksc5601': 'cp949',\n\n\n // == Big5/Taiwan/Hong Kong ================================================\n // There are lots of tables for Big5 and cp950. Please see the following links for history:\n // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n // Variations, in roughly number of defined chars:\n // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n // * Big5-2003 (Taiwan standard) almost superset of cp950.\n // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n // Plus, it has 4 combining sequences.\n // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n // Implementations are not consistent within browsers; sometimes labeled as just big5.\n // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n // \n // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n 'windows950': 'cp950',\n 'ms950': 'cp950',\n '950': 'cp950',\n 'cp950': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json') },\n },\n\n // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n 'big5': 'big5hkscs',\n 'big5hkscs': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n encodeSkipVals: [0xa2cc],\n },\n\n 'cnbig5': 'big5hkscs',\n 'csbig5': 'big5hkscs',\n 'xxbig5': 'big5hkscs',\n};\n",
|
|
351
|
+
"\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n require(\"./internal\"),\n require(\"./utf32\"),\n require(\"./utf16\"),\n require(\"./utf7\"),\n require(\"./sbcs-codec\"),\n require(\"./sbcs-data\"),\n require(\"./sbcs-data-generated\"),\n require(\"./dbcs-codec\"),\n require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n var module = modules[i];\n for (var enc in module)\n if (Object.prototype.hasOwnProperty.call(module, enc))\n exports[enc] = module[enc];\n}\n",
|
|
352
|
+
"\"use strict\";\n\nvar Buffer = require(\"buffer\").Buffer,\n Transform = require(\"stream\").Transform;\n\n\n// == Exports ==================================================================\nmodule.exports = function(iconv) {\n \n // Additional Public API.\n iconv.encodeStream = function encodeStream(encoding, options) {\n return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n }\n\n iconv.decodeStream = function decodeStream(encoding, options) {\n return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n }\n\n iconv.supportsStreams = true;\n\n\n // Not published yet.\n iconv.IconvLiteEncoderStream = IconvLiteEncoderStream;\n iconv.IconvLiteDecoderStream = IconvLiteDecoderStream;\n iconv._collect = IconvLiteDecoderStream.prototype.collect;\n};\n\n\n// == Encoder stream =======================================================\nfunction IconvLiteEncoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n Transform.call(this, options);\n}\n\nIconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteEncoderStream }\n});\n\nIconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n if (typeof chunk != 'string')\n return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteEncoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteEncoderStream.prototype.collect = function(cb) {\n var chunks = [];\n this.on('error', cb);\n this.on('data', function(chunk) { chunks.push(chunk); });\n this.on('end', function() {\n cb(null, Buffer.concat(chunks));\n });\n return this;\n}\n\n\n// == Decoder stream =======================================================\nfunction IconvLiteDecoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.encoding = this.encoding = 'utf8'; // We output strings.\n Transform.call(this, options);\n}\n\nIconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteDecoderStream }\n});\n\nIconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n if (!Buffer.isBuffer(chunk))\n return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res, this.encoding);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteDecoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res, this.encoding); \n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteDecoderStream.prototype.collect = function(cb) {\n var res = '';\n this.on('error', cb);\n this.on('data', function(chunk) { res += chunk; });\n this.on('end', function() {\n cb(null, res);\n });\n return this;\n}\n\n",
|
|
353
|
+
"\"use strict\";\nvar Buffer = require(\"buffer\").Buffer;\n// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer\n\n// == Extend Node primitives to use iconv-lite =================================\n\nmodule.exports = function (iconv) {\n var original = undefined; // Place to keep original methods.\n\n // Node authors rewrote Buffer internals to make it compatible with\n // Uint8Array and we cannot patch key functions since then.\n // Note: this does use older Buffer API on a purpose\n iconv.supportsNodeEncodingsExtension = !(Buffer.from || new Buffer(0) instanceof Uint8Array);\n\n iconv.extendNodeEncodings = function extendNodeEncodings() {\n if (original) return;\n original = {};\n\n if (!iconv.supportsNodeEncodingsExtension) {\n console.error(\"ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node\");\n console.error(\"See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility\");\n return;\n }\n\n var nodeNativeEncodings = {\n 'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, \n 'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true,\n };\n\n Buffer.isNativeEncoding = function(enc) {\n return enc && nodeNativeEncodings[enc.toLowerCase()];\n }\n\n // -- SlowBuffer -----------------------------------------------------------\n var SlowBuffer = require('buffer').SlowBuffer;\n\n original.SlowBufferToString = SlowBuffer.prototype.toString;\n SlowBuffer.prototype.toString = function(encoding, start, end) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.SlowBufferToString.call(this, encoding, start, end);\n\n // Otherwise, use our decoding method.\n if (typeof start == 'undefined') start = 0;\n if (typeof end == 'undefined') end = this.length;\n return iconv.decode(this.slice(start, end), encoding);\n }\n\n original.SlowBufferWrite = SlowBuffer.prototype.write;\n SlowBuffer.prototype.write = function(string, offset, length, encoding) {\n // Support both (string, offset, length, encoding)\n // and the legacy (string, encoding, offset, length)\n if (isFinite(offset)) {\n if (!isFinite(length)) {\n encoding = length;\n length = undefined;\n }\n } else { // legacy\n var swap = encoding;\n encoding = offset;\n offset = length;\n length = swap;\n }\n\n offset = +offset || 0;\n var remaining = this.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = +length;\n if (length > remaining) {\n length = remaining;\n }\n }\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.SlowBufferWrite.call(this, string, offset, length, encoding);\n\n if (string.length > 0 && (length < 0 || offset < 0))\n throw new RangeError('attempt to write beyond buffer bounds');\n\n // Otherwise, use our encoding method.\n var buf = iconv.encode(string, encoding);\n if (buf.length < length) length = buf.length;\n buf.copy(this, offset, 0, length);\n return length;\n }\n\n // -- Buffer ---------------------------------------------------------------\n\n original.BufferIsEncoding = Buffer.isEncoding;\n Buffer.isEncoding = function(encoding) {\n return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding);\n }\n\n original.BufferByteLength = Buffer.byteLength;\n Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferByteLength.call(this, str, encoding);\n\n // Slow, I know, but we don't have a better way yet.\n return iconv.encode(str, encoding).length;\n }\n\n original.BufferToString = Buffer.prototype.toString;\n Buffer.prototype.toString = function(encoding, start, end) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferToString.call(this, encoding, start, end);\n\n // Otherwise, use our decoding method.\n if (typeof start == 'undefined') start = 0;\n if (typeof end == 'undefined') end = this.length;\n return iconv.decode(this.slice(start, end), encoding);\n }\n\n original.BufferWrite = Buffer.prototype.write;\n Buffer.prototype.write = function(string, offset, length, encoding) {\n var _offset = offset, _length = length, _encoding = encoding;\n // Support both (string, offset, length, encoding)\n // and the legacy (string, encoding, offset, length)\n if (isFinite(offset)) {\n if (!isFinite(length)) {\n encoding = length;\n length = undefined;\n }\n } else { // legacy\n var swap = encoding;\n encoding = offset;\n offset = length;\n length = swap;\n }\n\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferWrite.call(this, string, _offset, _length, _encoding);\n\n offset = +offset || 0;\n var remaining = this.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = +length;\n if (length > remaining) {\n length = remaining;\n }\n }\n\n if (string.length > 0 && (length < 0 || offset < 0))\n throw new RangeError('attempt to write beyond buffer bounds');\n\n // Otherwise, use our encoding method.\n var buf = iconv.encode(string, encoding);\n if (buf.length < length) length = buf.length;\n buf.copy(this, offset, 0, length);\n return length;\n\n // TODO: Set _charsWritten.\n }\n\n\n // -- Readable -------------------------------------------------------------\n if (iconv.supportsStreams) {\n var Readable = require('stream').Readable;\n\n original.ReadableSetEncoding = Readable.prototype.setEncoding;\n Readable.prototype.setEncoding = function setEncoding(enc, options) {\n // Use our own decoder, it has the same interface.\n // We cannot use original function as it doesn't handle BOM-s.\n this._readableState.decoder = iconv.getDecoder(enc, options);\n this._readableState.encoding = enc;\n }\n\n Readable.prototype.collect = iconv._collect;\n }\n }\n\n // Remove iconv-lite Node primitive extensions.\n iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() {\n if (!iconv.supportsNodeEncodingsExtension)\n return;\n if (!original)\n throw new Error(\"require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.\")\n\n delete Buffer.isNativeEncoding;\n\n var SlowBuffer = require('buffer').SlowBuffer;\n\n SlowBuffer.prototype.toString = original.SlowBufferToString;\n SlowBuffer.prototype.write = original.SlowBufferWrite;\n\n Buffer.isEncoding = original.BufferIsEncoding;\n Buffer.byteLength = original.BufferByteLength;\n Buffer.prototype.toString = original.BufferToString;\n Buffer.prototype.write = original.BufferWrite;\n\n if (iconv.supportsStreams) {\n var Readable = require('stream').Readable;\n\n Readable.prototype.setEncoding = original.ReadableSetEncoding;\n delete Readable.prototype.collect;\n }\n\n original = undefined;\n }\n}\n",
|
|
354
|
+
"\"use strict\";\n\n// Some environments don't have global Buffer (e.g. React Native).\n// Solution would be installing npm modules \"buffer\" and \"stream\" explicitly.\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '�';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n str = \"\" + (str || \"\"); // Ensure string.\n\n var encoder = iconv.getEncoder(encoding, options);\n\n var res = encoder.write(str);\n var trail = encoder.end();\n \n return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n if (typeof buf === 'string') {\n if (!iconv.skipDecodeWarning) {\n console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n iconv.skipDecodeWarning = true;\n }\n\n buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n }\n\n var decoder = iconv.getDecoder(encoding, options);\n\n var res = decoder.write(buf);\n var trail = decoder.end();\n\n return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n try {\n iconv.getCodec(enc);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n if (!iconv.encodings)\n iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n \n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n var enc = iconv._canonicalizeEncoding(encoding);\n\n // Traverse iconv.encodings to find actual codec.\n var codecOptions = {};\n while (true) {\n var codec = iconv._codecDataCache[enc];\n if (codec)\n return codec;\n\n var codecDef = iconv.encodings[enc];\n\n switch (typeof codecDef) {\n case \"string\": // Direct alias to other encoding.\n enc = codecDef;\n break;\n\n case \"object\": // Alias with options. Can be layered.\n for (var key in codecDef)\n codecOptions[key] = codecDef[key];\n\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n \n enc = codecDef.type;\n break;\n\n case \"function\": // Codec itself.\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n\n // The codec function must load all tables and return object with .encoder and .decoder methods.\n // It'll be called only once (for each different options object).\n codec = new codecDef(codecOptions, iconv);\n\n iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n return codec;\n\n default:\n throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n }\n }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n encoder = new codec.encoder(options, codec);\n\n if (codec.bomAware && options && options.addBOM)\n encoder = new bomHandling.PrependBOM(encoder, options);\n\n return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n decoder = new codec.decoder(options, codec);\n\n if (codec.bomAware && !(options && options.stripBOM === false))\n decoder = new bomHandling.StripBOM(decoder, options);\n\n return decoder;\n}\n\n\n// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json.\nvar nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node;\nif (nodeVer) {\n\n // Load streaming support in Node v0.10+\n var nodeVerArr = nodeVer.split(\".\").map(Number);\n if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) {\n require(\"./streams\")(iconv);\n }\n\n // Load Node primitive extensions.\n require(\"./extend-node\")(iconv);\n}\n\nif (\"Ā\" != \"\\u0100\") {\n console.error(\"iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n",
|
|
355
|
+
"'use strict';\n\n// https://github.com/thejoshwolfe/yauzl#no-streaming-unzip-api\n\nconst debug = require('util').debuglog('compressing/zip/uncompress_stream');\nconst yauzl = require('@eggjs/yauzl');\nconst stream = require('stream');\nconst UncompressBaseStream = require('../base_write_stream');\nconst utils = require('../utils');\n\n// lazy load iconv-lite\nlet iconv;\n\nconst YAUZL_CALLBACK = Symbol('ZipUncompressStream#yauzlCallback');\nconst STRIP_NAME = Symbol('ZipUncompressStream#stripName');\n\n// don't decodeStrings on yauzl, we should handle fileName by ourself\n// see validateFileName on https://github.com/thejoshwolfe/yauzl/blob/51010ce4e8c7e6345efe195e1b4150518f37b393/index.js#L607\n// - support \"absolute path\"\nconst DEFAULTS = { lazyEntries: true, decodeStrings: false };\n\n// from: https://github.com/microsoft/vscode/blob/c0769274fa136b45799edeccc0d0a2f645b75caf/src/vs/base/node/zip.ts#L51\nfunction modeFromEntry(entry) {\n const attr = entry.externalFileAttributes >> 16 || 33188;\n\n return [ 448 /* S_IRWXU */, 56 /* S_IRWXG */, 7 /* S_IRWXO */ ]\n .map(mask => attr & mask)\n .reduce((a, b) => a + b, attr & 61440 /* S_IFMT */);\n}\n\nclass ZipUncompressStream extends UncompressBaseStream {\n constructor(opts) {\n opts = opts || {};\n super(opts);\n\n this._chunks = [];\n this._strip = Number(opts.strip) || 0;\n this._zipFileNameEncoding = opts.zipFileNameEncoding || 'utf8';\n if (this._zipFileNameEncoding === 'utf-8') {\n this._zipFileNameEncoding = 'utf8';\n }\n this._finalCallback = err => {\n if (err) {\n debug('finalCallback, error: %j', err);\n return this.emit('error', err);\n }\n this.emit('finish');\n };\n\n this[YAUZL_CALLBACK] = this[YAUZL_CALLBACK].bind(this);\n\n const sourceType = utils.sourceType(opts.source);\n\n const yauzlOpts = this._yauzlOpts = Object.assign({}, DEFAULTS, opts.yauzl);\n debug('sourceType: %s, yauzlOpts: %j', sourceType, yauzlOpts);\n if (sourceType === 'file') {\n yauzl.open(opts.source, yauzlOpts, this[YAUZL_CALLBACK]);\n return;\n }\n\n if (sourceType === 'buffer') {\n yauzl.fromBuffer(opts.source, yauzlOpts, this[YAUZL_CALLBACK]);\n return;\n }\n\n if (sourceType === 'stream') {\n utils.streamToBuffer(opts.source)\n .then(buf => yauzl.fromBuffer(buf, yauzlOpts, this[YAUZL_CALLBACK]))\n .catch(e => this.emit('error', e));\n return;\n }\n }\n\n _write(chunk, _encoding, callback) {\n this._chunks.push(chunk);\n debug('write size: %d, chunks: %d', chunk.length, this._chunks.length);\n callback();\n }\n\n _final(callback) {\n const buf = Buffer.concat(this._chunks);\n debug('final, buf size: %d, chunks: %d', buf.length, this._chunks.length);\n this._finalCallback = callback;\n yauzl.fromBuffer(buf, this._yauzlOpts, this[YAUZL_CALLBACK]);\n }\n\n [YAUZL_CALLBACK](err, zipFile) {\n if (err) {\n debug('yauzl error', err);\n return this._finalCallback(err);\n }\n\n zipFile.readEntry();\n\n zipFile\n .on('entry', entry => {\n const mode = modeFromEntry(entry);\n // fileName is buffer by default because decodeStrings = false\n if (Buffer.isBuffer(entry.fileName)) {\n if (this._zipFileNameEncoding === 'utf8') {\n entry.fileName = entry.fileName.toString();\n } else {\n if (!iconv) {\n iconv = require('iconv-lite');\n }\n entry.fileName = iconv.decode(entry.fileName, this._zipFileNameEncoding);\n }\n }\n // directory file names end with '/' (for Linux and macOS) or '\\' (for Windows)\n const type = /[\\\\\\/]$/.test(entry.fileName) ? 'directory' : 'file';\n const name = entry.fileName = this[STRIP_NAME](entry.fileName, type);\n\n const header = { name, type, yauzl: entry, mode };\n\n if (type === 'file') {\n zipFile.openReadStream(entry, (err, readStream) => {\n if (err) {\n debug('file, error: %j', err);\n return this._finalCallback(err);\n }\n debug('file, header: %j', header);\n this.emit('entry', header, readStream, next);\n });\n } else { // directory\n const placeholder = new stream.Readable({ read() {} });\n debug('directory, header: %j', header);\n this.emit('entry', header, placeholder, next);\n setImmediate(() => placeholder.emit('end'));\n }\n })\n .on('end', () => this._finalCallback())\n .on('error', err => this._finalCallback(err));\n\n function next() {\n zipFile.readEntry();\n }\n }\n\n [STRIP_NAME](fileName, type) {\n return utils.stripFileName(this._strip, fileName, type);\n }\n}\n\nmodule.exports = ZipUncompressStream;\n",
|
|
356
|
+
"'use strict';\n\nconst utils = require('../utils');\nconst ZipStream = require('./stream');\nconst ZipFileStream = require('./file_stream');\nconst ZipUncompressStream = require('./uncompress_stream');\n\nexports.Stream = ZipStream;\nexports.FileStream = ZipFileStream;\nexports.UncompressStream = ZipUncompressStream;\nexports.compressDir = utils.makeCompressDirFn(ZipStream);\nexports.compressFile = utils.makeFileProcessFn(ZipFileStream);\nexports.uncompress = utils.makeUncompressFn(ZipUncompressStream);\nexports.decompress = utils.makeUncompressFn(ZipUncompressStream);\n",
|
|
357
|
+
"'use strict';\n\nvar util = require('util');\nvar stream = require('stream');\n\nmodule.exports.createReadStream = function (object, options) {\n return new MultiStream (object, options);\n};\n\nvar MultiStream = function (object, options) {\n if (object instanceof Buffer || typeof object === 'string') {\n options = options || {};\n stream.Readable.call(this, {\n highWaterMark: options.highWaterMark,\n encoding: options.encoding\n });\n } else {\n stream.Readable.call(this, { objectMode: true });\n }\n this._object = object;\n};\n\nutil.inherits(MultiStream, stream.Readable);\n\nMultiStream.prototype._read = function () {\n this.push(this._object);\n this._object = null;\n};",
|
|
358
|
+
"'use strict';\n\nconst fs = require('fs');\nconst zlib = require('zlib');\nconst utils = require('../utils');\nconst streamifier = require('streamifier');\n\nclass GzipFileStream extends zlib.Gzip {\n constructor(opts) {\n opts = opts || {};\n super(opts.zlib);\n\n const sourceType = utils.sourceType(opts.source);\n\n if (sourceType === 'file') {\n const stream = fs.createReadStream(opts.source, opts.fs);\n stream.on('error', err => this.emit('error', err));\n stream.pipe(this);\n return;\n }\n\n if (sourceType === 'buffer') {\n const stream = streamifier.createReadStream(opts.source, opts.streamifier);\n stream.on('error', err => this.emit('error', err));\n stream.pipe(this);\n return;\n }\n\n if (sourceType === 'stream') {\n opts.source.on('error', err => this.emit('error', err));\n opts.source.pipe(this);\n }\n\n // else undefined: do nothing\n }\n}\n\nmodule.exports = GzipFileStream;\n",
|
|
359
|
+
"'use strict';\n\nconst fs = require('fs');\nconst zlib = require('zlib');\nconst utils = require('../utils');\nconst streamifier = require('streamifier');\n\nclass GzipUncompressStream extends zlib.Unzip {\n constructor(opts) {\n opts = opts || {};\n super(opts.zlib);\n\n const sourceType = utils.sourceType(opts.source);\n\n if (sourceType === 'file') {\n const stream = fs.createReadStream(opts.source, opts.fs);\n stream.on('error', err => this.emit('error', err));\n stream.pipe(this);\n return;\n }\n\n if (sourceType === 'buffer') {\n const stream = streamifier.createReadStream(opts.source, opts.streamifier);\n stream.on('error', err => this.emit('error', err));\n stream.pipe(this);\n return;\n }\n\n if (sourceType === 'stream') {\n opts.source.on('error', err => this.emit('error', err));\n opts.source.pipe(this);\n }\n\n // else: waiting to be piped\n }\n}\n\nmodule.exports = GzipUncompressStream;\n",
|
|
360
|
+
"'use strict';\n\nconst utils = require('../utils');\nconst GzipFileStream = require('./file_stream');\nconst GzipUncompressStream = require('./uncompress_stream');\n\nexports.FileStream = GzipFileStream;\nexports.UncompressStream = GzipUncompressStream;\nexports.compressFile = utils.makeFileProcessFn(GzipFileStream);\nexports.uncompress = utils.makeFileProcessFn(GzipUncompressStream);\nexports.decompress = utils.makeFileProcessFn(GzipUncompressStream);\n",
|
|
361
|
+
"'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst stream = require('stream');\nconst tar = require('tar-stream');\nconst utils = require('../utils');\nconst ready = require('get-ready');\n\nclass TarFileStream extends stream.Transform {\n constructor(opts) {\n super(opts);\n\n const pack = tar.pack();\n pack.on('data', chunk => this.push(chunk));\n pack.on('end', () => this.ready(true));\n\n const sourceType = utils.sourceType(opts.source);\n\n if (sourceType === 'file') {\n // stat file to get file size\n fs.stat(opts.source, (err, stat) => {\n if (err) return this.emit('error', err);\n this.entry = pack.entry({ name: opts.relativePath || path.basename(opts.source), size: stat.size, mode: stat.mode & 0o777 }, err => {\n if (err) return this.emit('error', err);\n pack.finalize();\n });\n const stream = fs.createReadStream(opts.source, opts.fs);\n stream.on('error', err => this.emit('error', err));\n stream.pipe(this);\n });\n } else if (sourceType === 'buffer') {\n if (!opts.relativePath) return this.emit('error', 'opts.relativePath is required if opts.source is a buffer');\n\n pack.entry({ name: opts.relativePath }, opts.source);\n pack.finalize();\n this.end();\n } else { // stream or undefined\n if (!opts.relativePath) return process.nextTick(() => this.emit('error', 'opts.relativePath is required'));\n\n if (opts.size) {\n this.entry = pack.entry({ name: opts.relativePath, size: opts.size }, err => {\n if (err) return this.emit('error', err);\n pack.finalize();\n });\n } else {\n if (!opts.suppressSizeWarning) {\n console.warn('You should specify the size of streamming data by opts.size to prevent all streaming data from loading into memory. If you are sure about memory cost, pass opts.suppressSizeWarning: true to suppress this warning');\n }\n const buf = [];\n this.entry = new stream.Writable({\n write(chunk, _, callback) {\n buf.push(chunk);\n callback();\n },\n });\n this.entry.on('finish', () => {\n pack.entry({ name: opts.relativePath }, Buffer.concat(buf));\n pack.finalize();\n });\n }\n\n if (sourceType === 'stream') {\n opts.source.on('error', err => this.emit('error', err));\n opts.source.pipe(this);\n }\n }\n }\n\n _transform(chunk, encoding, callback) {\n if (this.entry) {\n this.entry.write(chunk, encoding, callback);\n }\n }\n\n _flush(callback) {\n if (this.entry) {\n this.entry.end();\n }\n this.ready(callback);\n }\n}\n\nready.mixin(TarFileStream.prototype);\n\nmodule.exports = TarFileStream;\n",
|
|
362
|
+
"'use strict';\n\nconst fs = require('fs');\nconst tar = require('tar-stream');\nconst utils = require('../utils');\nconst streamifier = require('streamifier');\n\n// stream.Writable\nclass TarUncompressStream extends tar.extract {\n constructor(opts) {\n opts = opts || {};\n super(opts);\n\n const sourceType = utils.sourceType(opts.source);\n\n if (sourceType === 'file') {\n const stream = fs.createReadStream(opts.source, opts.fs);\n stream.on('error', err => this.emit('error', err));\n stream.pipe(this);\n return;\n }\n\n if (sourceType === 'buffer') {\n const stream = streamifier.createReadStream(opts.source, opts.streamifier);\n stream.on('error', err => this.emit('error', err));\n stream.pipe(this);\n return;\n }\n\n if (sourceType === 'stream') {\n opts.source.on('error', err => this.emit('error', err));\n opts.source.pipe(this);\n }\n\n // else: waiting to be piped\n }\n}\n\nmodule.exports = TarUncompressStream;\n",
|
|
363
|
+
"'use strict';\n\nconst utils = require('../utils');\nconst TarStream = require('./stream');\nconst TarFileStream = require('./file_stream');\nconst TarUncompressStream = require('./uncompress_stream');\n\nexports.Stream = TarStream;\nexports.FileStream = TarFileStream;\nexports.UncompressStream = TarUncompressStream;\nexports.compressDir = utils.makeCompressDirFn(TarStream);\nexports.compressFile = utils.makeFileProcessFn(TarFileStream);\nexports.uncompress = utils.makeUncompressFn(TarUncompressStream);\nexports.decompress = utils.makeUncompressFn(TarUncompressStream);\n",
|
|
364
|
+
"'use strict';\n\nconst tar = require('../tar');\nconst gzip = require('../gzip');\nconst BaseStream = require('../base_stream');\n\nclass TgzStream extends BaseStream {\n constructor(opts) {\n super(opts);\n\n const tarStream = this._tarStream = new tar.Stream();\n tarStream.on('error', err => this.emit('error', err));\n\n const gzipStream = new gzip.FileStream();\n gzipStream.on('end', () => this.push(null));\n gzipStream.on('data', chunk => this.push(chunk));\n gzipStream.on('error', err => this.emit('error', err));\n\n tarStream.pipe(gzipStream);\n }\n\n addEntry(entry, opts) {\n this._tarStream.addEntry(entry, opts);\n }\n}\n\nmodule.exports = TgzStream;\n",
|
|
365
|
+
"'use strict';\n\nconst tar = require('../tar');\nconst gzip = require('../gzip');\nconst utils = require('../utils');\nconst stream = require('stream');\nconst { pipeline: pump } = require('stream');\nconst ready = require('get-ready');\n\nclass TgzFileStream extends stream.Transform {\n constructor(opts) {\n opts = opts || {};\n super(opts);\n\n const sourceType = this._sourceType = utils.sourceType(opts.source);\n\n const tarStream = this._tarStream = new tar.FileStream(opts);\n opts = utils.clone(opts);\n delete opts.source;\n const gzipStream = new gzip.FileStream(opts);\n\n gzipStream.on('data', chunk => {\n this.push(chunk);\n });\n gzipStream.on('end', () => this.ready(true));\n\n pump(tarStream, gzipStream, err => {\n err && this.emit('error', err);\n });\n\n if (sourceType !== 'stream' && sourceType !== undefined) {\n this.end();\n }\n }\n\n _transform(chunk, encoding, callback) {\n this._tarStream.write(chunk, encoding, callback);\n }\n\n _flush(callback) {\n if (this._sourceType === 'stream' || this._sourceType === undefined) {\n this._tarStream.end();\n }\n this.ready(callback);\n }\n}\n\nready.mixin(TgzFileStream.prototype);\nmodule.exports = TgzFileStream;\n",
|
|
366
|
+
"/*\n * FlushWritable\n * Copyright 2014 Tom Frost\n */\n\nvar EventEmitter = require('events').EventEmitter,\n\tWritable = require('stream').Writable,\n\tutil = require('util');\n\n/**\n * FlushWritable is a drop-in replacement for stream.Writable that implements\n * the Transform stream's _flush() method. FlushWritable is meant to be\n * extended, just like stream.Writable. However, in the child class's\n * prototype, a method called _flush(cb) can be defined that will halt the\n * firing of the 'finish' event until the callback is called. If the callback\n * if called with a truthy first argument, 'error' is emitted instead.\n * @param {Object} [opts] Options to configure this Writable stream. See the\n * Node.js docs for stream.Writable.\n * @constructor\n */\nfunction FlushWritable(opts) {\n\tWritable.call(this, opts);\n}\nutil.inherits(FlushWritable, Writable);\n\nFlushWritable.prototype.emit = function(evt) {\n\tif (evt === 'finish' && this._flush && !Writable.prototype._flush) {\n\t\tthis._flush(function(err) {\n\t\t\tif (err)\n\t\t\t\tEventEmitter.prototype.emit.call(this, 'error', err);\n\t\t\telse\n\t\t\t\tEventEmitter.prototype.emit.call(this, 'finish');\n\t\t}.bind(this));\n\t}\n\telse {\n\t\tvar args = Array.prototype.slice.call(arguments);\n\t\tEventEmitter.prototype.emit.apply(this, args);\n\t}\n};\n\nmodule.exports = FlushWritable;\n",
|
|
367
|
+
"'use strict';\n\nconst fs = require('fs');\nconst utils = require('../utils');\nconst ready = require('get-ready');\nconst streamifier = require('streamifier');\nconst FlushWritable = require('flushwritable');\nconst GzipUncompressStream = require('../gzip').UncompressStream;\nconst TarUncompressStream = require('../tar').UncompressStream;\n\nclass TgzUncompressStream extends FlushWritable {\n constructor(opts) {\n opts = opts || {};\n super(opts);\n\n const newOpts = utils.clone(opts);\n newOpts.source = undefined;\n this._gzipStream = new GzipUncompressStream(newOpts)\n .on('error', err => this.emit('error', err));\n\n const tarStream = new TarUncompressStream(newOpts)\n .on('finish', () => this.ready(true))\n .on('entry', this.emit.bind(this, 'entry'))\n .on('error', err => this.emit('error', err));\n\n this._gzipStream.pipe(tarStream);\n\n const sourceType = utils.sourceType(opts.source);\n\n if (sourceType === 'file') {\n const stream = fs.createReadStream(opts.source, opts.fs);\n stream.on('error', err => this.emit('error', err));\n stream.pipe(this);\n return;\n }\n\n if (sourceType === 'buffer') {\n const stream = streamifier.createReadStream(opts.source, opts.streamifier);\n stream.on('error', err => this.emit('error', err));\n stream.pipe(this);\n return;\n }\n\n if (sourceType === 'stream') {\n opts.source.on('error', err => this.emit('error', err));\n opts.source.pipe(this);\n }\n\n // else: waiting to be piped\n }\n\n _write(chunk, encoding, callback) {\n this._gzipStream.write(chunk, encoding, callback);\n }\n\n _flush(callback) {\n this._gzipStream.end();\n this.ready(callback);\n }\n}\n\nready.mixin(TgzUncompressStream.prototype);\n\nmodule.exports = TgzUncompressStream;\n",
|
|
368
|
+
"'use strict';\n\nconst utils = require('../utils');\nconst TgzStream = require('./stream');\nconst TgzFileStream = require('./file_stream');\nconst TgzUncompressStream = require('./uncompress_stream');\n\nexports.Stream = TgzStream;\nexports.FileStream = TgzFileStream;\nexports.UncompressStream = TgzUncompressStream;\nexports.compressDir = utils.makeCompressDirFn(TgzStream);\nexports.compressFile = utils.makeFileProcessFn(TgzFileStream);\nexports.uncompress = utils.makeUncompressFn(TgzUncompressStream);\nexports.decompress = utils.makeUncompressFn(TgzUncompressStream);\n",
|
|
369
|
+
"'use strict';\n\nexports.zip = require('./lib/zip');\nexports.gzip = require('./lib/gzip');\nexports.tar = require('./lib/tar');\nexports.tgz = require('./lib/tgz');\n",
|
|
370
|
+
"import { defineCookbookCommand } from \"@milkio/cookbook-command\";\nimport consola from \"consola\";\nimport chalk from \"chalk\";\nimport { finished } from \"node:stream/promises\";\nimport { copySync, createWriteStream, existsSync, mkdirSync, remove, renameSync } from \"fs-extra\";\nimport { join, basename, dirname } from \"node:path\";\nimport { cwd, exit } from \"node:process\";\nimport { __VERSION__ } from \"../../__VERSION__\";\nimport { Readable } from \"node:stream\";\nimport compressing from \"compressing\";\nimport { exists, readdir as readdirAsync, stat as statAsync, readFile, writeFile } from \"node:fs/promises\";\nimport { execScript } from \"../utils/exec-script\";\nimport { progress } from \"../progress\";\n\nexport default await defineCookbookCommand(async (utils, inputPackageName?: string) => {\n const params = utils.getParams();\n\n let packageName = inputPackageName ?? params.commands[0];\n if (!packageName) {\n consola.error(\"Package name is required\");\n exit(1);\n }\n\n const cookbookToml = await utils.getCookbookToml();\n const packageManager = cookbookToml.general.packageManager;\n\n if (!packageName.startsWith(\"@milkio/template-\")) {\n if (packageManager === \"deno\") await execScript(`deno init --npm ${packageName}`, { cwd: join(cwd(), \"projects\") });\n else await execScript(`${packageManager} create ${packageName}`, { cwd: join(cwd(), \"projects\") });\n } else {\n consola.info(\"We will create a new Milkio project in the ./projects directory, how about an impressive name?\");\n let projectName = await utils.inputString({\n env: \"PROJECT\",\n message: \"project name\",\n });\n\n if (projectName === undefined) {\n consola.error(\"Project name is required\");\n exit(1);\n }\n\n while (!/^[a-z]+(-[a-z]+)*$/.test(projectName)) {\n consola.error(\"Project name must be in lowercase letters with hyphens (e.g., 'my-project', 'example-app')\");\n\n projectName = await utils.inputString({\n env: \"PROJECT\",\n message: \"project name\",\n });\n\n if (projectName === undefined) {\n consola.error(\"Project name is required\");\n exit(1);\n }\n }\n\n if (await exists(join(cwd(), \"projects\", projectName))) {\n consola.error(`Project ${projectName} already exists`);\n exit(1);\n }\n\n const workspace = process.platform === \"win32\" ? join(process.env.USERPROFILE!, \".cookbook\") : join(process.env.HOME!, \".cookbook\");\n const tempspace = join(workspace, \".temp\");\n if (!existsSync(workspace)) mkdirSync(workspace);\n if (!existsSync(tempspace)) mkdirSync(tempspace);\n\n let currentWriteDir = cwd();\n if (await exists(join(currentWriteDir, \"packages\", \"cookbook\", \"src\", \"commands\", \"init.ts\"))) {\n const tempDir = join(tempspace, `${Date.now()}`);\n currentWriteDir = await utils.inputString({\n message: \"The current directory seems to be a cookbook project. Please enter the directory you want to initialize the cookbook in\",\n env: \"COOKBOOK_INIT_DIR\",\n placeholder: tempDir,\n });\n if (currentWriteDir === undefined) currentWriteDir = tempDir;\n consola.info(`Initializing cookbook in ${currentWriteDir}`);\n if (!await exists(currentWriteDir)) mkdirSync(currentWriteDir);\n }\n\n consola.start(\"Finding the appropriate mirror..\");\n let selectedVersion = \"\";\n let selectedMirror = \"\";\n const mirrors = [\n \"https://registry.npmjs.org/\",\n \"https://registry.npmmirror.com/\",\n \"https://mirrors.cloud.tencent.com/npm/\",\n \"https://cdn.jsdelivr.net/npm/\"\n ];\n\n for (const mirror of mirrors) {\n try {\n consola.info(`Trying mirror: ${mirror}`);\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 5000);\n const response = await fetch(`${mirror}${packageName}`, {\n signal: controller.signal,\n });\n clearTimeout(timeout);\n\n if (!response.ok) continue;\n\n const packageInfo: any = await response.json();\n if (!packageInfo || !packageInfo[\"dist-tags\"] || !packageInfo[\"dist-tags\"].latest) continue;\n\n selectedMirror = mirror;\n selectedVersion = packageInfo[\"dist-tags\"].latest;\n consola.success(`Found version ${selectedVersion} at ${mirror}`);\n break;\n } catch (error: any) {\n consola.warn(`Mirror unavailable: ${error?.message ?? error}`);\n }\n }\n\n if (!selectedMirror) {\n consola.error(\"Failed to detect latest version from all mirrors\");\n exit(1);\n }\n\n const downloadUrl = `${selectedMirror}${packageName}/-/${packageName.split('/')[1]}-${selectedVersion}.tgz`;\n consola.start(`Downloading package from ${downloadUrl}`);\n\n try {\n const res = await fetch(downloadUrl);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n\n const destination = join(tempspace, \"package.tgz\");\n if (existsSync(destination)) await remove(destination);\n\n const fileStream = createWriteStream(destination);\n await finished(Readable.fromWeb(res.body!).pipe(fileStream));\n consola.success(\"Package downloaded successfully\");\n } catch (error: any) {\n consola.error(`Download failed: ${error?.message ?? error}`);\n exit(1);\n }\n\n consola.start(\"Extracting package..\");\n try {\n const tempExtractDir = join(tempspace, `extract-${Date.now()}`);\n if (!existsSync(tempExtractDir)) mkdirSync(tempExtractDir);\n await compressing.tgz.uncompress(join(tempspace, \"package.tgz\"), tempExtractDir);\n const templateDir = join(tempExtractDir, \"package\", \"template\");\n if (!existsSync(templateDir)) {\n consola.error(\"Template directory not found in package\");\n exit(1);\n }\n\n const projectsDir = join(currentWriteDir, \"projects\");\n if (!existsSync(projectsDir)) mkdirSync(projectsDir);\n\n const projectDir = join(projectsDir, projectName);\n if (!existsSync(projectDir)) mkdirSync(projectDir);\n\n copySync(templateDir, projectDir);\n await remove(tempExtractDir);\n await remove(join(tempspace, \"package.tgz\"));\n consola.success(\"Package extracted and temporary.\");\n\n currentWriteDir = projectDir;\n } catch (error: any) {\n consola.error(`Extraction failed: ${error?.message ?? error}`);\n exit(1);\n }\n\n consola.start(\"Processing template files...\");\n\n const processFile = async (filePath: string, projectName: string) => {\n try {\n const stats = await statAsync(filePath);\n if (stats.isDirectory()) {\n const files = await readdirAsync(filePath);\n await Promise.all(files.map(file => processFile(join(filePath, file), projectName)));\n return;\n }\n if (stats.size > 1024 * 1024) return;\n\n const fileName = basename(filePath);\n if (fileName.endsWith('.template')) {\n const newFileName = fileName.slice(0, -9);\n const newFilePath = join(dirname(filePath), newFileName);\n renameSync(filePath, newFilePath);\n consola.info(`Renamed ${fileName} to ${newFileName}`);\n filePath = newFilePath;\n }\n\n const content = await readFile(filePath, 'utf8');\n if (content.includes('REPLACE-YOUR-REPOSITORY-NAME')) {\n const newContent = content.replace(/REPLACE-YOUR-REPOSITORY-NAME/g, projectName);\n await writeFile(filePath, newContent, 'utf8');\n }\n } catch (error: any) {\n consola.warn(`Failed to process file ${filePath}: ${error?.message ?? error}`);\n }\n };\n\n try {\n await processFile(currentWriteDir, projectName);\n consola.success(\"Template processing completed successfully\");\n } catch (error: any) {\n consola.error(`Template processing failed: ${error?.message ?? error}`);\n exit(1);\n }\n\n let maxPort = 8999;\n\n if (cookbookToml.projects && typeof cookbookToml.projects === 'object' && Object.keys(cookbookToml.projects).length > 0) {\n for (const [_projectNameKey, projectConfig] of Object.entries(cookbookToml.projects)) {\n if (projectConfig.port && projectConfig.port > maxPort) {\n maxPort = projectConfig.port;\n }\n }\n }\n\n const newPort = maxPort + 1;\n const viteConfigPath = join(currentWriteDir, \"vite.config.ts\");\n if (await exists(viteConfigPath)) {\n let viteConfigContent = await readFile(viteConfigPath, 'utf8');\n viteConfigContent = viteConfigContent.replace(/port: 9000,/g, `port: ${newPort},`);\n await writeFile(viteConfigPath, viteConfigContent, 'utf8');\n }\n\n const astraPath = join(currentWriteDir, \"app\", \"utils\", \"astra.ts\");\n if (await exists(astraPath)) {\n let astraContent = await readFile(astraPath, 'utf8');\n astraContent = astraContent.replace(/baseUrl: \"http:\\/\\/localhost:9000\",/g, `baseUrl: \"http://localhost:${newPort}\",`);\n await writeFile(astraPath, astraContent, 'utf8');\n }\n\n const cookbookTomlPath = join(currentWriteDir, \"cookbook.toml\");\n if (await exists(cookbookTomlPath)) {\n let cookbookContent = await readFile(cookbookTomlPath, 'utf8');\n const currentCookbookToml: any = Bun.TOML.parse(cookbookContent);\n if (!currentCookbookToml?.projects?.[projectName]) {\n const projectConfig = `\\n\\n[projects.${projectName}]\\nport = ${newPort}\\ntype = \"milkio\"\\nruntime = \"node\"\\nautoStart = true`;\n cookbookContent += projectConfig;\n await writeFile(cookbookTomlPath, cookbookContent, 'utf8');\n }\n }\n\n progress.open(\"Installing dependencies..\");\n try {\n await execScript(`${packageManager} i`, { cwd: currentWriteDir });\n } catch (error: any) {\n progress.close(\"Failed to install dependencies.\");\n consola.error(`Installation failed: ${error?.message ?? error}`);\n exit(1);\n }\n progress.close(\"Dependencies installed.\");\n\n console.log(\n `\\n\\n${chalk.green.bold(\"🎉 Project Created Successfully!\")}\\n` +\n `${chalk.gray(\"-\".repeat(16))}\\n` +\n `${chalk.cyan(\"Name:\")} ${chalk.bold(projectName)}\\n` +\n `${chalk.cyan(\"Location:\")} ${chalk.bold(join(currentWriteDir, \"projects\", projectName))}\\n` +\n `${chalk.cyan(\"Template:\")} ${chalk.bold(packageName)}\\n` +\n `${chalk.gray(\"-\".repeat(16))}\\n\\n` +\n `${chalk.blue.bold(\"💡 Tips:\")}\\n` +\n ` This is a monorepo project. You can place your frontend and backend code\\n` +\n ` in the project directory, then edit ${chalk.yellow(\"cookbook.toml\")} to have them start together.\\n\\n` +\n `${chalk.green.bold(\"✨ Example:\")}\\n` +\n ` Try running ${chalk.magenta(\"co create nuxt\")} to create a ${chalk.green(\"Vue (nuxt)\")} project!\\n\\n` +\n `${chalk.yellow.bold(\"🚀 Get Started:\")}\\n` +\n ` Run ${chalk.magenta(\"co dev\")} to start your project!\\n\\n` +\n `${chalk.gray(\"Happy coding UwU! 🌟\")}\\n`\n );\n }\n});\n",
|
|
371
|
+
"import { defineCookbookCommand } from \"@milkio/cookbook-command\";\nimport consola from \"consola\";\nimport { join } from \"node:path\";\nimport { cwd, exit } from \"node:process\";\nimport { __VERSION__ } from \"../../__VERSION__\";\nimport { execScript } from \"../utils/exec-script\";\n\nexport default await defineCookbookCommand(async (utils, inputPackageName?: string) => {\n const params = utils.getParams();\n\n let packageName = inputPackageName ?? params.commands[0];\n if (!packageName) {\n consola.error(\"Package name is required\");\n exit(1);\n }\n\n const cookbookToml = await utils.getCookbookToml();\n const packageManager = cookbookToml.general.packageManager;\n if (packageManager === \"npm\") await execScript(`npx ${packageName}`, { cwd: join(cwd(), \"projects\") });\n else if (packageManager === \"yarn\") await execScript(`yarn dlx ${packageName}`, { cwd: join(cwd(), \"projects\") });\n else if (packageManager === \"pnpm\") await execScript(`pnpm dlx ${packageName}`, { cwd: join(cwd(), \"projects\") });\n else if (packageManager === \"bun\") await execScript(`bun x ${packageName}`, { cwd: join(cwd(), \"projects\") });\n else {\n consola.error(`Package manager ${packageManager} is not supported`);\n exit(1);\n }\n});\n",
|
|
372
|
+
"import { defineCookbookCommand } from \"@milkio/cookbook-command\";\nimport consola from \"consola\";\nimport { finished } from \"node:stream/promises\";\nimport { copySync, createWriteStream, existsSync, mkdirSync, readdir, remove, renameSync } from \"fs-extra\";\nimport { join, basename, dirname } from \"node:path\";\nimport { cwd, exit } from \"node:process\";\nimport { __VERSION__ } from \"../../__VERSION__\";\nimport { Readable } from \"node:stream\";\nimport compressing from \"compressing\";\nimport { exists, readdir as readdirAsync, stat as statAsync, readFile, writeFile } from \"node:fs/promises\";\n\nexport default await defineCookbookCommand(async (utils) => {\n const packageName = `@milkio/template-cookbook`;\n\n const workspace = process.platform === \"win32\" ? join(process.env.USERPROFILE!, \".cookbook\") : join(process.env.HOME!, \".cookbook\");\n const tempspace = join(workspace, \".temp\");\n if (!existsSync(workspace)) mkdirSync(workspace);\n if (!existsSync(tempspace)) mkdirSync(tempspace);\n\n let currentWriteDir = cwd();\n if (await exists(join(currentWriteDir, \"packages\", \"cookbook\", \"src\", \"commands\", \"init.ts\"))) {\n const tempDir = join(tempspace, `${Date.now()}`);\n currentWriteDir = await utils.inputString({\n message: \"The current directory seems to be a cookbook project. Please enter the directory you want to initialize the cookbook in\",\n env: \"COOKBOOK_INIT_DIR\",\n placeholder: tempDir,\n });\n if (currentWriteDir === undefined) currentWriteDir = tempDir;\n consola.info(`Initializing cookbook in ${currentWriteDir}`);\n if (!await exists(currentWriteDir)) mkdirSync(currentWriteDir);\n } else {\n for (const fileName of (await readdir(currentWriteDir))) {\n if (fileName === '.git') continue;\n consola.error(`The current directory doesn't seem to be empty. You need to run this command in an empty directory.`);\n exit(1);\n }\n }\n\n // Package manager selection\n consola.info(\"📦 Package Manager Selection\");\n consola.info(\"To ensure the best development experience, we recommend using npm or bun.\");\n\n const packageManagers = [\n { label: \"<cancel>\", value: \"<cancel>\" },\n { label: \"npm (💗 recommend)\", value: \"npm\" },\n { label: \"bun (💗 recommend)\", value: \"bun\" },\n { label: \"deno (🩶 experimental)\", value: \"deno\" },\n { label: \"yarn (🩶 experimental)\", value: \"yarn\" },\n { label: \"pnpm (🩶 experimental)\", value: \"pnpm\" },\n { label: \"cnpm (🩶 experimental)\", value: \"cnpm\" }\n ];\n\n let selectedPackageManager: string | undefined;\n\n while (!selectedPackageManager || !packageManagers.find((item) => item.value === selectedPackageManager)) {\n selectedPackageManager = await consola.prompt(\"Please select a package manager:\", {\n type: \"select\",\n options: packageManagers\n });\n\n const experimentalManagers = [\"deno\", \"yarn\", \"pnpm\", \"cnpm\"];\n if (experimentalManagers.includes(selectedPackageManager)) {\n consola.warn(`⚠️ You've selected an experimental package manager: ${selectedPackageManager}`);\n console.log(\"> Experimental package managers may have compatibility \");\n console.log(\"> issues with monorepo designs and other advanced features.\");\n console.log(\"> \");\n console.log(\"> This is because the cookbook has not yet been made \");\n console.log(\"> compatible with their monorepo syntax. \");\n console.log(\"> \");\n console.log(\"> We strongly recommend using npm or bun to avoid \");\n console.log(\"> frustrating errors. \");\n console.log(\"> \");\n console.log(\"> When community volunteer contributions make this \");\n console.log(\"> package manager run smoothly without frustrating errors, \");\n console.log(\"> we will remove this warning and look forward to \");\n console.log(\"> supporting it. \");\n const confirm = await consola.prompt(`🚨 Are you sure you want to continue with ${selectedPackageManager}?`, {\n type: \"confirm\",\n initial: false\n });\n if (!confirm) {\n selectedPackageManager = undefined;\n consola.info(\"Please select a different package manager.\");\n continue;\n }\n }\n }\n\n if (selectedPackageManager === \"<cancel>\") {\n consola.info(\"Operation cancelled.\");\n exit(0);\n }\n\n consola.success(`Package manager selected: ${selectedPackageManager}`);\n\n consola.start(\"Finding the appropriate mirror..\");\n let selectedVersion = \"\";\n let selectedMirror = \"\";\n const mirrors = [\n \"https://registry.npmjs.org/\",\n \"https://registry.npmmirror.com/\",\n \"https://mirrors.cloud.tencent.com/npm/\",\n \"https://cdn.jsdelivr.net/npm/\"\n ];\n\n for (const mirror of mirrors) {\n try {\n consola.info(`Trying mirror: ${mirror}`);\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 5000);\n const response = await fetch(`${mirror}${packageName}`, {\n signal: controller.signal,\n });\n clearTimeout(timeout);\n\n if (!response.ok) continue;\n\n const packageInfo: any = await response.json();\n if (!packageInfo || !packageInfo[\"dist-tags\"] || !packageInfo[\"dist-tags\"].latest) continue;\n\n selectedMirror = mirror;\n selectedVersion = packageInfo[\"dist-tags\"].latest;\n consola.success(`Found version ${selectedVersion} at ${mirror}`);\n break;\n } catch (error: any) {\n consola.warn(`Mirror unavailable: ${error?.message ?? error}`);\n }\n }\n\n if (!selectedMirror) {\n consola.error(\"Failed to detect latest version from all mirrors\");\n exit(1);\n }\n\n const downloadUrl = `${selectedMirror}${packageName}/-/${packageName.split('/')[1]}-${selectedVersion}.tgz`;\n consola.start(`Downloading package from ${downloadUrl}`);\n\n try {\n const res = await fetch(downloadUrl);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n\n const destination = join(tempspace, \"package.tgz\");\n if (existsSync(destination)) await remove(destination);\n\n const fileStream = createWriteStream(destination);\n await finished(Readable.fromWeb(res.body!).pipe(fileStream));\n consola.success(\"Package downloaded successfully\");\n } catch (error: any) {\n consola.error(`Download failed: ${error?.message ?? error}`);\n exit(1);\n }\n\n consola.start(\"Extracting package..\");\n try {\n const tempExtractDir = join(tempspace, `extract-${Date.now()}`);\n if (!existsSync(tempExtractDir)) mkdirSync(tempExtractDir);\n await compressing.tgz.uncompress(join(tempspace, \"package.tgz\"), tempExtractDir);\n const templateDir = join(tempExtractDir, \"package\", \"template\");\n if (!existsSync(templateDir)) {\n consola.error(\"Template directory not found in package\");\n exit(1);\n }\n copySync(templateDir, currentWriteDir);\n await remove(tempExtractDir);\n await remove(join(tempspace, \"package.tgz\"));\n consola.success(\"Package extracted and temporary.\");\n } catch (error: any) {\n consola.error(`Extraction failed: ${error?.message ?? error}`);\n exit(1);\n }\n\n consola.start(\"Processing template files...\");\n\n const projectName = basename(currentWriteDir);\n const processFile = async (filePath: string, projectName: string) => {\n try {\n const stats = await statAsync(filePath);\n if (stats.isDirectory()) {\n const files = await readdirAsync(filePath);\n await Promise.all(files.map(file => processFile(join(filePath, file), projectName)));\n return;\n }\n if (stats.size > 1024 * 1024) return;\n\n const fileName = basename(filePath);\n if (fileName.endsWith('.template')) {\n const newFileName = fileName.slice(0, -9);\n const newFilePath = join(dirname(filePath), newFileName);\n renameSync(filePath, newFilePath);\n filePath = newFilePath;\n }\n\n const content = await readFile(filePath, 'utf8');\n if (content.includes('REPLACE-YOUR-REPOSITORY-NAME')) {\n const newContent = content.replace(/REPLACE-YOUR-REPOSITORY-NAME/g, projectName);\n await writeFile(filePath, newContent, 'utf8');\n }\n } catch (error: any) {\n consola.warn(`Failed to process file ${filePath}: ${error?.message ?? error}`);\n }\n };\n\n try {\n await processFile(currentWriteDir, projectName);\n consola.success(\"Template processing completed successfully\");\n } catch (error: any) {\n consola.error(`Template processing failed: ${error?.message ?? error}`);\n exit(1);\n }\n\n try {\n const cookbookTomlPath = join(currentWriteDir, \"cookbook.toml\");\n if (await exists(cookbookTomlPath)) {\n const cookbookTomlContent = await readFile(cookbookTomlPath, 'utf8');\n const updatedContent = cookbookTomlContent.replace(\n /packageManager = \"bun\"/g,\n `packageManager = \"${selectedPackageManager}\"`\n );\n await writeFile(cookbookTomlPath, updatedContent, 'utf8');\n }\n } catch (error: any) {\n consola.warn(`Failed to update package manager in cookbook.toml: ${error?.message ?? error}`);\n }\n\n if (selectedMirror !== \"https://registry.npmjs.org/\" && selectedPackageManager) {\n if (selectedPackageManager === \"npm\") {\n const npmrcContent = `registry=${selectedMirror}\\n`;\n await writeFile(join(currentWriteDir, \".npmrc\"), npmrcContent, 'utf8');\n } else if (selectedPackageManager === \"bun\") {\n const bunfigContent = `[install]\\nregistry = \"${selectedMirror}\"\\n`;\n await writeFile(join(currentWriteDir, \"bunfig.toml\"), bunfigContent, 'utf8');\n }\n }\n\n consola.success(\"✨ Initialized successfully! Now, let's create your first Milkio project.\");\n console.log(\"\");\n await (await (import(\"./create.ts\"))).default(utils, \"@milkio/template-milkio\");\n});\n",
|
|
373
|
+
"import consola from \"consola\";\nimport { exists, writeFile, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { cwd, exit } from \"node:process\";\nimport { select } from \"./select\";\nimport { homedir } from \"node:os\";\n\nexport async function handleNonCookbookPkgMgr(): Promise<string | undefined> {\n if (await exists(join(cwd(), \"cookbook.toml\"))) return undefined;\n if ((await exists(join(cwd(), \"..\", \"cookbook.toml\"))) && join(homedir(), \"cookbook.toml\") !== join(cwd(), \"..\", \"cookbook.toml\")) {\n consola.error(\"Please run this command in the root directory of the cookbook monorepo, not in a cookbook internal.\");\n exit(1);\n }\n if ((await exists(join(cwd(), \"..\", \"..\", \"cookbook.toml\"))) && join(homedir(), \"cookbook.toml\") !== join(cwd(), \"..\", \"..\", \"cookbook.toml\")) {\n consola.error(\"Please run this command in the root directory of the cookbook monorepo, not in a cookbook project internal.\");\n exit(1);\n }\n\n let pkgMgr: string | undefined;\n if (!(await exists(join(cwd(), \".pkgrc\")))) {\n consola.warn(\"This is not a cookbook monorepo, so you need to tell me which package manager you want to use. I will store your configuration in the.pkgrc file, and you won't have to make the same selection again in the future.\");\n const packageManager = await select(\"Which package manager do you want to use:\", [{ value: \"npm\" }, { value: \"bun\" }, { value: \"yarn\" }, { value: \"pnpm\" }], \"value\");\n pkgMgr = packageManager.value;\n await writeFile(join(cwd(), \".pkgrc\"), packageManager.value);\n }\n if (!pkgMgr) pkgMgr = await readFile(join(cwd(), \".pkgrc\"), \"utf-8\");\n\n return pkgMgr;\n}\n",
|
|
374
|
+
"import { cwd, exit } from \"node:process\";\nimport { execScript } from \"../utils/exec-script\";\nimport { defineCookbookCommand } from \"@milkio/cookbook-command\";\nimport { selectProject } from \"../utils/select-project\";\nimport consola from \"consola\";\nimport { handleNonCookbookPkgMgr } from \"../utils/handle-non-cookbook-pkg-mgr\";\n\nexport default await defineCookbookCommand(async (utils) => {\n const params = utils.getParams();\n let pkgMgr = await handleNonCookbookPkgMgr();\n let path = cwd();\n\n if (!pkgMgr) {\n const cookbookToml = await utils.getCookbookToml();\n if (params.commands.length !== 0) {\n const project = await selectProject(cookbookToml, {\n withRoot: true,\n });\n if (\n project.value !== \"<root>\" &&\n params.commands.find((command) => {\n if (command === \"milkio\") return true;\n if (command.startsWith(\"@milkio/\")) return true;\n if (command === \"typescript\") return true;\n if (command === \"@biomejs/biome\") return true;\n if (command === \"typia\") return true;\n if (command === \"vitest\") return true;\n if (command === \"jest\") return true;\n if (command === \"eslint\") return true;\n return false;\n })\n ) {\n consola.warn(\n \"You seem to be installing milkio-related packages or some common public packages. We recommend that you install these packages in the root directory so that you can upgrade all monorepo packages uniformly. Otherwise, it may be painful for you to upgrade these public package versions for each monorepo in the future.\",\n );\n if (!(await consola.prompt(`🐱 Now, do you still want to install these packages in ${project.value} instead of the root directory?`, { type: \"confirm\" }))) {\n consola.success(\"Installation cancelled. You can choose the location <root> during installation.\");\n exit(0);\n }\n }\n path = project.path;\n }\n pkgMgr = cookbookToml.general.packageManager;\n }\n\n const command = `${pkgMgr} install ${params.raw.join(\" \")}`;\n await execScript(command, {\n cwd: path,\n });\n});\n",
|
|
375
|
+
"import { cwd } from \"node:process\";\nimport { execScript } from \"../utils/exec-script\";\nimport { defineCookbookCommand } from \"@milkio/cookbook-command\";\nimport { selectProject } from \"../utils/select-project\";\nimport { handleNonCookbookPkgMgr } from \"../utils/handle-non-cookbook-pkg-mgr\";\n\nexport default await defineCookbookCommand(async (utils) => {\n const params = utils.getParams();\n let pkgMgr = await handleNonCookbookPkgMgr();\n let path = cwd();\n\n if (!pkgMgr) {\n const cookbookToml = await utils.getCookbookToml();\n const params = utils.getParams();\n if (params.commands.length !== 0) {\n const project = await selectProject(cookbookToml, {\n withRoot: true,\n });\n path = project.path;\n }\n pkgMgr = cookbookToml.general.packageManager;\n }\n const command = `${pkgMgr} uninstall ${params.raw.join(\" \")}`;\n await execScript(command, {\n cwd: path,\n });\n});\n",
|
|
376
|
+
"import { defineCookbookCommand } from \"@milkio/cookbook-command\";\nimport { getCookbookToml } from \"../utils/get-cookbook-toml\";\nimport { join } from \"node:path\";\nimport { cwd, exit } from \"node:process\";\nimport consola from \"consola\";\nimport { execScript } from \"../utils/exec-script\";\nimport { selectMode } from \"../utils/select-mode\";\nimport { progress } from \"../progress\";\nimport { calcHash } from \"../utils/calc-hash\";\n\nexport default await defineCookbookCommand(async (utils) => {\n const cookbookToml = Bun.file(join(cwd(), \"cookbook.toml\"));\n if (!(await cookbookToml.exists())) {\n consola.error(`The \"cookbook.toml\" file does not exist in the current directory: ${join(cwd())}`);\n exit(0);\n }\n const cookbookTomlText = await cookbookToml.text();\n const cookbookTomlHash = calcHash(cookbookTomlText);\n const options = await getCookbookToml(cookbookTomlText, progress);\n options.hash = cookbookTomlHash;\n\n const params = utils.getParams();\n const mode = await selectMode(options);\n\n progress.open(\"cookbook building..\");\n const { initWatcher } = await import(\"../watcher\");\n await initWatcher(options, mode, false);\n progress.close(\"\");\n\n for (const key in options.projects ?? []) {\n const project = options.projects[key];\n if (params.commands.length > 0 && !params.commands.includes(key)) continue;\n\n await execScript(`${project.build ?? `${options.general.packageManager} run build`}`, {\n cwd: join(cwd(), \"projects\", key),\n env: {\n COOKBOOK_MODE: mode,\n },\n });\n }\n\n consola.success(\"Cookbook builded!\");\n});\n",
|
|
377
|
+
"// This file is autogenerated. It's used to publish CJS to npm.\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.tinycolor = factory());\n})(this, (function () { 'use strict';\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n\n // https://github.com/bgrins/TinyColor\n // Brian Grinstead, MIT License\n\n var trimLeft = /^\\s+/;\n var trimRight = /\\s+$/;\n function tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n this._ok = rgb.ok;\n }\n tinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function triad() {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function tetrad() {\n return this._applyCombination(polyad, [4]);\n }\n };\n\n // If input is an object, force 1 into \"1.0\" to handle ratios properly\n // String input requires \"1.0\" as input, so 1 will be treated as 1\n tinycolor.fromRatio = function (color, opts) {\n if (_typeof(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n };\n\n // Given a string or object, convert that input to RGB\n // Possible string inputs:\n //\n // \"red\"\n // \"#f00\" or \"f00\"\n // \"#ff0000\" or \"ff0000\"\n // \"#ff000000\" or \"ff000000\"\n // \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n // \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n // \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n // \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n // \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n // \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n // \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n //\n function inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a\n };\n }\n\n // Conversion Functions\n // --------------------\n\n // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n // <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n // `rgbToRgb`\n // Handle bounds / percentage checking to conform to CSS color spec\n // <http://www.w3.org/TR/css3-color/>\n // *Assumes:* r, g, b in [0, 255] or [0, 1]\n // *Returns:* { r, g, b } in [0, 255]\n function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n }\n\n // `rgbToHsl`\n // Converts an RGB color value to HSL.\n // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n // *Returns:* { h, s, l } in [0,1]\n function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n }\n\n // `hslToRgb`\n // Converts an HSL color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n }\n\n // `rgbToHsv`\n // Converts an RGB color value to HSV\n // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n // *Returns:* { h, s, v } in [0,1]\n function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n }\n\n // `hsvToRgb`\n // Converts an HSV color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n }\n\n // `rgbToHex`\n // Converts an RGB color to hex\n // Assumes r, g, and b are contained in the set [0, 255]\n // Returns a 3 or 6 character hex\n function rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n }\n\n // `rgbaToHex`\n // Converts an RGBA color plus alpha transparency to hex\n // Assumes r, g, b are contained in the set [0, 255] and\n // a in [0, 1]. Returns a 4 or 8 character rgba hex\n function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n }\n\n // `rgbaToArgbHex`\n // Converts an RGBA color to an ARGB Hex8 string\n // Rarely used, but required for \"toFilter()\"\n function rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n return hex.join(\"\");\n }\n\n // `equals`\n // Can be called with any tinycolor input\n tinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n };\n tinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random()\n });\n };\n\n // Modification Functions\n // ----------------------\n // Thanks to less.js for some of the basics here\n // <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\n function _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n function _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n function _greyscale(color) {\n return tinycolor(color).desaturate(100);\n }\n function _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n function _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n }\n function _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n\n // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n // Values outside of this range will be wrapped into this range.\n function _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n }\n\n // Combination Functions\n // ---------------------\n // Thanks to jQuery xColor for some of the ideas behind these\n // <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\n function _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n }\n function polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({\n h: (hsl.h + i * step) % 360,\n s: hsl.s,\n l: hsl.l\n }));\n }\n return result;\n }\n function _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n }\n function _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n }\n function _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n }\n\n // Utility Functions\n // ---------------------\n\n tinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n };\n\n // Readability Functions\n // ---------------------\n // <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n // `contrast`\n // Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\n tinycolor.readability = function (color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n return (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05);\n };\n\n // `isReadable`\n // Ensure that foreground and background color combinations meet WCAG2 guidelines.\n // The third argument is an optional Object.\n // the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n // the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n // If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n // *Example*\n // tinycolor.isReadable(\"#000\", \"#111\") => false\n // tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\n tinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n };\n\n // `mostReadable`\n // Given a base color and a list of possible foreground or background\n // colors for that base, returns the most readable color.\n // Optionally returns Black or White if the most readable color is unreadable.\n // *Example*\n // tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n // tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n // tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n // tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\n tinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n };\n\n // Big List of Colors\n // ------------------\n // <https://www.w3.org/TR/css-color-4/#named-colors>\n var names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n };\n\n // Make it easy to access colors via `hexNames[hex]`\n var hexNames = tinycolor.hexNames = flip(names);\n\n // Utilities\n // ---------\n\n // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\n function flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n }\n\n // Return a valid alpha value [0,1] with all invalid values being set to 1\n function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n }\n\n // Take input from [0, n] and return it as [0, 1]\n function bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n }\n\n // Force a number between 0 and 1\n function clamp01(val) {\n return Math.min(1, Math.max(0, val));\n }\n\n // Parse a base-16 hex value into a base-10 integer\n function parseIntFromHex(val) {\n return parseInt(val, 16);\n }\n\n // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n // <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n function isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n }\n\n // Check to see if string passed in is a percentage\n function isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n }\n\n // Force a hex value to have 2 characters\n function pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n }\n\n // Replace a decimal with it's percentage value\n function convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n }\n\n // Converts a decimal to a hex value\n function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n }\n // Converts a hex value to a decimal\n function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n }\n var matchers = function () {\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n }();\n\n // `isValidCSSUnit`\n // Take in a single string / number and check to see if it looks like a CSS unit\n // (see `matchers` above for definition).\n function isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n }\n\n // `stringInputToObject`\n // Permissive string parsing. Take in a number of formats, and output an object\n // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n function stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n }\n function validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n level: \"AA\",\n size: \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n level: level,\n size: size\n };\n }\n\n return tinycolor;\n\n}));\n",
|
|
378
|
+
"const tinycolor = require('tinycolor2');\n\n/**\n * @typedef {Object} TinyGradient.StopInput\n * @property {ColorInput} color\n * @property {number} pos\n */\n\n/**\n * @typedef {Object} TinyGradient.StepValue\n * @type {number} [r]\n * @type {number} [g]\n * @type {number} [b]\n * @type {number} [h]\n * @type {number} [s]\n * @type {number} [v]\n * @type {number} [a]\n */\n\n/**\n * @type {StepValue}\n */\nconst RGBA_MAX = { r: 256, g: 256, b: 256, a: 1 };\n\n/**\n * @type {StepValue}\n */\nconst HSVA_MAX = { h: 360, s: 1, v: 1, a: 1 };\n\n/**\n * Linearly compute the step size between start and end (not normalized)\n * @param {StepValue} start\n * @param {StepValue} end\n * @param {number} steps - number of desired steps\n * @return {StepValue}\n */\nfunction stepize(start, end, steps) {\n let step = {};\n\n for (let k in start) {\n if (start.hasOwnProperty(k)) {\n step[k] = steps === 0 ? 0 : (end[k] - start[k]) / steps;\n }\n }\n\n return step;\n}\n\n/**\n * Compute the final step color\n * @param {StepValue} step - from `stepize`\n * @param {StepValue} start\n * @param {number} i - color index\n * @param {StepValue} max - rgba or hsva of maximum values for each channel\n * @return {StepValue}\n */\nfunction interpolate(step, start, i, max) {\n let color = {};\n\n for (let k in start) {\n if (start.hasOwnProperty(k)) {\n color[k] = step[k] * i + start[k];\n color[k] = color[k] < 0 ? color[k] + max[k] : (max[k] !== 1 ? color[k] % max[k] : color[k]);\n }\n }\n\n return color;\n}\n\n/**\n * Generate gradient with RGBa interpolation\n * @param {StopInput} stop1\n * @param {StopInput} stop2\n * @param {number} steps\n * @return {tinycolor[]} color1 included, color2 excluded\n */\nfunction interpolateRgb(stop1, stop2, steps) {\n const start = stop1.color.toRgb();\n const end = stop2.color.toRgb();\n const step = stepize(start, end, steps);\n let gradient = [stop1.color];\n\n for (let i = 1; i < steps; i++) {\n const color = interpolate(step, start, i, RGBA_MAX);\n gradient.push(tinycolor(color));\n }\n\n return gradient;\n}\n\n/**\n * Generate gradient with HSVa interpolation\n * @param {StopInput} stop1\n * @param {StopInput} stop2\n * @param {number} steps\n * @param {boolean|'long'|'short'} mode\n * @return {tinycolor[]} color1 included, color2 excluded\n */\nfunction interpolateHsv(stop1, stop2, steps, mode) {\n const start = stop1.color.toHsv();\n const end = stop2.color.toHsv();\n\n // rgb interpolation if one of the steps in grayscale\n if (start.s === 0 || end.s === 0) {\n return interpolateRgb(stop1, stop2, steps);\n }\n\n let trigonometric;\n if (typeof mode === 'boolean') {\n trigonometric = mode;\n }\n else {\n const trigShortest = (start.h < end.h && end.h - start.h < 180) || (start.h > end.h && start.h - end.h > 180);\n trigonometric = (mode === 'long' && trigShortest) || (mode === 'short' && !trigShortest);\n }\n\n const step = stepize(start, end, steps);\n let gradient = [stop1.color];\n\n // recompute hue\n let diff;\n if ((start.h <= end.h && !trigonometric) || (start.h >= end.h && trigonometric)) {\n diff = end.h - start.h;\n }\n else if (trigonometric) {\n diff = 360 - end.h + start.h;\n }\n else {\n diff = 360 - start.h + end.h;\n }\n step.h = Math.pow(-1, trigonometric ? 1 : 0) * Math.abs(diff) / steps;\n\n for (let i = 1; i < steps; i++) {\n const color = interpolate(step, start, i, HSVA_MAX);\n gradient.push(tinycolor(color));\n }\n\n return gradient;\n}\n\n/**\n * Compute substeps between each stops\n * @param {StopInput[]} stops\n * @param {number} steps\n * @return {number[]}\n */\nfunction computeSubsteps(stops, steps) {\n const l = stops.length;\n\n // validation\n steps = parseInt(steps, 10);\n\n if (isNaN(steps) || steps < 2) {\n throw new Error('Invalid number of steps (< 2)');\n }\n if (steps < l) {\n throw new Error('Number of steps cannot be inferior to number of stops');\n }\n\n // compute substeps from stop positions\n let substeps = [];\n\n for (let i = 1; i < l; i++) {\n const step = (steps - 1) * (stops[i].pos - stops[i - 1].pos);\n substeps.push(Math.max(1, Math.round(step)));\n }\n\n // adjust number of steps\n let totalSubsteps = 1;\n for (let n = l - 1; n--;) totalSubsteps += substeps[n];\n\n while (totalSubsteps !== steps) {\n if (totalSubsteps < steps) {\n const min = Math.min.apply(null, substeps);\n substeps[substeps.indexOf(min)]++;\n totalSubsteps++;\n }\n else {\n const max = Math.max.apply(null, substeps);\n substeps[substeps.indexOf(max)]--;\n totalSubsteps--;\n }\n }\n\n return substeps;\n}\n\n/**\n * Compute the color at a specific position\n * @param {StopInput[]} stops\n * @param {number} pos\n * @param {string} method\n * @param {StepValue} max\n * @returns {tinycolor}\n */\nfunction computeAt(stops, pos, method, max) {\n if (pos < 0 || pos > 1) {\n throw new Error('Position must be between 0 and 1');\n }\n\n let start, end;\n for (let i = 0, l = stops.length; i < l - 1; i++) {\n if (pos >= stops[i].pos && pos < stops[i + 1].pos) {\n start = stops[i];\n end = stops[i + 1];\n break;\n }\n }\n\n if (!start) {\n start = end = stops[stops.length - 1];\n }\n\n const step = stepize(start.color[method](), end.color[method](), (end.pos - start.pos) * 100);\n const color = interpolate(step, start.color[method](), (pos - start.pos) * 100, max);\n return tinycolor(color);\n}\n\nclass TinyGradient {\n /**\n * @param {StopInput[]|ColorInput[]} stops\n * @returns {TinyGradient}\n */\n constructor(stops) {\n // validation\n if (stops.length < 2) {\n throw new Error('Invalid number of stops (< 2)');\n }\n\n const havingPositions = stops[0].pos !== undefined;\n let l = stops.length;\n let p = -1;\n let lastColorLess = false;\n // create tinycolor objects and clean positions\n this.stops = stops.map((stop, i) => {\n const hasPosition = stop.pos !== undefined;\n if (havingPositions ^ hasPosition) {\n throw new Error('Cannot mix positionned and not posionned color stops');\n }\n\n if (hasPosition) {\n const hasColor = stop.color !== undefined;\n if (!hasColor && (lastColorLess || i === 0 || i === l - 1)) {\n throw new Error('Cannot define two consecutive position-only stops');\n }\n lastColorLess = !hasColor;\n\n stop = {\n color : hasColor ? tinycolor(stop.color) : null,\n colorLess: !hasColor,\n pos : stop.pos\n };\n\n if (stop.pos < 0 || stop.pos > 1) {\n throw new Error('Color stops positions must be between 0 and 1');\n }\n else if (stop.pos < p) {\n throw new Error('Color stops positions are not ordered');\n }\n p = stop.pos;\n }\n else {\n stop = {\n color: tinycolor(stop.color !== undefined ? stop.color : stop),\n pos : i / (l - 1)\n };\n }\n\n return stop;\n });\n\n if (this.stops[0].pos !== 0) {\n this.stops.unshift({\n color: this.stops[0].color,\n pos : 0\n });\n l++;\n }\n if (this.stops[l - 1].pos !== 1) {\n this.stops.push({\n color: this.stops[l - 1].color,\n pos : 1\n });\n }\n }\n\n /**\n * Return new instance with reversed stops\n * @return {TinyGradient}\n */\n reverse() {\n let stops = [];\n\n this.stops.forEach(function (stop) {\n stops.push({\n color: stop.color,\n pos : 1 - stop.pos\n });\n });\n\n return new TinyGradient(stops.reverse());\n }\n\n /**\n * Return new instance with looped stops\n * @return {TinyGradient}\n */\n loop() {\n let stops1 = [];\n let stops2 = [];\n\n this.stops.forEach((stop) => {\n stops1.push({\n color: stop.color,\n pos : stop.pos / 2\n });\n });\n\n this.stops.slice(0, -1).forEach((stop) => {\n stops2.push({\n color: stop.color,\n pos : 1 - stop.pos / 2\n });\n });\n\n return new TinyGradient(stops1.concat(stops2.reverse()));\n }\n\n /**\n * Generate gradient with RGBa interpolation\n * @param {number} steps\n * @return {tinycolor[]}\n */\n rgb(steps) {\n const substeps = computeSubsteps(this.stops, steps);\n let gradient = [];\n\n this.stops.forEach((stop, i) => {\n if (stop.colorLess) {\n stop.color = interpolateRgb(this.stops[i - 1], this.stops[i + 1], 2)[1];\n }\n });\n\n for (let i = 0, l = this.stops.length; i < l - 1; i++) {\n const rgb = interpolateRgb(this.stops[i], this.stops[i + 1], substeps[i]);\n gradient.splice(gradient.length, 0, ...rgb);\n }\n\n gradient.push(this.stops[this.stops.length - 1].color);\n\n return gradient;\n }\n\n /**\n * Generate gradient with HSVa interpolation\n * @param {number} steps\n * @param {boolean|'long'|'short'} [mode=false]\n * - false to step in clockwise\n * - true to step in trigonometric order\n * - 'short' to use the shortest way\n * - 'long' to use the longest way\n * @return {tinycolor[]}\n */\n hsv(steps, mode) {\n const substeps = computeSubsteps(this.stops, steps);\n let gradient = [];\n\n this.stops.forEach((stop, i) => {\n if (stop.colorLess) {\n stop.color = interpolateHsv(this.stops[i - 1], this.stops[i + 1], 2, mode)[1];\n }\n });\n\n for (let i = 0, l = this.stops.length; i < l - 1; i++) {\n const hsv = interpolateHsv(this.stops[i], this.stops[i + 1], substeps[i], mode);\n gradient.splice(gradient.length, 0, ...hsv);\n }\n\n gradient.push(this.stops[this.stops.length - 1].color);\n\n return gradient;\n }\n\n /**\n * Generate CSS3 command (no prefix) for this gradient\n * @param {String} [mode=linear] - 'linear' or 'radial'\n * @param {String} [direction] - default is 'to right' or 'ellipse at center'\n * @return {String}\n */\n css(mode, direction) {\n mode = mode || 'linear';\n direction = direction || (mode === 'linear' ? 'to right' : 'ellipse at center');\n\n let css = mode + '-gradient(' + direction;\n this.stops.forEach(function (stop) {\n css += ', ' + (stop.colorLess ? '' : stop.color.toRgbString() + ' ') + (stop.pos * 100) + '%';\n });\n css += ')';\n return css;\n }\n\n /**\n * Returns the color at specific position with RGBa interpolation\n * @param {number} pos, between 0 and 1\n * @return {tinycolor}\n */\n rgbAt(pos) {\n return computeAt(this.stops, pos, 'toRgb', RGBA_MAX);\n }\n\n /**\n * Returns the color at specific position with HSVa interpolation\n * @param {number} pos, between 0 and 1\n * @return {tinycolor}\n */\n hsvAt(pos) {\n return computeAt(this.stops, pos, 'toHsv', HSVA_MAX);\n }\n}\n\n/**\n * @param {StopInput[]|ColorInput[]|StopInput...|ColorInput...} stops\n * @returns {TinyGradient}\n */\nmodule.exports = function (stops) {\n // varargs\n if (arguments.length === 1) {\n if (!Array.isArray(arguments[0])) {\n throw new Error('\"stops\" is not an array');\n }\n stops = arguments[0];\n }\n else {\n stops = Array.prototype.slice.call(arguments);\n }\n\n return new TinyGradient(stops);\n};\n",
|
|
379
|
+
"import chalk from 'chalk';\nimport tinygradient from 'tinygradient';\nconst gradient = (...colors) => {\n let gradient;\n let options;\n if (colors.length === 0) {\n throw new Error('Missing gradient colors');\n }\n if (!Array.isArray(colors[0])) {\n // Deprecated varargs syntax\n if (colors.length === 1) {\n throw new Error(`Expected an array of colors, received ${JSON.stringify(colors[0])}`);\n }\n gradient = tinygradient(...colors);\n }\n // New syntax: (colors[], options)\n else {\n gradient = tinygradient(colors[0]);\n options = validateOptions(colors[1]);\n }\n const fn = (str, deprecatedOptions) => {\n return applyGradient(str ? str.toString() : '', gradient, deprecatedOptions ?? options);\n };\n fn.multiline = (str, deprecatedOptions) => multiline(str ? str.toString() : '', gradient, deprecatedOptions ?? options);\n return fn;\n};\nconst getColors = (gradient, options, count) => {\n return options.interpolation?.toLowerCase() === 'hsv'\n ? gradient.hsv(count, options.hsvSpin?.toLowerCase() || false)\n : gradient.rgb(count);\n};\nfunction applyGradient(str, gradient, opts) {\n const options = validateOptions(opts);\n const colorsCount = Math.max(str.replace(/\\s/g, '').length, gradient.stops.length);\n const colors = getColors(gradient, options, colorsCount);\n let result = '';\n for (const s of str) {\n result += s.match(/\\s/g) ? s : chalk.hex(colors.shift()?.toHex() || '#000')(s);\n }\n return result;\n}\nexport function multiline(str, gradient, opts) {\n const options = validateOptions(opts);\n const lines = str.split('\\n');\n const maxLength = Math.max(...lines.map((l) => l.length), gradient.stops.length);\n const colors = getColors(gradient, options, maxLength);\n const results = [];\n for (const line of lines) {\n const lineColors = colors.slice(0);\n let lineResult = '';\n for (const l of line) {\n lineResult += chalk.hex(lineColors.shift()?.toHex() || '#000')(l);\n }\n results.push(lineResult);\n }\n return results.join('\\n');\n}\nfunction validateOptions(opts) {\n const options = { interpolation: 'rgb', hsvSpin: 'short', ...opts };\n if (opts !== undefined && typeof opts !== 'object') {\n throw new TypeError(`Expected \\`options\\` to be an \\`object\\`, got \\`${typeof opts}\\``);\n }\n if (typeof options.interpolation !== 'string') {\n throw new TypeError(`Expected \\`options.interpolation\\` to be \\`rgb\\` or \\`hsv\\`, got \\`${typeof options.interpolation}\\``);\n }\n if (options.interpolation.toLowerCase() === 'hsv' && typeof options.hsvSpin !== 'string') {\n throw new TypeError(`Expected \\`options.hsvSpin\\` to be a \\`short\\` or \\`long\\`, got \\`${typeof options.hsvSpin}\\``);\n }\n return options;\n}\nconst aliases = {\n atlas: { colors: ['#feac5e', '#c779d0', '#4bc0c8'], options: {} },\n cristal: { colors: ['#bdfff3', '#4ac29a'], options: {} },\n teen: { colors: ['#77a1d3', '#79cbca', '#e684ae'], options: {} },\n mind: { colors: ['#473b7b', '#3584a7', '#30d2be'], options: {} },\n morning: { colors: ['#ff5f6d', '#ffc371'], options: { interpolation: 'hsv' } },\n vice: { colors: ['#5ee7df', '#b490ca'], options: { interpolation: 'hsv' } },\n passion: { colors: ['#f43b47', '#453a94'], options: {} },\n fruit: { colors: ['#ff4e50', '#f9d423'], options: {} },\n instagram: { colors: ['#833ab4', '#fd1d1d', '#fcb045'], options: {} },\n retro: {\n colors: ['#3f51b1', '#5a55ae', '#7b5fac', '#8f6aae', '#a86aa4', '#cc6b8e', '#f18271', '#f3a469', '#f7c978'],\n options: {},\n },\n summer: { colors: ['#fdbb2d', '#22c1c3'], options: {} },\n rainbow: { colors: ['#ff0000', '#ff0100'], options: { interpolation: 'hsv', hsvSpin: 'long' } },\n pastel: { colors: ['#74ebd5', '#74ecd5'], options: { interpolation: 'hsv', hsvSpin: 'long' } },\n};\nfunction gradientAlias(alias) {\n const result = (str) => gradient(...alias.colors)(str, alias.options);\n result.multiline = (str = '') => gradient(...alias.colors).multiline(str, alias.options);\n return result;\n}\nexport default gradient;\nexport const atlas = gradientAlias(aliases.atlas);\nexport const cristal = gradientAlias(aliases.cristal);\nexport const teen = gradientAlias(aliases.teen);\nexport const mind = gradientAlias(aliases.mind);\nexport const morning = gradientAlias(aliases.morning);\nexport const vice = gradientAlias(aliases.vice);\nexport const passion = gradientAlias(aliases.passion);\nexport const fruit = gradientAlias(aliases.fruit);\nexport const instagram = gradientAlias(aliases.instagram);\nexport const retro = gradientAlias(aliases.retro);\nexport const summer = gradientAlias(aliases.summer);\nexport const rainbow = gradientAlias(aliases.rainbow);\nexport const pastel = gradientAlias(aliases.pastel);\n// Deprecated exports\ngradient.atlas = atlas;\ngradient.cristal = cristal;\ngradient.teen = teen;\ngradient.mind = mind;\ngradient.morning = morning;\ngradient.vice = vice;\ngradient.passion = passion;\ngradient.fruit = fruit;\ngradient.instagram = instagram;\ngradient.retro = retro;\ngradient.summer = summer;\ngradient.rainbow = rainbow;\ngradient.pastel = pastel;\n",
|
|
380
|
+
"import consola from \"consola\";\nimport { join } from \"node:path\";\nimport { cwd, exit } from \"node:process\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport { defineCookbookCommand } from \"@milkio/cookbook-command\";\nimport gradient from \"gradient-string\";\nimport { $ } from \"bun\";\n\nexport default await defineCookbookCommand(async (utils) => {\n const params = utils.getParams();\n const cookbookToml = await utils.getCookbookToml();\n const packageJson = JSON.parse(await readFile(join(cwd(), \"package.json\"), \"utf-8\"));\n\n const color = gradient([\"cyan\", \"#2d9b87\"]);\n\n let result = params.commands[0] || \"\";\n if (!result) {\n result = await consola.prompt(\"Which version do you want to upgrade cookbook and milkio to?\", {\n type: \"text\",\n placeholder: \"latest\",\n });\n }\n\n if (typeof result === \"symbol\") {\n consola.error(\"Cancelled.\");\n exit(0);\n }\n\n if (typeof result === \"string\" && !/^(\\d+)\\.(\\d+)\\.(\\d+)((-rc|-beta|-alpha)\\.(\\d+))?$/.test(result) && result !== \"latest\") {\n consola.error(\"The version number is not entered or the format is incorrect.\");\n exit(0);\n }\n\n if (!result || result === \"latest\") {\n const packageName = \"milkio\";\n const MIRRORS = [\"https://registry.npmjs.org/\", \"https://registry.npmmirror.com/\", \"https://mirrors.cloud.tencent.com/npm/\", \"https://cdn.jsdelivr.net/npm/\"];\n\n let packageInfo: any = null;\n\n for (const mirror of MIRRORS) {\n const packageUrl = `${mirror}${packageName}`;\n\n try {\n consola.start(`Checking package on mirror: ${mirror}`);\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 5000);\n\n const response = await fetch(packageUrl, {\n signal: controller.signal,\n });\n clearTimeout(timeout);\n\n if (!response.ok) {\n consola.info(`Unavailable response from ${mirror}`);\n continue;\n }\n\n const jsonData: any = await response.json();\n if (jsonData.name !== packageName) {\n consola.info(`Invalid package data from ${mirror}`);\n continue;\n }\n\n packageInfo = { mirror, data: jsonData };\n consola.success(`Package found on mirror: ${mirror}`);\n break;\n } catch (error) {\n const errorType = error instanceof Error ? error.message : \"Unknown error\";\n consola.info(`Mirror ${mirror} failed: ${errorType}`);\n }\n }\n\n if (!packageInfo) {\n consola.error(`All mirrors failed to provide valid data for package '${packageName}'`);\n exit(0);\n }\n\n result = packageInfo.data[\"dist-tags\"].latest;\n }\n\n if (\"dependencies\" in packageJson) {\n for (const key in packageJson.dependencies) {\n if (key === \"milkio\" || key.startsWith(\"@milkio/\")) packageJson.dependencies[key] = result;\n }\n }\n\n if (\"devDependencies\" in packageJson) {\n for (const key in packageJson.devDependencies) {\n if (key === \"milkio\" || key.startsWith(\"@milkio/\")) packageJson.devDependencies[key] = result;\n }\n }\n\n if (\"peerDependencies\" in packageJson) {\n for (const key in packageJson.peerDependencies) {\n if (key === \"milkio\" || key.startsWith(\"@milkio/\")) packageJson.peerDependencies[key] = result;\n }\n }\n\n await writeFile(join(cwd(), \"package.json\"), JSON.stringify(packageJson, null, 2));\n\n const cmd = `${cookbookToml.general.packageManager} install`;\n if (await consola.prompt(`Do you want to install dependencies now? (${cmd})`, { type: \"confirm\" })) {\n try {\n await $`${{ raw: cmd }}`;\n } catch (error) {\n consola.warn(\"Failed to install dependencies, please run it manually.\");\n }\n }\n\n console.log(\"\");\n consola.info(color(\"△ Milkio upgrade completed!\"));\n consola.info(color(\"△ Also remember to upgrade your cookbook by running:\"));\n consola.info(color(` ${cookbookToml.general.packageManager} create cookbook@${result}`));\n});\n",
|
|
381
|
+
"import { defineCookbookCommand } from \"@milkio/cookbook-command\";\nimport packageJson from \"../../package.json\" with { type: \"json\" };\n\nexport default await defineCookbookCommand(async (utils) => {\n console.log(packageJson.version);\n});\n",
|
|
382
|
+
"import { defineCookbookCommand } from \"@milkio/cookbook-command\";\nimport { getCookbookToml } from \"../utils/get-cookbook-toml\";\nimport { join } from \"node:path\";\nimport { cwd, exit } from \"node:process\";\nimport consola from \"consola\";\nimport { selectMode } from \"../utils/select-mode\";\nimport { progress } from \"../progress\";\nimport { calcHash } from \"../utils/calc-hash\";\n\nexport default await defineCookbookCommand(async (utils) => {\n const cookbookToml = Bun.file(join(cwd(), \"cookbook.toml\"));\n if (!(await cookbookToml.exists())) {\n consola.error(\n `The \"cookbook.toml\" file does not exist in the current directory: ${join(cwd())}`,\n );\n exit(0);\n }\n const cookbookTomlText = await cookbookToml.text();\n const cookbookTomlHash = calcHash(cookbookTomlText);\n const options = await getCookbookToml(cookbookTomlText, progress);\n options.hash = cookbookTomlHash;\n\n const mode = await selectMode(options);\n\n progress.open(\"cookbook building..\");\n const { initWatcher } = await import(\"../watcher\");\n await initWatcher(options, mode, false);\n progress.close(\"\");\n\n consola.success(\"Cookbook builded!\");\n});\n",
|
|
383
|
+
"import { search } from \"@inquirer/prompts\";\nimport { argv, cwd, exit } from \"node:process\";\nimport consola from \"consola\";\nimport { join } from \"node:path\";\nimport { exists, mkdir, writeFile } from \"node:fs/promises\";\nimport { readdir, readFile } from \"node:fs/promises\";\nimport { env } from \"bun\";\nimport { __router__ } from \"./commands/__router__\";\nimport { uniqWith } from \"lodash-es\";\nimport { execScript } from \"./utils/exec-script\";\nimport { createCommandUtils } from \"./commands/__utils__\";\nimport { handleNonCookbookPkgMgr } from \"./utils/handle-non-cookbook-pkg-mgr\";\n\nexport type Params = {\n command: string;\n commands: Array<string>;\n options: Record<string, string | true>;\n raw: Array<string>;\n subCommand?: string; // 新增子命令字段\n};\n\nexport async function cookbook() {\n const params: Params = {\n command: \"index\",\n commands: [],\n options: {},\n raw: [],\n };\n params.raw = argv.slice(3);\n\n for (const v of argv.slice(3)) {\n if (v.startsWith(\"--\") && v.includes(\"=\")) {\n const vSplited = v.split(\"=\");\n params.options[vSplited[0].slice(2)] = vSplited.slice(1, vSplited.length).join(\"=\");\n } else if (v.startsWith(\"--\")) {\n params.options[v.slice(2)] = \"1\";\n } else if (v.startsWith(\"-\") && v.includes(\"=\")) {\n const vSplited = v.split(\"=\");\n params.options[vSplited[0].slice(1)] = vSplited.slice(1, vSplited.length).join(\"=\");\n } else if (v.startsWith(\"-\")) {\n params.options[v.slice(1)] = \"1\";\n } else {\n params.commands.push(v);\n }\n }\n if (argv.length === 2) params.command = \"index\";\n if (argv.length !== 2) params.command = `${argv[2] ?? \"index\"}`;\n\n // 处理冒号分隔的子命令\n if (params.command.includes(\":\")) {\n const parts = params.command.split(\":\");\n params.command = parts[0];\n params.subCommand = parts.slice(1).join(\":\");\n }\n\n if (params.command.startsWith(\"--\")) params.command = params.command.slice(2);\n if (params.command.startsWith(\"-\") && params.command !== \"-\") params.command = params.command.slice(1);\n\n const packageJson = (await exists(join(cwd(), \"package.json\"))) ? JSON.parse(await readFile(join(cwd(), \"package.json\"), \"utf-8\")) : undefined;\n exists(join(env.HOME || env.USERPROFILE || \"/\", \".commands\"));\n if (!(await exists(join(env.HOME || env.USERPROFILE || \"/\", \".commands\")))) await mkdir(join(env.HOME || env.USERPROFILE || \"/\", \".commands\"));\n if (!(await exists(join(env.HOME || env.USERPROFILE || \"/\", \".commands\", \"package.json\"))))\n await writeFile(join(env.HOME || env.USERPROFILE || \"/\", \".commands\", \"package.json\"), JSON.stringify({ name: \"commands\", private: true, scripts: {}, dependencies: { \"@milkio/cookbook-command\": \"*\" }, devDependencies: {} }, null, 2));\n\n if (params.command === \"index\") {\n const commands = [\n {\n name: \"<cancel>\",\n value: \"<cancel>\",\n description: \"built-in\",\n },\n ] as Array<{ name: string; value: string; path?: string; description?: \"global\" | \"npm-script\" | \"workspace\" | \"built-in\" }>;\n\n for (const command of __router__) {\n if (command.hidden !== true) commands.push({ name: command.commands[0], value: command.commands[0], description: \"built-in\" });\n }\n\n if (await exists(join(cwd(), \"package.json\"))) {\n const packageJson = JSON.parse(await readFile(join(cwd(), \"package.json\"), \"utf-8\"));\n for (const key in packageJson?.scripts ?? {}) {\n commands.push({ name: key, value: key, path: key, description: \"npm-script\" });\n }\n }\n\n if (await exists(join(cwd(), \".commands\"))) {\n const dir = await readdir(join(cwd(), \".commands\"));\n const temp = [] as typeof commands;\n for (const file of dir) {\n if (!file.endsWith(\".command.ts\")) continue;\n const key = file.slice(0, -11);\n commands.push({ name: file.slice(0, -11), value: key, path: join(cwd(), \".commands\", file), description: \"workspace\" });\n }\n temp.sort((a, b) => a.name.localeCompare(b.name));\n commands.push(...temp);\n }\n\n if (await exists(join(env.HOME || env.USERPROFILE || \"/\", \".commands\"))) {\n const dir = await readdir(join(env.HOME || env.USERPROFILE || \"/\", \".commands\"));\n const temp = [] as typeof commands;\n for (const file of dir) {\n if (!file.endsWith(\".command.ts\")) continue;\n const key = file.slice(0, -11);\n commands.push({ name: file.slice(0, -11), value: key, path: join(cwd(), \".commands\", file), description: \"global\" });\n }\n temp.sort((a, b) => a.name.localeCompare(b.name));\n commands.push(...temp);\n }\n\n if (commands.length === 0) {\n consola.warn(\"There is no command yet.\");\n consola.info(\"Docs: https://github.com/akirarika/co\");\n return;\n }\n\n const containsCharsInOrder = (input: string, target: string): boolean => {\n let inputIndex = 0;\n for (const char of target) {\n if (char === input[inputIndex]) {\n inputIndex++;\n if (inputIndex === input.length) break;\n }\n }\n return inputIndex === input.length;\n };\n const calculateScore = (input: string, target: string) => {\n let maxContiguous = 0;\n let currentContiguous = 0;\n let firstMatchIndex = -1;\n\n let inputIndex = 0;\n for (let i = 0; i < target.length; i++) {\n if (target[i] === input[inputIndex]) {\n if (firstMatchIndex === -1) firstMatchIndex = i;\n currentContiguous++;\n inputIndex++;\n maxContiguous = Math.max(maxContiguous, currentContiguous);\n } else {\n currentContiguous = 0;\n }\n }\n\n return { maxContiguous, firstMatchIndex };\n };\n const selected = await search({\n message: \"What kind of command:\",\n source: async (input) => {\n if (!input) return commands;\n const filtered = commands.filter((command) => containsCharsInOrder(input.toLowerCase(), command.name.toLowerCase()));\n\n return uniqWith(filtered, (a, b) => a.value === b.value).sort((a, b) => {\n const scoreA = calculateScore(input, a.name);\n const scoreB = calculateScore(input, b.name);\n\n if (scoreB.maxContiguous !== scoreA.maxContiguous) {\n return scoreB.maxContiguous - scoreA.maxContiguous;\n }\n\n return scoreA.firstMatchIndex - scoreB.firstMatchIndex;\n });\n },\n });\n\n if (!selected || selected === \"<cancel>\") {\n consola.success(\"Cookbook cancelled\");\n exit(0);\n }\n params.command = selected;\n }\n\n const built = __router__.find((command) => command.commands.includes(params.command));\n\n if (built) {\n if (params.command === \"dev\") {\n const pkgMgr = await handleNonCookbookPkgMgr();\n if (!pkgMgr) await run(params, { script: built.script, description: \"built-in\" });\n else await run(params, { path: params.command, description: \"npm-script\", pkgMgr });\n } else {\n await run(params, { script: built.script, description: \"built-in\" });\n }\n } else {\n const pkgMgr = await handleNonCookbookPkgMgr();\n if (pkgMgr) {\n await run(params, { path: params.command, description: \"npm-script\", pkgMgr });\n } else if (packageJson?.scripts?.[params.command]) {\n await run(params, { path: params.command, description: \"npm-script\" });\n } else if (await exists(join(cwd(), \".commands\", `${params.command}.command.ts`))) {\n const modulePath = join(cwd(), \".commands\", `${params.command}.command.ts`);\n await run(params, { path: modulePath, description: \"workspace\" });\n } else if (await exists(join(env.HOME || env.USERPROFILE || \"/\", \".commands\", `${params.command}.command.ts`))) {\n const modulePath = join(env.HOME || env.USERPROFILE || \"/\", \".commands\", `${params.command}.command.ts`);\n await run(params, { path: modulePath, description: \"global\" });\n } else {\n // not found\n consola.error(`Command not found: ${params.command}`);\n console.log(\"\");\n exit(1);\n }\n }\n}\n\nexport async function run(params: Params, options: { path?: string; script?: () => Promise<any>; description?: \"global\" | \"npm-script\" | \"workspace\" | \"built-in\"; pkgMgr?: string }) {\n let packageManager: any;\n if (options.description === \"npm-script\") {\n if (!options.pkgMgr) {\n if (!(await exists(join(cwd(), \"cookbook.toml\")))) await run(params, { path: \"init\", description: \"workspace\" });\n const config: any = Bun.TOML.parse(await Bun.file(join(cwd(), \"cookbook.toml\")).text());\n if (!config.general.packageManager) {\n consola.error('You need to specify which package manager to use to run this command, modify your cookbook.toml file, and [general] bar to packageManager = \"npm\" or any custom package manager you like.');\n exit(1);\n }\n packageManager = config.general.packageManager;\n } else {\n packageManager = options.pkgMgr;\n }\n\n try {\n if (packageManager === \"bun\") {\n await execScript(`bun run ${[options.path!, ...params.raw].join(\" \")}`, { cwd: cwd() });\n }\n\n if (packageManager === \"npm\") {\n await execScript(`npm run ${[options.path!, ...params.raw].join(\" \")}`, { cwd: cwd() });\n }\n\n if (packageManager === \"cnpm\") {\n await execScript(`cnpm run ${[options.path!, ...params.raw].join(\" \")}`, { cwd: cwd() });\n }\n\n if (packageManager === \"yarn\") {\n await execScript(`yarn run ${[options.path!, ...params.raw].join(\" \")}`, { cwd: cwd() });\n }\n\n if (packageManager === \"pnpm\") {\n await execScript(`pnpm run ${[options.path!, ...params.raw].join(\" \")}`, { cwd: cwd() });\n }\n\n exit(0);\n } catch (error: any) {\n consola.error(error?.message ?? \"Running Error\");\n exit(1);\n }\n }\n\n if (options.description === \"built-in\") {\n try {\n const module = await options.script!();\n await module.default(await createCommandUtils(params, options));\n exit(0);\n } catch (error: any) {\n consola.error(error.toString ? error.toString() : (error?.message ?? \"Running Error\"));\n exit(1);\n }\n }\n\n try {\n if (!(await exists(options.path ?? \"\"))) {\n consola.error(`Command not found: ${options.path}`);\n exit(1);\n }\n const module = await import(options.path!);\n await module.default(await createCommandUtils(params, options));\n exit(0);\n } catch (error: any) {\n consola.error(error.toString ? error.toString() : (error?.message ?? \"Running Error\"));\n exit(1);\n }\n}\n",
|
|
384
|
+
"export const __router__ = [\n {\n commands: [\"dev\"],\n script: () => import(\"./dev.ts\"),\n },\n {\n commands: [\"drizzle\"],\n script: () => import(\"./drizzle.ts\"),\n },\n {\n hidden: true,\n commands: [\"test\"],\n script: () => import(\"./test.ts\"),\n },\n {\n hidden: true,\n commands: [\"create\"],\n script: () => import(\"./create.ts\"),\n },\n {\n hidden: true,\n commands: [\"x\", \"dlx\"],\n script: () => import(\"./download-and-execute.ts\"),\n },\n {\n hidden: true,\n commands: [\"init\"],\n script: () => import(\"./init.ts\"),\n },\n {\n hidden: true,\n commands: [\"install\", \"i\", \"add\"],\n script: () => import(\"./install.ts\"),\n },\n {\n hidden: true,\n commands: [\"uninstall\", \"remove\", \"rm\"],\n script: () => import(\"./uninstall.ts\"),\n },\n {\n hidden: true,\n commands: [\"build\"],\n script: () => import(\"./build.ts\"),\n },\n {\n hidden: true,\n commands: [\"upgrade\", \"up\"],\n script: () => import(\"./upgrade.ts\"),\n },\n {\n hidden: true,\n commands: [\"version\"],\n script: () => import(\"./version.ts\"),\n },\n {\n hidden: true,\n commands: [\"generate\"],\n script: () => import(\"./generate.ts\"),\n },\n];\n",
|
|
385
|
+
"import consola from \"consola\";\nimport { cwd } from \"node:process\";\nimport { spawn } from \"node:child_process\";\nimport type { Params } from \"..\";\nimport { progress } from \"../progress\";\nimport { fetchEventSource } from \"../utils/fetch-event-source\";\nimport { getCookbookToml } from \"../utils/get-cookbook-toml\";\nimport { selectProject } from \"../utils/select-project\";\n\nconst INVALID_HYPHEN_MSG = (str: string) => `Invalid hyphen string: ${str}. Only lowercase letters, numbers and hyphens allowed, and must be in hyphen-case format`;\nconst HYPHEN_STRING_REGEX = /^[a-z0-9]+(-[a-z0-9]+)*$/;\n\nexport async function createCommandUtils(params: Params, options: { path?: string; description?: \"global\" | \"npm-script\" | \"workspace\" | \"built-in\" }) {\n // Basic console methods\n const log = consola.log;\n const info = consola.info;\n const warn = consola.warn;\n const error = consola.error;\n const success = consola.success;\n const debug = consola.debug;\n const fatal = consola.fatal;\n const trace = consola.trace;\n const start = consola.start;\n const box = consola.box;\n const prompt = consola.prompt;\n\n // Path retrieval methods\n const getScriptPath = () => options.path!;\n const getWorkspacePath = () => cwd();\n const getCurrentParams = () => params;\n\n // User input methods\n const getBooleanInput = async (config: {\n env: string;\n message: string;\n placeholder?: string;\n }) => {\n if (config.env in params.options) {\n return params.options[config.env] === \"1\";\n }\n return consola.prompt(config.message, {\n type: \"confirm\",\n placeholder: config.placeholder,\n });\n };\n\n const getStringInput = async (config: {\n env: string;\n message: string;\n placeholder?: string;\n }) => {\n if (config.env in params.options) {\n return params.options[config.env];\n }\n return consola.prompt(config.message, {\n type: \"text\",\n placeholder: config.placeholder,\n });\n };\n\n // Progress control\n const startProgress = (message: string) => progress.open(message);\n const endProgress = (message: string) => progress.close(message);\n\n // String transformation helpers\n const validateHyphenString = (str: string) => {\n if (!HYPHEN_STRING_REGEX.test(str)) {\n throw new Error(INVALID_HYPHEN_MSG(str));\n }\n return str;\n };\n\n const toCamelCase = (str: string) => {\n const validated = validateHyphenString(str);\n return validated.replace(/-([a-z0-9])/g, (_, letter) => letter.toUpperCase());\n };\n\n const toPascalCase = (str: string) => {\n const camel = toCamelCase(str);\n return camel.charAt(0).toUpperCase() + camel.slice(1);\n };\n\n const toSnakeCase = (str: string) => {\n const validated = validateHyphenString(str);\n return validated.replace(/-/g, \"_\").toLowerCase();\n };\n\n const toConstantCase = (str: string) => {\n const validated = validateHyphenString(str);\n return validated.replace(/-/g, \"_\").toUpperCase();\n };\n\n // AI capability check\n let cookbookToml: Awaited<ReturnType<typeof getCookbookToml>>;\n\n const useAIConfig = async () => {\n cookbookToml ||= await getCookbookToml();\n const { aiModel, aiBaseUrl, aiApiKey, aiModelDeepResearch } = cookbookToml?.config || {};\n\n if (aiModel && aiBaseUrl && aiApiKey) {\n return {\n aiBaseUrl,\n aiApiKey,\n aiModel,\n aiModelDeepResearch: aiModelDeepResearch ?? aiModel,\n };\n }\n return undefined;\n };\n\n // Project selector\n const selectTargetProject = async (opts?: Parameters<typeof selectProject>[1]) => {\n return selectProject(await getCookbookToml(), opts);\n };\n\n // Cookbook config loader\n const loadCookbookConfig = async () => {\n if (cookbookToml) return cookbookToml;\n\n cookbookToml = await getCookbookToml();\n if (!cookbookToml.config) {\n cookbookToml.config = {};\n }\n return cookbookToml;\n };\n\n const runTestCommand = async () => {\n const module = await import(\"../commands/test\");\n return module.default({ ...utils } as any);\n };\n\n const runDrizzleCommand = async (command?: string, project?: string, mode?: string) => {\n const module = await import(\"../commands/drizzle\");\n return module.default({ ...utils } as any, command, project, mode);\n };\n\n // Command existence checker (supports PowerShell/Linux/Mac)\n const commandExists = async (cmd: string): Promise<boolean> => {\n try {\n return await new Promise<boolean>((resolve) => {\n const command = process.platform === \"win32\" ? \"powershell -Command Get-Command\" : \"command -v\";\n const child = spawn(command, [cmd], {\n shell: true,\n stdio: \"ignore\",\n });\n child.on(\"exit\", (code) => resolve(code === 0));\n child.on(\"error\", () => resolve(false));\n });\n } catch {\n return false;\n }\n };\n\n const gotoCommand = async (command: Promise<{ default: (...args: any[]) => any }>) => {\n await (await command).default(utils);\n };\n\n // Combined utilities\n const utils = {\n // Logging\n log,\n info,\n warn,\n error,\n success,\n debug,\n fatal,\n trace,\n start,\n box,\n prompt,\n\n // Path handling\n getScriptPath,\n getWorkspacePath,\n getParams: getCurrentParams,\n\n // User interaction\n inputBoolean: getBooleanInput,\n inputString: getStringInput,\n\n // Process control\n openProgress: startProgress,\n closeProgress: endProgress,\n\n // Capability checks\n useAIConfig: useAIConfig,\n fetchEventSource,\n\n // Project operations\n selectProject: selectTargetProject,\n getCookbookToml: loadCookbookConfig,\n\n // Command execution\n gotoCommand,\n gotoTestCommand: runTestCommand,\n gotoDrizzleCommand: runDrizzleCommand,\n\n // String transformations\n toCamelCase,\n toPascalCase,\n toSnakeCase,\n toConstantCase,\n\n // Command existence check\n commandExists,\n };\n\n return utils;\n}\n",
|
|
386
|
+
"export type SSEMessage = {\n data: any;\n event?: string;\n id?: string;\n};\n\nexport async function* fetchEventSource(input: string | URL | globalThis.Request, init?: RequestInit): AsyncIterableIterator<SSEMessage> {\n const response = await fetch(input, {\n ...init,\n headers: {\n Accept: \"text/event-stream\",\n ...init?.headers,\n },\n });\n\n if (!response.ok || !response.body) {\n throw new Error(`SSE request failed: ${response.statusText}`);\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n\n while (true) {\n const eventEndIndex = buffer.indexOf(\"\\n\\n\");\n if (eventEndIndex === -1) {\n break;\n }\n\n const eventData = buffer.slice(0, eventEndIndex);\n buffer = buffer.slice(eventEndIndex + 2);\n\n const message: SSEMessage = { data: \"\" };\n for (const line of eventData.split(\"\\n\")) {\n const colonIndex = line.indexOf(\":\");\n if (colonIndex === -1) continue;\n\n const field = line.slice(0, colonIndex).trim();\n const value = line.slice(colonIndex + 1).trim();\n\n switch (field) {\n case \"event\":\n message.event = value;\n break;\n case \"data\":\n message.data += `${value}\\n`;\n break;\n case \"id\":\n message.id = value;\n break;\n }\n }\n\n if (message.data && message.data.trim() !== \"\") {\n try {\n message.data = JSON.parse(message.data.trim());\n yield message;\n } catch (error) {}\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n}\n",
|
|
387
|
+
"#!/usr/bin/env bun\n\nimport { cookbook } from './src/index'\n\nawait cookbook();\n"
|
|
388
|
+
],
|
|
389
|
+
"mappings": "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AAG,GAAG,QAAQ,QAAQ,GAAG,GAAG,QAAQ,QAAQ,GAAG,GAAG,OAAO,IAAI,IAAI,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,GAAG,GAAG,OAAO,OAAO,GAAG,GAAG,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,G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,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK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,SAAS,aAAa,EAAc,CAAK,EAG1D,IAAM,EAAmB,CACvB,wBACA,eACA,QACF,EAEA,OAAO,EACJ,IAAI,CAAC,IAAS,CACb,GAAI,CAAC,EAAK,QAAS,OAAO,EAAK,MAE/B,IAAM,EAAQ,EAAK,MAEnB,GACG,CAAC,GAAS,6BACT,GAAyB,CAAK,GAC/B,CAAC,GAAS,8BACT,GAA0B,CAAK,EAEjC,GAA0B,EAAO,EAAW,OAAO,CAAI,CAAC,EAG1D,IAAM,EAAY,GAAW,EAAM,IACnC,OAAO,EAAU,EAAc,EAAO,EAAO,SAAU,CAAgB,EACxE,EACA,KAAK,EAAE,EAGZ,SAAS,EAAkB,CAAC,EAAO,CACjC,IAAM,EAAU,EAAM,MAAM,EAAmB,EAE/C,GAAI,CAAC,EACH,OAAO,EAGT,OAAO,EAAQ,GAAG,QAAQ,GAAmB,GAAG,MAlZ5C,GAKA,GAEA,GACA,GACA,iBApCN,KACA,KACA,KACA,KACA,KAKA,KACA,KAiBM,GACJ,wDAII,GAA6B,oCAE7B,GAAsB,eACtB,GAAoB,MACpB,GAAgC,qpEClCtC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OC/OA,eAAsB,EAAiB,CAAC,EAAwC,EAAsB,ECmB/F,SAAS,EAAoH,CAAC,EAAwB,EAAc,EAA2B,CAClM,IAAM,EAAS,CAAC,EAEhB,EAAO,EAAI,CACP,KAAM,CAAC,EACP,KAAM,IAAI,IACV,OAAQ,CAAC,IAAsB,CAC3B,GAAI,CAAC,EAAQ,mBAAoB,OACjC,OAAO,EAAQ,mBAAmB,EAAS,EAAO,EAAE,KAAM,EAAO,EAAE,IAAI,EAE/E,EAEA,IAAM,EAAY,CAAC,EAAa,IAAyB,CACrD,EAAO,EAAE,KAAK,IAAI,EAAK,CAAK,GAE1B,EAAY,CAAC,IAAkB,CAUjC,GAAI,EATc,EAAQ,kBACpB,EAAQ,kBACR,CAAC,IAAa,CAIZ,OAHA,EAAM,CAAC,GAAG,CAAG,EACb,EAAI,GAAK;AAAA,EAAK,EAAI,KAClB,QAAQ,IAAI,GAAG,CAAG,EACX,KAGA,CAAG,EAAG,OAAO,EAI5B,GAFA,EAAO,EAAE,KAAK,KAAK,CAAC,GAAG,CAAG,CAAC,EAEvB,EAAQ,QACH,GAAkB,EAAS,CA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",
|
|
390
|
+
"debugId": "0C12A6440DFA38BC64756E2164756E21",
|
|
391
|
+
"names": []
|
|
392
|
+
}
|