@wix/cli-app 1.1.11 → 1.1.12

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.
Files changed (81) hide show
  1. package/build/CreateVersionCommand-NUIIBF7A.js +4 -0
  2. package/build/{CreateVersionCommand-RHTO3DA7.js.map → CreateVersionCommand-NUIIBF7A.js.map} +1 -1
  3. package/build/DevCommand-BN25CWVP.js +4 -0
  4. package/build/{DevCommand-OFSQSCJW.js.map → DevCommand-BN25CWVP.js.map} +1 -1
  5. package/build/GenerateCommand-YJ27MSRT.js +99 -0
  6. package/build/GenerateCommand-YJ27MSRT.js.map +1 -0
  7. package/build/PreviewCommand-UC6TGBTC.js +4 -0
  8. package/build/ServeCommand-HWXGL7AV.js +4 -0
  9. package/build/{ServeCommand-R5SAKRKU.js.map → ServeCommand-HWXGL7AV.js.map} +1 -1
  10. package/build/{build-IS5AWEWP.js → build-RP6W4QEA.js} +2 -2
  11. package/build/chunk-6WJSV7WT.js +4 -0
  12. package/build/chunk-6WJSV7WT.js.map +1 -0
  13. package/build/chunk-B5HZNQJV.js +4 -0
  14. package/build/{chunk-2BVF7R6U.js → chunk-BGJWNKGZ.js} +2 -2
  15. package/build/{chunk-7WZDL63V.js → chunk-BO7BWQLZ.js} +2 -2
  16. package/build/{chunk-HNH75HDQ.js → chunk-D2SHWB76.js} +2 -2
  17. package/build/{chunk-QWDVUZEW.js → chunk-F2KYPCJP.js} +2 -2
  18. package/build/{chunk-7BWMEPZ3.js → chunk-F3BQNR6X.js} +2 -2
  19. package/build/{chunk-JWWXSIBF.js → chunk-FV67T4ZH.js} +2 -2
  20. package/build/{chunk-JWWXSIBF.js.map → chunk-FV67T4ZH.js.map} +1 -1
  21. package/build/{chunk-YHWDL3DF.js → chunk-G5KG2B42.js} +2 -2
  22. package/build/chunk-GCBXRNFB.js +75 -0
  23. package/build/chunk-GCBXRNFB.js.map +1 -0
  24. package/build/{chunk-RJ43KJ3G.js → chunk-K7GUDJFG.js} +2 -2
  25. package/build/{chunk-JCBTQBIR.js → chunk-OYUGDF7S.js} +2 -2
  26. package/build/chunk-PJ7ZZBC4.js +11 -0
  27. package/build/chunk-PJ7ZZBC4.js.map +1 -0
  28. package/build/{chunk-2MVU7B3I.js → chunk-RQK35Z3D.js} +4 -4
  29. package/build/chunk-RQK35Z3D.js.map +1 -0
  30. package/build/{chunk-5IXE5FNR.js → chunk-UJW3X3T2.js} +2 -2
  31. package/build/chunk-UZC2NC3I.js +4 -0
  32. package/build/chunk-UZC2NC3I.js.map +1 -0
  33. package/build/chunk-VOV46J2K.js +4 -0
  34. package/build/chunk-VOV46J2K.js.map +1 -0
  35. package/build/{chunk-ZHEN7NIQ.js → chunk-VWRROJHT.js} +2 -2
  36. package/build/{chunk-UBWBH64V.js → chunk-W74FRPRP.js} +2 -2
  37. package/build/{chunk-EQI25LY6.js → chunk-Y4THEZGJ.js} +2 -2
  38. package/build/{chunk-EQI25LY6.js.map → chunk-Y4THEZGJ.js.map} +1 -1
  39. package/build/index.js +1 -1
  40. package/build/index.js.map +1 -1
  41. package/build/{preview-6XHIXIDA.js → preview-US5F3VRS.js} +2 -2
  42. package/build/{render-command-MG2TJRUD.js → render-command-SXRUN6CW.js} +2 -2
  43. package/package.json +2 -2
  44. package/templates/custom-element/element.json.ejs +4 -0
  45. package/templates/custom-element/element.tsx.ejs +13 -0
  46. package/templates/custom-element/panel.tsx.ejs +13 -0
  47. package/templates/dashboard-plugin/plugin.json.ejs +4 -0
  48. package/templates/{dashboard-page-plugin → dashboard-plugin}/plugin.tsx.ejs +4 -4
  49. package/build/CreateVersionCommand-RHTO3DA7.js +0 -4
  50. package/build/DevCommand-OFSQSCJW.js +0 -4
  51. package/build/GenerateCommand-43LJGGHV.js +0 -99
  52. package/build/GenerateCommand-43LJGGHV.js.map +0 -1
  53. package/build/PreviewCommand-CEE6NMDS.js +0 -4
  54. package/build/ServeCommand-R5SAKRKU.js +0 -4
  55. package/build/chunk-2MVU7B3I.js.map +0 -1
  56. package/build/chunk-47TDKY2B.js +0 -4
  57. package/build/chunk-BPHZBR73.js +0 -4
  58. package/build/chunk-BPHZBR73.js.map +0 -1
  59. package/build/chunk-GNLLOWHY.js +0 -75
  60. package/build/chunk-GNLLOWHY.js.map +0 -1
  61. package/build/chunk-LW6L3WY3.js +0 -11
  62. package/build/chunk-LW6L3WY3.js.map +0 -1
  63. package/build/chunk-WV4KTPXI.js +0 -4
  64. package/build/chunk-WV4KTPXI.js.map +0 -1
  65. package/templates/dashboard-page-plugin/plugin.json.ejs +0 -4
  66. /package/build/{PreviewCommand-CEE6NMDS.js.map → PreviewCommand-UC6TGBTC.js.map} +0 -0
  67. /package/build/{build-IS5AWEWP.js.map → build-RP6W4QEA.js.map} +0 -0
  68. /package/build/{chunk-47TDKY2B.js.map → chunk-B5HZNQJV.js.map} +0 -0
  69. /package/build/{chunk-2BVF7R6U.js.map → chunk-BGJWNKGZ.js.map} +0 -0
  70. /package/build/{chunk-7WZDL63V.js.map → chunk-BO7BWQLZ.js.map} +0 -0
  71. /package/build/{chunk-HNH75HDQ.js.map → chunk-D2SHWB76.js.map} +0 -0
  72. /package/build/{chunk-QWDVUZEW.js.map → chunk-F2KYPCJP.js.map} +0 -0
  73. /package/build/{chunk-7BWMEPZ3.js.map → chunk-F3BQNR6X.js.map} +0 -0
  74. /package/build/{chunk-YHWDL3DF.js.map → chunk-G5KG2B42.js.map} +0 -0
  75. /package/build/{chunk-RJ43KJ3G.js.map → chunk-K7GUDJFG.js.map} +0 -0
  76. /package/build/{chunk-JCBTQBIR.js.map → chunk-OYUGDF7S.js.map} +0 -0
  77. /package/build/{chunk-5IXE5FNR.js.map → chunk-UJW3X3T2.js.map} +0 -0
  78. /package/build/{chunk-ZHEN7NIQ.js.map → chunk-VWRROJHT.js.map} +0 -0
  79. /package/build/{chunk-UBWBH64V.js.map → chunk-W74FRPRP.js.map} +0 -0
  80. /package/build/{preview-6XHIXIDA.js.map → preview-US5F3VRS.js.map} +0 -0
  81. /package/build/{render-command-MG2TJRUD.js.map → render-command-SXRUN6CW.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/assert-plus/assert.js","../../../node_modules/extsprintf/lib/extsprintf.js","../../../node_modules/core-util-is/lib/util.js","../../../node_modules/verror/lib/verror.js","../../../node_modules/variant/lib/isType.js","../../../node_modules/variant/lib/util.js","../../../node_modules/variant/lib/variant.js","../../../node_modules/variant/lib/precepts.js","../../../node_modules/variant/lib/match.js","../../../node_modules/variant/lib/types.js","../../../node_modules/variant/lib/flags.js","../../../node_modules/variant/lib/isOfVariant.js","../../../node_modules/variant/lib/remote.js","../../../node_modules/variant/lib/typed.js","../../../node_modules/variant/lib/match.tools.js","../../../node_modules/variant/lib/matcher.js","../../../node_modules/variant/lib/cosmos.js","../../../node_modules/variant/lib/type/index.js","../../../node_modules/variant/lib/augment.js","../../../node_modules/variant/lib/constrained.js","../../../node_modules/variant/lib/construct.js","../../../node_modules/variant/lib/generic.js","../../../node_modules/variant/lib/typeCatalog.js","../../../node_modules/variant/lib/catalog.js","../../../node_modules/variant/lib/patterned.js","../../../node_modules/variant/lib/variant.tools.js","../../../node_modules/variant/lib/slim.js","../../../node_modules/variant/lib/index.js","../../../node_modules/tar/lib/high-level-opt.js","../../../node_modules/tar/node_modules/minipass/index.js","../../../node_modules/minizlib/constants.js","../../../node_modules/minipass/index.js","../../../node_modules/minizlib/index.js","../../../node_modules/tar/lib/normalize-windows-path.js","../../../node_modules/tar/lib/read-entry.js","../../../node_modules/tar/lib/types.js","../../../node_modules/tar/lib/large-numbers.js","../../../node_modules/tar/lib/header.js","../../../node_modules/tar/lib/pax.js","../../../node_modules/tar/lib/strip-trailing-slashes.js","../../../node_modules/tar/lib/warn-mixin.js","../../../node_modules/tar/lib/winchars.js","../../../node_modules/tar/lib/strip-absolute-path.js","../../../node_modules/tar/lib/mode-fix.js","../../../node_modules/tar/lib/write-entry.js","../../../node_modules/yallist/iterator.js","../../../node_modules/yallist/yallist.js","../../../node_modules/tar/lib/pack.js","../../../node_modules/fs-minipass/index.js","../../../node_modules/tar/lib/parse.js","../../../node_modules/tar/lib/list.js","../../../node_modules/tar/lib/create.js","../../../node_modules/tar/lib/replace.js","../../../node_modules/tar/lib/update.js","../../../node_modules/mkdirp/lib/opts-arg.js","../../../node_modules/mkdirp/lib/path-arg.js","../../../node_modules/mkdirp/lib/find-made.js","../../../node_modules/mkdirp/lib/mkdirp-manual.js","../../../node_modules/mkdirp/lib/mkdirp-native.js","../../../node_modules/mkdirp/lib/use-native.js","../../../node_modules/mkdirp/index.js","../../../node_modules/chownr/chownr.js","../../../node_modules/tar/lib/mkdir.js","../../../node_modules/tar/lib/normalize-unicode.js","../../../node_modules/tar/lib/path-reservations.js","../../../node_modules/tar/lib/get-write-flag.js","../../../node_modules/tar/lib/unpack.js","../../../node_modules/tar/lib/extract.js","../../../node_modules/tar/index.js","../../../node_modules/merge2/index.js","../../../node_modules/fast-glob/out/utils/array.js","../../../node_modules/fast-glob/out/utils/errno.js","../../../node_modules/fast-glob/out/utils/fs.js","../../../node_modules/fast-glob/out/utils/path.js","../../../node_modules/is-extglob/index.js","../../../node_modules/is-glob/index.js","../../../node_modules/glob-parent/index.js","../../../node_modules/braces/lib/utils.js","../../../node_modules/braces/lib/stringify.js","../../../node_modules/is-number/index.js","../../../node_modules/to-regex-range/index.js","../../../node_modules/fill-range/index.js","../../../node_modules/braces/lib/compile.js","../../../node_modules/braces/lib/expand.js","../../../node_modules/braces/lib/constants.js","../../../node_modules/braces/lib/parse.js","../../../node_modules/braces/index.js","../../../node_modules/picomatch/lib/constants.js","../../../node_modules/picomatch/lib/utils.js","../../../node_modules/picomatch/lib/scan.js","../../../node_modules/picomatch/lib/parse.js","../../../node_modules/picomatch/lib/picomatch.js","../../../node_modules/picomatch/index.js","../../../node_modules/micromatch/index.js","../../../node_modules/fast-glob/out/utils/pattern.js","../../../node_modules/fast-glob/out/utils/stream.js","../../../node_modules/fast-glob/out/utils/string.js","../../../node_modules/fast-glob/out/utils/index.js","../../../node_modules/fast-glob/out/managers/tasks.js","../../../node_modules/@nodelib/fs.stat/out/providers/async.js","../../../node_modules/@nodelib/fs.stat/out/providers/sync.js","../../../node_modules/@nodelib/fs.stat/out/adapters/fs.js","../../../node_modules/@nodelib/fs.stat/out/settings.js","../../../node_modules/@nodelib/fs.stat/out/index.js","../../../node_modules/queue-microtask/index.js","../../../node_modules/run-parallel/index.js","../../../node_modules/@nodelib/fs.scandir/out/constants.js","../../../node_modules/@nodelib/fs.scandir/out/utils/fs.js","../../../node_modules/@nodelib/fs.scandir/out/utils/index.js","../../../node_modules/@nodelib/fs.scandir/out/providers/common.js","../../../node_modules/@nodelib/fs.scandir/out/providers/async.js","../../../node_modules/@nodelib/fs.scandir/out/providers/sync.js","../../../node_modules/@nodelib/fs.scandir/out/adapters/fs.js","../../../node_modules/@nodelib/fs.scandir/out/settings.js","../../../node_modules/@nodelib/fs.scandir/out/index.js","../../../node_modules/reusify/reusify.js","../../../node_modules/fastq/queue.js","../../../node_modules/@nodelib/fs.walk/out/readers/common.js","../../../node_modules/@nodelib/fs.walk/out/readers/reader.js","../../../node_modules/@nodelib/fs.walk/out/readers/async.js","../../../node_modules/@nodelib/fs.walk/out/providers/async.js","../../../node_modules/@nodelib/fs.walk/out/providers/stream.js","../../../node_modules/@nodelib/fs.walk/out/readers/sync.js","../../../node_modules/@nodelib/fs.walk/out/providers/sync.js","../../../node_modules/@nodelib/fs.walk/out/settings.js","../../../node_modules/@nodelib/fs.walk/out/index.js","../../../node_modules/fast-glob/out/readers/reader.js","../../../node_modules/fast-glob/out/readers/stream.js","../../../node_modules/fast-glob/out/readers/async.js","../../../node_modules/fast-glob/out/providers/matchers/matcher.js","../../../node_modules/fast-glob/out/providers/matchers/partial.js","../../../node_modules/fast-glob/out/providers/filters/deep.js","../../../node_modules/fast-glob/out/providers/filters/entry.js","../../../node_modules/fast-glob/out/providers/filters/error.js","../../../node_modules/fast-glob/out/providers/transformers/entry.js","../../../node_modules/fast-glob/out/providers/provider.js","../../../node_modules/fast-glob/out/providers/async.js","../../../node_modules/fast-glob/out/providers/stream.js","../../../node_modules/fast-glob/out/readers/sync.js","../../../node_modules/fast-glob/out/providers/sync.js","../../../node_modules/fast-glob/out/settings.js","../../../node_modules/fast-glob/out/index.js","../../../node_modules/path-type/index.js","../../../node_modules/dir-glob/index.js","../../../node_modules/ignore/index.js","../../../node_modules/readdirp/index.js","../../../node_modules/normalize-path/index.js","../../../node_modules/anymatch/index.js","../../../node_modules/binary-extensions/binary-extensions.json","../../../node_modules/binary-extensions/index.js","../../../node_modules/is-binary-path/index.js","../../../node_modules/chokidar/lib/constants.js","../../../node_modules/chokidar/lib/nodefs-handler.js","../../../node_modules/chokidar/lib/fsevents-handler.js","../../../node_modules/chokidar/index.js","../../../node_modules/lodash/isObject.js","../../../node_modules/lodash/_freeGlobal.js","../../../node_modules/lodash/_root.js","../../../node_modules/lodash/now.js","../../../node_modules/lodash/_trimmedEndIndex.js","../../../node_modules/lodash/_baseTrim.js","../../../node_modules/lodash/_Symbol.js","../../../node_modules/lodash/_getRawTag.js","../../../node_modules/lodash/_objectToString.js","../../../node_modules/lodash/_baseGetTag.js","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/lodash/isSymbol.js","../../../node_modules/lodash/toNumber.js","../../../node_modules/lodash/debounce.js","../../cli-error/src/cli-error.ts","../../cli-error/src/cli-error-codes.ts","../../cli-error/src/index.ts","../../cli-error/src/is-cli-error.ts","../../cli-error/src/normalize-error.ts","../../cli-core-definitions/src/index.ts","../../velo-github-layout-definitions/build/index.js","../src/model.tsx","../src/files/wix.config.ts","../../cli-app-definitions/src/index.ts","../../../node_modules/zod/lib/index.mjs","../../../node_modules/@wix/ambassador-devcenter-components-v1-component/types.impl.ts","../../cli-fs/src/index.ts","../src/dev-center/components/load-dev-center-components.ts","../src/dev-center/components/dashboard/components.ts","../../../node_modules/globby/index.js","../../../node_modules/globby/ignore.js","../../../node_modules/globby/node_modules/slash/index.js","../../../node_modules/globby/utilities.js","../src/dev-center/components/dev-center-component.ts","../src/dev-center/components/dashboard/config.ts","../src/dev-center/components/path.ts","../src/dev-center/components/validations/common.ts","../src/dev-center/components/validations/dashboard-page.ts","../src/dev-center/components/validations/embedded-script.ts","../../../node_modules/mustache/mustache.mjs","../src/dev-center/components/validations/custom-element.ts","../src/dev-center/components/site/components.ts","../src/dev-center/components/site/config.ts","../src/app-manifest/project-model-watcher.ts","../../../node_modules/fast-equals/src/utils.ts","../../../node_modules/fast-equals/src/equals.ts","../../../node_modules/fast-equals/src/comparator.ts","../../../node_modules/fast-equals/src/index.ts","../../cli-test-overrides/src/index.ts"],"sourcesContent":["// Copyright (c) 2012, Mark Cavage. All rights reserved.\n// Copyright 2015 Joyent, Inc.\n\nvar assert = require('assert');\nvar Stream = require('stream').Stream;\nvar util = require('util');\n\n\n///--- Globals\n\n/* JSSTYLED */\nvar UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;\n\n\n///--- Internal\n\nfunction _capitalize(str) {\n return (str.charAt(0).toUpperCase() + str.slice(1));\n}\n\nfunction _toss(name, expected, oper, arg, actual) {\n throw new assert.AssertionError({\n message: util.format('%s (%s) is required', name, expected),\n actual: (actual === undefined) ? typeof (arg) : actual(arg),\n expected: expected,\n operator: oper || '===',\n stackStartFunction: _toss.caller\n });\n}\n\nfunction _getClass(arg) {\n return (Object.prototype.toString.call(arg).slice(8, -1));\n}\n\nfunction noop() {\n // Why even bother with asserts?\n}\n\n\n///--- Exports\n\nvar types = {\n bool: {\n check: function (arg) { return typeof (arg) === 'boolean'; }\n },\n func: {\n check: function (arg) { return typeof (arg) === 'function'; }\n },\n string: {\n check: function (arg) { return typeof (arg) === 'string'; }\n },\n object: {\n check: function (arg) {\n return typeof (arg) === 'object' && arg !== null;\n }\n },\n number: {\n check: function (arg) {\n return typeof (arg) === 'number' && !isNaN(arg);\n }\n },\n finite: {\n check: function (arg) {\n return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg);\n }\n },\n buffer: {\n check: function (arg) { return Buffer.isBuffer(arg); },\n operator: 'Buffer.isBuffer'\n },\n array: {\n check: function (arg) { return Array.isArray(arg); },\n operator: 'Array.isArray'\n },\n stream: {\n check: function (arg) { return arg instanceof Stream; },\n operator: 'instanceof',\n actual: _getClass\n },\n date: {\n check: function (arg) { return arg instanceof Date; },\n operator: 'instanceof',\n actual: _getClass\n },\n regexp: {\n check: function (arg) { return arg instanceof RegExp; },\n operator: 'instanceof',\n actual: _getClass\n },\n uuid: {\n check: function (arg) {\n return typeof (arg) === 'string' && UUID_REGEXP.test(arg);\n },\n operator: 'isUUID'\n }\n};\n\nfunction _setExports(ndebug) {\n var keys = Object.keys(types);\n var out;\n\n /* re-export standard assert */\n if (process.env.NODE_NDEBUG) {\n out = noop;\n } else {\n out = function (arg, msg) {\n if (!arg) {\n _toss(msg, 'true', arg);\n }\n };\n }\n\n /* standard checks */\n keys.forEach(function (k) {\n if (ndebug) {\n out[k] = noop;\n return;\n }\n var type = types[k];\n out[k] = function (arg, msg) {\n if (!type.check(arg)) {\n _toss(msg, k, type.operator, arg, type.actual);\n }\n };\n });\n\n /* optional checks */\n keys.forEach(function (k) {\n var name = 'optional' + _capitalize(k);\n if (ndebug) {\n out[name] = noop;\n return;\n }\n var type = types[k];\n out[name] = function (arg, msg) {\n if (arg === undefined || arg === null) {\n return;\n }\n if (!type.check(arg)) {\n _toss(msg, k, type.operator, arg, type.actual);\n }\n };\n });\n\n /* arrayOf checks */\n keys.forEach(function (k) {\n var name = 'arrayOf' + _capitalize(k);\n if (ndebug) {\n out[name] = noop;\n return;\n }\n var type = types[k];\n var expected = '[' + k + ']';\n out[name] = function (arg, msg) {\n if (!Array.isArray(arg)) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n var i;\n for (i = 0; i < arg.length; i++) {\n if (!type.check(arg[i])) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n }\n };\n });\n\n /* optionalArrayOf checks */\n keys.forEach(function (k) {\n var name = 'optionalArrayOf' + _capitalize(k);\n if (ndebug) {\n out[name] = noop;\n return;\n }\n var type = types[k];\n var expected = '[' + k + ']';\n out[name] = function (arg, msg) {\n if (arg === undefined || arg === null) {\n return;\n }\n if (!Array.isArray(arg)) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n var i;\n for (i = 0; i < arg.length; i++) {\n if (!type.check(arg[i])) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n }\n };\n });\n\n /* re-export built-in assertions */\n Object.keys(assert).forEach(function (k) {\n if (k === 'AssertionError') {\n out[k] = assert[k];\n return;\n }\n if (ndebug) {\n out[k] = noop;\n return;\n }\n out[k] = assert[k];\n });\n\n /* export ourselves (for unit tests _only_) */\n out._setExports = _setExports;\n\n return out;\n}\n\nmodule.exports = _setExports(process.env.NODE_NDEBUG);\n","/*\n * extsprintf.js: extended POSIX-style sprintf\n */\n\nvar mod_assert = require('assert');\nvar mod_util = require('util');\n\n/*\n * Public interface\n */\nexports.sprintf = jsSprintf;\nexports.printf = jsPrintf;\nexports.fprintf = jsFprintf;\n\n/*\n * Stripped down version of s[n]printf(3c). We make a best effort to throw an\n * exception when given a format string we don't understand, rather than\n * ignoring it, so that we won't break existing programs if/when we go implement\n * the rest of this.\n *\n * This implementation currently supports specifying\n *\t- field alignment ('-' flag),\n * \t- zero-pad ('0' flag)\n *\t- always show numeric sign ('+' flag),\n *\t- field width\n *\t- conversions for strings, decimal integers, and floats (numbers).\n *\t- argument size specifiers. These are all accepted but ignored, since\n *\t Javascript has no notion of the physical size of an argument.\n *\n * Everything else is currently unsupported, most notably precision, unsigned\n * numbers, non-decimal numbers, and characters.\n */\nfunction jsSprintf(ofmt)\n{\n\tvar regex = [\n\t '([^%]*)',\t\t\t\t/* normal text */\n\t '%',\t\t\t\t/* start of format */\n\t '([\\'\\\\-+ #0]*?)',\t\t\t/* flags (optional) */\n\t '([1-9]\\\\d*)?',\t\t\t/* width (optional) */\n\t '(\\\\.([1-9]\\\\d*))?',\t\t/* precision (optional) */\n\t '[lhjztL]*?',\t\t\t/* length mods (ignored) */\n\t '([diouxXfFeEgGaAcCsSp%jr])'\t/* conversion */\n\t].join('');\n\n\tvar re = new RegExp(regex);\n\n\t/* variadic arguments used to fill in conversion specifiers */\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\t/* remaining format string */\n\tvar fmt = ofmt;\n\n\t/* components of the current conversion specifier */\n\tvar flags, width, precision, conversion;\n\tvar left, pad, sign, arg, match;\n\n\t/* return value */\n\tvar ret = '';\n\n\t/* current variadic argument (1-based) */\n\tvar argn = 1;\n\t/* 0-based position in the format string that we've read */\n\tvar posn = 0;\n\t/* 1-based position in the format string of the current conversion */\n\tvar convposn;\n\t/* current conversion specifier */\n\tvar curconv;\n\n\tmod_assert.equal('string', typeof (fmt),\n\t 'first argument must be a format string');\n\n\twhile ((match = re.exec(fmt)) !== null) {\n\t\tret += match[1];\n\t\tfmt = fmt.substring(match[0].length);\n\n\t\t/*\n\t\t * Update flags related to the current conversion specifier's\n\t\t * position so that we can report clear error messages.\n\t\t */\n\t\tcurconv = match[0].substring(match[1].length);\n\t\tconvposn = posn + match[1].length + 1;\n\t\tposn += match[0].length;\n\n\t\tflags = match[2] || '';\n\t\twidth = match[3] || 0;\n\t\tprecision = match[4] || '';\n\t\tconversion = match[6];\n\t\tleft = false;\n\t\tsign = false;\n\t\tpad = ' ';\n\n\t\tif (conversion == '%') {\n\t\t\tret += '%';\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (args.length === 0) {\n\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t 'has no matching argument ' +\n\t\t\t '(too few arguments passed)'));\n\t\t}\n\n\t\targ = args.shift();\n\t\targn++;\n\n\t\tif (flags.match(/[\\' #]/)) {\n\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t 'uses unsupported flags'));\n\t\t}\n\n\t\tif (precision.length > 0) {\n\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t 'uses non-zero precision (not supported)'));\n\t\t}\n\n\t\tif (flags.match(/-/))\n\t\t\tleft = true;\n\n\t\tif (flags.match(/0/))\n\t\t\tpad = '0';\n\n\t\tif (flags.match(/\\+/))\n\t\t\tsign = true;\n\n\t\tswitch (conversion) {\n\t\tcase 's':\n\t\t\tif (arg === undefined || arg === null) {\n\t\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t\t 'attempted to print undefined or null ' +\n\t\t\t\t 'as a string (argument ' + argn + ' to ' +\n\t\t\t\t 'sprintf)'));\n\t\t\t}\n\t\t\tret += doPad(pad, width, left, arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'd':\n\t\t\targ = Math.floor(arg);\n\t\t\t/*jsl:fallthru*/\n\t\tcase 'f':\n\t\t\tsign = sign && arg > 0 ? '+' : '';\n\t\t\tret += sign + doPad(pad, width, left,\n\t\t\t arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'x':\n\t\t\tret += doPad(pad, width, left, arg.toString(16));\n\t\t\tbreak;\n\n\t\tcase 'j': /* non-standard */\n\t\t\tif (width === 0)\n\t\t\t\twidth = 10;\n\t\t\tret += mod_util.inspect(arg, false, width);\n\t\t\tbreak;\n\n\t\tcase 'r': /* non-standard */\n\t\t\tret += dumpException(arg);\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t 'is not supported'));\n\t\t}\n\t}\n\n\tret += fmt;\n\treturn (ret);\n}\n\nfunction jsError(fmtstr, convposn, curconv, reason) {\n\tmod_assert.equal(typeof (fmtstr), 'string');\n\tmod_assert.equal(typeof (curconv), 'string');\n\tmod_assert.equal(typeof (convposn), 'number');\n\tmod_assert.equal(typeof (reason), 'string');\n\treturn (new Error('format string \"' + fmtstr +\n\t '\": conversion specifier \"' + curconv + '\" at character ' +\n\t convposn + ' ' + reason));\n}\n\nfunction jsPrintf() {\n\tvar args = Array.prototype.slice.call(arguments);\n\targs.unshift(process.stdout);\n\tjsFprintf.apply(null, args);\n}\n\nfunction jsFprintf(stream) {\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\treturn (stream.write(jsSprintf.apply(this, args)));\n}\n\nfunction doPad(chr, width, left, str)\n{\n\tvar ret = str;\n\n\twhile (ret.length < width) {\n\t\tif (left)\n\t\t\tret += chr;\n\t\telse\n\t\t\tret = chr + ret;\n\t}\n\n\treturn (ret);\n}\n\n/*\n * This function dumps long stack traces for exceptions having a cause() method.\n * See node-verror for an example.\n */\nfunction dumpException(ex)\n{\n\tvar ret;\n\n\tif (!(ex instanceof Error))\n\t\tthrow (new Error(jsSprintf('invalid type for %%r: %j', ex)));\n\n\t/* Note that V8 prepends \"ex.stack\" with ex.toString(). */\n\tret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack;\n\n\tif (ex.cause && typeof (ex.cause) === 'function') {\n\t\tvar cex = ex.cause();\n\t\tif (cex) {\n\t\t\tret += '\\nCaused by: ' + dumpException(cex);\n\t\t}\n\t}\n\n\treturn (ret);\n}\n","// 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 = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","/*\n * verror.js: richer JavaScript errors\n */\n\nvar mod_assertplus = require('assert-plus');\nvar mod_util = require('util');\n\nvar mod_extsprintf = require('extsprintf');\nvar mod_isError = require('core-util-is').isError;\nvar sprintf = mod_extsprintf.sprintf;\n\n/*\n * Public interface\n */\n\n/* So you can 'var VError = require('verror')' */\nmodule.exports = VError;\n/* For compatibility */\nVError.VError = VError;\n/* Other exported classes */\nVError.SError = SError;\nVError.WError = WError;\nVError.MultiError = MultiError;\n\n/*\n * Common function used to parse constructor arguments for VError, WError, and\n * SError. Named arguments to this function:\n *\n * strict\t\tforce strict interpretation of sprintf arguments, even\n * \t\t\tif the options in \"argv\" don't say so\n *\n * argv\t\terror's constructor arguments, which are to be\n * \t\t\tinterpreted as described in README.md. For quick\n * \t\t\treference, \"argv\" has one of the following forms:\n *\n * [ sprintf_args... ] (argv[0] is a string)\n * [ cause, sprintf_args... ] (argv[0] is an Error)\n * [ options, sprintf_args... ] (argv[0] is an object)\n *\n * This function normalizes these forms, producing an object with the following\n * properties:\n *\n * options equivalent to \"options\" in third form. This will never\n * \t\t\tbe a direct reference to what the caller passed in\n * \t\t\t(i.e., it may be a shallow copy), so it can be freely\n * \t\t\tmodified.\n *\n * shortmessage result of sprintf(sprintf_args), taking options.strict\n * \t\t\tinto account as described in README.md.\n */\nfunction parseConstructorArguments(args)\n{\n\tvar argv, options, sprintf_args, shortmessage, k;\n\n\tmod_assertplus.object(args, 'args');\n\tmod_assertplus.bool(args.strict, 'args.strict');\n\tmod_assertplus.array(args.argv, 'args.argv');\n\targv = args.argv;\n\n\t/*\n\t * First, figure out which form of invocation we've been given.\n\t */\n\tif (argv.length === 0) {\n\t\toptions = {};\n\t\tsprintf_args = [];\n\t} else if (mod_isError(argv[0])) {\n\t\toptions = { 'cause': argv[0] };\n\t\tsprintf_args = argv.slice(1);\n\t} else if (typeof (argv[0]) === 'object') {\n\t\toptions = {};\n\t\tfor (k in argv[0]) {\n\t\t\toptions[k] = argv[0][k];\n\t\t}\n\t\tsprintf_args = argv.slice(1);\n\t} else {\n\t\tmod_assertplus.string(argv[0],\n\t\t 'first argument to VError, SError, or WError ' +\n\t\t 'constructor must be a string, object, or Error');\n\t\toptions = {};\n\t\tsprintf_args = argv;\n\t}\n\n\t/*\n\t * Now construct the error's message.\n\t *\n\t * extsprintf (which we invoke here with our caller's arguments in order\n\t * to construct this Error's message) is strict in its interpretation of\n\t * values to be processed by the \"%s\" specifier. The value passed to\n\t * extsprintf must actually be a string or something convertible to a\n\t * String using .toString(). Passing other values (notably \"null\" and\n\t * \"undefined\") is considered a programmer error. The assumption is\n\t * that if you actually want to print the string \"null\" or \"undefined\",\n\t * then that's easy to do that when you're calling extsprintf; on the\n\t * other hand, if you did NOT want that (i.e., there's actually a bug\n\t * where the program assumes some variable is non-null and tries to\n\t * print it, which might happen when constructing a packet or file in\n\t * some specific format), then it's better to stop immediately than\n\t * produce bogus output.\n\t *\n\t * However, sometimes the bug is only in the code calling VError, and a\n\t * programmer might prefer to have the error message contain \"null\" or\n\t * \"undefined\" rather than have the bug in the error path crash the\n\t * program (making the first bug harder to identify). For that reason,\n\t * by default VError converts \"null\" or \"undefined\" arguments to their\n\t * string representations and passes those to extsprintf. Programmers\n\t * desiring the strict behavior can use the SError class or pass the\n\t * \"strict\" option to the VError constructor.\n\t */\n\tmod_assertplus.object(options);\n\tif (!options.strict && !args.strict) {\n\t\tsprintf_args = sprintf_args.map(function (a) {\n\t\t\treturn (a === null ? 'null' :\n\t\t\t a === undefined ? 'undefined' : a);\n\t\t});\n\t}\n\n\tif (sprintf_args.length === 0) {\n\t\tshortmessage = '';\n\t} else {\n\t\tshortmessage = sprintf.apply(null, sprintf_args);\n\t}\n\n\treturn ({\n\t 'options': options,\n\t 'shortmessage': shortmessage\n\t});\n}\n\n/*\n * See README.md for reference documentation.\n */\nfunction VError()\n{\n\tvar args, obj, parsed, cause, ctor, message, k;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\n\t/*\n\t * This is a regrettable pattern, but JavaScript's built-in Error class\n\t * is defined to work this way, so we allow the constructor to be called\n\t * without \"new\".\n\t */\n\tif (!(this instanceof VError)) {\n\t\tobj = Object.create(VError.prototype);\n\t\tVError.apply(obj, arguments);\n\t\treturn (obj);\n\t}\n\n\t/*\n\t * For convenience and backwards compatibility, we support several\n\t * different calling forms. Normalize them here.\n\t */\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': false\n\t});\n\n\t/*\n\t * If we've been given a name, apply it now.\n\t */\n\tif (parsed.options.name) {\n\t\tmod_assertplus.string(parsed.options.name,\n\t\t 'error\\'s \"name\" must be a string');\n\t\tthis.name = parsed.options.name;\n\t}\n\n\t/*\n\t * For debugging, we keep track of the original short message (attached\n\t * this Error particularly) separately from the complete message (which\n\t * includes the messages of our cause chain).\n\t */\n\tthis.jse_shortmsg = parsed.shortmessage;\n\tmessage = parsed.shortmessage;\n\n\t/*\n\t * If we've been given a cause, record a reference to it and update our\n\t * message appropriately.\n\t */\n\tcause = parsed.options.cause;\n\tif (cause) {\n\t\tmod_assertplus.ok(mod_isError(cause), 'cause is not an Error');\n\t\tthis.jse_cause = cause;\n\n\t\tif (!parsed.options.skipCauseMessage) {\n\t\t\tmessage += ': ' + cause.message;\n\t\t}\n\t}\n\n\t/*\n\t * If we've been given an object with properties, shallow-copy that\n\t * here. We don't want to use a deep copy in case there are non-plain\n\t * objects here, but we don't want to use the original object in case\n\t * the caller modifies it later.\n\t */\n\tthis.jse_info = {};\n\tif (parsed.options.info) {\n\t\tfor (k in parsed.options.info) {\n\t\t\tthis.jse_info[k] = parsed.options.info[k];\n\t\t}\n\t}\n\n\tthis.message = message;\n\tError.call(this, message);\n\n\tif (Error.captureStackTrace) {\n\t\tctor = parsed.options.constructorOpt || this.constructor;\n\t\tError.captureStackTrace(this, ctor);\n\t}\n\n\treturn (this);\n}\n\nmod_util.inherits(VError, Error);\nVError.prototype.name = 'VError';\n\nVError.prototype.toString = function ve_toString()\n{\n\tvar str = (this.hasOwnProperty('name') && this.name ||\n\t\tthis.constructor.name || this.constructor.prototype.name);\n\tif (this.message)\n\t\tstr += ': ' + this.message;\n\n\treturn (str);\n};\n\n/*\n * This method is provided for compatibility. New callers should use\n * VError.cause() instead. That method also uses the saner `null` return value\n * when there is no cause.\n */\nVError.prototype.cause = function ve_cause()\n{\n\tvar cause = VError.cause(this);\n\treturn (cause === null ? undefined : cause);\n};\n\n/*\n * Static methods\n *\n * These class-level methods are provided so that callers can use them on\n * instances of Errors that are not VErrors. New interfaces should be provided\n * only using static methods to eliminate the class of programming mistake where\n * people fail to check whether the Error object has the corresponding methods.\n */\n\nVError.cause = function (err)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\treturn (mod_isError(err.jse_cause) ? err.jse_cause : null);\n};\n\nVError.info = function (err)\n{\n\tvar rv, cause, k;\n\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tcause = VError.cause(err);\n\tif (cause !== null) {\n\t\trv = VError.info(cause);\n\t} else {\n\t\trv = {};\n\t}\n\n\tif (typeof (err.jse_info) == 'object' && err.jse_info !== null) {\n\t\tfor (k in err.jse_info) {\n\t\t\trv[k] = err.jse_info[k];\n\t\t}\n\t}\n\n\treturn (rv);\n};\n\nVError.findCauseByName = function (err, name)\n{\n\tvar cause;\n\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tmod_assertplus.string(name, 'name');\n\tmod_assertplus.ok(name.length > 0, 'name cannot be empty');\n\n\tfor (cause = err; cause !== null; cause = VError.cause(cause)) {\n\t\tmod_assertplus.ok(mod_isError(cause));\n\t\tif (cause.name == name) {\n\t\t\treturn (cause);\n\t\t}\n\t}\n\n\treturn (null);\n};\n\nVError.hasCauseWithName = function (err, name)\n{\n\treturn (VError.findCauseByName(err, name) !== null);\n};\n\nVError.fullStack = function (err)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\n\tvar cause = VError.cause(err);\n\n\tif (cause) {\n\t\treturn (err.stack + '\\ncaused by: ' + VError.fullStack(cause));\n\t}\n\n\treturn (err.stack);\n};\n\nVError.errorFromList = function (errors)\n{\n\tmod_assertplus.arrayOfObject(errors, 'errors');\n\n\tif (errors.length === 0) {\n\t\treturn (null);\n\t}\n\n\terrors.forEach(function (e) {\n\t\tmod_assertplus.ok(mod_isError(e));\n\t});\n\n\tif (errors.length == 1) {\n\t\treturn (errors[0]);\n\t}\n\n\treturn (new MultiError(errors));\n};\n\nVError.errorForEach = function (err, func)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tmod_assertplus.func(func, 'func');\n\n\tif (err instanceof MultiError) {\n\t\terr.errors().forEach(function iterError(e) { func(e); });\n\t} else {\n\t\tfunc(err);\n\t}\n};\n\n\n/*\n * SError is like VError, but stricter about types. You cannot pass \"null\" or\n * \"undefined\" as string arguments to the formatter.\n */\nfunction SError()\n{\n\tvar args, obj, parsed, options;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\tif (!(this instanceof SError)) {\n\t\tobj = Object.create(SError.prototype);\n\t\tSError.apply(obj, arguments);\n\t\treturn (obj);\n\t}\n\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': true\n\t});\n\n\toptions = parsed.options;\n\tVError.call(this, options, '%s', parsed.shortmessage);\n\n\treturn (this);\n}\n\n/*\n * We don't bother setting SError.prototype.name because once constructed,\n * SErrors are just like VErrors.\n */\nmod_util.inherits(SError, VError);\n\n\n/*\n * Represents a collection of errors for the purpose of consumers that generally\n * only deal with one error. Callers can extract the individual errors\n * contained in this object, but may also just treat it as a normal single\n * error, in which case a summary message will be printed.\n */\nfunction MultiError(errors)\n{\n\tmod_assertplus.array(errors, 'list of errors');\n\tmod_assertplus.ok(errors.length > 0, 'must be at least one error');\n\tthis.ase_errors = errors;\n\n\tVError.call(this, {\n\t 'cause': errors[0]\n\t}, 'first of %d error%s', errors.length, errors.length == 1 ? '' : 's');\n}\n\nmod_util.inherits(MultiError, VError);\nMultiError.prototype.name = 'MultiError';\n\nMultiError.prototype.errors = function me_errors()\n{\n\treturn (this.ase_errors.slice(0));\n};\n\n\n/*\n * See README.md for reference details.\n */\nfunction WError()\n{\n\tvar args, obj, parsed, options;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\tif (!(this instanceof WError)) {\n\t\tobj = Object.create(WError.prototype);\n\t\tWError.apply(obj, args);\n\t\treturn (obj);\n\t}\n\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': false\n\t});\n\n\toptions = parsed.options;\n\toptions['skipCauseMessage'] = true;\n\tVError.call(this, options, '%s', parsed.shortmessage);\n\n\treturn (this);\n}\n\nmod_util.inherits(WError, VError);\nWError.prototype.name = 'WError';\n\nWError.prototype.toString = function we_toString()\n{\n\tvar str = (this.hasOwnProperty('name') && this.name ||\n\t\tthis.constructor.name || this.constructor.prototype.name);\n\tif (this.message)\n\t\tstr += ': ' + this.message;\n\tif (this.jse_cause && this.jse_cause.message)\n\t\tstr += '; caused by ' + this.jse_cause.toString();\n\n\treturn (str);\n};\n\n/*\n * For purely historical reasons, WError's cause() function allows you to set\n * the cause.\n */\nWError.prototype.cause = function we_cause(c)\n{\n\tif (mod_isError(c))\n\t\tthis.jse_cause = c;\n\n\treturn (this.jse_cause);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTypeImpl = void 0;\nfunction isTypeImpl(key) {\n function isType(instanceOrType, type) {\n if (instanceOrType != undefined) {\n if (typeof instanceOrType === 'function' || typeof instanceOrType === 'string') {\n const typeArg = instanceOrType;\n const typeStr = typeof typeArg === 'string' ? typeArg : typeArg.output.type;\n return (o) => isType(o, typeStr);\n }\n else {\n const instance = instanceOrType;\n const typeStr = typeof type === 'string' ? type : type.output.type;\n return instance != undefined && instance[key !== null && key !== void 0 ? key : 'type'] === typeStr;\n }\n }\n else {\n return false;\n }\n }\n return { isType };\n}\nexports.isTypeImpl = isTypeImpl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HOI = exports.isPromise = exports.identityFunc = void 0;\n/**\n * Identity function. Doubles as the noop func.\n * @param x\n */\nconst identityFunc = (x = {}) => x;\nexports.identityFunc = identityFunc;\n/**\n * Determine whether or not a variable is a promise.\n * @param x potential promise.\n */\nfunction isPromise(x) {\n return x != undefined && typeof x === 'object' && 'then' in x && typeof x.then === 'function';\n}\nexports.isPromise = isPromise;\n/**\n * **H**igher-**O**rder **I**dentity.\n *\n * A higher order factory for this very useful wrapper function.\n *\n * ```ts\n * // Enforce the type constraint *and* narrow the return type.\n * function defineThing<T extends Template>(definition: T): T {\n * return definition;\n * }\n * ```\n *\n * The above `defineThing` can now be generated through\n *\n * ```ts\n * const defineThing = HOI<Template>();\n * ```\n *\n * Or in more advanced to define something like a catalog:\n *\n * ```ts\n * const defineThings = HOI<Record<string, Template>>();\n * ```\n */\nconst HOI = () => (definition) => definition;\nexports.HOI = HOI;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.variantImpl = exports.isVariantCreator = exports.scopeType = void 0;\nconst util_1 = require(\"./util\");\n/**\n * Internal function to consistently generate a scoped type.\n * @param scope\n * @param type\n * @returns\n */\nconst scopeType = (scope, type) => `${scope}/${type}`;\nexports.scopeType = scopeType;\nfunction descopeType(s) {\n var _a;\n return ((_a = s.split('/')[1]) !== null && _a !== void 0 ? _a : s);\n}\nconst VARIANT_CREATOR_BRAND = Symbol('Variant Creator');\nfunction isVariantCreator(func) {\n return VARIANT_CREATOR_BRAND in func;\n}\nexports.isVariantCreator = isVariantCreator;\nfunction variantImpl(key) {\n function scope(scope, v) {\n return Object.keys(v).reduce((acc, key) => {\n return Object.assign(Object.assign({}, acc), { [key]: variation((0, exports.scopeType)(scope, key), typeof v[key] === 'function' ? v[key] : util_1.identityFunc) });\n }, {});\n }\n function descope(obj) {\n return Object.assign(Object.assign({}, obj), { [key]: descopeType(obj[key]) });\n }\n function variation(type, creator) {\n let maker = (...args) => {\n const returned = (creator !== null && creator !== void 0 ? creator : util_1.identityFunc)(...args);\n if ((0, util_1.isPromise)(returned)) {\n return returned.then(result => {\n if (key in (result !== null && result !== void 0 ? result : {})) {\n return result;\n }\n else {\n return Object.assign(result !== null && result !== void 0 ? result : {}, { [key]: type });\n }\n });\n }\n else {\n if (key in (returned !== null && returned !== void 0 ? returned : {})) {\n return returned;\n }\n else {\n return Object.assign(returned !== null && returned !== void 0 ? returned : {}, { [key]: type });\n }\n }\n };\n Object.defineProperty(maker, 'name', { value: type, writable: false });\n const outputs = { output: { key, type } };\n return Object.assign(maker, outputs, {\n [VARIANT_CREATOR_BRAND]: VARIANT_CREATOR_BRAND,\n toString: function () { return this.output.type; }\n });\n }\n function variantModule(template) {\n return Object.entries(template).reduce((result, [vmKey, vmVal]) => {\n // whether to use the existing value (pass-through variations), or create a new variation.\n const creator = typeof vmVal === 'function'\n ? isVariantCreator(vmVal)\n ? vmVal\n : variation(vmKey, vmVal)\n : variation(vmKey, util_1.identityFunc);\n return Object.assign(Object.assign({}, result), { [vmKey]: creator });\n }, {});\n }\n function variantList(template) {\n return template.map((t) => {\n if (typeof t === 'string') {\n return variation(t);\n }\n else if (typeof t === 'function') {\n return t;\n }\n return t;\n }).reduce((result, t) => {\n let creator = ((typeof t === 'string') ? variation(t) : t);\n return Object.assign(Object.assign({}, result), { [creator.output.type]: creator });\n }, {});\n }\n function variant(template) {\n if (Array.isArray(template)) {\n return variantList(template);\n }\n else {\n return variantModule(template);\n }\n }\n return { descope, scoped: scope, variant, variantList, variantModule, variation };\n}\nexports.variantImpl = variantImpl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_KEY = void 0;\n;\n;\n/**\n * The key used to indicate the default handler.\n */\nexports.DEFAULT_KEY = 'default';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matchImpl = void 0;\nconst variant_1 = require(\"./variant\");\nconst precepts_1 = require(\"./precepts\");\nfunction matchImpl(key) {\n // curryable wrapper around match.\n const prematch = (_) => (handler) => (instance) => match(instance, handler);\n function match(...args) {\n var _a, _b;\n if (args.length === 1) {\n // inline match\n const [handler] = args;\n return (instance) => match(instance, handler);\n }\n else if (args.length === 2) {\n // regular match\n const [instanceOrTypeOrCreator, handlerParam] = args;\n const instanceOrCreator = typeof instanceOrTypeOrCreator === 'string'\n ? ofLiteral(instanceOrTypeOrCreator)\n : instanceOrTypeOrCreator;\n // unpack handler from function if necessary.\n const handler = typeof handlerParam === 'function'\n ? handlerParam(instanceOrCreator)\n : handlerParam;\n const tType = instanceOrCreator == undefined\n ? undefined\n : (0, variant_1.isVariantCreator)(instanceOrCreator)\n ? instanceOrCreator.output.type\n : instanceOrCreator[key];\n if (instanceOrCreator != undefined && tType !== undefined && tType in handler) {\n return (_a = handler[tType]) === null || _a === void 0 ? void 0 : _a.call(handler, instanceOrCreator);\n }\n else if (precepts_1.DEFAULT_KEY in handler) {\n return (_b = handler[precepts_1.DEFAULT_KEY]) === null || _b === void 0 ? void 0 : _b.call(handler, instanceOrCreator);\n }\n }\n }\n const partial = (h) => () => h;\n const onLiteral = ofLiteral;\n function ofLiteral(instance) {\n return {\n [key]: instance,\n };\n }\n function lookup(handler) {\n const handlerWithFuncs = Object.keys(handler).reduce((acc, cur) => {\n return Object.assign(Object.assign({}, acc), { [cur]: () => handler[cur] });\n }, {});\n return _ => handlerWithFuncs;\n }\n function otherwise(branches, elseFunc) {\n return _ => (Object.assign(Object.assign({}, branches), { default: elseFunc }));\n }\n function withFallback(handler, fallback) {\n return _ => (Object.assign(Object.assign({}, handler), { default: fallback }));\n }\n return { match, ofLiteral, onLiteral, otherwise, partial, prematch, lookup, withFallback };\n}\nexports.matchImpl = matchImpl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.typesImpl = void 0;\nconst variant_1 = require(\"./variant\");\nfunction typesImpl(key) {\n function types(content) {\n if (Array.isArray(content)) {\n if (content.length && (0, variant_1.isVariantCreator)(content[0])) {\n return content.map(c => c.output.type);\n }\n else {\n return content.map(c => c[key]);\n }\n }\n else {\n return Object.values(content).map(c => c.output.type);\n }\n }\n function inferTypes(_) {\n return new Proxy({}, {\n get: (_, property) => {\n return property;\n }\n });\n }\n return { types, inferTypes };\n}\nexports.typesImpl = typesImpl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flagsImpl = void 0;\n/**\n * groupBy list of variant instances. Assumes one object per variation.\n * @param key\n */\nfunction flagsImpl(key) {\n function flags(flags) {\n return flags.reduce((o, v) => (Object.assign(Object.assign({}, o), { [v[key]]: v })), Object.create(null));\n }\n return { flags };\n}\nexports.flagsImpl = flagsImpl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isOfVariantImpl = void 0;\nfunction isOfVariantImpl(key) {\n function isOfVariant(...args) {\n if (args.length === 1) {\n const [variant] = args;\n return (instance) => instance != undefined\n && Object.values(variant).some(vc => vc.output.type === instance[key]);\n }\n else if (args.length === 2) {\n const [instance, variant] = args;\n return instance != undefined\n && Object.values(variant).some(vc => vc.output.type === instance[key]);\n }\n return false;\n }\n return { isOfVariant };\n}\nexports.isOfVariantImpl = isOfVariantImpl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.remoteImpl = exports.CompareResult = void 0;\nconst isType_1 = require(\"./isType\");\nconst match_1 = require(\"./match\");\nconst variant_1 = require(\"./variant\");\nvar CompareResult;\n(function (CompareResult) {\n CompareResult[CompareResult[\"Lesser\"] = -1] = \"Lesser\";\n CompareResult[CompareResult[\"Equal\"] = 0] = \"Equal\";\n CompareResult[CompareResult[\"Greater\"] = 1] = \"Greater\";\n})(CompareResult = exports.CompareResult || (exports.CompareResult = {}));\nfunction remoteImpl(key) {\n const { isType } = (0, isType_1.isTypeImpl)(key);\n const { match } = (0, match_1.matchImpl)(key);\n const { variantList } = (0, variant_1.variantImpl)(key);\n function isFunctions(vmod) {\n const keys = Object.keys(vmod);\n return keys.reduce((acc, key) => {\n return Object.assign(Object.assign({}, acc), { [key]: isType(key) });\n }, {});\n }\n function remote(vmod) {\n return {\n key,\n is: isFunctions(vmod),\n new: vmod,\n match,\n };\n }\n ;\n function getType(input) {\n if (typeof input === 'string') {\n return input;\n }\n else if (typeof input === 'function') {\n return input.output.type;\n }\n else {\n return input[key];\n }\n }\n function _sequence(module, order) {\n const miniModule = module;\n const result = remote(miniModule);\n const keyOrder = order.map(getType);\n return Object.assign(Object.assign({}, result), { length: order.length, compare: (a, b) => {\n const ai = keyOrder.findIndex(i => i === getType(a));\n const bi = keyOrder.findIndex(i => i === getType(b));\n const diff = ai - bi;\n return diff === 0 ? diff : (diff / Math.abs(diff));\n }, get(i) {\n const type = this.types[i];\n return this.new[type];\n }, index: a => keyOrder.findIndex(i => i === getType(a)), types: keyOrder });\n }\n function _sequenceOfList(order) {\n const module = variantList(order);\n return _sequence(module, order);\n }\n function sequence(module, order) {\n if (Array.isArray(module)) {\n return _sequenceOfList(module);\n }\n else {\n return _sequence(module, order);\n }\n }\n return { remote, sequence };\n}\nexports.remoteImpl = remoteImpl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.typedImpl = exports.pass = void 0;\n/**\n * A helper function for variantModule.\n *\n * This is the identity function by a better name.\n * @param x\n */\nconst pass = (x) => x;\nexports.pass = pass;\nfunction typedImpl(_key) {\n function typed(defOrFactory) {\n if (typeof defOrFactory === 'function') {\n return defOrFactory(exports.pass);\n }\n else {\n return defOrFactory;\n }\n }\n return { typed };\n}\nexports.typedImpl = typedImpl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unpack = exports.just = exports.constant = void 0;\n/**\n * Create a function that returns a value after being called.\n * @param x the value to be returned\n */\nfunction constant(x) {\n return () => x;\n}\nexports.constant = constant;\nexports.just = constant;\n/**\n * Extract the payload element from the object and return it.\n * @example\n * ```\n * match(object, {\n * ...\n * case: unpack,\n * ...\n * })\n * ```\n */\nconst unpack = (x) => x.payload;\nexports.unpack = unpack;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matcherImpl = exports.Matcher = exports.tableToHandler = void 0;\nconst match_tools_1 = require(\"./match.tools\");\nconst variant_1 = require(\"./variant\");\n/**\n * Utility func to create a handler from a lookup table.\n * @param table\n * @returns\n */\nfunction tableToHandler(table) {\n return Object.keys(table).reduce((acc, cur) => {\n const key = cur;\n return Object.assign(Object.assign({}, acc), { [key]: (0, match_tools_1.just)(table[key]) });\n }, {});\n}\nexports.tableToHandler = tableToHandler;\n/**\n * The matcher, a builder-pattern form of `match()`\n *\n * * Create a matcher `matcher(animal)`\n * * Define cases\n * * `.when('cat', _ => _.name)`\n * * `.when(Animal.cat, c => c.name)`\n * * `.when(['cat', Animal.dog], cd => cd.name)`,\n * * `.when({cat: c => c.name, dog: d => d.name})`\n * * `.register({cat: 'purr', dog: 'woof'})` for constants.\n *\n * * Execute the matcher\n * * `.complete()` brings exhaustiveness checking\n * * `.execute()` immediately runs the matcher, whether or not all cases are handled.\n * * `.else(_ => {...})` immediately runs the matcher, resolving unhandled cases with a function.\n */\nclass Matcher {\n /**\n * Create a new matcher from the target\n * @param target the\n * @param handler the initial handler. Use `{}` for standard functionality.\n * @param key the discriminant. Use `'type'` for standard functionality.\n */\n constructor(\n /**\n * The match target.\n */\n target, \n /**\n * The discrimant used for the union `T`\n */\n key, \n /**\n * The in-progress handler object.\n */\n handler) {\n this.target = target;\n this.key = key;\n this.handler = handler;\n this.complete = ((options) => {\n var _a, _b;\n if (this.target != undefined && this.target[this.key] in this.handler) {\n return (_b = (_a = this.handler)[this.target[this.key]]) === null || _b === void 0 ? void 0 : _b.call(_a, this.target);\n }\n else {\n if ((options === null || options === void 0 ? void 0 : options.withFallback) != undefined) {\n return options.withFallback(this.target);\n }\n }\n });\n }\n /**\n * Immediately execute the matcher. Exhaustiveness is not guaranteed.\n *\n * This is a **terminal** and resolves the matcher.\n */\n execute() {\n const chosenHandler = this.handler[this.target[this.key]];\n return chosenHandler === null || chosenHandler === void 0 ? void 0 : chosenHandler(this.target);\n }\n /**\n * Handle all unhandled cases and immediately execute.\n *\n * > **Exhaust** — to consume entirely, _Merriam-Webster_\n *\n * This is a **terminal** and resolves the matcher.\n * @param remainingCases an object wiht a method to handle every remaining case.\n * @returns the result of executing the handler, given these final additions.\n */\n exhaust(remainingCases) {\n var _a;\n const combinedHandler = Object.assign(Object.assign({}, this.handler), remainingCases);\n return (_a = combinedHandler[this.target[this.key]]) === null || _a === void 0 ? void 0 : _a.call(combinedHandler, this.target);\n }\n /**\n * Resolve all remaining cases without executing the matcher.\n * @param remainingCases\n * @returns\n */\n remaining(remainingCases) {\n return new Matcher(this.target, this.key, Object.assign(Object.assign({}, this.handler), remainingCases));\n }\n /**\n * Execute the match. If the target type has been explicitly handled, use that logic.\n * Otherwise use the function passed here.\n *\n * This is a **terminal** and resolves the matcher.\n * @param func\n * @returns\n */\n else(func) {\n var _a, _b;\n if (this.target[this.key] in this.handler) {\n return (_b = (_a = this.handler)[this.target[this.key]]) === null || _b === void 0 ? void 0 : _b.call(_a, this.target);\n }\n else {\n return func(this.target);\n }\n }\n /**\n * Register a series of options as a lookup table.\n *\n * ```ts\n * const getSound = (a: Animal) => matcher(a)\n * .register({\n * cat: 'purr',\n * dog: 'woof',\n * snake: 'hiss',\n * })\n * .complete()\n * ```\n * @param table\n * @returns\n */\n register(table) {\n const newHandler = Object.assign(Object.assign({}, this.handler), tableToHandler(table));\n return new Matcher(this.target, this.key, newHandler);\n }\n /**\n * Provide an exhaustive table of the unhandled options and look up which value\n * to use based on the instance.\n *\n * This is a **terminal** and resolves the matcher.\n *\n * ```ts\n * const getSound = (a: Animal) => matcher(a)\n * .lookup({\n * cat: 'purr',\n * dog: 'woof',\n * snake: 'hiss',\n * })\n * ```\n * @param table\n * @returns\n */\n lookup(table) {\n var _a;\n const combinedHandler = Object.assign(Object.assign({}, this.handler), tableToHandler(table));\n return (_a = combinedHandler[this.target[this.key]]) === null || _a === void 0 ? void 0 : _a.call(combinedHandler, this.target);\n }\n /**\n * Handle one or more cases, object-style.\n * @param variations\n */\n with(variations) {\n return new Matcher(this.target, this.key, Object.assign(Object.assign({}, this.handler), variations));\n }\n // actual implementation\n when(variations, handler) {\n if (handler != undefined) {\n // 2 param case\n const list = Array.isArray(variations) ? variations : [variations];\n const newCases = list.reduce((acc, cur) => {\n const type = typeof cur === 'string' ? cur : (0, variant_1.isVariantCreator)(cur) ? cur.output.type : undefined;\n return type != undefined ? (Object.assign(Object.assign({}, acc), { [type]: handler })) : (acc);\n }, {});\n return new Matcher(this.target, this.key, Object.assign(Object.assign({}, this.handler), newCases));\n }\n else {\n //1 param case\n return new Matcher(this.target, this.key, Object.assign(Object.assign({}, this.handler), variations));\n }\n }\n}\nexports.Matcher = Matcher;\nfunction matcherImpl(key) {\n function matcher(target) {\n const actualTarget = typeof target === 'string'\n ? { [key]: target }\n : target;\n return new Matcher(actualTarget, key, {});\n }\n return { matcher };\n}\nexports.matcherImpl = matcherImpl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.variantCosmos = void 0;\nconst isType_1 = require(\"./isType\");\nconst match_1 = require(\"./match\");\nconst variant_1 = require(\"./variant\");\nconst types_1 = require(\"./types\");\nconst flags_1 = require(\"./flags\");\nconst isOfVariant_1 = require(\"./isOfVariant\");\nconst remote_1 = require(\"./remote\");\nconst typed_1 = require(\"./typed\");\nconst matcher_1 = require(\"./matcher\");\n/**\n * Generate a series of functions to work off a given key.\n * @param config the key to use.\n * @template K discriminant as string literal.\n * @returns `VariantCosmos<K>`\n */\nfunction variantCosmos({ key }) {\n const { isType } = (0, isType_1.isTypeImpl)(key);\n const { flags } = (0, flags_1.flagsImpl)(key);\n return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ key,\n isType,\n flags }, (0, isOfVariant_1.isOfVariantImpl)(key)), (0, match_1.matchImpl)(key)), (0, matcher_1.matcherImpl)(key)), (0, remote_1.remoteImpl)(key)), (0, typed_1.typedImpl)(key)), (0, types_1.typesImpl)(key)), (0, variant_1.variantImpl)(key));\n}\nexports.variantCosmos = variantCosmos;\n","\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withFallback = exports.variation = exports.variantModule = exports.variantList = exports.variant = exports.types = exports.typed = exports.lookup = exports.sequence = exports.scoped = exports.remote = exports.prematch = exports.partial = exports.otherwise = exports.onLiteral = exports.ofLiteral = exports.matcher = exports.match = exports.isType = exports.isOfVariant = exports.inferTypes = exports.flags = exports.descope = void 0;\nconst cosmos_1 = require(\"../cosmos\");\n_a = (0, cosmos_1.variantCosmos)({ key: 'type' }), exports.descope = _a.descope, exports.flags = _a.flags, exports.inferTypes = _a.inferTypes, exports.isOfVariant = _a.isOfVariant, exports.isType = _a.isType, exports.match = _a.match, exports.matcher = _a.matcher, exports.ofLiteral = _a.ofLiteral, exports.onLiteral = _a.onLiteral, exports.otherwise = _a.otherwise, exports.partial = _a.partial, exports.prematch = _a.prematch, exports.remote = _a.remote, exports.scoped = _a.scoped, exports.sequence = _a.sequence, exports.lookup = _a.lookup, exports.typed = _a.typed, exports.types = _a.types, exports.variant = _a.variant, exports.variantList = _a.variantList, exports.variantModule = _a.variantModule, exports.variation = _a.variation, exports.withFallback = _a.withFallback;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.augment = void 0;\nconst type_1 = require(\"./type\");\nconst variant_1 = require(\"./variant\");\n/**\n * Augment an existing variant model with new or overridden fields.\n *\n * @param variantDefinition a template for the variant, extends `RawVariant`, may be an existing variant.\n * @param f the augment function. This receives the object that is is augmenting, enabling calculated properties.\n * @tutorial\n * Use in conjunction with `variant` (or `variantModule`).\n *\n * ```typescript\n * // Add a timestamp to every action.\n * export const Action = variant(augment(\n * {\n * AddTodo: fields<{text: string, due?: number}>(),\n * UpdateTodo: fields<{todoId: number, text?: string, due?: number, complete?: boolean}>(),\n * },\n * () => ({timestamp: Date.now()}),\n * ));\n * ```\n */\nfunction augment(variantDefinition, f) {\n return Object.keys(variantDefinition).reduce((acc, key) => {\n let inputFunc = variantDefinition[key];\n let returnFunc = (0, variant_1.isVariantCreator)(inputFunc)\n ? (0, type_1.variation)(inputFunc.output.type, (...args) => {\n let result = inputFunc(...args);\n return Object.assign(Object.assign({}, f(result)), result);\n })\n : (...args) => {\n const branch = variantDefinition[key];\n let item = typeof branch === 'function' ? branch(...args) : {};\n return Object.assign(Object.assign({}, f(item)), item);\n };\n return Object.assign(Object.assign({}, acc), { [key]: returnFunc });\n }, {});\n}\nexports.augment = augment;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.constrained = void 0;\n/**\n * Constrained variant. A variant where each form abides by a given constraint - handles these\n * inputs and provides these outputs.\n *\n * This can be used to ensure optional properties exist on the union type.\n * @param _constraint_\n * @param v\n * @returns\n */\nfunction constrained(_constraint_, v) {\n return v;\n}\nexports.constrained = constrained;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.construct = void 0;\n/**\n * Create a variant based on a class.\n * @param cls class definition / constructor\n * @returns a variant creator that wraps the class constructor into a factory function.\n */\nfunction construct(cls) {\n return ((...args) => new cls(args));\n}\nexports.construct = construct;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Alpha = exports.onTerms = void 0;\nconst flags_1 = require(\"./flags\");\nconst variant_1 = require(\"./variant\");\nconst GENERIC_BRAND = Symbol('VARIANT GENERIC TEMPLATE');\n/**\n * Define a generic variant\n * @param func a template factory. Receives 26 generic placeholders (A-Z) in an object, returns a variant template\n * @returns A variant with generic creators\n */\nfunction onTerms(func) {\n return Object.assign(Object.assign({}, func(exports.Alpha)), { [GENERIC_BRAND]: undefined });\n}\nexports.onTerms = onTerms;\nconst GTERM = '__term';\n// special functions keyed to the type used for generic parameters.\nconst genericTerms = (0, variant_1.variantImpl)(GTERM).variant;\nconst flags = (0, flags_1.flagsImpl)(GTERM).flags;\nconst GP = genericTerms([\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n]);\n/**\n * Object with placeholders for generic terms.\n */\nexports.Alpha = flags(Object.values(GP).map(f => f()));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.typeMap = exports.typeCatalog = void 0;\n/**\n * Create an a string enum-like object containing the type literals of a variant.\n * @param variant the definition of the variant in question.\n * @template T the variant template, an object containing variant creators.\n * @returns an object `{[T: string]: T}`\n * @tutorial\n * ```ts\n * const Animal = variant({...}); // cat, dog, snake\n *\n * const animalType = typeCatalog(Animal);\n * // animalType: {cat: 'cat', dog: 'dog', snake: 'snake'};\n * ```\n */\nfunction typeCatalog(variant) {\n return Object.values(variant).reduce((result, vc) => {\n return Object.assign(Object.assign({}, result), { [vc.output.type]: vc.output.type });\n }, {});\n}\nexports.typeCatalog = typeCatalog;\n/**\n * Create a mapping object containing the friendly names of a variant's forms\n * and the type literals they correspond to.\n * @param variant the definition of the variant in question.\n * @template T the variant template, an object containing variant creators.\n * @tutorial\n *\n * In the trivial case where each property label of a variant is exactly the\n * type it generates, this is equivalent to `typeCatalog`\n * ```ts\n * const Animal = variant({...}); // cat, dog, snake\n *\n * const animalType = typeMap(Animal);\n * // animalType: {cat: 'cat', dog: 'dog', snake: 'snake'};\n * ```\n * However, `typeMap` shines when differences come into play.\n * ```ts\n * const Animal = scopedVariant('@animal', {...}); // cat, dog, snake\n * const animalType = typeMap(Animal);\n * // animalType: {cat: '@animal/cat', dog: '@animal/dog', snake: '@animal/snake'};\n * ```\n */\nfunction typeMap(variant) {\n return Object.keys(variant).reduce((result, key) => {\n return Object.assign(Object.assign({}, result), { [key]: variant[key].output.type });\n }, {});\n}\nexports.typeMap = typeMap;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.literalist = exports.catalog = void 0;\nfunction catalog(catalog, factory) {\n if (Array.isArray(catalog)) {\n return catalog.reduce((result, current, index) => {\n return Object.assign(Object.assign({}, result), { [current]: factory != undefined ? factory(current, index) : current });\n }, {});\n }\n else {\n return catalog;\n }\n}\nexports.catalog = catalog;\n/**\n * Alias for compatibility\n * @deprecated - use `catalog`\n */\nexports.literalist = catalog;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.patterned = void 0;\nfunction patterned(_constraint_, v) {\n return v;\n}\nexports.patterned = patterned;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.nil = exports.payload = exports.fields = void 0;\n/**\n * Describe the fields of the variation.\n *\n * When used creates a function of type `(input: T) => T & {type: 'literal'}`\n * @param defaults set some default values for the object. Note this does *not* adjust the return type.\n */\nfunction fields(defaults = {}) {\n return (...args) => {\n const [arg] = args;\n return Object.assign(Object.assign({}, defaults), arg);\n };\n}\nexports.fields = fields;\n/**\n * Take a single variable of type T and store as 'payload'\n */\nfunction payload(_example) {\n return (payload) => ({ payload });\n}\nexports.payload = payload;\n/**\n * Create an empty variation (`{type: 'literal'}`).\n */\nconst nil = () => ({});\nexports.nil = nil;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.payload = exports.nil = exports.fields = exports.HOI = exports.pass = exports.patterned = exports.unpack = exports.just = exports.constant = exports.literalist = exports.catalog = exports.typeCatalog = exports.typeMap = exports.onTerms = exports.variantCosmos = exports.construct = exports.constrained = exports.augment = void 0;\nvar augment_1 = require(\"./augment\");\nObject.defineProperty(exports, \"augment\", { enumerable: true, get: function () { return augment_1.augment; } });\nvar constrained_1 = require(\"./constrained\");\nObject.defineProperty(exports, \"constrained\", { enumerable: true, get: function () { return constrained_1.constrained; } });\nvar construct_1 = require(\"./construct\");\nObject.defineProperty(exports, \"construct\", { enumerable: true, get: function () { return construct_1.construct; } });\nvar cosmos_1 = require(\"./cosmos\");\nObject.defineProperty(exports, \"variantCosmos\", { enumerable: true, get: function () { return cosmos_1.variantCosmos; } });\nvar generic_1 = require(\"./generic\");\nObject.defineProperty(exports, \"onTerms\", { enumerable: true, get: function () { return generic_1.onTerms; } });\nvar typeCatalog_1 = require(\"./typeCatalog\");\nObject.defineProperty(exports, \"typeMap\", { enumerable: true, get: function () { return typeCatalog_1.typeMap; } });\nObject.defineProperty(exports, \"typeCatalog\", { enumerable: true, get: function () { return typeCatalog_1.typeCatalog; } });\nvar catalog_1 = require(\"./catalog\");\nObject.defineProperty(exports, \"catalog\", { enumerable: true, get: function () { return catalog_1.catalog; } });\nObject.defineProperty(exports, \"literalist\", { enumerable: true, get: function () { return catalog_1.literalist; } });\nvar match_tools_1 = require(\"./match.tools\");\nObject.defineProperty(exports, \"constant\", { enumerable: true, get: function () { return match_tools_1.constant; } });\nObject.defineProperty(exports, \"just\", { enumerable: true, get: function () { return match_tools_1.just; } });\nObject.defineProperty(exports, \"unpack\", { enumerable: true, get: function () { return match_tools_1.unpack; } });\nvar patterned_1 = require(\"./patterned\");\nObject.defineProperty(exports, \"patterned\", { enumerable: true, get: function () { return patterned_1.patterned; } });\nvar typed_1 = require(\"./typed\");\nObject.defineProperty(exports, \"pass\", { enumerable: true, get: function () { return typed_1.pass; } });\nvar util_1 = require(\"./util\");\nObject.defineProperty(exports, \"HOI\", { enumerable: true, get: function () { return util_1.HOI; } });\nvar variant_tools_1 = require(\"./variant.tools\");\nObject.defineProperty(exports, \"fields\", { enumerable: true, get: function () { return variant_tools_1.fields; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return variant_tools_1.nil; } });\nObject.defineProperty(exports, \"payload\", { enumerable: true, get: function () { return variant_tools_1.payload; } });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./slim\"), exports);\n__exportStar(require(\"./type\"), exports);\n","'use strict'\n\n// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nconst argmap = new Map([\n ['C', 'cwd'],\n ['f', 'file'],\n ['z', 'gzip'],\n ['P', 'preservePaths'],\n ['U', 'unlink'],\n ['strip-components', 'strip'],\n ['stripComponents', 'strip'],\n ['keep-newer', 'newer'],\n ['keepNewer', 'newer'],\n ['keep-newer-files', 'newer'],\n ['keepNewerFiles', 'newer'],\n ['k', 'keep'],\n ['keep-existing', 'keep'],\n ['keepExisting', 'keep'],\n ['m', 'noMtime'],\n ['no-mtime', 'noMtime'],\n ['p', 'preserveOwner'],\n ['L', 'follow'],\n ['h', 'follow'],\n])\n\nmodule.exports = opt => opt ? Object.keys(opt).map(k => [\n argmap.has(k) ? argmap.get(k) : k, opt[k],\n]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}\n","'use strict'\nconst proc =\n typeof process === 'object' && process\n ? process\n : {\n stdout: null,\n stderr: null,\n }\nconst EE = require('events')\nconst Stream = require('stream')\nconst stringdecoder = require('string_decoder')\nconst SD = stringdecoder.StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFER = Symbol('buffer')\nconst PIPES = Symbol('pipes')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\n// internal event when stream is destroyed\nconst DESTROYED = Symbol('destroyed')\n// internal event when stream has an error\nconst ERROR = Symbol('error')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\nconst ABORT = Symbol('abort')\nconst ABORTED = Symbol('aborted')\nconst SIGNAL = Symbol('signal')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR =\n (doIter && Symbol.asyncIterator) || Symbol('asyncIterator not implemented')\nconst ITERATOR =\n (doIter && Symbol.iterator) || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev => ev === 'end' || ev === 'finish' || ev === 'prefinish'\n\nconst isArrayBuffer = b =>\n b instanceof ArrayBuffer ||\n (typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0)\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n constructor(src, dest, opts) {\n this.src = src\n this.dest = dest\n this.opts = opts\n this.ondrain = () => src[RESUME]()\n dest.on('drain', this.ondrain)\n }\n unpipe() {\n this.dest.removeListener('drain', this.ondrain)\n }\n // istanbul ignore next - only here for the prototype\n proxyErrors() {}\n end() {\n this.unpipe()\n if (this.opts.end) this.dest.end()\n }\n}\n\nclass PipeProxyErrors extends Pipe {\n unpipe() {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor(src, dest, opts) {\n super(src, dest, opts)\n this.proxyErrors = er => dest.emit('error', er)\n src.on('error', this.proxyErrors)\n }\n}\n\nclass Minipass extends Stream {\n constructor(options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this[PIPES] = []\n this[BUFFER] = []\n this[OBJECTMODE] = (options && options.objectMode) || false\n if (this[OBJECTMODE]) this[ENCODING] = null\n else this[ENCODING] = (options && options.encoding) || null\n if (this[ENCODING] === 'buffer') this[ENCODING] = null\n this[ASYNC] = (options && !!options.async) || false\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this[EMITTED_ERROR] = null\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n if (options && options.debugExposeBuffer === true) {\n Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] })\n }\n if (options && options.debugExposePipes === true) {\n Object.defineProperty(this, 'pipes', { get: () => this[PIPES] })\n }\n this[SIGNAL] = options && options.signal\n this[ABORTED] = false\n if (this[SIGNAL]) {\n this[SIGNAL].addEventListener('abort', () => this[ABORT]())\n if (this[SIGNAL].aborted) {\n this[ABORT]()\n }\n }\n }\n\n get bufferLength() {\n return this[BUFFERLENGTH]\n }\n\n get encoding() {\n return this[ENCODING]\n }\n set encoding(enc) {\n if (this[OBJECTMODE]) throw new Error('cannot set encoding in objectMode')\n\n if (\n this[ENCODING] &&\n enc !== this[ENCODING] &&\n ((this[DECODER] && this[DECODER].lastNeed) || this[BUFFERLENGTH])\n )\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this[BUFFER].length)\n this[BUFFER] = this[BUFFER].map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding(enc) {\n this.encoding = enc\n }\n\n get objectMode() {\n return this[OBJECTMODE]\n }\n set objectMode(om) {\n this[OBJECTMODE] = this[OBJECTMODE] || !!om\n }\n\n get ['async']() {\n return this[ASYNC]\n }\n set ['async'](a) {\n this[ASYNC] = this[ASYNC] || !!a\n }\n\n // drop everything and get out of the flow completely\n [ABORT]() {\n this[ABORTED] = true\n this.emit('abort', this[SIGNAL].reason)\n this.destroy(this[SIGNAL].reason)\n }\n\n get aborted() {\n return this[ABORTED]\n }\n set aborted(_) {}\n\n write(chunk, encoding, cb) {\n if (this[ABORTED]) return false\n if (this[EOF]) throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit(\n 'error',\n Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n )\n )\n return true\n }\n\n if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8')\n\n if (!encoding) encoding = 'utf8'\n\n const fn = this[ASYNC] ? defer : f => f()\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk)) chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // handle object mode up front, since it's simpler\n // this yields better performance, fewer checks later.\n if (this[OBJECTMODE]) {\n /* istanbul ignore if - maybe impossible? */\n if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n if (this.flowing) this.emit('data', chunk)\n else this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n if (cb) fn(cb)\n\n return this.flowing\n }\n\n // at this point the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!chunk.length) {\n if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n if (cb) fn(cb)\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (\n typeof chunk === 'string' &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)\n ) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n // Note: flushing CAN potentially switch us into not-flowing mode\n if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n if (this.flowing) this.emit('data', chunk)\n else this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n if (cb) fn(cb)\n\n return this.flowing\n }\n\n read(n) {\n if (this[DESTROYED]) return null\n\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n this[MAYBE_EMIT_END]()\n return null\n }\n\n if (this[OBJECTMODE]) n = null\n\n if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {\n if (this.encoding) this[BUFFER] = [this[BUFFER].join('')]\n else this[BUFFER] = [Buffer.concat(this[BUFFER], this[BUFFERLENGTH])]\n }\n\n const ret = this[READ](n || null, this[BUFFER][0])\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [READ](n, chunk) {\n if (n === chunk.length || n === null) this[BUFFERSHIFT]()\n else {\n this[BUFFER][0] = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this[BUFFER].length && !this[EOF]) this.emit('drain')\n\n return chunk\n }\n\n end(chunk, encoding, cb) {\n if (typeof chunk === 'function') (cb = chunk), (chunk = null)\n if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8')\n if (chunk) this.write(chunk, encoding)\n if (cb) this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED]) this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME]() {\n if (this[DESTROYED]) return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this[BUFFER].length) this[FLUSH]()\n else if (this[EOF]) this[MAYBE_EMIT_END]()\n else this.emit('drain')\n }\n\n resume() {\n return this[RESUME]()\n }\n\n pause() {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed() {\n return this[DESTROYED]\n }\n\n get flowing() {\n return this[FLOWING]\n }\n\n get paused() {\n return this[PAUSED]\n }\n\n [BUFFERPUSH](chunk) {\n if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1\n else this[BUFFERLENGTH] += chunk.length\n this[BUFFER].push(chunk)\n }\n\n [BUFFERSHIFT]() {\n if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1\n else this[BUFFERLENGTH] -= this[BUFFER][0].length\n return this[BUFFER].shift()\n }\n\n [FLUSH](noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length)\n\n if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain')\n }\n\n [FLUSHCHUNK](chunk) {\n this.emit('data', chunk)\n return this.flowing\n }\n\n pipe(dest, opts) {\n if (this[DESTROYED]) return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === proc.stdout || dest === proc.stderr) opts.end = false\n else opts.end = opts.end !== false\n opts.proxyErrors = !!opts.proxyErrors\n\n // piping an ended stream ends immediately\n if (ended) {\n if (opts.end) dest.end()\n } else {\n this[PIPES].push(\n !opts.proxyErrors\n ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts)\n )\n if (this[ASYNC]) defer(() => this[RESUME]())\n else this[RESUME]()\n }\n\n return dest\n }\n\n unpipe(dest) {\n const p = this[PIPES].find(p => p.dest === dest)\n if (p) {\n this[PIPES].splice(this[PIPES].indexOf(p), 1)\n p.unpipe()\n }\n }\n\n addListener(ev, fn) {\n return this.on(ev, fn)\n }\n\n on(ev, fn) {\n const ret = super.on(ev, fn)\n if (ev === 'data' && !this[PIPES].length && !this.flowing) this[RESUME]()\n else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)\n super.emit('readable')\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n } else if (ev === 'error' && this[EMITTED_ERROR]) {\n if (this[ASYNC]) defer(() => fn.call(this, this[EMITTED_ERROR]))\n else fn.call(this, this[EMITTED_ERROR])\n }\n return ret\n }\n\n get emittedEnd() {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END]() {\n if (\n !this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this[BUFFER].length === 0 &&\n this[EOF]\n ) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED]) this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit(ev, data, ...extra) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n return !this[OBJECTMODE] && !data\n ? false\n : this[ASYNC]\n ? defer(() => this[EMITDATA](data))\n : this[EMITDATA](data)\n } else if (ev === 'end') {\n return this[EMITEND]()\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED]) return\n const ret = super.emit('close')\n this.removeAllListeners('close')\n return ret\n } else if (ev === 'error') {\n this[EMITTED_ERROR] = data\n super.emit(ERROR, data)\n const ret =\n !this[SIGNAL] || this.listeners('error').length\n ? super.emit('error', data)\n : false\n this[MAYBE_EMIT_END]()\n return ret\n } else if (ev === 'resume') {\n const ret = super.emit('resume')\n this[MAYBE_EMIT_END]()\n return ret\n } else if (ev === 'finish' || ev === 'prefinish') {\n const ret = super.emit(ev)\n this.removeAllListeners(ev)\n return ret\n }\n\n // Some other unknown event\n const ret = super.emit(ev, data, ...extra)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITDATA](data) {\n for (const p of this[PIPES]) {\n if (p.dest.write(data) === false) this.pause()\n }\n const ret = super.emit('data', data)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITEND]() {\n if (this[EMITTED_END]) return\n\n this[EMITTED_END] = true\n this.readable = false\n if (this[ASYNC]) defer(() => this[EMITEND2]())\n else this[EMITEND2]()\n }\n\n [EMITEND2]() {\n if (this[DECODER]) {\n const data = this[DECODER].end()\n if (data) {\n for (const p of this[PIPES]) {\n p.dest.write(data)\n }\n super.emit('data', data)\n }\n }\n\n for (const p of this[PIPES]) {\n p.end()\n }\n const ret = super.emit('end')\n this.removeAllListeners('end')\n return ret\n }\n\n // const all = await stream.collect()\n collect() {\n const buf = []\n if (!this[OBJECTMODE]) buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE]) buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat() {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING]\n ? buf.join('')\n : Buffer.concat(buf, buf.dataLength)\n )\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise() {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('error', er => reject(er))\n this.on('end', () => resolve())\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR]() {\n let stopped = false\n const stop = () => {\n this.pause()\n stopped = true\n return Promise.resolve({ done: true })\n }\n const next = () => {\n if (stopped) return stop()\n const res = this.read()\n if (res !== null) return Promise.resolve({ done: false, value: res })\n\n if (this[EOF]) return stop()\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n this.removeListener(DESTROYED, ondestroy)\n stop()\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.removeListener(DESTROYED, ondestroy)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n this.removeListener(DESTROYED, ondestroy)\n stop()\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return {\n next,\n throw: stop,\n return: stop,\n [ASYNCITERATOR]() {\n return this\n },\n }\n }\n\n // for (let chunk of stream)\n [ITERATOR]() {\n let stopped = false\n const stop = () => {\n this.pause()\n this.removeListener(ERROR, stop)\n this.removeListener(DESTROYED, stop)\n this.removeListener('end', stop)\n stopped = true\n return { done: true }\n }\n\n const next = () => {\n if (stopped) return stop()\n const value = this.read()\n return value === null ? stop() : { value }\n }\n this.once('end', stop)\n this.once(ERROR, stop)\n this.once(DESTROYED, stop)\n\n return {\n next,\n throw: stop,\n return: stop,\n [ITERATOR]() {\n return this\n },\n }\n }\n\n destroy(er) {\n if (this[DESTROYED]) {\n if (er) this.emit('error', er)\n else this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this[BUFFER].length = 0\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED]) this.close()\n\n if (er) this.emit('error', er)\n // if no error to emit, still reject pending promises\n else this.emit(DESTROYED)\n\n return this\n }\n\n static isStream(s) {\n return (\n !!s &&\n (s instanceof Minipass ||\n s instanceof Stream ||\n (s instanceof EE &&\n // readable\n (typeof s.pipe === 'function' ||\n // writable\n (typeof s.write === 'function' && typeof s.end === 'function'))))\n )\n }\n}\n\nexports.Minipass = Minipass\n","// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736. When node v6\n// support drops, we can just export the realZlibConstants object.\nconst realZlibConstants = require('zlib').constants ||\n /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n Z_VERSION_ERROR: -6,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n DEFLATE: 1,\n INFLATE: 2,\n GZIP: 3,\n GUNZIP: 4,\n DEFLATERAW: 5,\n INFLATERAW: 6,\n UNZIP: 7,\n BROTLI_DECODE: 8,\n BROTLI_ENCODE: 9,\n Z_MIN_WINDOWBITS: 8,\n Z_MAX_WINDOWBITS: 15,\n Z_DEFAULT_WINDOWBITS: 15,\n Z_MIN_CHUNK: 64,\n Z_MAX_CHUNK: Infinity,\n Z_DEFAULT_CHUNK: 16384,\n Z_MIN_MEMLEVEL: 1,\n Z_MAX_MEMLEVEL: 9,\n Z_DEFAULT_MEMLEVEL: 8,\n Z_MIN_LEVEL: -1,\n Z_MAX_LEVEL: 9,\n Z_DEFAULT_LEVEL: -1,\n BROTLI_OPERATION_PROCESS: 0,\n BROTLI_OPERATION_FLUSH: 1,\n BROTLI_OPERATION_FINISH: 2,\n BROTLI_OPERATION_EMIT_METADATA: 3,\n BROTLI_MODE_GENERIC: 0,\n BROTLI_MODE_TEXT: 1,\n BROTLI_MODE_FONT: 2,\n BROTLI_DEFAULT_MODE: 0,\n BROTLI_MIN_QUALITY: 0,\n BROTLI_MAX_QUALITY: 11,\n BROTLI_DEFAULT_QUALITY: 11,\n BROTLI_MIN_WINDOW_BITS: 10,\n BROTLI_MAX_WINDOW_BITS: 24,\n BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n BROTLI_DEFAULT_WINDOW: 22,\n BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n BROTLI_PARAM_MODE: 0,\n BROTLI_PARAM_QUALITY: 1,\n BROTLI_PARAM_LGWIN: 2,\n BROTLI_PARAM_LGBLOCK: 3,\n BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n BROTLI_PARAM_SIZE_HINT: 5,\n BROTLI_PARAM_LARGE_WINDOW: 6,\n BROTLI_PARAM_NPOSTFIX: 7,\n BROTLI_PARAM_NDIRECT: 8,\n BROTLI_DECODER_RESULT_ERROR: 0,\n BROTLI_DECODER_RESULT_SUCCESS: 1,\n BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n BROTLI_DECODER_NO_ERROR: 0,\n BROTLI_DECODER_SUCCESS: 1,\n BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n}, realZlibConstants))\n","'use strict'\nconst proc = typeof process === 'object' && process ? process : {\n stdout: null,\n stderr: null,\n}\nconst EE = require('events')\nconst Stream = require('stream')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n constructor (src, dest, opts) {\n this.src = src\n this.dest = dest\n this.opts = opts\n this.ondrain = () => src[RESUME]()\n dest.on('drain', this.ondrain)\n }\n unpipe () {\n this.dest.removeListener('drain', this.ondrain)\n }\n // istanbul ignore next - only here for the prototype\n proxyErrors () {}\n end () {\n this.unpipe()\n if (this.opts.end)\n this.dest.end()\n }\n}\n\nclass PipeProxyErrors extends Pipe {\n unpipe () {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor (src, dest, opts) {\n super(src, dest, opts)\n this.proxyErrors = er => dest.emit('error', er)\n src.on('error', this.proxyErrors)\n }\n}\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = []\n this.buffer = []\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[ASYNC] = options && !!options.async || false\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this[EMITTED_ERROR] = null\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n get ['async'] () { return this[ASYNC] }\n set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n const fn = this[ASYNC] ? defer : f => f()\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // handle object mode up front, since it's simpler\n // this yields better performance, fewer checks later.\n if (this[OBJECTMODE]) {\n /* istanbul ignore if - maybe impossible? */\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n fn(cb)\n\n return this.flowing\n }\n\n // at this point the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!chunk.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n fn(cb)\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (typeof chunk === 'string' &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n // Note: flushing CAN potentially switch us into not-flowing mode\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n fn(cb)\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n this[MAYBE_EMIT_END]()\n return null\n }\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = [this.buffer.join('')]\n else\n this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]\n }\n\n const ret = this[READ](n || null, this.buffer[0])\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer[0] = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer[0].length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === proc.stdout || dest === proc.stderr)\n opts.end = false\n else\n opts.end = opts.end !== false\n opts.proxyErrors = !!opts.proxyErrors\n\n // piping an ended stream ends immediately\n if (ended) {\n if (opts.end)\n dest.end()\n } else {\n this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts))\n if (this[ASYNC])\n defer(() => this[RESUME]())\n else\n this[RESUME]()\n }\n\n return dest\n }\n\n unpipe (dest) {\n const p = this.pipes.find(p => p.dest === dest)\n if (p) {\n this.pipes.splice(this.pipes.indexOf(p), 1)\n p.unpipe()\n }\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n const ret = super.on(ev, fn)\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\n else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)\n super.emit('readable')\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n } else if (ev === 'error' && this[EMITTED_ERROR]) {\n if (this[ASYNC])\n defer(() => fn.call(this, this[EMITTED_ERROR]))\n else\n fn.call(this, this[EMITTED_ERROR])\n }\n return ret\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data, ...extra) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n return !data ? false\n : this[ASYNC] ? defer(() => this[EMITDATA](data))\n : this[EMITDATA](data)\n } else if (ev === 'end') {\n return this[EMITEND]()\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED])\n return\n const ret = super.emit('close')\n this.removeAllListeners('close')\n return ret\n } else if (ev === 'error') {\n this[EMITTED_ERROR] = data\n const ret = super.emit('error', data)\n this[MAYBE_EMIT_END]()\n return ret\n } else if (ev === 'resume') {\n const ret = super.emit('resume')\n this[MAYBE_EMIT_END]()\n return ret\n } else if (ev === 'finish' || ev === 'prefinish') {\n const ret = super.emit(ev)\n this.removeAllListeners(ev)\n return ret\n }\n\n // Some other unknown event\n const ret = super.emit(ev, data, ...extra)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITDATA] (data) {\n for (const p of this.pipes) {\n if (p.dest.write(data) === false)\n this.pause()\n }\n const ret = super.emit('data', data)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITEND] () {\n if (this[EMITTED_END])\n return\n\n this[EMITTED_END] = true\n this.readable = false\n if (this[ASYNC])\n defer(() => this[EMITEND2]())\n else\n this[EMITEND2]()\n }\n\n [EMITEND2] () {\n if (this[DECODER]) {\n const data = this[DECODER].end()\n if (data) {\n for (const p of this.pipes) {\n p.dest.write(data)\n }\n super.emit('data', data)\n }\n }\n\n for (const p of this.pipes) {\n p.end()\n }\n const ret = super.emit('end')\n this.removeAllListeners('end')\n return ret\n }\n\n // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE])\n buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise () {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('error', er => reject(er))\n this.on('end', () => resolve())\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer.length = 0\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n","'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n constructor (err) {\n super('zlib: ' + err.message)\n this.code = err.code\n this.errno = err.errno\n /* istanbul ignore if */\n if (!this.code)\n this.code = 'ZLIB_ERROR'\n\n this.message = 'zlib: ' + err.message\n Error.captureStackTrace(this, this.constructor)\n }\n\n get name () {\n return 'ZlibError'\n }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n constructor (opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor')\n\n super(opts)\n this[_sawError] = false\n this[_ended] = false\n this[_opts] = opts\n\n this[_flushFlag] = opts.flush\n this[_finishFlushFlag] = opts.finishFlush\n // this will throw if any options are invalid for the class selected\n try {\n this[_handle] = new realZlib[mode](opts)\n } catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er)\n }\n\n this[_onError] = (err) => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this[_sawError])\n return\n\n this[_sawError] = true\n\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n this.close()\n this.emit('error', err)\n }\n\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n this.once('end', () => this.close)\n }\n\n close () {\n if (this[_handle]) {\n this[_handle].close()\n this[_handle] = null\n this.emit('close')\n }\n }\n\n reset () {\n if (!this[_sawError]) {\n assert(this[_handle], 'zlib binding closed')\n return this[_handle].reset()\n }\n }\n\n flush (flushFlag) {\n if (this.ended)\n return\n\n if (typeof flushFlag !== 'number')\n flushFlag = this[_fullFlushFlag]\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n }\n\n end (chunk, encoding, cb) {\n if (chunk)\n this.write(chunk, encoding)\n this.flush(this[_finishFlushFlag])\n this[_ended] = true\n return super.end(null, null, cb)\n }\n\n get ended () {\n return this[_ended]\n }\n\n write (chunk, encoding, cb) {\n // process the chunk using the sync process\n // then super.write() all the outputted chunks\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (typeof chunk === 'string')\n chunk = Buffer.from(chunk, encoding)\n\n if (this[_sawError])\n return\n assert(this[_handle], 'zlib binding closed')\n\n // _processChunk tries to .close() the native handle after it's done, so we\n // intercept that by temporarily making it a no-op.\n const nativeHandle = this[_handle]._handle\n const originalNativeClose = nativeHandle.close\n nativeHandle.close = () => {}\n const originalClose = this[_handle].close\n this[_handle].close = () => {}\n // It also calls `Buffer.concat()` at the end, which may be convenient\n // for some, but which we are not interested in as it slows us down.\n Buffer.concat = (args) => args\n let result\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag] : this[_flushFlag]\n result = this[_handle]._processChunk(chunk, flushFlag)\n // if we don't throw, reset it back how it was\n Buffer.concat = OriginalBufferConcat\n } catch (err) {\n // or if we do, put Buffer.concat() back before we emit error\n // Error events call into user code, which may call Buffer.concat()\n Buffer.concat = OriginalBufferConcat\n this[_onError](new ZlibError(err))\n } finally {\n if (this[_handle]) {\n // Core zlib resets `_handle` to null after attempting to close the\n // native handle. Our no-op handler prevented actual closure, but we\n // need to restore the `._handle` property.\n this[_handle]._handle = nativeHandle\n nativeHandle.close = originalNativeClose\n this[_handle].close = originalClose\n // `_processChunk()` adds an 'error' listener. If we don't remove it\n // after each call, these handlers start piling up.\n this[_handle].removeAllListeners('error')\n // make sure OUR error listener is still attached tho\n }\n }\n\n if (this[_handle])\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n\n let writeReturn\n if (result) {\n if (Array.isArray(result) && result.length > 0) {\n // The first buffer is always `handle._outBuffer`, which would be\n // re-used for later invocations; so, we always have to copy that one.\n writeReturn = this[_superWrite](Buffer.from(result[0]))\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i])\n }\n } else {\n writeReturn = this[_superWrite](Buffer.from(result))\n }\n }\n\n if (cb)\n cb()\n return writeReturn\n }\n\n [_superWrite] (data) {\n return super.write(data)\n }\n}\n\nclass Zlib extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.Z_NO_FLUSH\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n this[_level] = opts.level\n this[_strategy] = opts.strategy\n }\n\n params (level, strategy) {\n if (this[_sawError])\n return\n\n if (!this[_handle])\n throw new Error('cannot switch params when binding is closed')\n\n // no way to test this without also not supporting params at all\n /* istanbul ignore if */\n if (!this[_handle].params)\n throw new Error('not supported in this implementation')\n\n if (this[_level] !== level || this[_strategy] !== strategy) {\n this.flush(constants.Z_SYNC_FLUSH)\n assert(this[_handle], 'zlib binding closed')\n // .params() calls .flush(), but the latter is always async in the\n // core zlib. We override .flush() temporarily to intercept that and\n // flush synchronously.\n const origFlush = this[_handle].flush\n this[_handle].flush = (flushFlag, cb) => {\n this.flush(flushFlag)\n cb()\n }\n try {\n this[_handle].params(level, strategy)\n } finally {\n this[_handle].flush = origFlush\n }\n /* istanbul ignore else */\n if (this[_handle]) {\n this[_level] = level\n this[_strategy] = strategy\n }\n }\n }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n constructor (opts) {\n super(opts, 'Deflate')\n }\n}\n\nclass Inflate extends Zlib {\n constructor (opts) {\n super(opts, 'Inflate')\n }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gzip')\n this[_portable] = opts && !!opts.portable\n }\n\n [_superWrite] (data) {\n if (!this[_portable])\n return super[_superWrite](data)\n\n // we'll always get the header emitted in one first chunk\n // overwrite the OS indicator byte with 0xFF\n this[_portable] = false\n data[9] = 255\n return super[_superWrite](data)\n }\n}\n\nclass Gunzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gunzip')\n }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'DeflateRaw')\n }\n}\n\nclass InflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'InflateRaw')\n }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n constructor (opts) {\n super(opts, 'Unzip')\n }\n}\n\nclass Brotli extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n }\n}\n\nclass BrotliCompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliCompress')\n }\n}\n\nclass BrotliDecompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliDecompress')\n }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n exports.BrotliCompress = BrotliCompress\n exports.BrotliDecompress = BrotliDecompress\n} else {\n exports.BrotliCompress = exports.BrotliDecompress = class {\n constructor () {\n throw new Error('Brotli is not supported in this version of Node.js')\n }\n }\n}\n","// on windows, either \\ or / are valid directory separators.\n// on unix, \\ is a valid character in filenames.\n// so, on windows, and only on windows, we replace all \\ chars with /,\n// so that we can use / as our one and only directory separator char.\n\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nmodule.exports = platform !== 'win32' ? p => p\n : p => p && p.replace(/\\\\/g, '/')\n","'use strict'\nconst { Minipass } = require('minipass')\nconst normPath = require('./normalize-windows-path.js')\n\nconst SLURP = Symbol('slurp')\nmodule.exports = class ReadEntry extends Minipass {\n constructor (header, ex, gex) {\n super()\n // read entries always start life paused. this is to avoid the\n // situation where Minipass's auto-ending empty streams results\n // in an entry ending before we're ready for it.\n this.pause()\n this.extended = ex\n this.globalExtended = gex\n this.header = header\n this.startBlockSize = 512 * Math.ceil(header.size / 512)\n this.blockRemain = this.startBlockSize\n this.remain = header.size\n this.type = header.type\n this.meta = false\n this.ignore = false\n switch (this.type) {\n case 'File':\n case 'OldFile':\n case 'Link':\n case 'SymbolicLink':\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'Directory':\n case 'FIFO':\n case 'ContiguousFile':\n case 'GNUDumpDir':\n break\n\n case 'NextFileHasLongLinkpath':\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n case 'GlobalExtendedHeader':\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this.meta = true\n break\n\n // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n // it may be worth doing the same, but with a warning.\n default:\n this.ignore = true\n }\n\n this.path = normPath(header.path)\n this.mode = header.mode\n if (this.mode) {\n this.mode = this.mode & 0o7777\n }\n this.uid = header.uid\n this.gid = header.gid\n this.uname = header.uname\n this.gname = header.gname\n this.size = header.size\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n this.linkpath = normPath(header.linkpath)\n this.uname = header.uname\n this.gname = header.gname\n\n if (ex) {\n this[SLURP](ex)\n }\n if (gex) {\n this[SLURP](gex, true)\n }\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain) {\n throw new Error('writing more to entry than is appropriate')\n }\n\n const r = this.remain\n const br = this.blockRemain\n this.remain = Math.max(0, r - writeLen)\n this.blockRemain = Math.max(0, br - writeLen)\n if (this.ignore) {\n return true\n }\n\n if (r >= writeLen) {\n return super.write(data)\n }\n\n // r < writeLen\n return super.write(data.slice(0, r))\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path')) {\n this[k] = k === 'path' || k === 'linkpath' ? normPath(ex[k]) : ex[k]\n }\n }\n }\n}\n","'use strict'\n// map types from key to human-friendly name\nexports.name = new Map([\n ['0', 'File'],\n // same as File\n ['', 'OldFile'],\n ['1', 'Link'],\n ['2', 'SymbolicLink'],\n // Devices and FIFOs aren't fully supported\n // they are parsed, but skipped when unpacking\n ['3', 'CharacterDevice'],\n ['4', 'BlockDevice'],\n ['5', 'Directory'],\n ['6', 'FIFO'],\n // same as File\n ['7', 'ContiguousFile'],\n // pax headers\n ['g', 'GlobalExtendedHeader'],\n ['x', 'ExtendedHeader'],\n // vendor-specific stuff\n // skip\n ['A', 'SolarisACL'],\n // like 5, but with data, which should be skipped\n ['D', 'GNUDumpDir'],\n // metadata only, skip\n ['I', 'Inode'],\n // data = link path of next file\n ['K', 'NextFileHasLongLinkpath'],\n // data = path of next file\n ['L', 'NextFileHasLongPath'],\n // skip\n ['M', 'ContinuationFile'],\n // like L\n ['N', 'OldGnuLongPath'],\n // skip\n ['S', 'SparseFile'],\n // skip\n ['V', 'TapeVolumeHeader'],\n // like x\n ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))\n","'use strict'\n// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nconst encode = (num, buf) => {\n if (!Number.isSafeInteger(num)) {\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range')\n } else if (num < 0) {\n encodeNegative(num, buf)\n } else {\n encodePositive(num, buf)\n }\n return buf\n}\n\nconst encodePositive = (num, buf) => {\n buf[0] = 0x80\n\n for (var i = buf.length; i > 1; i--) {\n buf[i - 1] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nconst encodeNegative = (num, buf) => {\n buf[0] = 0xff\n var flipped = false\n num = num * -1\n for (var i = buf.length; i > 1; i--) {\n var byte = num & 0xff\n num = Math.floor(num / 0x100)\n if (flipped) {\n buf[i - 1] = onesComp(byte)\n } else if (byte === 0) {\n buf[i - 1] = 0\n } else {\n flipped = true\n buf[i - 1] = twosComp(byte)\n }\n }\n}\n\nconst parse = (buf) => {\n const pre = buf[0]\n const value = pre === 0x80 ? pos(buf.slice(1, buf.length))\n : pre === 0xff ? twos(buf)\n : null\n if (value === null) {\n throw Error('invalid base256 encoding')\n }\n\n if (!Number.isSafeInteger(value)) {\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('parsed number outside of javascript safe integer range')\n }\n\n return value\n}\n\nconst twos = (buf) => {\n var len = buf.length\n var sum = 0\n var flipped = false\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n var f\n if (flipped) {\n f = onesComp(byte)\n } else if (byte === 0) {\n f = byte\n } else {\n flipped = true\n f = twosComp(byte)\n }\n if (f !== 0) {\n sum -= f * Math.pow(256, len - i - 1)\n }\n }\n return sum\n}\n\nconst pos = (buf) => {\n var len = buf.length\n var sum = 0\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n if (byte !== 0) {\n sum += byte * Math.pow(256, len - i - 1)\n }\n }\n return sum\n}\n\nconst onesComp = byte => (0xff ^ byte) & 0xff\n\nconst twosComp = byte => ((0xff ^ byte) + 1) & 0xff\n\nmodule.exports = {\n encode,\n parse,\n}\n","'use strict'\n// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nconst types = require('./types.js')\nconst pathModule = require('path').posix\nconst large = require('./large-numbers.js')\n\nconst SLURP = Symbol('slurp')\nconst TYPE = Symbol('type')\n\nclass Header {\n constructor (data, off, ex, gex) {\n this.cksumValid = false\n this.needPax = false\n this.nullBlock = false\n\n this.block = null\n this.path = null\n this.mode = null\n this.uid = null\n this.gid = null\n this.size = null\n this.mtime = null\n this.cksum = null\n this[TYPE] = '0'\n this.linkpath = null\n this.uname = null\n this.gname = null\n this.devmaj = 0\n this.devmin = 0\n this.atime = null\n this.ctime = null\n\n if (Buffer.isBuffer(data)) {\n this.decode(data, off || 0, ex, gex)\n } else if (data) {\n this.set(data)\n }\n }\n\n decode (buf, off, ex, gex) {\n if (!off) {\n off = 0\n }\n\n if (!buf || !(buf.length >= off + 512)) {\n throw new Error('need 512 bytes for header')\n }\n\n this.path = decString(buf, off, 100)\n this.mode = decNumber(buf, off + 100, 8)\n this.uid = decNumber(buf, off + 108, 8)\n this.gid = decNumber(buf, off + 116, 8)\n this.size = decNumber(buf, off + 124, 12)\n this.mtime = decDate(buf, off + 136, 12)\n this.cksum = decNumber(buf, off + 148, 12)\n\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n this[SLURP](ex)\n this[SLURP](gex, true)\n\n // old tar versions marked dirs as a file with a trailing /\n this[TYPE] = decString(buf, off + 156, 1)\n if (this[TYPE] === '') {\n this[TYPE] = '0'\n }\n if (this[TYPE] === '0' && this.path.slice(-1) === '/') {\n this[TYPE] = '5'\n }\n\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this[TYPE] === '5') {\n this.size = 0\n }\n\n this.linkpath = decString(buf, off + 157, 100)\n if (buf.slice(off + 257, off + 265).toString() === 'ustar\\u000000') {\n this.uname = decString(buf, off + 265, 32)\n this.gname = decString(buf, off + 297, 32)\n this.devmaj = decNumber(buf, off + 329, 8)\n this.devmin = decNumber(buf, off + 337, 8)\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155)\n this.path = prefix + '/' + this.path\n } else {\n const prefix = decString(buf, off + 345, 130)\n if (prefix) {\n this.path = prefix + '/' + this.path\n }\n this.atime = decDate(buf, off + 476, 12)\n this.ctime = decDate(buf, off + 488, 12)\n }\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++) {\n sum += buf[i]\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i]\n }\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === null && sum === 8 * 0x20) {\n this.nullBlock = true\n }\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path')) {\n this[k] = ex[k]\n }\n }\n }\n\n encode (buf, off) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n off = 0\n }\n\n if (!off) {\n off = 0\n }\n\n if (!(buf.length >= off + 512)) {\n throw new Error('need 512 bytes for header')\n }\n\n const prefixSize = this.ctime || this.atime ? 130 : 155\n const split = splitPrefix(this.path || '', prefixSize)\n const path = split[0]\n const prefix = split[1]\n this.needPax = split[2]\n\n this.needPax = encString(buf, off, 100, path) || this.needPax\n this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = this[TYPE].charCodeAt(0)\n this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0) {\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n } else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++) {\n sum += buf[i]\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i]\n }\n\n this.cksum = sum\n encNumber(buf, off + 148, 8, this.cksum)\n this.cksumValid = true\n\n return this.needPax\n }\n\n set (data) {\n for (const i in data) {\n if (data[i] !== null && data[i] !== undefined) {\n this[i] = data[i]\n }\n }\n }\n\n get type () {\n return types.name.get(this[TYPE]) || this[TYPE]\n }\n\n get typeKey () {\n return this[TYPE]\n }\n\n set type (type) {\n if (types.code.has(type)) {\n this[TYPE] = types.code.get(type)\n } else {\n this[TYPE] = type\n }\n }\n}\n\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret\n const root = pathModule.parse(p).root || '.'\n\n if (Buffer.byteLength(pp) < pathSize) {\n ret = [pp, prefix, false]\n } else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp)\n pp = pathModule.basename(pp)\n\n do {\n if (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize) {\n // both fit!\n ret = [pp, prefix, false]\n } else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize) {\n // prefix fits in prefix, but path doesn't fit in path\n ret = [pp.slice(0, pathSize - 1), prefix, true]\n } else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp)\n prefix = pathModule.dirname(prefix)\n }\n } while (prefix !== root && !ret)\n\n // at this point, found no resolution, just truncate\n if (!ret) {\n ret = [p.slice(0, pathSize - 1), '', true]\n }\n }\n return ret\n}\n\nconst decString = (buf, off, size) =>\n buf.slice(off, off + size).toString('utf8').replace(/\\0.*/, '')\n\nconst decDate = (buf, off, size) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = num => num === null ? null : new Date(num * 1000)\n\nconst decNumber = (buf, off, size) =>\n buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanNull = value => isNaN(value) ? null : value\n\nconst decSmallNumber = (buf, off, size) =>\n nanNull(parseInt(\n buf.slice(off, off + size)\n .toString('utf8').replace(/\\0.*$/, '').trim(), 8))\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n}\n\nconst encNumber = (buf, off, size, number) =>\n number === null ? false :\n number > MAXNUM[size] || number < 0\n ? (large.encode(number, buf.slice(off, off + size)), true)\n : (encSmallNumber(buf, off, size, number), false)\n\nconst encSmallNumber = (buf, off, size, number) =>\n buf.write(octalString(number, size), off, size, 'ascii')\n\nconst octalString = (number, size) =>\n padOctal(Math.floor(number).toString(8), size)\n\nconst padOctal = (string, size) =>\n (string.length === size - 1 ? string\n : new Array(size - string.length - 1).join('0') + string + ' ') + '\\0'\n\nconst encDate = (buf, off, size, date) =>\n date === null ? false :\n encNumber(buf, off, size, date.getTime() / 1000)\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (buf, off, size, string) =>\n string === null ? false :\n (buf.write(string + NULLS, off, size, 'utf8'),\n string.length !== Buffer.byteLength(string) || string.length > size)\n\nmodule.exports = Header\n","'use strict'\nconst Header = require('./header.js')\nconst path = require('path')\n\nclass Pax {\n constructor (obj, global) {\n this.atime = obj.atime || null\n this.charset = obj.charset || null\n this.comment = obj.comment || null\n this.ctime = obj.ctime || null\n this.gid = obj.gid || null\n this.gname = obj.gname || null\n this.linkpath = obj.linkpath || null\n this.mtime = obj.mtime || null\n this.path = obj.path || null\n this.size = obj.size || null\n this.uid = obj.uid || null\n this.uname = obj.uname || null\n this.dev = obj.dev || null\n this.ino = obj.ino || null\n this.nlink = obj.nlink || null\n this.global = global || false\n }\n\n encode () {\n const body = this.encodeBody()\n if (body === '') {\n return null\n }\n\n const bodyLen = Buffer.byteLength(body)\n // round up to 512 bytes\n // add 512 for header\n const bufLen = 512 * Math.ceil(1 + bodyLen / 512)\n const buf = Buffer.allocUnsafe(bufLen)\n\n // 0-fill the header section, it might not hit every field\n for (let i = 0; i < 512; i++) {\n buf[i] = 0\n }\n\n new Header({\n // XXX split the path\n // then the path should be PaxHeader + basename, but less than 99,\n // prepend with the dirname\n path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),\n mode: this.mode || 0o644,\n uid: this.uid || null,\n gid: this.gid || null,\n size: bodyLen,\n mtime: this.mtime || null,\n type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n linkpath: '',\n uname: this.uname || '',\n gname: this.gname || '',\n devmaj: 0,\n devmin: 0,\n atime: this.atime || null,\n ctime: this.ctime || null,\n }).encode(buf)\n\n buf.write(body, 512, bodyLen, 'utf8')\n\n // null pad after the body\n for (let i = bodyLen + 512; i < buf.length; i++) {\n buf[i] = 0\n }\n\n return buf\n }\n\n encodeBody () {\n return (\n this.encodeField('path') +\n this.encodeField('ctime') +\n this.encodeField('atime') +\n this.encodeField('dev') +\n this.encodeField('ino') +\n this.encodeField('nlink') +\n this.encodeField('charset') +\n this.encodeField('comment') +\n this.encodeField('gid') +\n this.encodeField('gname') +\n this.encodeField('linkpath') +\n this.encodeField('mtime') +\n this.encodeField('size') +\n this.encodeField('uid') +\n this.encodeField('uname')\n )\n }\n\n encodeField (field) {\n if (this[field] === null || this[field] === undefined) {\n return ''\n }\n const v = this[field] instanceof Date ? this[field].getTime() / 1000\n : this[field]\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink'\n ? 'SCHILY.' : '') +\n field + '=' + v + '\\n'\n const byteLen = Buffer.byteLength(s)\n // the digits includes the length of the digits in ascii base-10\n // so if it's 9 characters, then adding 1 for the 9 makes it 10\n // which makes it 11 chars.\n let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1\n if (byteLen + digits >= Math.pow(10, digits)) {\n digits += 1\n }\n const len = digits + byteLen\n return len + s\n }\n}\n\nPax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)\n\nconst merge = (a, b) =>\n b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a\n\nconst parseKV = string =>\n string\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set, line) => {\n const n = parseInt(line, 10)\n\n // XXX Values with \\n in them will fail this.\n // Refactor to not be a naive line-by-line parse.\n if (n !== Buffer.byteLength(line) + 1) {\n return set\n }\n\n line = line.slice((n + ' ').length)\n const kv = line.split('=')\n const k = kv.shift().replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n if (!k) {\n return set\n }\n\n const v = kv.join('=')\n set[k] = /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k)\n ? new Date(v * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v\n return set\n}\n\nmodule.exports = Pax\n","// warning: extremely hot code path.\n// This has been meticulously optimized for use\n// within npm install on large package trees.\n// Do not edit without careful benchmarking.\nmodule.exports = str => {\n let i = str.length - 1\n let slashesStart = -1\n while (i > -1 && str.charAt(i) === '/') {\n slashesStart = i\n i--\n }\n return slashesStart === -1 ? str : str.slice(0, slashesStart)\n}\n","'use strict'\nmodule.exports = Base => class extends Base {\n warn (code, message, data = {}) {\n if (this.file) {\n data.file = this.file\n }\n if (this.cwd) {\n data.cwd = this.cwd\n }\n data.code = message instanceof Error && message.code || code\n data.tarCode = code\n if (!this.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data)\n message = message.message\n }\n this.emit('warn', data.tarCode, message, data)\n } else if (message instanceof Error) {\n this.emit('error', Object.assign(message, data))\n } else {\n this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))\n }\n }\n}\n","'use strict'\n\n// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\n\nconst raw = [\n '|',\n '<',\n '>',\n '?',\n ':',\n]\n\nconst win = raw.map(char =>\n String.fromCharCode(0xf000 + char.charCodeAt(0)))\n\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]))\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]))\n\nmodule.exports = {\n encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),\n decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s),\n}\n","// unix absolute paths are also absolute on win32, so we use this for both\nconst { isAbsolute, parse } = require('path').win32\n\n// returns [root, stripped]\n// Note that windows will think that //x/y/z/a has a \"root\" of //x/y, and in\n// those cases, we want to sanitize it to x/y/z/a, not z/a, so we strip /\n// explicitly if it's the first character.\n// drive-specific relative paths on Windows get their root stripped off even\n// though they are not absolute, so `c:../foo` becomes ['c:', '../foo']\nmodule.exports = path => {\n let r = ''\n\n let parsed = parse(path)\n while (isAbsolute(path) || parsed.root) {\n // windows will think that //x/y/z has a \"root\" of //x/y/\n // but strip the //?/C:/ off of //?/C:/path\n const root = path.charAt(0) === '/' && path.slice(0, 4) !== '//?/' ? '/'\n : parsed.root\n path = path.slice(root.length)\n r += root\n parsed = parse(path)\n }\n return [r, path]\n}\n","'use strict'\nmodule.exports = (mode, isDir, portable) => {\n mode &= 0o7777\n\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable) {\n mode = (mode | 0o600) & ~0o22\n }\n\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400) {\n mode |= 0o100\n }\n if (mode & 0o40) {\n mode |= 0o10\n }\n if (mode & 0o4) {\n mode |= 0o1\n }\n }\n return mode\n}\n","'use strict'\nconst { Minipass } = require('minipass')\nconst Pax = require('./pax.js')\nconst Header = require('./header.js')\nconst fs = require('fs')\nconst path = require('path')\nconst normPath = require('./normalize-windows-path.js')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nconst prefixPath = (path, prefix) => {\n if (!prefix) {\n return normPath(path)\n }\n path = normPath(path).replace(/^\\.(\\/|$)/, '')\n return stripSlash(prefix) + '/' + path\n}\n\nconst maxReadSize = 16 * 1024 * 1024\nconst PROCESS = Symbol('process')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst HEADER = Symbol('header')\nconst READ = Symbol('read')\nconst LSTAT = Symbol('lstat')\nconst ONLSTAT = Symbol('onlstat')\nconst ONREAD = Symbol('onread')\nconst ONREADLINK = Symbol('onreadlink')\nconst OPENFILE = Symbol('openfile')\nconst ONOPENFILE = Symbol('onopenfile')\nconst CLOSE = Symbol('close')\nconst MODE = Symbol('mode')\nconst AWAITDRAIN = Symbol('awaitDrain')\nconst ONDRAIN = Symbol('ondrain')\nconst PREFIX = Symbol('prefix')\nconst HAD_ERROR = Symbol('hadError')\nconst warner = require('./warn-mixin.js')\nconst winchars = require('./winchars.js')\nconst stripAbsolutePath = require('./strip-absolute-path.js')\n\nconst modeFix = require('./mode-fix.js')\n\nconst WriteEntry = warner(class WriteEntry extends Minipass {\n constructor (p, opt) {\n opt = opt || {}\n super(opt)\n if (typeof p !== 'string') {\n throw new TypeError('path is required')\n }\n this.path = normPath(p)\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable\n // until node has builtin pwnam functions, this'll have to do\n this.myuid = process.getuid && process.getuid() || 0\n this.myuser = process.env.USER || ''\n this.maxReadSize = opt.maxReadSize || maxReadSize\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.preservePaths = !!opt.preservePaths\n this.cwd = normPath(opt.cwd || process.cwd())\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n this.prefix = opt.prefix ? normPath(opt.prefix) : null\n\n this.fd = null\n this.blockLen = null\n this.blockRemain = null\n this.buf = null\n this.offset = null\n this.length = null\n this.pos = null\n this.remain = null\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n let pathWarn = false\n if (!this.preservePaths) {\n const [root, stripped] = stripAbsolutePath(this.path)\n if (root) {\n this.path = stripped\n pathWarn = root\n }\n }\n\n this.win32 = !!opt.win32 || process.platform === 'win32'\n if (this.win32) {\n // force the \\ to / normalization, since we might not *actually*\n // be on windows, but want \\ to be considered a path separator.\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'))\n p = p.replace(/\\\\/g, '/')\n }\n\n this.absolute = normPath(opt.absolute || path.resolve(this.cwd, p))\n\n if (this.path === '') {\n this.path = './'\n }\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.statCache.has(this.absolute)) {\n this[ONLSTAT](this.statCache.get(this.absolute))\n } else {\n this[LSTAT]()\n }\n }\n\n emit (ev, ...data) {\n if (ev === 'error') {\n this[HAD_ERROR] = true\n }\n return super.emit(ev, ...data)\n }\n\n [LSTAT] () {\n fs.lstat(this.absolute, (er, stat) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONLSTAT](stat)\n })\n }\n\n [ONLSTAT] (stat) {\n this.statCache.set(this.absolute, stat)\n this.stat = stat\n if (!stat.isFile()) {\n stat.size = 0\n }\n this.type = getType(stat)\n this.emit('stat', stat)\n this[PROCESS]()\n }\n\n [PROCESS] () {\n switch (this.type) {\n case 'File': return this[FILE]()\n case 'Directory': return this[DIRECTORY]()\n case 'SymbolicLink': return this[SYMLINK]()\n // unsupported types are ignored.\n default: return this.end()\n }\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n [PREFIX] (path) {\n return prefixPath(path, this.prefix)\n }\n\n [HEADER] () {\n if (this.type === 'Directory' && this.portable) {\n this.noMtime = true\n }\n\n this.header = new Header({\n path: this[PREFIX](this.path),\n // only apply the prefix to hard links.\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? null : this.stat.uid,\n gid: this.portable ? null : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? null : this.mtime || this.stat.mtime,\n type: this.type,\n uname: this.portable ? null :\n this.stat.uid === this.myuid ? this.myuser : '',\n atime: this.portable ? null : this.stat.atime,\n ctime: this.portable ? null : this.stat.ctime,\n })\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.header.atime,\n ctime: this.portable ? null : this.header.ctime,\n gid: this.portable ? null : this.header.gid,\n mtime: this.noMtime ? null : this.mtime || this.header.mtime,\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n size: this.header.size,\n uid: this.portable ? null : this.header.uid,\n uname: this.portable ? null : this.header.uname,\n dev: this.portable ? null : this.stat.dev,\n ino: this.portable ? null : this.stat.ino,\n nlink: this.portable ? null : this.stat.nlink,\n }).encode())\n }\n super.write(this.header.block)\n }\n\n [DIRECTORY] () {\n if (this.path.slice(-1) !== '/') {\n this.path += '/'\n }\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [SYMLINK] () {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONREADLINK](linkpath)\n })\n }\n\n [ONREADLINK] (linkpath) {\n this.linkpath = normPath(linkpath)\n this[HEADER]()\n this.end()\n }\n\n [HARDLINK] (linkpath) {\n this.type = 'Link'\n this.linkpath = normPath(path.relative(this.cwd, linkpath))\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [FILE] () {\n if (this.stat.nlink > 1) {\n const linkKey = this.stat.dev + ':' + this.stat.ino\n if (this.linkCache.has(linkKey)) {\n const linkpath = this.linkCache.get(linkKey)\n if (linkpath.indexOf(this.cwd) === 0) {\n return this[HARDLINK](linkpath)\n }\n }\n this.linkCache.set(linkKey, this.absolute)\n }\n\n this[HEADER]()\n if (this.stat.size === 0) {\n return this.end()\n }\n\n this[OPENFILE]()\n }\n\n [OPENFILE] () {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONOPENFILE](fd)\n })\n }\n\n [ONOPENFILE] (fd) {\n this.fd = fd\n if (this[HAD_ERROR]) {\n return this[CLOSE]()\n }\n\n this.blockLen = 512 * Math.ceil(this.stat.size / 512)\n this.blockRemain = this.blockLen\n const bufLen = Math.min(this.blockLen, this.maxReadSize)\n this.buf = Buffer.allocUnsafe(bufLen)\n this.offset = 0\n this.pos = 0\n this.remain = this.stat.size\n this.length = this.buf.length\n this[READ]()\n }\n\n [READ] () {\n const { fd, buf, offset, length, pos } = this\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](() => this.emit('error', er))\n }\n this[ONREAD](bytesRead)\n })\n }\n\n [CLOSE] (cb) {\n fs.close(this.fd, cb)\n }\n\n [ONREAD] (bytesRead) {\n if (bytesRead <= 0 && this.remain > 0) {\n const er = new Error('encountered unexpected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](() => this.emit('error', er))\n }\n\n if (bytesRead > this.remain) {\n const er = new Error('did not encounter expected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](() => this.emit('error', er))\n }\n\n // null out the rest of the buffer, if we could fit the block padding\n // at the end of this loop, we've incremented bytesRead and this.remain\n // to be incremented up to the blockRemain level, as if we had expected\n // to get a null-padded file, and read it until the end. then we will\n // decrement both remain and blockRemain by bytesRead, and know that we\n // reached the expected EOF, without any null buffer to append.\n if (bytesRead === this.remain) {\n for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) {\n this.buf[i + this.offset] = 0\n bytesRead++\n this.remain++\n }\n }\n\n const writeBuf = this.offset === 0 && bytesRead === this.buf.length ?\n this.buf : this.buf.slice(this.offset, this.offset + bytesRead)\n\n const flushed = this.write(writeBuf)\n if (!flushed) {\n this[AWAITDRAIN](() => this[ONDRAIN]())\n } else {\n this[ONDRAIN]()\n }\n }\n\n [AWAITDRAIN] (cb) {\n this.once('drain', cb)\n }\n\n write (writeBuf) {\n if (this.blockRemain < writeBuf.length) {\n const er = new Error('writing more data than expected')\n er.path = this.absolute\n return this.emit('error', er)\n }\n this.remain -= writeBuf.length\n this.blockRemain -= writeBuf.length\n this.pos += writeBuf.length\n this.offset += writeBuf.length\n return super.write(writeBuf)\n }\n\n [ONDRAIN] () {\n if (!this.remain) {\n if (this.blockRemain) {\n super.write(Buffer.alloc(this.blockRemain))\n }\n return this[CLOSE](er => er ? this.emit('error', er) : this.end())\n }\n\n if (this.offset >= this.length) {\n // if we only have a smaller bit left to read, alloc a smaller buffer\n // otherwise, keep it the same length it was before.\n this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length))\n this.offset = 0\n }\n this.length = this.buf.length - this.offset\n this[READ]()\n }\n})\n\nclass WriteEntrySync extends WriteEntry {\n [LSTAT] () {\n this[ONLSTAT](fs.lstatSync(this.absolute))\n }\n\n [SYMLINK] () {\n this[ONREADLINK](fs.readlinkSync(this.absolute))\n }\n\n [OPENFILE] () {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'))\n }\n\n [READ] () {\n let threw = true\n try {\n const { fd, buf, offset, length, pos } = this\n const bytesRead = fs.readSync(fd, buf, offset, length, pos)\n this[ONREAD](bytesRead)\n threw = false\n } finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](() => {})\n } catch (er) {}\n }\n }\n }\n\n [AWAITDRAIN] (cb) {\n cb()\n }\n\n [CLOSE] (cb) {\n fs.closeSync(this.fd)\n cb()\n }\n}\n\nconst WriteEntryTar = warner(class WriteEntryTar extends Minipass {\n constructor (readEntry, opt) {\n opt = opt || {}\n super(opt)\n this.preservePaths = !!opt.preservePaths\n this.portable = !!opt.portable\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n\n this.readEntry = readEntry\n this.type = readEntry.type\n if (this.type === 'Directory' && this.portable) {\n this.noMtime = true\n }\n\n this.prefix = opt.prefix || null\n\n this.path = normPath(readEntry.path)\n this.mode = this[MODE](readEntry.mode)\n this.uid = this.portable ? null : readEntry.uid\n this.gid = this.portable ? null : readEntry.gid\n this.uname = this.portable ? null : readEntry.uname\n this.gname = this.portable ? null : readEntry.gname\n this.size = readEntry.size\n this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime\n this.atime = this.portable ? null : readEntry.atime\n this.ctime = this.portable ? null : readEntry.ctime\n this.linkpath = normPath(readEntry.linkpath)\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n let pathWarn = false\n if (!this.preservePaths) {\n const [root, stripped] = stripAbsolutePath(this.path)\n if (root) {\n this.path = stripped\n pathWarn = root\n }\n }\n\n this.remain = readEntry.size\n this.blockRemain = readEntry.startBlockSize\n\n this.header = new Header({\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? null : this.uid,\n gid: this.portable ? null : this.gid,\n size: this.size,\n mtime: this.noMtime ? null : this.mtime,\n type: this.type,\n uname: this.portable ? null : this.uname,\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n })\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n gid: this.portable ? null : this.gid,\n mtime: this.noMtime ? null : this.mtime,\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n size: this.size,\n uid: this.portable ? null : this.uid,\n uname: this.portable ? null : this.uname,\n dev: this.portable ? null : this.readEntry.dev,\n ino: this.portable ? null : this.readEntry.ino,\n nlink: this.portable ? null : this.readEntry.nlink,\n }).encode())\n }\n\n super.write(this.header.block)\n readEntry.pipe(this)\n }\n\n [PREFIX] (path) {\n return prefixPath(path, this.prefix)\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain) {\n throw new Error('writing more to entry than is appropriate')\n }\n this.blockRemain -= writeLen\n return super.write(data)\n }\n\n end () {\n if (this.blockRemain) {\n super.write(Buffer.alloc(this.blockRemain))\n }\n return super.end()\n }\n})\n\nWriteEntry.Sync = WriteEntrySync\nWriteEntry.Tar = WriteEntryTar\n\nconst getType = stat =>\n stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported'\n\nmodule.exports = WriteEntry\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","'use strict'\n\n// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\n\nclass PackJob {\n constructor (path, absolute) {\n this.path = path || './'\n this.absolute = absolute\n this.entry = null\n this.stat = null\n this.readdir = null\n this.pending = false\n this.ignore = false\n this.piped = false\n }\n}\n\nconst { Minipass } = require('minipass')\nconst zlib = require('minizlib')\nconst ReadEntry = require('./read-entry.js')\nconst WriteEntry = require('./write-entry.js')\nconst WriteEntrySync = WriteEntry.Sync\nconst WriteEntryTar = WriteEntry.Tar\nconst Yallist = require('yallist')\nconst EOF = Buffer.alloc(1024)\nconst ONSTAT = Symbol('onStat')\nconst ENDED = Symbol('ended')\nconst QUEUE = Symbol('queue')\nconst CURRENT = Symbol('current')\nconst PROCESS = Symbol('process')\nconst PROCESSING = Symbol('processing')\nconst PROCESSJOB = Symbol('processJob')\nconst JOBS = Symbol('jobs')\nconst JOBDONE = Symbol('jobDone')\nconst ADDFSENTRY = Symbol('addFSEntry')\nconst ADDTARENTRY = Symbol('addTarEntry')\nconst STAT = Symbol('stat')\nconst READDIR = Symbol('readdir')\nconst ONREADDIR = Symbol('onreaddir')\nconst PIPE = Symbol('pipe')\nconst ENTRY = Symbol('entry')\nconst ENTRYOPT = Symbol('entryOpt')\nconst WRITEENTRYCLASS = Symbol('writeEntryClass')\nconst WRITE = Symbol('write')\nconst ONDRAIN = Symbol('ondrain')\n\nconst fs = require('fs')\nconst path = require('path')\nconst warner = require('./warn-mixin.js')\nconst normPath = require('./normalize-windows-path.js')\n\nconst Pack = warner(class Pack extends Minipass {\n constructor (opt) {\n super(opt)\n opt = opt || Object.create(null)\n this.opt = opt\n this.file = opt.file || ''\n this.cwd = opt.cwd || process.cwd()\n this.maxReadSize = opt.maxReadSize\n this.preservePaths = !!opt.preservePaths\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.prefix = normPath(opt.prefix || '')\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.readdirCache = opt.readdirCache || new Map()\n\n this[WRITEENTRYCLASS] = WriteEntry\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n this.portable = !!opt.portable\n this.zip = null\n\n if (opt.gzip || opt.brotli) {\n if (opt.gzip && opt.brotli) {\n throw new TypeError('gzip and brotli are mutually exclusive')\n }\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object') {\n opt.gzip = {}\n }\n if (this.portable) {\n opt.gzip.portable = true\n }\n this.zip = new zlib.Gzip(opt.gzip)\n }\n if (opt.brotli) {\n if (typeof opt.brotli !== 'object') {\n opt.brotli = {}\n }\n this.zip = new zlib.BrotliCompress(opt.brotli)\n }\n this.zip.on('data', chunk => super.write(chunk))\n this.zip.on('end', _ => super.end())\n this.zip.on('drain', _ => this[ONDRAIN]())\n this.on('resume', _ => this.zip.resume())\n } else {\n this.on('drain', this[ONDRAIN])\n }\n\n this.noDirRecurse = !!opt.noDirRecurse\n this.follow = !!opt.follow\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true\n\n this[QUEUE] = new Yallist()\n this[JOBS] = 0\n this.jobs = +opt.jobs || 4\n this[PROCESSING] = false\n this[ENDED] = false\n }\n\n [WRITE] (chunk) {\n return super.write(chunk)\n }\n\n add (path) {\n this.write(path)\n return this\n }\n\n end (path) {\n if (path) {\n this.write(path)\n }\n this[ENDED] = true\n this[PROCESS]()\n return this\n }\n\n write (path) {\n if (this[ENDED]) {\n throw new Error('write after end')\n }\n\n if (path instanceof ReadEntry) {\n this[ADDTARENTRY](path)\n } else {\n this[ADDFSENTRY](path)\n }\n return this.flowing\n }\n\n [ADDTARENTRY] (p) {\n const absolute = normPath(path.resolve(this.cwd, p.path))\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p)) {\n p.resume()\n } else {\n const job = new PackJob(p.path, absolute, false)\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))\n job.entry.on('end', _ => this[JOBDONE](job))\n this[JOBS] += 1\n this[QUEUE].push(job)\n }\n\n this[PROCESS]()\n }\n\n [ADDFSENTRY] (p) {\n const absolute = normPath(path.resolve(this.cwd, p))\n this[QUEUE].push(new PackJob(p, absolute))\n this[PROCESS]()\n }\n\n [STAT] (job) {\n job.pending = true\n this[JOBS] += 1\n const stat = this.follow ? 'stat' : 'lstat'\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false\n this[JOBS] -= 1\n if (er) {\n this.emit('error', er)\n } else {\n this[ONSTAT](job, stat)\n }\n })\n }\n\n [ONSTAT] (job, stat) {\n this.statCache.set(job.absolute, stat)\n job.stat = stat\n\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat)) {\n job.ignore = true\n }\n\n this[PROCESS]()\n }\n\n [READDIR] (job) {\n job.pending = true\n this[JOBS] += 1\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false\n this[JOBS] -= 1\n if (er) {\n return this.emit('error', er)\n }\n this[ONREADDIR](job, entries)\n })\n }\n\n [ONREADDIR] (job, entries) {\n this.readdirCache.set(job.absolute, entries)\n job.readdir = entries\n this[PROCESS]()\n }\n\n [PROCESS] () {\n if (this[PROCESSING]) {\n return\n }\n\n this[PROCESSING] = true\n for (let w = this[QUEUE].head;\n w !== null && this[JOBS] < this.jobs;\n w = w.next) {\n this[PROCESSJOB](w.value)\n if (w.value.ignore) {\n const p = w.next\n this[QUEUE].removeNode(w)\n w.next = p\n }\n }\n\n this[PROCESSING] = false\n\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip) {\n this.zip.end(EOF)\n } else {\n super.write(EOF)\n super.end()\n }\n }\n }\n\n get [CURRENT] () {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value\n }\n\n [JOBDONE] (job) {\n this[QUEUE].shift()\n this[JOBS] -= 1\n this[PROCESS]()\n }\n\n [PROCESSJOB] (job) {\n if (job.pending) {\n return\n }\n\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped) {\n this[PIPE](job)\n }\n return\n }\n\n if (!job.stat) {\n if (this.statCache.has(job.absolute)) {\n this[ONSTAT](job, this.statCache.get(job.absolute))\n } else {\n this[STAT](job)\n }\n }\n if (!job.stat) {\n return\n }\n\n // filtered out!\n if (job.ignore) {\n return\n }\n\n if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {\n if (this.readdirCache.has(job.absolute)) {\n this[ONREADDIR](job, this.readdirCache.get(job.absolute))\n } else {\n this[READDIR](job)\n }\n if (!job.readdir) {\n return\n }\n }\n\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job)\n if (!job.entry) {\n job.ignore = true\n return\n }\n\n if (job === this[CURRENT] && !job.piped) {\n this[PIPE](job)\n }\n }\n\n [ENTRYOPT] (job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n prefix: this.prefix,\n }\n }\n\n [ENTRY] (job) {\n this[JOBS] += 1\n try {\n return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er))\n } catch (er) {\n this.emit('error', er)\n }\n }\n\n [ONDRAIN] () {\n if (this[CURRENT] && this[CURRENT].entry) {\n this[CURRENT].entry.resume()\n }\n }\n\n // like .pipe() but using super, because our write() is special\n [PIPE] (job) {\n job.piped = true\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = job.path\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n const source = job.entry\n const zip = this.zip\n\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk)) {\n source.pause()\n }\n })\n } else {\n source.on('data', chunk => {\n if (!super.write(chunk)) {\n source.pause()\n }\n })\n }\n }\n\n pause () {\n if (this.zip) {\n this.zip.pause()\n }\n return super.pause()\n }\n})\n\nclass PackSync extends Pack {\n constructor (opt) {\n super(opt)\n this[WRITEENTRYCLASS] = WriteEntrySync\n }\n\n // pause/resume are no-ops in sync streams.\n pause () {}\n resume () {}\n\n [STAT] (job) {\n const stat = this.follow ? 'statSync' : 'lstatSync'\n this[ONSTAT](job, fs[stat](job.absolute))\n }\n\n [READDIR] (job, stat) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute))\n }\n\n // gotta get it all in this tick\n [PIPE] (job) {\n const source = job.entry\n const zip = this.zip\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = job.path\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk)\n })\n } else {\n source.on('data', chunk => {\n super[WRITE](chunk)\n })\n }\n }\n}\n\nPack.Sync = PackSync\n\nmodule.exports = Pack\n","'use strict'\nconst MiniPass = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nlet writev = fs.writev\n/* istanbul ignore next */\nif (!writev) {\n // This entire block can be removed if support for earlier than Node.js\n // 12.9.0 is not needed.\n const binding = process.binding('fs')\n const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback\n\n writev = (fd, iovec, pos, cb) => {\n const done = (er, bw) => cb(er, bw, iovec)\n const req = new FSReqWrap()\n req.oncomplete = done\n binding.writeBuffers(fd, iovec, pos, req)\n }\n}\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nclass ReadStream extends MiniPass {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n\n this.readable = true\n this.writable = false\n\n if (typeof path !== 'string')\n throw new TypeError('path must be a string')\n\n this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_path] = path\n this[_readSize] = opt.readSize || 16*1024*1024\n this[_reading] = false\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n this[_remain] = this[_size]\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n if (typeof this[_fd] === 'number')\n this[_read]()\n else\n this[_open]()\n }\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n write () {\n throw new TypeError('this is a readable stream')\n }\n\n end () {\n throw new TypeError('this is a readable stream')\n }\n\n [_open] () {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_read]()\n }\n }\n\n [_makeBuf] () {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n }\n\n [_read] () {\n if (!this[_reading]) {\n this[_reading] = true\n const buf = this[_makeBuf]()\n /* istanbul ignore if */\n if (buf.length === 0)\n return process.nextTick(() => this[_onread](null, 0, buf))\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) =>\n this[_onread](er, br, buf))\n }\n }\n\n [_onread] (er, br, buf) {\n this[_reading] = false\n if (er)\n this[_onerror](er)\n else if (this[_handleChunk](br, buf))\n this[_read]()\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n\n [_onerror] (er) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk] (br, buf) {\n let ret = false\n // no effect if infinite\n this[_remain] -= br\n if (br > 0)\n ret = super.write(br < buf.length ? buf.slice(0, br) : buf)\n\n if (br === 0 || this[_remain] <= 0) {\n ret = false\n this[_close]()\n super.end()\n }\n\n return ret\n }\n\n emit (ev, data) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n break\n\n case 'drain':\n if (typeof this[_fd] === 'number')\n this[_read]()\n break\n\n case 'error':\n if (this[_errored])\n return\n this[_errored] = true\n return super.emit(ev, data)\n\n default:\n return super.emit(ev, data)\n }\n }\n}\n\nclass ReadStreamSync extends ReadStream {\n [_open] () {\n let threw = true\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'))\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_read] () {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* istanbul ignore next */\n const br = buf.length === 0 ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null)\n if (!this[_handleChunk](br, buf))\n break\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nclass WriteStream extends EE {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n this.readable = false\n this.writable = true\n this[_errored] = false\n this[_writing] = false\n this[_ended] = false\n this[_needDrain] = false\n this[_queue] = []\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : null\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n if (this[_fd] === null)\n this[_open]()\n }\n\n emit (ev, data) {\n if (ev === 'error') {\n if (this[_errored])\n return\n this[_errored] = true\n }\n return super.emit(ev, data)\n }\n\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n [_onerror] (er) {\n this[_close]()\n this[_writing] = true\n this.emit('error', er)\n }\n\n [_open] () {\n fs.open(this[_path], this[_flags], this[_mode],\n (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er && er.code === 'ENOENT') {\n this[_flags] = 'w'\n this[_open]()\n } else if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_flush]()\n }\n }\n\n end (buf, enc) {\n if (buf)\n this.write(buf, enc)\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] && !this[_queue].length &&\n typeof this[_fd] === 'number')\n this[_onwrite](null, 0)\n return this\n }\n\n write (buf, enc) {\n if (typeof buf === 'string')\n buf = Buffer.from(buf, enc)\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === null || this[_writing] || this[_queue].length) {\n this[_queue].push(buf)\n this[_needDrain] = true\n return false\n }\n\n this[_writing] = true\n this[_write](buf)\n return true\n }\n\n [_write] (buf) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n this[_onwrite](er, bw))\n }\n\n [_onwrite] (er, bw) {\n if (er)\n this[_onerror](er)\n else {\n if (this[_pos] !== null)\n this[_pos] += bw\n if (this[_queue].length)\n this[_flush]()\n else {\n this[_writing] = false\n\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true\n this[_close]()\n this.emit('finish')\n } else if (this[_needDrain]) {\n this[_needDrain] = false\n this.emit('drain')\n }\n }\n }\n }\n\n [_flush] () {\n if (this[_queue].length === 0) {\n if (this[_ended])\n this[_onwrite](null, 0)\n } else if (this[_queue].length === 1)\n this[_write](this[_queue].pop())\n else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd], iovec, this[_pos],\n (er, bw) => this[_onwrite](er, bw))\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n}\n\nclass WriteStreamSync extends WriteStream {\n [_open] () {\n let fd\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n } catch (er) {\n if (er.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else\n throw er\n }\n } else\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n\n this[_onopen](null, fd)\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write] (buf) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](null,\n fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n threw = false\n } finally {\n if (threw)\n try { this[_close]() } catch (_) {}\n }\n }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n","'use strict'\n\n// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in. We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a Yallist of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry. The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\n\nconst warner = require('./warn-mixin.js')\nconst Header = require('./header.js')\nconst EE = require('events')\nconst Yallist = require('yallist')\nconst maxMetaEntrySize = 1024 * 1024\nconst Entry = require('./read-entry.js')\nconst Pax = require('./pax.js')\nconst zlib = require('minizlib')\nconst { nextTick } = require('process')\n\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\nconst STATE = Symbol('state')\nconst WRITEENTRY = Symbol('writeEntry')\nconst READENTRY = Symbol('readEntry')\nconst NEXTENTRY = Symbol('nextEntry')\nconst PROCESSENTRY = Symbol('processEntry')\nconst EX = Symbol('extendedHeader')\nconst GEX = Symbol('globalExtendedHeader')\nconst META = Symbol('meta')\nconst EMITMETA = Symbol('emitMeta')\nconst BUFFER = Symbol('buffer')\nconst QUEUE = Symbol('queue')\nconst ENDED = Symbol('ended')\nconst EMITTEDEND = Symbol('emittedEnd')\nconst EMIT = Symbol('emit')\nconst UNZIP = Symbol('unzip')\nconst CONSUMECHUNK = Symbol('consumeChunk')\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub')\nconst CONSUMEBODY = Symbol('consumeBody')\nconst CONSUMEMETA = Symbol('consumeMeta')\nconst CONSUMEHEADER = Symbol('consumeHeader')\nconst CONSUMING = Symbol('consuming')\nconst BUFFERCONCAT = Symbol('bufferConcat')\nconst MAYBEEND = Symbol('maybeEnd')\nconst WRITING = Symbol('writing')\nconst ABORTED = Symbol('aborted')\nconst DONE = Symbol('onDone')\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry')\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock')\nconst SAW_EOF = Symbol('sawEOF')\nconst CLOSESTREAM = Symbol('closeStream')\n\nconst noop = _ => true\n\nmodule.exports = warner(class Parser extends EE {\n constructor (opt) {\n opt = opt || {}\n super(opt)\n\n this.file = opt.file || ''\n\n // set to boolean false when an entry starts. 1024 bytes of \\0\n // is technically a valid tarball, albeit a boring one.\n this[SAW_VALID_ENTRY] = null\n\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, _ => {\n if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {\n // either less than 1 block of data, or all entries were invalid.\n // Either way, probably not even a tarball.\n this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format')\n }\n })\n\n if (opt.ondone) {\n this.on(DONE, opt.ondone)\n } else {\n this.on(DONE, _ => {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n })\n }\n\n this.strict = !!opt.strict\n this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize\n this.filter = typeof opt.filter === 'function' ? opt.filter : noop\n // Unlike gzip, brotli doesn't have any magic bytes to identify it\n // Users need to explicitly tell us they're extracting a brotli file\n // Or we infer from the file extension\n const isTBR = (opt.file && (\n opt.file.endsWith('.tar.br') || opt.file.endsWith('.tbr')))\n // if it's a tbr file it MIGHT be brotli, but we don't know until\n // we look at it and verify it's not a valid tar file.\n this.brotli = !opt.gzip && opt.brotli !== undefined ? opt.brotli\n : isTBR ? undefined\n : false\n\n // have to set this so that streams are ok piping into it\n this.writable = true\n this.readable = false\n\n this[QUEUE] = new Yallist()\n this[BUFFER] = null\n this[READENTRY] = null\n this[WRITEENTRY] = null\n this[STATE] = 'begin'\n this[META] = ''\n this[EX] = null\n this[GEX] = null\n this[ENDED] = false\n this[UNZIP] = null\n this[ABORTED] = false\n this[SAW_NULL_BLOCK] = false\n this[SAW_EOF] = false\n\n this.on('end', () => this[CLOSESTREAM]())\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n if (typeof opt.onentry === 'function') {\n this.on('entry', opt.onentry)\n }\n }\n\n [CONSUMEHEADER] (chunk, position) {\n if (this[SAW_VALID_ENTRY] === null) {\n this[SAW_VALID_ENTRY] = false\n }\n let header\n try {\n header = new Header(chunk, position, this[EX], this[GEX])\n } catch (er) {\n return this.warn('TAR_ENTRY_INVALID', er)\n }\n\n if (header.nullBlock) {\n if (this[SAW_NULL_BLOCK]) {\n this[SAW_EOF] = true\n // ending an archive with no entries. pointless, but legal.\n if (this[STATE] === 'begin') {\n this[STATE] = 'header'\n }\n this[EMIT]('eof')\n } else {\n this[SAW_NULL_BLOCK] = true\n this[EMIT]('nullBlock')\n }\n } else {\n this[SAW_NULL_BLOCK] = false\n if (!header.cksumValid) {\n this.warn('TAR_ENTRY_INVALID', 'checksum failure', { header })\n } else if (!header.path) {\n this.warn('TAR_ENTRY_INVALID', 'path is required', { header })\n } else {\n const type = header.type\n if (/^(Symbolic)?Link$/.test(type) && !header.linkpath) {\n this.warn('TAR_ENTRY_INVALID', 'linkpath required', { header })\n } else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath) {\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', { header })\n } else {\n const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])\n\n // we do this for meta & ignored entries as well, because they\n // are still valid tar, or else we wouldn't know to ignore them\n if (!this[SAW_VALID_ENTRY]) {\n if (entry.remain) {\n // this might be the one!\n const onend = () => {\n if (!entry.invalid) {\n this[SAW_VALID_ENTRY] = true\n }\n }\n entry.on('end', onend)\n } else {\n this[SAW_VALID_ENTRY] = true\n }\n }\n\n if (entry.meta) {\n if (entry.size > this.maxMetaEntrySize) {\n entry.ignore = true\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = 'ignore'\n entry.resume()\n } else if (entry.size > 0) {\n this[META] = ''\n entry.on('data', c => this[META] += c)\n this[STATE] = 'meta'\n }\n } else {\n this[EX] = null\n entry.ignore = entry.ignore || !this.filter(entry.path, entry)\n\n if (entry.ignore) {\n // probably valid, just not something we care about\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = entry.remain ? 'ignore' : 'header'\n entry.resume()\n } else {\n if (entry.remain) {\n this[STATE] = 'body'\n } else {\n this[STATE] = 'header'\n entry.end()\n }\n\n if (!this[READENTRY]) {\n this[QUEUE].push(entry)\n this[NEXTENTRY]()\n } else {\n this[QUEUE].push(entry)\n }\n }\n }\n }\n }\n }\n }\n\n [CLOSESTREAM] () {\n nextTick(() => this.emit('close'))\n }\n\n [PROCESSENTRY] (entry) {\n let go = true\n\n if (!entry) {\n this[READENTRY] = null\n go = false\n } else if (Array.isArray(entry)) {\n this.emit.apply(this, entry)\n } else {\n this[READENTRY] = entry\n this.emit('entry', entry)\n if (!entry.emittedEnd) {\n entry.on('end', _ => this[NEXTENTRY]())\n go = false\n }\n }\n\n return go\n }\n\n [NEXTENTRY] () {\n do {} while (this[PROCESSENTRY](this[QUEUE].shift()))\n\n if (!this[QUEUE].length) {\n // At this point, there's nothing in the queue, but we may have an\n // entry which is being consumed (readEntry).\n // If we don't, then we definitely can handle more data.\n // If we do, and either it's flowing, or it has never had any data\n // written to it, then it needs more.\n // The only other possibility is that it has returned false from a\n // write() call, so we wait for the next drain to continue.\n const re = this[READENTRY]\n const drainNow = !re || re.flowing || re.size === re.remain\n if (drainNow) {\n if (!this[WRITING]) {\n this.emit('drain')\n }\n } else {\n re.once('drain', _ => this.emit('drain'))\n }\n }\n }\n\n [CONSUMEBODY] (chunk, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY]\n const br = entry.blockRemain\n const c = (br >= chunk.length && position === 0) ? chunk\n : chunk.slice(position, position + br)\n\n entry.write(c)\n\n if (!entry.blockRemain) {\n this[STATE] = 'header'\n this[WRITEENTRY] = null\n entry.end()\n }\n\n return c.length\n }\n\n [CONSUMEMETA] (chunk, position) {\n const entry = this[WRITEENTRY]\n const ret = this[CONSUMEBODY](chunk, position)\n\n // if we finished, then the entry is reset\n if (!this[WRITEENTRY]) {\n this[EMITMETA](entry)\n }\n\n return ret\n }\n\n [EMIT] (ev, data, extra) {\n if (!this[QUEUE].length && !this[READENTRY]) {\n this.emit(ev, data, extra)\n } else {\n this[QUEUE].push([ev, data, extra])\n }\n }\n\n [EMITMETA] (entry) {\n this[EMIT]('meta', this[META])\n switch (entry.type) {\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this[EX] = Pax.parse(this[META], this[EX], false)\n break\n\n case 'GlobalExtendedHeader':\n this[GEX] = Pax.parse(this[META], this[GEX], true)\n break\n\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].path = this[META].replace(/\\0.*/, '')\n break\n\n case 'NextFileHasLongLinkpath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].linkpath = this[META].replace(/\\0.*/, '')\n break\n\n /* istanbul ignore next */\n default: throw new Error('unknown meta: ' + entry.type)\n }\n }\n\n abort (error) {\n this[ABORTED] = true\n this.emit('abort', error)\n // always throws, even in non-strict mode\n this.warn('TAR_ABORT', error, { recoverable: false })\n }\n\n write (chunk) {\n if (this[ABORTED]) {\n return\n }\n\n // first write, might be gzipped\n const needSniff = this[UNZIP] === null ||\n this.brotli === undefined && this[UNZIP] === false\n if (needSniff && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk])\n this[BUFFER] = null\n }\n if (chunk.length < gzipHeader.length) {\n this[BUFFER] = chunk\n return true\n }\n\n // look for gzip header\n for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i]) {\n this[UNZIP] = false\n }\n }\n\n const maybeBrotli = this.brotli === undefined\n if (this[UNZIP] === false && maybeBrotli) {\n // read the first header to see if it's a valid tar file. If so,\n // we can safely assume that it's not actually brotli, despite the\n // .tbr or .tar.br file extension.\n // if we ended before getting a full chunk, yes, def brotli\n if (chunk.length < 512) {\n if (this[ENDED]) {\n this.brotli = true\n } else {\n this[BUFFER] = chunk\n return true\n }\n } else {\n // if it's tar, it's pretty reliably not brotli, chances of\n // that happening are astronomical.\n try {\n new Header(chunk.slice(0, 512))\n this.brotli = false\n } catch (_) {\n this.brotli = true\n }\n }\n }\n\n if (this[UNZIP] === null || (this[UNZIP] === false && this.brotli)) {\n const ended = this[ENDED]\n this[ENDED] = false\n this[UNZIP] = this[UNZIP] === null\n ? new zlib.Unzip()\n : new zlib.BrotliDecompress()\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n this[UNZIP].on('error', er => this.abort(er))\n this[UNZIP].on('end', _ => {\n this[ENDED] = true\n this[CONSUMECHUNK]()\n })\n this[WRITING] = true\n const ret = this[UNZIP][ended ? 'end' : 'write'](chunk)\n this[WRITING] = false\n return ret\n }\n }\n\n this[WRITING] = true\n if (this[UNZIP]) {\n this[UNZIP].write(chunk)\n } else {\n this[CONSUMECHUNK](chunk)\n }\n this[WRITING] = false\n\n // return false if there's a queue, or if the current entry isn't flowing\n const ret =\n this[QUEUE].length ? false :\n this[READENTRY] ? this[READENTRY].flowing :\n true\n\n // if we have no queue, then that means a clogged READENTRY\n if (!ret && !this[QUEUE].length) {\n this[READENTRY].once('drain', _ => this.emit('drain'))\n }\n\n return ret\n }\n\n [BUFFERCONCAT] (c) {\n if (c && !this[ABORTED]) {\n this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n }\n }\n\n [MAYBEEND] () {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\n this[EMITTEDEND] = true\n const entry = this[WRITEENTRY]\n if (entry && entry.blockRemain) {\n // truncated, likely a damaged file\n const have = this[BUFFER] ? this[BUFFER].length : 0\n this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${\n entry.blockRemain} more bytes, only ${have} available)`, { entry })\n if (this[BUFFER]) {\n entry.write(this[BUFFER])\n }\n entry.end()\n }\n this[EMIT](DONE)\n }\n }\n\n [CONSUMECHUNK] (chunk) {\n if (this[CONSUMING]) {\n this[BUFFERCONCAT](chunk)\n } else if (!chunk && !this[BUFFER]) {\n this[MAYBEEND]()\n } else {\n this[CONSUMING] = true\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk)\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n } else {\n this[CONSUMECHUNKSUB](chunk)\n }\n\n while (this[BUFFER] &&\n this[BUFFER].length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n }\n this[CONSUMING] = false\n }\n\n if (!this[BUFFER] || this[ENDED]) {\n this[MAYBEEND]()\n }\n }\n\n [CONSUMECHUNKSUB] (chunk) {\n // we know that we are in CONSUMING mode, so anything written goes into\n // the buffer. Advance the position and put any remainder in the buffer.\n let position = 0\n const length = chunk.length\n while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {\n switch (this[STATE]) {\n case 'begin':\n case 'header':\n this[CONSUMEHEADER](chunk, position)\n position += 512\n break\n\n case 'ignore':\n case 'body':\n position += this[CONSUMEBODY](chunk, position)\n break\n\n case 'meta':\n position += this[CONSUMEMETA](chunk, position)\n break\n\n /* istanbul ignore next */\n default:\n throw new Error('invalid state: ' + this[STATE])\n }\n }\n\n if (position < length) {\n if (this[BUFFER]) {\n this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])\n } else {\n this[BUFFER] = chunk.slice(position)\n }\n }\n }\n\n end (chunk) {\n if (!this[ABORTED]) {\n if (this[UNZIP]) {\n this[UNZIP].end(chunk)\n } else {\n this[ENDED] = true\n if (this.brotli === undefined) chunk = chunk || Buffer.alloc(0)\n this.write(chunk)\n }\n }\n }\n})\n","'use strict'\n\n// XXX: This shares a lot in common with extract.js\n// maybe some DRY opportunity here?\n\n// tar -t\nconst hlo = require('./high-level-opt.js')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function') {\n cb = opt_, files = null, opt_ = {}\n } else if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (typeof files === 'function') {\n cb = files, files = null\n }\n\n if (!files) {\n files = []\n } else {\n files = Array.from(files)\n }\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n if (files.length) {\n filesFilter(opt, files)\n }\n\n if (!opt.noResume) {\n onentryFunction(opt)\n }\n\n return opt.file && opt.sync ? listFileSync(opt)\n : opt.file ? listFile(opt, cb)\n : list(opt)\n}\n\nconst onentryFunction = opt => {\n const onentry = opt.onentry\n opt.onentry = onentry ? e => {\n onentry(e)\n e.resume()\n } : e => e.resume()\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [stripSlash(f), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file))\n : file => mapHas(stripSlash(file))\n}\n\nconst listFileSync = opt => {\n const p = list(opt)\n const file = opt.file\n let threw = true\n let fd\n try {\n const stat = fs.statSync(file)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n if (stat.size < readSize) {\n p.end(fs.readFileSync(file))\n } else {\n let pos = 0\n const buf = Buffer.allocUnsafe(readSize)\n fd = fs.openSync(file, 'r')\n while (pos < stat.size) {\n const bytesRead = fs.readSync(fd, buf, 0, readSize, pos)\n pos += bytesRead\n p.write(buf.slice(0, bytesRead))\n }\n p.end()\n }\n threw = false\n } finally {\n if (threw && fd) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst listFile = (opt, cb) => {\n const parse = new Parser(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n parse.on('error', reject)\n parse.on('end', resolve)\n\n fs.stat(file, (er, stat) => {\n if (er) {\n reject(er)\n } else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(parse)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst list = opt => new Parser(opt)\n","'use strict'\n\n// tar -c\nconst hlo = require('./high-level-opt.js')\n\nconst Pack = require('./pack.js')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof files === 'function') {\n cb = files\n }\n\n if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n return opt.file && opt.sync ? createFileSync(opt, files)\n : opt.file ? createFile(opt, files, cb)\n : opt.sync ? createSync(opt, files)\n : create(opt, files)\n}\n\nconst createFileSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n const stream = new fsm.WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst createFile = (opt, files, cb) => {\n const p = new Pack(opt)\n const stream = new fsm.WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n\n const promise = new Promise((res, rej) => {\n stream.on('error', rej)\n stream.on('close', res)\n p.on('error', rej)\n })\n\n addFilesAsync(p, files)\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else {\n p.add(file)\n }\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.slice(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else {\n p.add(file)\n }\n }\n p.end()\n}\n\nconst createSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n addFilesSync(p, files)\n return p\n}\n\nconst create = (opt, files) => {\n const p = new Pack(opt)\n addFilesAsync(p, files)\n return p\n}\n","'use strict'\n\n// tar -r\nconst hlo = require('./high-level-opt.js')\nconst Pack = require('./pack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst Header = require('./header.js')\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file) {\n throw new TypeError('file is required')\n }\n\n if (opt.gzip || opt.brotli || opt.file.endsWith('.br') || opt.file.endsWith('.tbr')) {\n throw new TypeError('cannot append to compressed archives')\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n return opt.sync ? replaceSync(opt, files)\n : replace(opt, files, cb)\n}\n\nconst replaceSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if (er.code === 'ENOENT') {\n fd = fs.openSync(opt.file, 'w+')\n } else {\n throw er\n }\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {\n throw new Error('cannot append to compressed archives')\n }\n\n if (!bytes) {\n break POSITION\n }\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid) {\n break\n }\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > st.size) {\n break\n }\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache) {\n opt.mtimeCache.set(h.path, h.mtime)\n }\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new fsm.WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst replace = (opt, files, cb) => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er) {\n fs.close(fd, _ => cb_(er))\n } else {\n cb_(null, pos)\n }\n }\n\n let position = 0\n if (size === 0) {\n return cb(null, 0)\n }\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er, bytes) => {\n if (er) {\n return cb(er)\n }\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd, headBuf, bufPos, headBuf.length - bufPos,\n position + bufPos, onread\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {\n return cb(new Error('cannot append to compressed archives'))\n }\n\n // truncated header\n if (bufPos < 512) {\n return cb(null, position)\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid) {\n return cb(null, position)\n }\n\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > size) {\n return cb(null, position)\n }\n\n position += entryBlockSize + 512\n if (position >= size) {\n return cb(null, position)\n }\n\n if (opt.mtimeCache) {\n opt.mtimeCache.set(h.path, h.mtime)\n }\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er) {\n return reject(er)\n }\n\n fs.fstat(fd, (er, st) => {\n if (er) {\n return fs.close(fd, () => reject(er))\n }\n\n getPos(fd, st.size, (er, position) => {\n if (er) {\n return reject(er)\n }\n const stream = new fsm.WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else {\n p.add(file)\n }\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.slice(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else {\n p.add(file)\n }\n }\n p.end()\n}\n","'use strict'\n\n// tar -u\n\nconst hlo = require('./high-level-opt.js')\nconst r = require('./replace.js')\n// just call tar.r with the filter and mtimeCache\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file) {\n throw new TypeError('file is required')\n }\n\n if (opt.gzip || opt.brotli || opt.file.endsWith('.br') || opt.file.endsWith('.tbr')) {\n throw new TypeError('cannot append to compressed archives')\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n mtimeFilter(opt)\n return r(opt, files, cb)\n}\n\nconst mtimeFilter = opt => {\n const filter = opt.filter\n\n if (!opt.mtimeCache) {\n opt.mtimeCache = new Map()\n }\n\n opt.filter = filter ? (path, stat) =>\n filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)\n : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)\n}\n","const { promisify } = require('util')\nconst fs = require('fs')\nconst optsArg = opts => {\n if (!opts)\n opts = { mode: 0o777, fs }\n else if (typeof opts === 'object')\n opts = { mode: 0o777, fs, ...opts }\n else if (typeof opts === 'number')\n opts = { mode: opts, fs }\n else if (typeof opts === 'string')\n opts = { mode: parseInt(opts, 8), fs }\n else\n throw new TypeError('invalid options argument')\n\n opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir\n opts.mkdirAsync = promisify(opts.mkdir)\n opts.stat = opts.stat || opts.fs.stat || fs.stat\n opts.statAsync = promisify(opts.stat)\n opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync\n opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync\n return opts\n}\nmodule.exports = optsArg\n","const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform\nconst { resolve, parse } = require('path')\nconst pathArg = path => {\n if (/\\0/.test(path)) {\n // simulate same failure that node raises\n throw Object.assign(\n new TypeError('path must be a string without null bytes'),\n {\n path,\n code: 'ERR_INVALID_ARG_VALUE',\n }\n )\n }\n\n path = resolve(path)\n if (platform === 'win32') {\n const badWinChars = /[*|\"<>?:]/\n const {root} = parse(path)\n if (badWinChars.test(path.substr(root.length))) {\n throw Object.assign(new Error('Illegal characters in path.'), {\n path,\n code: 'EINVAL',\n })\n }\n }\n\n return path\n}\nmodule.exports = pathArg\n","const {dirname} = require('path')\n\nconst findMade = (opts, parent, path = undefined) => {\n // we never want the 'made' return value to be a root directory\n if (path === parent)\n return Promise.resolve()\n\n return opts.statAsync(parent).then(\n st => st.isDirectory() ? path : undefined, // will fail later\n er => er.code === 'ENOENT'\n ? findMade(opts, dirname(parent), parent)\n : undefined\n )\n}\n\nconst findMadeSync = (opts, parent, path = undefined) => {\n if (path === parent)\n return undefined\n\n try {\n return opts.statSync(parent).isDirectory() ? path : undefined\n } catch (er) {\n return er.code === 'ENOENT'\n ? findMadeSync(opts, dirname(parent), parent)\n : undefined\n }\n}\n\nmodule.exports = {findMade, findMadeSync}\n","const {dirname} = require('path')\n\nconst mkdirpManual = (path, opts, made) => {\n opts.recursive = false\n const parent = dirname(path)\n if (parent === path) {\n return opts.mkdirAsync(path, opts).catch(er => {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n })\n }\n\n return opts.mkdirAsync(path, opts).then(() => made || path, er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(parent, opts)\n .then(made => mkdirpManual(path, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n return opts.statAsync(path).then(st => {\n if (st.isDirectory())\n return made\n else\n throw er\n }, () => { throw er })\n })\n}\n\nconst mkdirpManualSync = (path, opts, made) => {\n const parent = dirname(path)\n opts.recursive = false\n\n if (parent === path) {\n try {\n return opts.mkdirSync(path, opts)\n } catch (er) {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n else\n return\n }\n }\n\n try {\n opts.mkdirSync(path, opts)\n return made || path\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n try {\n if (!opts.statSync(path).isDirectory())\n throw er\n } catch (_) {\n throw er\n }\n }\n}\n\nmodule.exports = {mkdirpManual, mkdirpManualSync}\n","const {dirname} = require('path')\nconst {findMade, findMadeSync} = require('./find-made.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')\n\nconst mkdirpNative = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirAsync(path, opts)\n\n return findMade(opts, path).then(made =>\n opts.mkdirAsync(path, opts).then(() => made)\n .catch(er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(path, opts)\n else\n throw er\n }))\n}\n\nconst mkdirpNativeSync = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirSync(path, opts)\n\n const made = findMadeSync(opts, path)\n try {\n opts.mkdirSync(path, opts)\n return made\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts)\n else\n throw er\n }\n}\n\nmodule.exports = {mkdirpNative, mkdirpNativeSync}\n","const fs = require('fs')\n\nconst version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version\nconst versArr = version.replace(/^v/, '').split('.')\nconst hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12\n\nconst useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir\nconst useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync\n\nmodule.exports = {useNative, useNativeSync}\n","const optsArg = require('./lib/opts-arg.js')\nconst pathArg = require('./lib/path-arg.js')\n\nconst {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')\nconst {useNative, useNativeSync} = require('./lib/use-native.js')\n\n\nconst mkdirp = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNative(opts)\n ? mkdirpNative(path, opts)\n : mkdirpManual(path, opts)\n}\n\nconst mkdirpSync = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNativeSync(opts)\n ? mkdirpNativeSync(path, opts)\n : mkdirpManualSync(path, opts)\n}\n\nmkdirp.sync = mkdirpSync\nmkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))\nmkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))\nmkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))\nmkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))\n\nmodule.exports = mkdirp\n","'use strict'\nconst fs = require('fs')\nconst path = require('path')\n\n/* istanbul ignore next */\nconst LCHOWN = fs.lchown ? 'lchown' : 'chown'\n/* istanbul ignore next */\nconst LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync'\n\n/* istanbul ignore next */\nconst needEISDIRHandled = fs.lchown &&\n !process.version.match(/v1[1-9]+\\./) &&\n !process.version.match(/v10\\.[6-9]/)\n\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs[LCHOWNSYNC](path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst chownSync = (path, uid, gid) => {\n try {\n return fs.chownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst handleEISDIR =\n needEISDIRHandled ? (path, uid, gid, cb) => er => {\n // Node prior to v10 had a very questionable implementation of\n // fs.lchown, which would always try to call fs.open on a directory\n // Fall back to fs.chown in those cases.\n if (!er || er.code !== 'EISDIR')\n cb(er)\n else\n fs.chown(path, uid, gid, cb)\n }\n : (_, __, ___, cb) => cb\n\n/* istanbul ignore next */\nconst handleEISDirSync =\n needEISDIRHandled ? (path, uid, gid) => {\n try {\n return lchownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'EISDIR')\n throw er\n chownSync(path, uid, gid)\n }\n }\n : (path, uid, gid) => lchownSync(path, uid, gid)\n\n// fs.readdir could only accept an options object as of node v6\nconst nodeVersion = process.version\nlet readdir = (path, options, cb) => fs.readdir(path, options, cb)\nlet readdirSync = (path, options) => fs.readdirSync(path, options)\n/* istanbul ignore next */\nif (/^v4\\./.test(nodeVersion))\n readdir = (path, options, cb) => fs.readdir(path, cb)\n\nconst chown = (cpath, uid, gid, cb) => {\n fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er.code !== 'ENOENT' ? er : null)\n }))\n}\n\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (typeof child === 'string')\n return fs.lstat(path.resolve(p, child), (er, stats) => {\n // Skip ENOENT error\n if (er)\n return cb(er.code !== 'ENOENT' ? er : null)\n stats.name = child\n chownrKid(p, stats, uid, gid, cb)\n })\n\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, er => {\n if (er)\n return cb(er)\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n })\n } else {\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n }\n}\n\n\nconst chownr = (p, uid, gid, cb) => {\n readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb()\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er)\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb)\n\n let len = children.length\n let errState = null\n const then = er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (-- len === 0)\n return chown(p, uid, gid, cb)\n }\n\n children.forEach(child => chownrKid(p, child, uid, gid, then))\n })\n}\n\nconst chownrKidSync = (p, child, uid, gid) => {\n if (typeof child === 'string') {\n try {\n const stats = fs.lstatSync(path.resolve(p, child))\n stats.name = child\n child = stats\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else\n throw er\n }\n }\n\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid)\n\n handleEISDirSync(path.resolve(p, child.name), uid, gid)\n}\n\nconst chownrSync = (p, uid, gid) => {\n let children\n try {\n children = readdirSync(p, { withFileTypes: true })\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP')\n return handleEISDirSync(p, uid, gid)\n else\n throw er\n }\n\n if (children && children.length)\n children.forEach(child => chownrKidSync(p, child, uid, gid))\n\n return handleEISDirSync(p, uid, gid)\n}\n\nmodule.exports = chownr\nchownr.sync = chownrSync\n","'use strict'\n// wrapper around mkdirp for tar's needs.\n\n// TODO: This should probably be a class, not functionally\n// passing around state in a gazillion args.\n\nconst mkdirp = require('mkdirp')\nconst fs = require('fs')\nconst path = require('path')\nconst chownr = require('chownr')\nconst normPath = require('./normalize-windows-path.js')\n\nclass SymlinkError extends Error {\n constructor (symlink, path) {\n super('Cannot extract through symbolic link')\n this.path = path\n this.symlink = symlink\n }\n\n get name () {\n return 'SylinkError'\n }\n}\n\nclass CwdError extends Error {\n constructor (path, code) {\n super(code + ': Cannot cd into \\'' + path + '\\'')\n this.path = path\n this.code = code\n }\n\n get name () {\n return 'CwdError'\n }\n}\n\nconst cGet = (cache, key) => cache.get(normPath(key))\nconst cSet = (cache, key, val) => cache.set(normPath(key), val)\n\nconst checkCwd = (dir, cb) => {\n fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory()) {\n er = new CwdError(dir, er && er.code || 'ENOTDIR')\n }\n cb(er)\n })\n}\n\nmodule.exports = (dir, opt, cb) => {\n dir = normPath(dir)\n\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = normPath(opt.cwd)\n\n const done = (er, created) => {\n if (er) {\n cb(er)\n } else {\n cSet(cache, dir, true)\n if (created && doChown) {\n chownr(created, uid, gid, er => done(er))\n } else if (needChmod) {\n fs.chmod(dir, mode, cb)\n } else {\n cb()\n }\n }\n }\n\n if (cache && cGet(cache, dir) === true) {\n return done()\n }\n\n if (dir === cwd) {\n return checkCwd(dir, done)\n }\n\n if (preserve) {\n return mkdirp(dir, { mode }).then(made => done(null, made), done)\n }\n\n const sub = normPath(path.relative(cwd, dir))\n const parts = sub.split('/')\n mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)\n}\n\nconst mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {\n if (!parts.length) {\n return cb(null, created)\n }\n const p = parts.shift()\n const part = normPath(path.resolve(base + '/' + p))\n if (cGet(cache, part)) {\n return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n}\n\nconst onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {\n if (er) {\n fs.lstat(part, (statEr, st) => {\n if (statEr) {\n statEr.path = statEr.path && normPath(statEr.path)\n cb(statEr)\n } else if (st.isDirectory()) {\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n } else if (unlink) {\n fs.unlink(part, er => {\n if (er) {\n return cb(er)\n }\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n })\n } else if (st.isSymbolicLink()) {\n return cb(new SymlinkError(part, part + '/' + parts.join('/')))\n } else {\n cb(er)\n }\n })\n } else {\n created = created || part\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n}\n\nconst checkCwdSync = dir => {\n let ok = false\n let code = 'ENOTDIR'\n try {\n ok = fs.statSync(dir).isDirectory()\n } catch (er) {\n code = er.code\n } finally {\n if (!ok) {\n throw new CwdError(dir, code)\n }\n }\n}\n\nmodule.exports.sync = (dir, opt) => {\n dir = normPath(dir)\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = normPath(opt.cwd)\n\n const done = (created) => {\n cSet(cache, dir, true)\n if (created && doChown) {\n chownr.sync(created, uid, gid)\n }\n if (needChmod) {\n fs.chmodSync(dir, mode)\n }\n }\n\n if (cache && cGet(cache, dir) === true) {\n return done()\n }\n\n if (dir === cwd) {\n checkCwdSync(cwd)\n return done()\n }\n\n if (preserve) {\n return done(mkdirp.sync(dir, mode))\n }\n\n const sub = normPath(path.relative(cwd, dir))\n const parts = sub.split('/')\n let created = null\n for (let p = parts.shift(), part = cwd;\n p && (part += '/' + p);\n p = parts.shift()) {\n part = normPath(path.resolve(part))\n if (cGet(cache, part)) {\n continue\n }\n\n try {\n fs.mkdirSync(part, mode)\n created = created || part\n cSet(cache, part, true)\n } catch (er) {\n const st = fs.lstatSync(part)\n if (st.isDirectory()) {\n cSet(cache, part, true)\n continue\n } else if (unlink) {\n fs.unlinkSync(part)\n fs.mkdirSync(part, mode)\n created = created || part\n cSet(cache, part, true)\n continue\n } else if (st.isSymbolicLink()) {\n return new SymlinkError(part, part + '/' + parts.join('/'))\n }\n }\n }\n\n return done(created)\n}\n","// warning: extremely hot code path.\n// This has been meticulously optimized for use\n// within npm install on large package trees.\n// Do not edit without careful benchmarking.\nconst normalizeCache = Object.create(null)\nconst { hasOwnProperty } = Object.prototype\nmodule.exports = s => {\n if (!hasOwnProperty.call(normalizeCache, s)) {\n normalizeCache[s] = s.normalize('NFD')\n }\n return normalizeCache[s]\n}\n","// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\n\nconst assert = require('assert')\nconst normalize = require('./normalize-unicode.js')\nconst stripSlashes = require('./strip-trailing-slashes.js')\nconst { join } = require('path')\n\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nconst isWindows = platform === 'win32'\n\nmodule.exports = () => {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n const queues = new Map()\n\n // fn => {paths:[path,...], dirs:[path, ...]}\n const reservations = new Map()\n\n // return a set of parent dirs for a given path\n // '/a/b/c/d' -> ['/', '/a', '/a/b', '/a/b/c', '/a/b/c/d']\n const getDirs = path => {\n const dirs = path.split('/').slice(0, -1).reduce((set, path) => {\n if (set.length) {\n path = join(set[set.length - 1], path)\n }\n set.push(path || '/')\n return set\n }, [])\n return dirs\n }\n\n // functions currently running\n const running = new Set()\n\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n const getQueues = fn => {\n const res = reservations.get(fn)\n /* istanbul ignore if - unpossible */\n if (!res) {\n throw new Error('function does not have any path reservations')\n }\n return {\n paths: res.paths.map(path => queues.get(path)),\n dirs: [...res.dirs].map(path => queues.get(path)),\n }\n }\n\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n const check = fn => {\n const { paths, dirs } = getQueues(fn)\n return paths.every(q => q[0] === fn) &&\n dirs.every(q => q[0] instanceof Set && q[0].has(fn))\n }\n\n // run the function if it's first in line and not already running\n const run = fn => {\n if (running.has(fn) || !check(fn)) {\n return false\n }\n running.add(fn)\n fn(() => clear(fn))\n return true\n }\n\n const clear = fn => {\n if (!running.has(fn)) {\n return false\n }\n\n const { paths, dirs } = reservations.get(fn)\n const next = new Set()\n\n paths.forEach(path => {\n const q = queues.get(path)\n assert.equal(q[0], fn)\n if (q.length === 1) {\n queues.delete(path)\n } else {\n q.shift()\n if (typeof q[0] === 'function') {\n next.add(q[0])\n } else {\n q[0].forEach(fn => next.add(fn))\n }\n }\n })\n\n dirs.forEach(dir => {\n const q = queues.get(dir)\n assert(q[0] instanceof Set)\n if (q[0].size === 1 && q.length === 1) {\n queues.delete(dir)\n } else if (q[0].size === 1) {\n q.shift()\n\n // must be a function or else the Set would've been reused\n next.add(q[0])\n } else {\n q[0].delete(fn)\n }\n })\n running.delete(fn)\n\n next.forEach(fn => run(fn))\n return true\n }\n\n const reserve = (paths, fn) => {\n // collide on matches across case and unicode normalization\n // On windows, thanks to the magic of 8.3 shortnames, it is fundamentally\n // impossible to determine whether two paths refer to the same thing on\n // disk, without asking the kernel for a shortname.\n // So, we just pretend that every path matches every other path here,\n // effectively removing all parallelization on windows.\n paths = isWindows ? ['win32 parallelization disabled'] : paths.map(p => {\n // don't need normPath, because we skip this entirely for windows\n return stripSlashes(join(normalize(p))).toLowerCase()\n })\n\n const dirs = new Set(\n paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b))\n )\n reservations.set(fn, { dirs, paths })\n paths.forEach(path => {\n const q = queues.get(path)\n if (!q) {\n queues.set(path, [fn])\n } else {\n q.push(fn)\n }\n })\n dirs.forEach(dir => {\n const q = queues.get(dir)\n if (!q) {\n queues.set(dir, [new Set([fn])])\n } else if (q[q.length - 1] instanceof Set) {\n q[q.length - 1].add(fn)\n } else {\n q.push(new Set([fn]))\n }\n })\n\n return run(fn)\n }\n\n return { check, reserve }\n}\n","// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\n// Only supported in Node v12.9.0 and above.\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform\nconst isWindows = platform === 'win32'\nconst fs = global.__FAKE_TESTING_FS__ || require('fs')\n\n/* istanbul ignore next */\nconst { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants\n\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP\nconst fMapLimit = 512 * 1024\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY\nmodule.exports = !fMapEnabled ? () => 'w'\n : size => size < fMapLimit ? fMapFlag : 'w'\n","'use strict'\n\n// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\n\nconst assert = require('assert')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst mkdir = require('./mkdir.js')\nconst wc = require('./winchars.js')\nconst pathReservations = require('./path-reservations.js')\nconst stripAbsolutePath = require('./strip-absolute-path.js')\nconst normPath = require('./normalize-windows-path.js')\nconst stripSlash = require('./strip-trailing-slashes.js')\nconst normalize = require('./normalize-unicode.js')\n\nconst ONENTRY = Symbol('onEntry')\nconst CHECKFS = Symbol('checkFs')\nconst CHECKFS2 = Symbol('checkFs2')\nconst PRUNECACHE = Symbol('pruneCache')\nconst ISREUSABLE = Symbol('isReusable')\nconst MAKEFS = Symbol('makeFs')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst LINK = Symbol('link')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst UNSUPPORTED = Symbol('unsupported')\nconst CHECKPATH = Symbol('checkPath')\nconst MKDIR = Symbol('mkdir')\nconst ONERROR = Symbol('onError')\nconst PENDING = Symbol('pending')\nconst PEND = Symbol('pend')\nconst UNPEND = Symbol('unpend')\nconst ENDED = Symbol('ended')\nconst MAYBECLOSE = Symbol('maybeClose')\nconst SKIP = Symbol('skip')\nconst DOCHOWN = Symbol('doChown')\nconst UID = Symbol('uid')\nconst GID = Symbol('gid')\nconst CHECKED_CWD = Symbol('checkedCwd')\nconst crypto = require('crypto')\nconst getFlag = require('./get-write-flag.js')\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nconst isWindows = platform === 'win32'\nconst DEFAULT_MAX_DEPTH = 1024\n\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* istanbul ignore next */\nconst unlinkFile = (path, cb) => {\n if (!isWindows) {\n return fs.unlink(path, cb)\n }\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.rename(path, name, er => {\n if (er) {\n return cb(er)\n }\n fs.unlink(name, cb)\n })\n}\n\n/* istanbul ignore next */\nconst unlinkFileSync = path => {\n if (!isWindows) {\n return fs.unlinkSync(path)\n }\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.renameSync(path, name)\n fs.unlinkSync(name)\n}\n\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) =>\n a === a >>> 0 ? a\n : b === b >>> 0 ? b\n : c\n\n// clear the cache if it's a case-insensitive unicode-squashing match.\n// we can't know if the current file system is case-sensitive or supports\n// unicode fully, so we check for similarity on the maximally compatible\n// representation. Err on the side of pruning, since all it's doing is\n// preventing lstats, and it's not the end of the world if we get a false\n// positive.\n// Note that on windows, we always drop the entire cache whenever a\n// symbolic link is encountered, because 8.3 filenames are impossible\n// to reason about, and collisions are hazards rather than just failures.\nconst cacheKeyNormalize = path => stripSlash(normPath(normalize(path)))\n .toLowerCase()\n\nconst pruneCache = (cache, abs) => {\n abs = cacheKeyNormalize(abs)\n for (const path of cache.keys()) {\n const pnorm = cacheKeyNormalize(path)\n if (pnorm === abs || pnorm.indexOf(abs + '/') === 0) {\n cache.delete(path)\n }\n }\n}\n\nconst dropCache = cache => {\n for (const key of cache.keys()) {\n cache.delete(key)\n }\n}\n\nclass Unpack extends Parser {\n constructor (opt) {\n if (!opt) {\n opt = {}\n }\n\n opt.ondone = _ => {\n this[ENDED] = true\n this[MAYBECLOSE]()\n }\n\n super(opt)\n\n this[CHECKED_CWD] = false\n\n this.reservations = pathReservations()\n\n this.transform = typeof opt.transform === 'function' ? opt.transform : null\n\n this.writable = true\n this.readable = false\n\n this[PENDING] = 0\n this[ENDED] = false\n\n this.dirCache = opt.dirCache || new Map()\n\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number') {\n throw new TypeError('cannot set owner without number uid and gid')\n }\n if (opt.preserveOwner) {\n throw new TypeError(\n 'cannot preserve owner in archive and also set owner explicitly')\n }\n this.uid = opt.uid\n this.gid = opt.gid\n this.setOwner = true\n } else {\n this.uid = null\n this.gid = null\n this.setOwner = false\n }\n\n // default true for root\n if (opt.preserveOwner === undefined && typeof opt.uid !== 'number') {\n this.preserveOwner = process.getuid && process.getuid() === 0\n } else {\n this.preserveOwner = !!opt.preserveOwner\n }\n\n this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid() : null\n this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid() : null\n\n // prevent excessively deep nesting of subfolders\n // set to `Infinity` to remove this restriction\n this.maxDepth = typeof opt.maxDepth === 'number'\n ? opt.maxDepth\n : DEFAULT_MAX_DEPTH\n\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true\n\n // turn ><?| in filenames into 0xf000-higher encoded forms\n this.win32 = !!opt.win32 || isWindows\n\n // do not unpack over files that are newer than what's in the archive\n this.newer = !!opt.newer\n\n // do not unpack over ANY files\n this.keep = !!opt.keep\n\n // do not set mtime/atime of extracted entries\n this.noMtime = !!opt.noMtime\n\n // allow .., absolute path entries, and unpacking through symlinks\n // without this, warn and skip .., relativize absolutes, and error\n // on symlinks in extraction path\n this.preservePaths = !!opt.preservePaths\n\n // unlink files and links before writing. This breaks existing hard\n // links, and removes symlink directories rather than erroring\n this.unlink = !!opt.unlink\n\n this.cwd = normPath(path.resolve(opt.cwd || process.cwd()))\n this.strip = +opt.strip || 0\n // if we're not chmodding, then we don't need the process umask\n this.processUmask = opt.noChmod ? 0 : process.umask()\n this.umask = typeof opt.umask === 'number' ? opt.umask : this.processUmask\n\n // default mode for dirs created as parents\n this.dmode = opt.dmode || (0o0777 & (~this.umask))\n this.fmode = opt.fmode || (0o0666 & (~this.umask))\n\n this.on('entry', entry => this[ONENTRY](entry))\n }\n\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn (code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT') {\n data.recoverable = false\n }\n return super.warn(code, msg, data)\n }\n\n [MAYBECLOSE] () {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n }\n }\n\n [CHECKPATH] (entry) {\n const p = normPath(entry.path)\n const parts = p.split('/')\n\n if (this.strip) {\n if (parts.length < this.strip) {\n return false\n }\n if (entry.type === 'Link') {\n const linkparts = normPath(entry.linkpath).split('/')\n if (linkparts.length >= this.strip) {\n entry.linkpath = linkparts.slice(this.strip).join('/')\n } else {\n return false\n }\n }\n parts.splice(0, this.strip)\n entry.path = parts.join('/')\n }\n\n if (isFinite(this.maxDepth) && parts.length > this.maxDepth) {\n this.warn('TAR_ENTRY_ERROR', 'path excessively deep', {\n entry,\n path: p,\n depth: parts.length,\n maxDepth: this.maxDepth,\n })\n return false\n }\n\n if (!this.preservePaths) {\n if (parts.includes('..') || isWindows && /^[a-z]:\\.\\.$/i.test(parts[0])) {\n this.warn('TAR_ENTRY_ERROR', `path contains '..'`, {\n entry,\n path: p,\n })\n return false\n }\n\n // strip off the root\n const [root, stripped] = stripAbsolutePath(p)\n if (root) {\n entry.path = stripped\n this.warn('TAR_ENTRY_INFO', `stripping ${root} from absolute path`, {\n entry,\n path: p,\n })\n }\n }\n\n if (path.isAbsolute(entry.path)) {\n entry.absolute = normPath(path.resolve(entry.path))\n } else {\n entry.absolute = normPath(path.resolve(this.cwd, entry.path))\n }\n\n // if we somehow ended up with a path that escapes the cwd, and we are\n // not in preservePaths mode, then something is fishy! This should have\n // been prevented above, so ignore this for coverage.\n /* istanbul ignore if - defense in depth */\n if (!this.preservePaths &&\n entry.absolute.indexOf(this.cwd + '/') !== 0 &&\n entry.absolute !== this.cwd) {\n this.warn('TAR_ENTRY_ERROR', 'path escaped extraction target', {\n entry,\n path: normPath(entry.path),\n resolvedPath: entry.absolute,\n cwd: this.cwd,\n })\n return false\n }\n\n // an archive can set properties on the extraction directory, but it\n // may not replace the cwd with a different kind of thing entirely.\n if (entry.absolute === this.cwd &&\n entry.type !== 'Directory' &&\n entry.type !== 'GNUDumpDir') {\n return false\n }\n\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const { root: aRoot } = path.win32.parse(entry.absolute)\n entry.absolute = aRoot + wc.encode(entry.absolute.slice(aRoot.length))\n const { root: pRoot } = path.win32.parse(entry.path)\n entry.path = pRoot + wc.encode(entry.path.slice(pRoot.length))\n }\n\n return true\n }\n\n [ONENTRY] (entry) {\n if (!this[CHECKPATH](entry)) {\n return entry.resume()\n }\n\n assert.equal(typeof entry.absolute, 'string')\n\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode) {\n entry.mode = entry.mode | 0o700\n }\n\n // eslint-disable-next-line no-fallthrough\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry)\n\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry)\n }\n }\n\n [ONERROR] (er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError') {\n this.emit('error', er)\n } else {\n this.warn('TAR_ENTRY_ERROR', er, { entry })\n this[UNPEND]()\n entry.resume()\n }\n }\n\n [MKDIR] (dir, mode, cb) {\n mkdir(normPath(dir), {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n noChmod: this.noChmod,\n }, cb)\n }\n\n [DOCHOWN] (entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return this.forceChown ||\n this.preserveOwner &&\n (typeof entry.uid === 'number' && entry.uid !== this.processUid ||\n typeof entry.gid === 'number' && entry.gid !== this.processGid)\n ||\n (typeof this.uid === 'number' && this.uid !== this.processUid ||\n typeof this.gid === 'number' && this.gid !== this.processGid)\n }\n\n [UID] (entry) {\n return uint32(this.uid, entry.uid, this.processUid)\n }\n\n [GID] (entry) {\n return uint32(this.gid, entry.gid, this.processGid)\n }\n\n [FILE] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.fmode\n const stream = new fsm.WriteStream(entry.absolute, {\n flags: getFlag(entry.size),\n mode: mode,\n autoClose: false,\n })\n stream.on('error', er => {\n if (stream.fd) {\n fs.close(stream.fd, () => {})\n }\n\n // flush all the data out so that we aren't left hanging\n // if the error wasn't actually fatal. otherwise the parse\n // is blocked, and we never proceed.\n stream.write = () => true\n this[ONERROR](er, entry)\n fullyDone()\n })\n\n let actions = 1\n const done = er => {\n if (er) {\n /* istanbul ignore else - we should always have a fd by now */\n if (stream.fd) {\n fs.close(stream.fd, () => {})\n }\n\n this[ONERROR](er, entry)\n fullyDone()\n return\n }\n\n if (--actions === 0) {\n fs.close(stream.fd, er => {\n if (er) {\n this[ONERROR](er, entry)\n } else {\n this[UNPEND]()\n }\n fullyDone()\n })\n }\n }\n\n stream.on('finish', _ => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = entry.absolute\n const fd = stream.fd\n\n if (entry.mtime && !this.noMtime) {\n actions++\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n fs.futimes(fd, atime, mtime, er =>\n er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done())\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n fs.fchown(fd, uid, gid, er =>\n er ? fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done())\n }\n\n done()\n })\n\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => {\n this[ONERROR](er, entry)\n fullyDone()\n })\n entry.pipe(tx)\n }\n tx.pipe(stream)\n }\n\n [DIRECTORY] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.dmode\n this[MKDIR](entry.absolute, mode, er => {\n if (er) {\n this[ONERROR](er, entry)\n fullyDone()\n return\n }\n\n let actions = 1\n const done = _ => {\n if (--actions === 0) {\n fullyDone()\n this[UNPEND]()\n entry.resume()\n }\n }\n\n if (entry.mtime && !this.noMtime) {\n actions++\n fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)\n }\n\n done()\n })\n }\n\n [UNSUPPORTED] (entry) {\n entry.unsupported = true\n this.warn('TAR_ENTRY_UNSUPPORTED',\n `unsupported entry type: ${entry.type}`, { entry })\n entry.resume()\n }\n\n [SYMLINK] (entry, done) {\n this[LINK](entry, entry.linkpath, 'symlink', done)\n }\n\n [HARDLINK] (entry, done) {\n const linkpath = normPath(path.resolve(this.cwd, entry.linkpath))\n this[LINK](entry, linkpath, 'link', done)\n }\n\n [PEND] () {\n this[PENDING]++\n }\n\n [UNPEND] () {\n this[PENDING]--\n this[MAYBECLOSE]()\n }\n\n [SKIP] (entry) {\n this[UNPEND]()\n entry.resume()\n }\n\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE] (entry, st) {\n return entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n !isWindows\n }\n\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS] (entry) {\n this[PEND]()\n const paths = [entry.path]\n if (entry.linkpath) {\n paths.push(entry.linkpath)\n }\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done))\n }\n\n [PRUNECACHE] (entry) {\n // if we are not creating a directory, and the path is in the dirCache,\n // then that means we are about to delete the directory we created\n // previously, and it is no longer going to be a directory, and neither\n // is any of its children.\n // If a symbolic link is encountered, all bets are off. There is no\n // reasonable way to sanitize the cache in such a way we will be able to\n // avoid having filesystem collisions. If this happens with a non-symlink\n // entry, it'll just fail to unpack, but a symlink to a directory, using an\n // 8.3 shortname or certain unicode attacks, can evade detection and lead\n // to arbitrary writes to anywhere on the system.\n if (entry.type === 'SymbolicLink') {\n dropCache(this.dirCache)\n } else if (entry.type !== 'Directory') {\n pruneCache(this.dirCache, entry.absolute)\n }\n }\n\n [CHECKFS2] (entry, fullyDone) {\n this[PRUNECACHE](entry)\n\n const done = er => {\n this[PRUNECACHE](entry)\n fullyDone(er)\n }\n\n const checkCwd = () => {\n this[MKDIR](this.cwd, this.dmode, er => {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n this[CHECKED_CWD] = true\n start()\n })\n }\n\n const start = () => {\n if (entry.absolute !== this.cwd) {\n const parent = normPath(path.dirname(entry.absolute))\n if (parent !== this.cwd) {\n return this[MKDIR](parent, this.dmode, er => {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n afterMakeParent()\n })\n }\n }\n afterMakeParent()\n }\n\n const afterMakeParent = () => {\n fs.lstat(entry.absolute, (lstatEr, st) => {\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n this[SKIP](entry)\n done()\n return\n }\n if (lstatEr || this[ISREUSABLE](entry, st)) {\n return this[MAKEFS](null, entry, done)\n }\n\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n const needChmod = !this.noChmod &&\n entry.mode &&\n (st.mode & 0o7777) !== entry.mode\n const afterChmod = er => this[MAKEFS](er, entry, done)\n if (!needChmod) {\n return afterChmod()\n }\n return fs.chmod(entry.absolute, entry.mode, afterChmod)\n }\n // Not a dir entry, have to remove it.\n // NB: the only way to end up with an entry that is the cwd\n // itself, in such a way that == does not detect, is a\n // tricky windows absolute path with UNC or 8.3 parts (and\n // preservePaths:true, or else it will have been stripped).\n // In that case, the user has opted out of path protections\n // explicitly, so if they blow away the cwd, c'est la vie.\n if (entry.absolute !== this.cwd) {\n return fs.rmdir(entry.absolute, er =>\n this[MAKEFS](er, entry, done))\n }\n }\n\n // not a dir, and not reusable\n // don't remove if the cwd, we want that error\n if (entry.absolute === this.cwd) {\n return this[MAKEFS](null, entry, done)\n }\n\n unlinkFile(entry.absolute, er =>\n this[MAKEFS](er, entry, done))\n })\n }\n\n if (this[CHECKED_CWD]) {\n start()\n } else {\n checkCwd()\n }\n }\n\n [MAKEFS] (er, entry, done) {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done)\n\n case 'Link':\n return this[HARDLINK](entry, done)\n\n case 'SymbolicLink':\n return this[SYMLINK](entry, done)\n\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done)\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n // XXX: get the type ('symlink' or 'junction') for windows\n fs[link](linkpath, entry.absolute, er => {\n if (er) {\n this[ONERROR](er, entry)\n } else {\n this[UNPEND]()\n entry.resume()\n }\n done()\n })\n }\n}\n\nconst callSync = fn => {\n try {\n return [null, fn()]\n } catch (er) {\n return [er, null]\n }\n}\nclass UnpackSync extends Unpack {\n [MAKEFS] (er, entry) {\n return super[MAKEFS](er, entry, () => {})\n }\n\n [CHECKFS] (entry) {\n this[PRUNECACHE](entry)\n\n if (!this[CHECKED_CWD]) {\n const er = this[MKDIR](this.cwd, this.dmode)\n if (er) {\n return this[ONERROR](er, entry)\n }\n this[CHECKED_CWD] = true\n }\n\n // don't bother to make the parent if the current entry is the cwd,\n // we've already checked it.\n if (entry.absolute !== this.cwd) {\n const parent = normPath(path.dirname(entry.absolute))\n if (parent !== this.cwd) {\n const mkParent = this[MKDIR](parent, this.dmode)\n if (mkParent) {\n return this[ONERROR](mkParent, entry)\n }\n }\n }\n\n const [lstatEr, st] = callSync(() => fs.lstatSync(entry.absolute))\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n return this[SKIP](entry)\n }\n\n if (lstatEr || this[ISREUSABLE](entry, st)) {\n return this[MAKEFS](null, entry)\n }\n\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n const needChmod = !this.noChmod &&\n entry.mode &&\n (st.mode & 0o7777) !== entry.mode\n const [er] = needChmod ? callSync(() => {\n fs.chmodSync(entry.absolute, entry.mode)\n }) : []\n return this[MAKEFS](er, entry)\n }\n // not a dir entry, have to remove it\n const [er] = callSync(() => fs.rmdirSync(entry.absolute))\n this[MAKEFS](er, entry)\n }\n\n // not a dir, and not reusable.\n // don't remove if it's the cwd, since we want that error.\n const [er] = entry.absolute === this.cwd ? []\n : callSync(() => unlinkFileSync(entry.absolute))\n this[MAKEFS](er, entry)\n }\n\n [FILE] (entry, done) {\n const mode = entry.mode & 0o7777 || this.fmode\n\n const oner = er => {\n let closeError\n try {\n fs.closeSync(fd)\n } catch (e) {\n closeError = e\n }\n if (er || closeError) {\n this[ONERROR](er || closeError, entry)\n }\n done()\n }\n\n let fd\n try {\n fd = fs.openSync(entry.absolute, getFlag(entry.size), mode)\n } catch (er) {\n return oner(er)\n }\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n\n tx.on('data', chunk => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length)\n } catch (er) {\n oner(er)\n }\n })\n\n tx.on('end', _ => {\n let er = null\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n try {\n fs.futimesSync(fd, atime, mtime)\n } catch (futimeser) {\n try {\n fs.utimesSync(entry.absolute, atime, mtime)\n } catch (utimeser) {\n er = futimeser\n }\n }\n }\n\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n\n try {\n fs.fchownSync(fd, uid, gid)\n } catch (fchowner) {\n try {\n fs.chownSync(entry.absolute, uid, gid)\n } catch (chowner) {\n er = er || fchowner\n }\n }\n }\n\n oner(er)\n })\n }\n\n [DIRECTORY] (entry, done) {\n const mode = entry.mode & 0o7777 || this.dmode\n const er = this[MKDIR](entry.absolute, mode)\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)\n } catch (er) {}\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))\n } catch (er) {}\n }\n done()\n entry.resume()\n }\n\n [MKDIR] (dir, mode) {\n try {\n return mkdir.sync(normPath(dir), {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n })\n } catch (er) {\n return er\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n try {\n fs[link + 'Sync'](linkpath, entry.absolute)\n done()\n entry.resume()\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n}\n\nUnpack.Sync = UnpackSync\nmodule.exports = Unpack\n","'use strict'\n\n// tar -x\nconst hlo = require('./high-level-opt.js')\nconst Unpack = require('./unpack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function') {\n cb = opt_, files = null, opt_ = {}\n } else if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (typeof files === 'function') {\n cb = files, files = null\n }\n\n if (!files) {\n files = []\n } else {\n files = Array.from(files)\n }\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n if (files.length) {\n filesFilter(opt, files)\n }\n\n return opt.file && opt.sync ? extractFileSync(opt)\n : opt.file ? extractFile(opt, cb)\n : opt.sync ? extractSync(opt)\n : extract(opt)\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [stripSlash(f), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file))\n : file => mapHas(stripSlash(file))\n}\n\nconst extractFileSync = opt => {\n const u = new Unpack.Sync(opt)\n\n const file = opt.file\n const stat = fs.statSync(file)\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.pipe(u)\n}\n\nconst extractFile = (opt, cb) => {\n const u = new Unpack(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n u.on('error', reject)\n u.on('close', resolve)\n\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n fs.stat(file, (er, stat) => {\n if (er) {\n reject(er)\n } else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(u)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst extractSync = opt => new Unpack.Sync(opt)\n\nconst extract = opt => new Unpack(opt)\n","'use strict'\n\n// high-level commands\nexports.c = exports.create = require('./lib/create.js')\nexports.r = exports.replace = require('./lib/replace.js')\nexports.t = exports.list = require('./lib/list.js')\nexports.u = exports.update = require('./lib/update.js')\nexports.x = exports.extract = require('./lib/extract.js')\n\n// classes\nexports.Pack = require('./lib/pack.js')\nexports.Unpack = require('./lib/unpack.js')\nexports.Parse = require('./lib/parse.js')\nexports.ReadEntry = require('./lib/read-entry.js')\nexports.WriteEntry = require('./lib/write-entry.js')\nexports.Header = require('./lib/header.js')\nexports.Pax = require('./lib/pax.js')\nexports.types = require('./lib/types.js')\n","'use strict'\n/*\n * merge2\n * https://github.com/teambition/merge2\n *\n * Copyright (c) 2014-2020 Teambition\n * Licensed under the MIT license.\n */\nconst Stream = require('stream')\nconst PassThrough = Stream.PassThrough\nconst slice = Array.prototype.slice\n\nmodule.exports = merge2\n\nfunction merge2 () {\n const streamsQueue = []\n const args = slice.call(arguments)\n let merging = false\n let options = args[args.length - 1]\n\n if (options && !Array.isArray(options) && options.pipe == null) {\n args.pop()\n } else {\n options = {}\n }\n\n const doEnd = options.end !== false\n const doPipeError = options.pipeError === true\n if (options.objectMode == null) {\n options.objectMode = true\n }\n if (options.highWaterMark == null) {\n options.highWaterMark = 64 * 1024\n }\n const mergedStream = PassThrough(options)\n\n function addStream () {\n for (let i = 0, len = arguments.length; i < len; i++) {\n streamsQueue.push(pauseStreams(arguments[i], options))\n }\n mergeStream()\n return this\n }\n\n function mergeStream () {\n if (merging) {\n return\n }\n merging = true\n\n let streams = streamsQueue.shift()\n if (!streams) {\n process.nextTick(endStream)\n return\n }\n if (!Array.isArray(streams)) {\n streams = [streams]\n }\n\n let pipesCount = streams.length + 1\n\n function next () {\n if (--pipesCount > 0) {\n return\n }\n merging = false\n mergeStream()\n }\n\n function pipe (stream) {\n function onend () {\n stream.removeListener('merge2UnpipeEnd', onend)\n stream.removeListener('end', onend)\n if (doPipeError) {\n stream.removeListener('error', onerror)\n }\n next()\n }\n function onerror (err) {\n mergedStream.emit('error', err)\n }\n // skip ended stream\n if (stream._readableState.endEmitted) {\n return next()\n }\n\n stream.on('merge2UnpipeEnd', onend)\n stream.on('end', onend)\n\n if (doPipeError) {\n stream.on('error', onerror)\n }\n\n stream.pipe(mergedStream, { end: false })\n // compatible for old stream\n stream.resume()\n }\n\n for (let i = 0; i < streams.length; i++) {\n pipe(streams[i])\n }\n\n next()\n }\n\n function endStream () {\n merging = false\n // emit 'queueDrain' when all streams merged.\n mergedStream.emit('queueDrain')\n if (doEnd) {\n mergedStream.end()\n }\n }\n\n mergedStream.setMaxListeners(0)\n mergedStream.add = addStream\n mergedStream.on('unpipe', function (stream) {\n stream.emit('merge2UnpipeEnd')\n })\n\n if (args.length) {\n addStream.apply(null, args)\n }\n return mergedStream\n}\n\n// check and pause streams for pipe.\nfunction pauseStreams (streams, options) {\n if (!Array.isArray(streams)) {\n // Backwards-compat with old-style streams\n if (!streams._readableState && streams.pipe) {\n streams = streams.pipe(PassThrough(options))\n }\n if (!streams._readableState || !streams.pause || !streams.pipe) {\n throw new Error('Only readable stream can be merged.')\n }\n streams.pause()\n } else {\n for (let i = 0, len = streams.length; i < len; i++) {\n streams[i] = pauseStreams(streams[i], options)\n }\n }\n return streams\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitWhen = exports.flatten = void 0;\nfunction flatten(items) {\n return items.reduce((collection, item) => [].concat(collection, item), []);\n}\nexports.flatten = flatten;\nfunction splitWhen(items, predicate) {\n const result = [[]];\n let groupIndex = 0;\n for (const item of items) {\n if (predicate(item)) {\n groupIndex++;\n result[groupIndex] = [];\n }\n else {\n result[groupIndex].push(item);\n }\n }\n return result;\n}\nexports.splitWhen = splitWhen;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEnoentCodeError = void 0;\nfunction isEnoentCodeError(error) {\n return error.code === 'ENOENT';\n}\nexports.isEnoentCodeError = isEnoentCodeError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDirentFromStats = void 0;\nclass DirentFromStats {\n constructor(name, stats) {\n this.name = name;\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\n this.isDirectory = stats.isDirectory.bind(stats);\n this.isFIFO = stats.isFIFO.bind(stats);\n this.isFile = stats.isFile.bind(stats);\n this.isSocket = stats.isSocket.bind(stats);\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\n }\n}\nfunction createDirentFromStats(name, stats) {\n return new DirentFromStats(name, stats);\n}\nexports.createDirentFromStats = createDirentFromStats;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertPosixPathToPattern = exports.convertWindowsPathToPattern = exports.convertPathToPattern = exports.escapePosixPath = exports.escapeWindowsPath = exports.escape = exports.removeLeadingDotSegment = exports.makeAbsolute = exports.unixify = void 0;\nconst os = require(\"os\");\nconst path = require(\"path\");\nconst IS_WINDOWS_PLATFORM = os.platform() === 'win32';\nconst LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\\\\n/**\n * All non-escaped special characters.\n * Posix: ()*?[\\]{|}, !+@ before (, ! at the beginning, \\\\ before non-special characters.\n * Windows: (){}, !+@ before (, ! at the beginning.\n */\nconst POSIX_UNESCAPED_GLOB_SYMBOLS_RE = /(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\()|\\\\(?![!()*+?@[\\]{|}]))/g;\nconst WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE = /(\\\\?)([(){}]|^!|[!+@](?=\\())/g;\n/**\n * The device path (\\\\.\\ or \\\\?\\).\n * https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats#dos-device-paths\n */\nconst DOS_DEVICE_PATH_RE = /^\\\\\\\\([.?])/;\n/**\n * All backslashes except those escaping special characters.\n * Windows: !()+@{}\n * https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions\n */\nconst WINDOWS_BACKSLASHES_RE = /\\\\(?![!()+@{}])/g;\n/**\n * Designed to work only with simple paths: `dir\\\\file`.\n */\nfunction unixify(filepath) {\n return filepath.replace(/\\\\/g, '/');\n}\nexports.unixify = unixify;\nfunction makeAbsolute(cwd, filepath) {\n return path.resolve(cwd, filepath);\n}\nexports.makeAbsolute = makeAbsolute;\nfunction removeLeadingDotSegment(entry) {\n // We do not use `startsWith` because this is 10x slower than current implementation for some cases.\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\n if (entry.charAt(0) === '.') {\n const secondCharactery = entry.charAt(1);\n if (secondCharactery === '/' || secondCharactery === '\\\\') {\n return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT);\n }\n }\n return entry;\n}\nexports.removeLeadingDotSegment = removeLeadingDotSegment;\nexports.escape = IS_WINDOWS_PLATFORM ? escapeWindowsPath : escapePosixPath;\nfunction escapeWindowsPath(pattern) {\n return pattern.replace(WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE, '\\\\$2');\n}\nexports.escapeWindowsPath = escapeWindowsPath;\nfunction escapePosixPath(pattern) {\n return pattern.replace(POSIX_UNESCAPED_GLOB_SYMBOLS_RE, '\\\\$2');\n}\nexports.escapePosixPath = escapePosixPath;\nexports.convertPathToPattern = IS_WINDOWS_PLATFORM ? convertWindowsPathToPattern : convertPosixPathToPattern;\nfunction convertWindowsPathToPattern(filepath) {\n return escapeWindowsPath(filepath)\n .replace(DOS_DEVICE_PATH_RE, '//$1')\n .replace(WINDOWS_BACKSLASHES_RE, '/');\n}\nexports.convertWindowsPathToPattern = convertWindowsPathToPattern;\nfunction convertPosixPathToPattern(filepath) {\n return escapePosixPath(filepath);\n}\nexports.convertPosixPathToPattern = convertPosixPathToPattern;\n","/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n var match;\n while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n\n return false;\n};\n","/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictCheck = function(str) {\n if (str[0] === '!') {\n return true;\n }\n var index = 0;\n var pipeIndex = -2;\n var closeSquareIndex = -2;\n var closeCurlyIndex = -2;\n var closeParenIndex = -2;\n var backSlashIndex = -2;\n while (index < str.length) {\n if (str[index] === '*') {\n return true;\n }\n\n if (str[index + 1] === '?' && /[\\].+)]/.test(str[index])) {\n return true;\n }\n\n if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') {\n if (closeSquareIndex < index) {\n closeSquareIndex = str.indexOf(']', index);\n }\n if (closeSquareIndex > index) {\n if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n return true;\n }\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n return true;\n }\n }\n }\n\n if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') {\n closeCurlyIndex = str.indexOf('}', index);\n if (closeCurlyIndex > index) {\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) {\n return true;\n }\n }\n }\n\n if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') {\n closeParenIndex = str.indexOf(')', index);\n if (closeParenIndex > index) {\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n return true;\n }\n }\n }\n\n if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') {\n if (pipeIndex < index) {\n pipeIndex = str.indexOf('|', index);\n }\n if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') {\n closeParenIndex = str.indexOf(')', pipeIndex);\n if (closeParenIndex > pipeIndex) {\n backSlashIndex = str.indexOf('\\\\', pipeIndex);\n if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n return true;\n }\n }\n }\n }\n\n if (str[index] === '\\\\') {\n var open = str[index + 1];\n index += 2;\n var close = chars[open];\n\n if (close) {\n var n = str.indexOf(close, index);\n if (n !== -1) {\n index = n + 1;\n }\n }\n\n if (str[index] === '!') {\n return true;\n }\n } else {\n index++;\n }\n }\n return false;\n};\n\nvar relaxedCheck = function(str) {\n if (str[0] === '!') {\n return true;\n }\n var index = 0;\n while (index < str.length) {\n if (/[*?{}()[\\]]/.test(str[index])) {\n return true;\n }\n\n if (str[index] === '\\\\') {\n var open = str[index + 1];\n index += 2;\n var close = chars[open];\n\n if (close) {\n var n = str.indexOf(close, index);\n if (n !== -1) {\n index = n + 1;\n }\n }\n\n if (str[index] === '!') {\n return true;\n }\n } else {\n index++;\n }\n }\n return false;\n};\n\nmodule.exports = function isGlob(str, options) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n if (isExtglob(str)) {\n return true;\n }\n\n var check = strictCheck;\n\n // optionally relax check\n if (options && options.strict === false) {\n check = relaxedCheck;\n }\n\n return check(str);\n};\n","'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar enclosure = /[\\{\\[].*[\\}\\]]$/;\nvar globby = /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/;\nvar escaped = /\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n * @returns {string}\n */\nmodule.exports = function globParent(str, opts) {\n var options = Object.assign({ flipBackslashes: true }, opts);\n\n // flip windows path separators\n if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n str = str.replace(backslash, slash);\n }\n\n // special case for strings ending in enclosure containing path separator\n if (enclosure.test(str)) {\n str += slash;\n }\n\n // preserves full path in case of trailing path separator\n str += 'a';\n\n // remove path parts that are globby\n do {\n str = pathPosixDirname(str);\n } while (isGlob(str) || globby.test(str));\n\n // remove escape chars and return result\n return str.replace(escaped, '$1');\n};\n","'use strict';\n\nexports.isInteger = num => {\n if (typeof num === 'number') {\n return Number.isInteger(num);\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isInteger(Number(num));\n }\n return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n if (limit === false) return false;\n if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n let node = block.nodes[n];\n if (!node) return;\n\n if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n if (node.escaped !== true) {\n node.value = '\\\\' + node.value;\n node.escaped = true;\n }\n }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n if (node.type !== 'brace') return false;\n if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n node.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n if (block.type !== 'brace') return false;\n if (block.invalid === true || block.dollar) return true;\n if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n block.invalid = true;\n return true;\n }\n if (block.open !== true || block.close !== true) {\n block.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n if (node.type === 'open' || node.type === 'close') {\n return true;\n }\n return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n if (node.type === 'text') acc.push(node.value);\n if (node.type === 'range') node.type = 'text';\n return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n const result = [];\n const flat = arr => {\n for (let i = 0; i < arr.length; i++) {\n let ele = arr[i];\n Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele);\n }\n return result;\n };\n flat(args);\n return result;\n};\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n let stringify = (node, parent = {}) => {\n let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n let invalidNode = node.invalid === true && options.escapeInvalid === true;\n let output = '';\n\n if (node.value) {\n if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n return '\\\\' + node.value;\n }\n return node.value;\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes) {\n for (let child of node.nodes) {\n output += stringify(child);\n }\n }\n return output;\n };\n\n return stringify(ast);\n};\n\n","/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n if (typeof num === 'number') {\n return num - num === 0;\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n }\n return false;\n};\n","/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n if (isNumber(min) === false) {\n throw new TypeError('toRegexRange: expected the first argument to be a number');\n }\n\n if (max === void 0 || min === max) {\n return String(min);\n }\n\n if (isNumber(max) === false) {\n throw new TypeError('toRegexRange: expected the second argument to be a number.');\n }\n\n let opts = { relaxZeros: true, ...options };\n if (typeof opts.strictZeros === 'boolean') {\n opts.relaxZeros = opts.strictZeros === false;\n }\n\n let relax = String(opts.relaxZeros);\n let shorthand = String(opts.shorthand);\n let capture = String(opts.capture);\n let wrap = String(opts.wrap);\n let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n return toRegexRange.cache[cacheKey].result;\n }\n\n let a = Math.min(min, max);\n let b = Math.max(min, max);\n\n if (Math.abs(a - b) === 1) {\n let result = min + '|' + max;\n if (opts.capture) {\n return `(${result})`;\n }\n if (opts.wrap === false) {\n return result;\n }\n return `(?:${result})`;\n }\n\n let isPadded = hasPadding(min) || hasPadding(max);\n let state = { min, max, a, b };\n let positives = [];\n let negatives = [];\n\n if (isPadded) {\n state.isPadded = isPadded;\n state.maxLen = String(state.max).length;\n }\n\n if (a < 0) {\n let newMin = b < 0 ? Math.abs(b) : 1;\n negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n a = state.a = 0;\n }\n\n if (b >= 0) {\n positives = splitToPatterns(a, b, state, opts);\n }\n\n state.negatives = negatives;\n state.positives = positives;\n state.result = collatePatterns(negatives, positives, opts);\n\n if (opts.capture === true) {\n state.result = `(${state.result})`;\n } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n state.result = `(?:${state.result})`;\n }\n\n toRegexRange.cache[cacheKey] = state;\n return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n let nines = 1;\n let zeros = 1;\n\n let stop = countNines(min, nines);\n let stops = new Set([max]);\n\n while (min <= stop && stop <= max) {\n stops.add(stop);\n nines += 1;\n stop = countNines(min, nines);\n }\n\n stop = countZeros(max + 1, zeros) - 1;\n\n while (min < stop && stop <= max) {\n stops.add(stop);\n zeros += 1;\n stop = countZeros(max + 1, zeros) - 1;\n }\n\n stops = [...stops];\n stops.sort(compare);\n return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n if (start === stop) {\n return { pattern: start, count: [], digits: 0 };\n }\n\n let zipped = zip(start, stop);\n let digits = zipped.length;\n let pattern = '';\n let count = 0;\n\n for (let i = 0; i < digits; i++) {\n let [startDigit, stopDigit] = zipped[i];\n\n if (startDigit === stopDigit) {\n pattern += startDigit;\n\n } else if (startDigit !== '0' || stopDigit !== '9') {\n pattern += toCharacterClass(startDigit, stopDigit, options);\n\n } else {\n count++;\n }\n }\n\n if (count) {\n pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n }\n\n return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n let ranges = splitToRanges(min, max);\n let tokens = [];\n let start = min;\n let prev;\n\n for (let i = 0; i < ranges.length; i++) {\n let max = ranges[i];\n let obj = rangeToPattern(String(start), String(max), options);\n let zeros = '';\n\n if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n if (prev.count.length > 1) {\n prev.count.pop();\n }\n\n prev.count.push(obj.count[0]);\n prev.string = prev.pattern + toQuantifier(prev.count);\n start = max + 1;\n continue;\n }\n\n if (tok.isPadded) {\n zeros = padZeros(max, tok, options);\n }\n\n obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n tokens.push(obj);\n start = max + 1;\n prev = obj;\n }\n\n return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n let result = [];\n\n for (let ele of arr) {\n let { string } = ele;\n\n // only push if _both_ are negative...\n if (!intersection && !contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n\n // or _both_ are positive\n if (intersection && contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n }\n return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n let arr = [];\n for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n return arr;\n}\n\nfunction compare(a, b) {\n return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n let [start = 0, stop = ''] = digits;\n if (stop || start > 1) {\n return `{${start + (stop ? ',' + stop : '')}}`;\n }\n return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n if (!tok.isPadded) {\n return value;\n }\n\n let diff = Math.abs(tok.maxLen - String(value).length);\n let relax = options.relaxZeros !== false;\n\n switch (diff) {\n case 0:\n return '';\n case 1:\n return relax ? '0?' : '0';\n case 2:\n return relax ? '0{0,2}' : '00';\n default: {\n return relax ? `0{0,${diff}}` : `0{${diff}}`;\n }\n }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n let value = `${input}`;\n let index = -1;\n if (value[0] === '-') value = value.slice(1);\n if (value === '0') return false;\n while (value[++index] === '0');\n return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n if (typeof start === 'string' || typeof end === 'string') {\n return true;\n }\n return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n if (maxLength > 0) {\n let dash = input[0] === '-' ? '-' : '';\n if (dash) input = input.slice(1);\n input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n }\n if (toNumber === false) {\n return String(input);\n }\n return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n let negative = input[0] === '-' ? '-' : '';\n if (negative) {\n input = input.slice(1);\n maxLength--;\n }\n while (input.length < maxLength) input = '0' + input;\n return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options) => {\n parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n let prefix = options.capture ? '' : '?:';\n let positives = '';\n let negatives = '';\n let result;\n\n if (parts.positives.length) {\n positives = parts.positives.join('|');\n }\n\n if (parts.negatives.length) {\n negatives = `-(${prefix}${parts.negatives.join('|')})`;\n }\n\n if (positives && negatives) {\n result = `${positives}|${negatives}`;\n } else {\n result = positives || negatives;\n }\n\n if (options.wrap) {\n return `(${prefix}${result})`;\n }\n\n return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n if (isNumbers) {\n return toRegexRange(a, b, { wrap: false, ...options });\n }\n\n let start = String.fromCharCode(a);\n if (a === b) return start;\n\n let stop = String.fromCharCode(b);\n return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n if (Array.isArray(start)) {\n let wrap = options.wrap === true;\n let prefix = options.capture ? '' : '?:';\n return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n }\n return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n};\n\nconst invalidStep = (step, options) => {\n if (options.strictRanges === true) {\n throw new TypeError(`Expected step \"${step}\" to be a number`);\n }\n return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n let a = Number(start);\n let b = Number(end);\n\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n }\n\n // fix negative zero\n if (a === 0) a = 0;\n if (b === 0) b = 0;\n\n let descending = a > b;\n let startString = String(start);\n let endString = String(end);\n let stepString = String(step);\n step = Math.max(Math.abs(step), 1);\n\n let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n let toNumber = padded === false && stringify(start, end, options) === false;\n let format = options.transform || transform(toNumber);\n\n if (options.toRegex && step === 1) {\n return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n }\n\n let parts = { negatives: [], positives: [] };\n let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n if (options.toRegex === true && step > 1) {\n push(a);\n } else {\n range.push(pad(format(a, index), maxLen, toNumber));\n }\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return step > 1\n ? toSequence(parts, options)\n : toRegex(range, null, { wrap: false, ...options });\n }\n\n return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n return invalidRange(start, end, options);\n }\n\n\n let format = options.transform || (val => String.fromCharCode(val));\n let a = `${start}`.charCodeAt(0);\n let b = `${end}`.charCodeAt(0);\n\n let descending = a > b;\n let min = Math.min(a, b);\n let max = Math.max(a, b);\n\n if (options.toRegex && step === 1) {\n return toRange(min, max, false, options);\n }\n\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n range.push(format(a, index));\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return toRegex(range, null, { wrap: false, options });\n }\n\n return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n if (end == null && isValidValue(start)) {\n return [start];\n }\n\n if (!isValidValue(start) || !isValidValue(end)) {\n return invalidRange(start, end, options);\n }\n\n if (typeof step === 'function') {\n return fill(start, end, 1, { transform: step });\n }\n\n if (isObject(step)) {\n return fill(start, end, 0, step);\n }\n\n let opts = { ...options };\n if (opts.capture === true) opts.wrap = true;\n step = step || opts.step || 1;\n\n if (!isNumber(step)) {\n if (step != null && !isObject(step)) return invalidStep(step, opts);\n return fill(start, end, 1, step);\n }\n\n if (isNumber(start) && isNumber(end)) {\n return fillNumbers(start, end, step, opts);\n }\n\n return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n","'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n let walk = (node, parent = {}) => {\n let invalidBlock = utils.isInvalidBrace(parent);\n let invalidNode = node.invalid === true && options.escapeInvalid === true;\n let invalid = invalidBlock === true || invalidNode === true;\n let prefix = options.escapeInvalid === true ? '\\\\' : '';\n let output = '';\n\n if (node.isOpen === true) {\n return prefix + node.value;\n }\n if (node.isClose === true) {\n return prefix + node.value;\n }\n\n if (node.type === 'open') {\n return invalid ? (prefix + node.value) : '(';\n }\n\n if (node.type === 'close') {\n return invalid ? (prefix + node.value) : ')';\n }\n\n if (node.type === 'comma') {\n return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|');\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes && node.ranges > 0) {\n let args = utils.reduce(node.nodes);\n let range = fill(...args, { ...options, wrap: false, toRegex: true });\n\n if (range.length !== 0) {\n return args.length > 1 && range.length > 1 ? `(${range})` : range;\n }\n }\n\n if (node.nodes) {\n for (let child of node.nodes) {\n output += walk(child, node);\n }\n }\n return output;\n };\n\n return walk(ast);\n};\n\nmodule.exports = compile;\n","'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n let result = [];\n\n queue = [].concat(queue);\n stash = [].concat(stash);\n\n if (!stash.length) return queue;\n if (!queue.length) {\n return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n }\n\n for (let item of queue) {\n if (Array.isArray(item)) {\n for (let value of item) {\n result.push(append(value, stash, enclose));\n }\n } else {\n for (let ele of stash) {\n if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele));\n }\n }\n }\n return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit;\n\n let walk = (node, parent = {}) => {\n node.queue = [];\n\n let p = parent;\n let q = parent.queue;\n\n while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n p = p.parent;\n q = p.queue;\n }\n\n if (node.invalid || node.dollar) {\n q.push(append(q.pop(), stringify(node, options)));\n return;\n }\n\n if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n q.push(append(q.pop(), ['{}']));\n return;\n }\n\n if (node.nodes && node.ranges > 0) {\n let args = utils.reduce(node.nodes);\n\n if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n\n let range = fill(...args, options);\n if (range.length === 0) {\n range = stringify(node, options);\n }\n\n q.push(append(q.pop(), range));\n node.nodes = [];\n return;\n }\n\n let enclose = utils.encloseBrace(node);\n let queue = node.queue;\n let block = node;\n\n while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n block = block.parent;\n queue = block.queue;\n }\n\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i];\n\n if (child.type === 'comma' && node.type === 'brace') {\n if (i === 1) queue.push('');\n queue.push('');\n continue;\n }\n\n if (child.type === 'close') {\n q.push(append(q.pop(), queue, enclose));\n continue;\n }\n\n if (child.value && child.type !== 'open') {\n queue.push(append(queue.pop(), child.value));\n continue;\n }\n\n if (child.nodes) {\n walk(child, node);\n }\n }\n\n return queue;\n };\n\n return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n","'use strict';\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n\n // Digits\n CHAR_0: '0', /* 0 */\n CHAR_9: '9', /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 'A', /* A */\n CHAR_LOWERCASE_A: 'a', /* a */\n CHAR_UPPERCASE_Z: 'Z', /* Z */\n CHAR_LOWERCASE_Z: 'z', /* z */\n\n CHAR_LEFT_PARENTHESES: '(', /* ( */\n CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n CHAR_ASTERISK: '*', /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: '&', /* & */\n CHAR_AT: '@', /* @ */\n CHAR_BACKSLASH: '\\\\', /* \\ */\n CHAR_BACKTICK: '`', /* ` */\n CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n CHAR_COLON: ':', /* : */\n CHAR_COMMA: ',', /* , */\n CHAR_DOLLAR: '$', /* . */\n CHAR_DOT: '.', /* . */\n CHAR_DOUBLE_QUOTE: '\"', /* \" */\n CHAR_EQUAL: '=', /* = */\n CHAR_EXCLAMATION_MARK: '!', /* ! */\n CHAR_FORM_FEED: '\\f', /* \\f */\n CHAR_FORWARD_SLASH: '/', /* / */\n CHAR_HASH: '#', /* # */\n CHAR_HYPHEN_MINUS: '-', /* - */\n CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n CHAR_LEFT_CURLY_BRACE: '{', /* { */\n CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n CHAR_LINE_FEED: '\\n', /* \\n */\n CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n CHAR_PERCENT: '%', /* % */\n CHAR_PLUS: '+', /* + */\n CHAR_QUESTION_MARK: '?', /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n CHAR_SEMICOLON: ';', /* ; */\n CHAR_SINGLE_QUOTE: '\\'', /* ' */\n CHAR_SPACE: ' ', /* */\n CHAR_TAB: '\\t', /* \\t */\n CHAR_UNDERSCORE: '_', /* _ */\n CHAR_VERTICAL_LINE: '|', /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n","'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n CHAR_BACKSLASH, /* \\ */\n CHAR_BACKTICK, /* ` */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n CHAR_DOUBLE_QUOTE, /* \" */\n CHAR_SINGLE_QUOTE, /* ' */\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n let opts = options || {};\n let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n if (input.length > max) {\n throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n }\n\n let ast = { type: 'root', input, nodes: [] };\n let stack = [ast];\n let block = ast;\n let prev = ast;\n let brackets = 0;\n let length = input.length;\n let index = 0;\n let depth = 0;\n let value;\n let memo = {};\n\n /**\n * Helpers\n */\n\n const advance = () => input[index++];\n const push = node => {\n if (node.type === 'text' && prev.type === 'dot') {\n prev.type = 'text';\n }\n\n if (prev && prev.type === 'text' && node.type === 'text') {\n prev.value += node.value;\n return;\n }\n\n block.nodes.push(node);\n node.parent = block;\n node.prev = prev;\n prev = node;\n return node;\n };\n\n push({ type: 'bos' });\n\n while (index < length) {\n block = stack[stack.length - 1];\n value = advance();\n\n /**\n * Invalid chars\n */\n\n if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n continue;\n }\n\n /**\n * Escaped chars\n */\n\n if (value === CHAR_BACKSLASH) {\n push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n continue;\n }\n\n /**\n * Right square bracket (literal): ']'\n */\n\n if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n push({ type: 'text', value: '\\\\' + value });\n continue;\n }\n\n /**\n * Left square bracket: '['\n */\n\n if (value === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n\n let closed = true;\n let next;\n\n while (index < length && (next = advance())) {\n value += next;\n\n if (next === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n continue;\n }\n\n if (next === CHAR_BACKSLASH) {\n value += advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n brackets--;\n\n if (brackets === 0) {\n break;\n }\n }\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === CHAR_LEFT_PARENTHESES) {\n block = push({ type: 'paren', nodes: [] });\n stack.push(block);\n push({ type: 'text', value });\n continue;\n }\n\n if (value === CHAR_RIGHT_PARENTHESES) {\n if (block.type !== 'paren') {\n push({ type: 'text', value });\n continue;\n }\n block = stack.pop();\n push({ type: 'text', value });\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Quotes: '|\"|`\n */\n\n if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n let open = value;\n let next;\n\n if (options.keepQuotes !== true) {\n value = '';\n }\n\n while (index < length && (next = advance())) {\n if (next === CHAR_BACKSLASH) {\n value += next + advance();\n continue;\n }\n\n if (next === open) {\n if (options.keepQuotes === true) value += next;\n break;\n }\n\n value += next;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Left curly brace: '{'\n */\n\n if (value === CHAR_LEFT_CURLY_BRACE) {\n depth++;\n\n let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n let brace = {\n type: 'brace',\n open: true,\n close: false,\n dollar,\n depth,\n commas: 0,\n ranges: 0,\n nodes: []\n };\n\n block = push(brace);\n stack.push(block);\n push({ type: 'open', value });\n continue;\n }\n\n /**\n * Right curly brace: '}'\n */\n\n if (value === CHAR_RIGHT_CURLY_BRACE) {\n if (block.type !== 'brace') {\n push({ type: 'text', value });\n continue;\n }\n\n let type = 'close';\n block = stack.pop();\n block.close = true;\n\n push({ type, value });\n depth--;\n\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Comma: ','\n */\n\n if (value === CHAR_COMMA && depth > 0) {\n if (block.ranges > 0) {\n block.ranges = 0;\n let open = block.nodes.shift();\n block.nodes = [open, { type: 'text', value: stringify(block) }];\n }\n\n push({ type: 'comma', value });\n block.commas++;\n continue;\n }\n\n /**\n * Dot: '.'\n */\n\n if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n let siblings = block.nodes;\n\n if (depth === 0 || siblings.length === 0) {\n push({ type: 'text', value });\n continue;\n }\n\n if (prev.type === 'dot') {\n block.range = [];\n prev.value += value;\n prev.type = 'range';\n\n if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n block.invalid = true;\n block.ranges = 0;\n prev.type = 'text';\n continue;\n }\n\n block.ranges++;\n block.args = [];\n continue;\n }\n\n if (prev.type === 'range') {\n siblings.pop();\n\n let before = siblings[siblings.length - 1];\n before.value += prev.value + value;\n prev = before;\n block.ranges--;\n continue;\n }\n\n push({ type: 'dot', value });\n continue;\n }\n\n /**\n * Text\n */\n\n push({ type: 'text', value });\n }\n\n // Mark imbalanced braces and brackets as invalid\n do {\n block = stack.pop();\n\n if (block.type !== 'root') {\n block.nodes.forEach(node => {\n if (!node.nodes) {\n if (node.type === 'open') node.isOpen = true;\n if (node.type === 'close') node.isClose = true;\n if (!node.nodes) node.type = 'text';\n node.invalid = true;\n }\n });\n\n // get the location of the block on parent.nodes (block's siblings)\n let parent = stack[stack.length - 1];\n let index = parent.nodes.indexOf(block);\n // replace the (invalid) block with it's nodes\n parent.nodes.splice(index, 1, ...block.nodes);\n }\n } while (stack.length > 0);\n\n push({ type: 'eos' });\n return ast;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n let output = [];\n\n if (Array.isArray(input)) {\n for (let pattern of input) {\n let result = braces.create(pattern, options);\n if (Array.isArray(result)) {\n output.push(...result);\n } else {\n output.push(result);\n }\n }\n } else {\n output = [].concat(braces.create(input, options));\n }\n\n if (options && options.expand === true && options.nodupes === true) {\n output = [...new Set(output)];\n }\n return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n if (typeof input === 'string') {\n return stringify(braces.parse(input, options), options);\n }\n return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n\n let result = expand(input, options);\n\n // filter out empty strings if specified\n if (options.noempty === true) {\n result = result.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options.nodupes === true) {\n result = [...new Set(result)];\n }\n\n return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n if (input === '' || input.length < 3) {\n return [input];\n }\n\n return options.expand !== true\n ? braces.compile(input, options)\n : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: path.sep,\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.supportsLookbehinds = () => {\n const segs = process.version.slice(1).split('.').map(Number);\n if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n return true;\n }\n return false;\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let negatedExtglob = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n if (code === CHAR_EXCLAMATION_MARK && index === start) {\n negatedExtglob = true;\n }\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated,\n negatedExtglob\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(win32);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = opts => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index] || '';\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren') {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n let rest;\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n // In this case, we need to parse the string and use it in the output of the original pattern.\n // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n //\n // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n output = token.close = `)${expression})${extglobStar})`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance();\n } else {\n value += advance();\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if (next === '<' && !utils.supportsLookbehinds()) {\n throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n }\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(win32);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = opts => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return state.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${state.output})${append}`;\n if (state && state.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = state;\n }\n\n return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n let parsed = { negated: false, fastpaths: true };\n\n if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n parsed.output = parse.fastpaths(input, options);\n }\n\n if (!parsed.output) {\n parsed = parse(input, options);\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\nconst isEmptyString = val => val === '' || val === './';\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array<string>} `list` List of strings to match.\n * @param {String|Array<string>} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n patterns = [].concat(patterns);\n list = [].concat(list);\n\n let omit = new Set();\n let keep = new Set();\n let items = new Set();\n let negatives = 0;\n\n let onResult = state => {\n items.add(state.output);\n if (options && options.onResult) {\n options.onResult(state);\n }\n };\n\n for (let i = 0; i < patterns.length; i++) {\n let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n if (negated) negatives++;\n\n for (let item of list) {\n let matched = isMatch(item, true);\n\n let match = negated ? !matched.isMatch : matched.isMatch;\n if (!match) continue;\n\n if (negated) {\n omit.add(matched.output);\n } else {\n omit.delete(matched.output);\n keep.add(matched.output);\n }\n }\n }\n\n let result = negatives === patterns.length ? [...items] : [...keep];\n let matches = result.filter(item => !omit.has(item));\n\n if (options && matches.length === 0) {\n if (options.failglob === true) {\n throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n }\n\n if (options.nonull === true || options.nullglob === true) {\n return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n }\n }\n\n return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `[options]` See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n patterns = [].concat(patterns).map(String);\n let result = new Set();\n let items = [];\n\n let onResult = state => {\n if (options.onResult) options.onResult(state);\n items.push(state.output);\n };\n\n let matches = new Set(micromatch(list, patterns, { ...options, onResult }));\n\n for (let item of items) {\n if (!matches.has(item)) {\n result.add(item);\n }\n }\n return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any of the patterns matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n if (Array.isArray(pattern)) {\n return pattern.some(p => micromatch.contains(str, p, options));\n }\n\n if (typeof pattern === 'string') {\n if (isEmptyString(str) || isEmptyString(pattern)) {\n return false;\n }\n\n if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n return true;\n }\n }\n\n return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n if (!utils.isObject(obj)) {\n throw new TypeError('Expected the first argument to be an object');\n }\n let keys = micromatch(Object.keys(obj), patterns, options);\n let res = {};\n for (let key of keys) res[key] = obj[key];\n return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (items.some(item => isMatch(item))) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (!items.every(item => isMatch(item))) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n let posix = utils.isWindows(options);\n let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n if (match) {\n return match.slice(1).map(v => v === void 0 ? '' : v);\n }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.parse(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n let res = [];\n for (let pattern of [].concat(patterns || [])) {\n for (let str of braces(String(pattern), options)) {\n res.push(picomatch.parse(str, options));\n }\n }\n return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n if ((options && options.nobrace === true) || !/\\{.*\\}/.test(pattern)) {\n return [pattern];\n }\n return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\nmodule.exports = micromatch;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;\nconst path = require(\"path\");\nconst globParent = require(\"glob-parent\");\nconst micromatch = require(\"micromatch\");\nconst GLOBSTAR = '**';\nconst ESCAPE_SYMBOL = '\\\\';\nconst COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;\nconst REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\\[[^[]*]/;\nconst REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\\([^(]*\\|[^|]*\\)/;\nconst GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\\([^(]*\\)/;\nconst BRACE_EXPANSION_SEPARATORS_RE = /,|\\.\\./;\n/**\n * Matches a sequence of two or more consecutive slashes, excluding the first two slashes at the beginning of the string.\n * The latter is due to the presence of the device path at the beginning of the UNC path.\n */\nconst DOUBLE_SLASH_RE = /(?!^)\\/{2,}/g;\nfunction isStaticPattern(pattern, options = {}) {\n return !isDynamicPattern(pattern, options);\n}\nexports.isStaticPattern = isStaticPattern;\nfunction isDynamicPattern(pattern, options = {}) {\n /**\n * A special case with an empty string is necessary for matching patterns that start with a forward slash.\n * An empty string cannot be a dynamic pattern.\n * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'.\n */\n if (pattern === '') {\n return false;\n }\n /**\n * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check\n * filepath directly (without read directory).\n */\n if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) {\n return true;\n }\n if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) {\n return true;\n }\n if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) {\n return true;\n }\n if (options.braceExpansion !== false && hasBraceExpansion(pattern)) {\n return true;\n }\n return false;\n}\nexports.isDynamicPattern = isDynamicPattern;\nfunction hasBraceExpansion(pattern) {\n const openingBraceIndex = pattern.indexOf('{');\n if (openingBraceIndex === -1) {\n return false;\n }\n const closingBraceIndex = pattern.indexOf('}', openingBraceIndex + 1);\n if (closingBraceIndex === -1) {\n return false;\n }\n const braceContent = pattern.slice(openingBraceIndex, closingBraceIndex);\n return BRACE_EXPANSION_SEPARATORS_RE.test(braceContent);\n}\nfunction convertToPositivePattern(pattern) {\n return isNegativePattern(pattern) ? pattern.slice(1) : pattern;\n}\nexports.convertToPositivePattern = convertToPositivePattern;\nfunction convertToNegativePattern(pattern) {\n return '!' + pattern;\n}\nexports.convertToNegativePattern = convertToNegativePattern;\nfunction isNegativePattern(pattern) {\n return pattern.startsWith('!') && pattern[1] !== '(';\n}\nexports.isNegativePattern = isNegativePattern;\nfunction isPositivePattern(pattern) {\n return !isNegativePattern(pattern);\n}\nexports.isPositivePattern = isPositivePattern;\nfunction getNegativePatterns(patterns) {\n return patterns.filter(isNegativePattern);\n}\nexports.getNegativePatterns = getNegativePatterns;\nfunction getPositivePatterns(patterns) {\n return patterns.filter(isPositivePattern);\n}\nexports.getPositivePatterns = getPositivePatterns;\n/**\n * Returns patterns that can be applied inside the current directory.\n *\n * @example\n * // ['./*', '*', 'a/*']\n * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])\n */\nfunction getPatternsInsideCurrentDirectory(patterns) {\n return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern));\n}\nexports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory;\n/**\n * Returns patterns to be expanded relative to (outside) the current directory.\n *\n * @example\n * // ['../*', './../*']\n * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])\n */\nfunction getPatternsOutsideCurrentDirectory(patterns) {\n return patterns.filter(isPatternRelatedToParentDirectory);\n}\nexports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory;\nfunction isPatternRelatedToParentDirectory(pattern) {\n return pattern.startsWith('..') || pattern.startsWith('./..');\n}\nexports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory;\nfunction getBaseDirectory(pattern) {\n return globParent(pattern, { flipBackslashes: false });\n}\nexports.getBaseDirectory = getBaseDirectory;\nfunction hasGlobStar(pattern) {\n return pattern.includes(GLOBSTAR);\n}\nexports.hasGlobStar = hasGlobStar;\nfunction endsWithSlashGlobStar(pattern) {\n return pattern.endsWith('/' + GLOBSTAR);\n}\nexports.endsWithSlashGlobStar = endsWithSlashGlobStar;\nfunction isAffectDepthOfReadingPattern(pattern) {\n const basename = path.basename(pattern);\n return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);\n}\nexports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;\nfunction expandPatternsWithBraceExpansion(patterns) {\n return patterns.reduce((collection, pattern) => {\n return collection.concat(expandBraceExpansion(pattern));\n }, []);\n}\nexports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion;\nfunction expandBraceExpansion(pattern) {\n const patterns = micromatch.braces(pattern, { expand: true, nodupes: true });\n /**\n * Sort the patterns by length so that the same depth patterns are processed side by side.\n * `a/{b,}/{c,}/*` – `['a///*', 'a/b//*', 'a//c/*', 'a/b/c/*']`\n */\n patterns.sort((a, b) => a.length - b.length);\n /**\n * Micromatch can return an empty string in the case of patterns like `{a,}`.\n */\n return patterns.filter((pattern) => pattern !== '');\n}\nexports.expandBraceExpansion = expandBraceExpansion;\nfunction getPatternParts(pattern, options) {\n let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true }));\n /**\n * The scan method returns an empty array in some cases.\n * See micromatch/picomatch#58 for more details.\n */\n if (parts.length === 0) {\n parts = [pattern];\n }\n /**\n * The scan method does not return an empty part for the pattern with a forward slash.\n * This is another part of micromatch/picomatch#58.\n */\n if (parts[0].startsWith('/')) {\n parts[0] = parts[0].slice(1);\n parts.unshift('');\n }\n return parts;\n}\nexports.getPatternParts = getPatternParts;\nfunction makeRe(pattern, options) {\n return micromatch.makeRe(pattern, options);\n}\nexports.makeRe = makeRe;\nfunction convertPatternsToRe(patterns, options) {\n return patterns.map((pattern) => makeRe(pattern, options));\n}\nexports.convertPatternsToRe = convertPatternsToRe;\nfunction matchAny(entry, patternsRe) {\n return patternsRe.some((patternRe) => patternRe.test(entry));\n}\nexports.matchAny = matchAny;\n/**\n * This package only works with forward slashes as a path separator.\n * Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes.\n */\nfunction removeDuplicateSlashes(pattern) {\n return pattern.replace(DOUBLE_SLASH_RE, '/');\n}\nexports.removeDuplicateSlashes = removeDuplicateSlashes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\nconst merge2 = require(\"merge2\");\nfunction merge(streams) {\n const mergedStream = merge2(streams);\n streams.forEach((stream) => {\n stream.once('error', (error) => mergedStream.emit('error', error));\n });\n mergedStream.once('close', () => propagateCloseEventToSources(streams));\n mergedStream.once('end', () => propagateCloseEventToSources(streams));\n return mergedStream;\n}\nexports.merge = merge;\nfunction propagateCloseEventToSources(streams) {\n streams.forEach((stream) => stream.emit('close'));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEmpty = exports.isString = void 0;\nfunction isString(input) {\n return typeof input === 'string';\n}\nexports.isString = isString;\nfunction isEmpty(input) {\n return input === '';\n}\nexports.isEmpty = isEmpty;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0;\nconst array = require(\"./array\");\nexports.array = array;\nconst errno = require(\"./errno\");\nexports.errno = errno;\nconst fs = require(\"./fs\");\nexports.fs = fs;\nconst path = require(\"./path\");\nexports.path = path;\nconst pattern = require(\"./pattern\");\nexports.pattern = pattern;\nconst stream = require(\"./stream\");\nexports.stream = stream;\nconst string = require(\"./string\");\nexports.string = string;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0;\nconst utils = require(\"../utils\");\nfunction generate(input, settings) {\n const patterns = processPatterns(input, settings);\n const ignore = processPatterns(settings.ignore, settings);\n const positivePatterns = getPositivePatterns(patterns);\n const negativePatterns = getNegativePatternsAsPositive(patterns, ignore);\n const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings));\n const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings));\n const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false);\n const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true);\n return staticTasks.concat(dynamicTasks);\n}\nexports.generate = generate;\nfunction processPatterns(input, settings) {\n let patterns = input;\n /**\n * The original pattern like `{,*,**,a/*}` can lead to problems checking the depth when matching entry\n * and some problems with the micromatch package (see fast-glob issues: #365, #394).\n *\n * To solve this problem, we expand all patterns containing brace expansion. This can lead to a slight slowdown\n * in matching in the case of a large set of patterns after expansion.\n */\n if (settings.braceExpansion) {\n patterns = utils.pattern.expandPatternsWithBraceExpansion(patterns);\n }\n /**\n * If the `baseNameMatch` option is enabled, we must add globstar to patterns, so that they can be used\n * at any nesting level.\n *\n * We do this here, because otherwise we have to complicate the filtering logic. For example, we need to change\n * the pattern in the filter before creating a regular expression. There is no need to change the patterns\n * in the application. Only on the input.\n */\n if (settings.baseNameMatch) {\n patterns = patterns.map((pattern) => pattern.includes('/') ? pattern : `**/${pattern}`);\n }\n /**\n * This method also removes duplicate slashes that may have been in the pattern or formed as a result of expansion.\n */\n return patterns.map((pattern) => utils.pattern.removeDuplicateSlashes(pattern));\n}\n/**\n * Returns tasks grouped by basic pattern directories.\n *\n * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately.\n * This is necessary because directory traversal starts at the base directory and goes deeper.\n */\nfunction convertPatternsToTasks(positive, negative, dynamic) {\n const tasks = [];\n const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive);\n const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive);\n const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory);\n const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory);\n tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic));\n /*\n * For the sake of reducing future accesses to the file system, we merge all tasks within the current directory\n * into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest.\n */\n if ('.' in insideCurrentDirectoryGroup) {\n tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic));\n }\n else {\n tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic));\n }\n return tasks;\n}\nexports.convertPatternsToTasks = convertPatternsToTasks;\nfunction getPositivePatterns(patterns) {\n return utils.pattern.getPositivePatterns(patterns);\n}\nexports.getPositivePatterns = getPositivePatterns;\nfunction getNegativePatternsAsPositive(patterns, ignore) {\n const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore);\n const positive = negative.map(utils.pattern.convertToPositivePattern);\n return positive;\n}\nexports.getNegativePatternsAsPositive = getNegativePatternsAsPositive;\nfunction groupPatternsByBaseDirectory(patterns) {\n const group = {};\n return patterns.reduce((collection, pattern) => {\n const base = utils.pattern.getBaseDirectory(pattern);\n if (base in collection) {\n collection[base].push(pattern);\n }\n else {\n collection[base] = [pattern];\n }\n return collection;\n }, group);\n}\nexports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory;\nfunction convertPatternGroupsToTasks(positive, negative, dynamic) {\n return Object.keys(positive).map((base) => {\n return convertPatternGroupToTask(base, positive[base], negative, dynamic);\n });\n}\nexports.convertPatternGroupsToTasks = convertPatternGroupsToTasks;\nfunction convertPatternGroupToTask(base, positive, negative, dynamic) {\n return {\n dynamic,\n positive,\n negative,\n base,\n patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern))\n };\n}\nexports.convertPatternGroupToTask = convertPatternGroupToTask;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.read = void 0;\nfunction read(path, settings, callback) {\n settings.fs.lstat(path, (lstatError, lstat) => {\n if (lstatError !== null) {\n callFailureCallback(callback, lstatError);\n return;\n }\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\n callSuccessCallback(callback, lstat);\n return;\n }\n settings.fs.stat(path, (statError, stat) => {\n if (statError !== null) {\n if (settings.throwErrorOnBrokenSymbolicLink) {\n callFailureCallback(callback, statError);\n return;\n }\n callSuccessCallback(callback, lstat);\n return;\n }\n if (settings.markSymbolicLink) {\n stat.isSymbolicLink = () => true;\n }\n callSuccessCallback(callback, stat);\n });\n });\n}\nexports.read = read;\nfunction callFailureCallback(callback, error) {\n callback(error);\n}\nfunction callSuccessCallback(callback, result) {\n callback(null, result);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.read = void 0;\nfunction read(path, settings) {\n const lstat = settings.fs.lstatSync(path);\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\n return lstat;\n }\n try {\n const stat = settings.fs.statSync(path);\n if (settings.markSymbolicLink) {\n stat.isSymbolicLink = () => true;\n }\n return stat;\n }\n catch (error) {\n if (!settings.throwErrorOnBrokenSymbolicLink) {\n return lstat;\n }\n throw error;\n }\n}\nexports.read = read;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nexports.FILE_SYSTEM_ADAPTER = {\n lstat: fs.lstat,\n stat: fs.stat,\n lstatSync: fs.lstatSync,\n statSync: fs.statSync\n};\nfunction createFileSystemAdapter(fsMethods) {\n if (fsMethods === undefined) {\n return exports.FILE_SYSTEM_ADAPTER;\n }\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\n}\nexports.createFileSystemAdapter = createFileSystemAdapter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./adapters/fs\");\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true);\n this.fs = fs.createFileSystemAdapter(this._options.fs);\n this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false);\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\n }\n _getValue(option, value) {\n return option !== null && option !== void 0 ? option : value;\n }\n}\nexports.default = Settings;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.statSync = exports.stat = exports.Settings = void 0;\nconst async = require(\"./providers/async\");\nconst sync = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction stat(path, optionsOrSettingsOrCallback, callback) {\n if (typeof optionsOrSettingsOrCallback === 'function') {\n async.read(path, getSettings(), optionsOrSettingsOrCallback);\n return;\n }\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\n}\nexports.stat = stat;\nfunction statSync(path, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n return sync.read(path, settings);\n}\nexports.statSync = statSync;\nfunction getSettings(settingsOrOptions = {}) {\n if (settingsOrOptions instanceof settings_1.default) {\n return settingsOrOptions;\n }\n return new settings_1.default(settingsOrOptions);\n}\n","/*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","/*! run-parallel. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\nmodule.exports = runParallel\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallel (tasks, cb) {\n let results, pending, keys\n let isSync = true\n\n if (Array.isArray(tasks)) {\n results = []\n pending = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (--pending === 0 || err) {\n done(err)\n }\n }\n\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.forEach(function (key) {\n tasks[key](function (err, result) { each(key, err, result) })\n })\n } else {\n // array\n tasks.forEach(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n })\n }\n\n isSync = false\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0;\nconst NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.');\nif (NODE_PROCESS_VERSION_PARTS[0] === undefined || NODE_PROCESS_VERSION_PARTS[1] === undefined) {\n throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);\n}\nconst MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10);\nconst MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10);\nconst SUPPORTED_MAJOR_VERSION = 10;\nconst SUPPORTED_MINOR_VERSION = 10;\nconst IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION;\nconst IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION;\n/**\n * IS `true` for Node.js 10.10 and greater.\n */\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDirentFromStats = void 0;\nclass DirentFromStats {\n constructor(name, stats) {\n this.name = name;\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\n this.isDirectory = stats.isDirectory.bind(stats);\n this.isFIFO = stats.isFIFO.bind(stats);\n this.isFile = stats.isFile.bind(stats);\n this.isSocket = stats.isSocket.bind(stats);\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\n }\n}\nfunction createDirentFromStats(name, stats) {\n return new DirentFromStats(name, stats);\n}\nexports.createDirentFromStats = createDirentFromStats;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fs = void 0;\nconst fs = require(\"./fs\");\nexports.fs = fs;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinPathSegments = void 0;\nfunction joinPathSegments(a, b, separator) {\n /**\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\n */\n if (a.endsWith(separator)) {\n return a + b;\n }\n return a + separator + b;\n}\nexports.joinPathSegments = joinPathSegments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst rpl = require(\"run-parallel\");\nconst constants_1 = require(\"../constants\");\nconst utils = require(\"../utils\");\nconst common = require(\"./common\");\nfunction read(directory, settings, callback) {\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\n readdirWithFileTypes(directory, settings, callback);\n return;\n }\n readdir(directory, settings, callback);\n}\nexports.read = read;\nfunction readdirWithFileTypes(directory, settings, callback) {\n settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => {\n if (readdirError !== null) {\n callFailureCallback(callback, readdirError);\n return;\n }\n const entries = dirents.map((dirent) => ({\n dirent,\n name: dirent.name,\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\n }));\n if (!settings.followSymbolicLinks) {\n callSuccessCallback(callback, entries);\n return;\n }\n const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings));\n rpl(tasks, (rplError, rplEntries) => {\n if (rplError !== null) {\n callFailureCallback(callback, rplError);\n return;\n }\n callSuccessCallback(callback, rplEntries);\n });\n });\n}\nexports.readdirWithFileTypes = readdirWithFileTypes;\nfunction makeRplTaskEntry(entry, settings) {\n return (done) => {\n if (!entry.dirent.isSymbolicLink()) {\n done(null, entry);\n return;\n }\n settings.fs.stat(entry.path, (statError, stats) => {\n if (statError !== null) {\n if (settings.throwErrorOnBrokenSymbolicLink) {\n done(statError);\n return;\n }\n done(null, entry);\n return;\n }\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\n done(null, entry);\n });\n };\n}\nfunction readdir(directory, settings, callback) {\n settings.fs.readdir(directory, (readdirError, names) => {\n if (readdirError !== null) {\n callFailureCallback(callback, readdirError);\n return;\n }\n const tasks = names.map((name) => {\n const path = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\n return (done) => {\n fsStat.stat(path, settings.fsStatSettings, (error, stats) => {\n if (error !== null) {\n done(error);\n return;\n }\n const entry = {\n name,\n path,\n dirent: utils.fs.createDirentFromStats(name, stats)\n };\n if (settings.stats) {\n entry.stats = stats;\n }\n done(null, entry);\n });\n };\n });\n rpl(tasks, (rplError, entries) => {\n if (rplError !== null) {\n callFailureCallback(callback, rplError);\n return;\n }\n callSuccessCallback(callback, entries);\n });\n });\n}\nexports.readdir = readdir;\nfunction callFailureCallback(callback, error) {\n callback(error);\n}\nfunction callSuccessCallback(callback, result) {\n callback(null, result);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst constants_1 = require(\"../constants\");\nconst utils = require(\"../utils\");\nconst common = require(\"./common\");\nfunction read(directory, settings) {\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\n return readdirWithFileTypes(directory, settings);\n }\n return readdir(directory, settings);\n}\nexports.read = read;\nfunction readdirWithFileTypes(directory, settings) {\n const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });\n return dirents.map((dirent) => {\n const entry = {\n dirent,\n name: dirent.name,\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\n };\n if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {\n try {\n const stats = settings.fs.statSync(entry.path);\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\n }\n catch (error) {\n if (settings.throwErrorOnBrokenSymbolicLink) {\n throw error;\n }\n }\n }\n return entry;\n });\n}\nexports.readdirWithFileTypes = readdirWithFileTypes;\nfunction readdir(directory, settings) {\n const names = settings.fs.readdirSync(directory);\n return names.map((name) => {\n const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\n const stats = fsStat.statSync(entryPath, settings.fsStatSettings);\n const entry = {\n name,\n path: entryPath,\n dirent: utils.fs.createDirentFromStats(name, stats)\n };\n if (settings.stats) {\n entry.stats = stats;\n }\n return entry;\n });\n}\nexports.readdir = readdir;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nexports.FILE_SYSTEM_ADAPTER = {\n lstat: fs.lstat,\n stat: fs.stat,\n lstatSync: fs.lstatSync,\n statSync: fs.statSync,\n readdir: fs.readdir,\n readdirSync: fs.readdirSync\n};\nfunction createFileSystemAdapter(fsMethods) {\n if (fsMethods === undefined) {\n return exports.FILE_SYSTEM_ADAPTER;\n }\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\n}\nexports.createFileSystemAdapter = createFileSystemAdapter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fs = require(\"./adapters/fs\");\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false);\n this.fs = fs.createFileSystemAdapter(this._options.fs);\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\n this.stats = this._getValue(this._options.stats, false);\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\n this.fsStatSettings = new fsStat.Settings({\n followSymbolicLink: this.followSymbolicLinks,\n fs: this.fs,\n throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink\n });\n }\n _getValue(option, value) {\n return option !== null && option !== void 0 ? option : value;\n }\n}\nexports.default = Settings;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Settings = exports.scandirSync = exports.scandir = void 0;\nconst async = require(\"./providers/async\");\nconst sync = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction scandir(path, optionsOrSettingsOrCallback, callback) {\n if (typeof optionsOrSettingsOrCallback === 'function') {\n async.read(path, getSettings(), optionsOrSettingsOrCallback);\n return;\n }\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\n}\nexports.scandir = scandir;\nfunction scandirSync(path, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n return sync.read(path, settings);\n}\nexports.scandirSync = scandirSync;\nfunction getSettings(settingsOrOptions = {}) {\n if (settingsOrOptions instanceof settings_1.default) {\n return settingsOrOptions;\n }\n return new settings_1.default(settingsOrOptions);\n}\n","'use strict'\n\nfunction reusify (Constructor) {\n var head = new Constructor()\n var tail = head\n\n function get () {\n var current = head\n\n if (current.next) {\n head = current.next\n } else {\n head = new Constructor()\n tail = head\n }\n\n current.next = null\n\n return current\n }\n\n function release (obj) {\n tail.next = obj\n tail = obj\n }\n\n return {\n get: get,\n release: release\n }\n}\n\nmodule.exports = reusify\n","'use strict'\n\n/* eslint-disable no-var */\n\nvar reusify = require('reusify')\n\nfunction fastqueue (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n if (concurrency < 1) {\n throw new Error('fastqueue concurrency must be greater than 1')\n }\n\n var cache = reusify(Task)\n var queueHead = null\n var queueTail = null\n var _running = 0\n var errorHandler = null\n\n var self = {\n push: push,\n drain: noop,\n saturated: noop,\n pause: pause,\n paused: false,\n concurrency: concurrency,\n running: running,\n resume: resume,\n idle: idle,\n length: length,\n getQueue: getQueue,\n unshift: unshift,\n empty: noop,\n kill: kill,\n killAndDrain: killAndDrain,\n error: error\n }\n\n return self\n\n function running () {\n return _running\n }\n\n function pause () {\n self.paused = true\n }\n\n function length () {\n var current = queueHead\n var counter = 0\n\n while (current) {\n current = current.next\n counter++\n }\n\n return counter\n }\n\n function getQueue () {\n var current = queueHead\n var tasks = []\n\n while (current) {\n tasks.push(current.value)\n current = current.next\n }\n\n return tasks\n }\n\n function resume () {\n if (!self.paused) return\n self.paused = false\n for (var i = 0; i < self.concurrency; i++) {\n _running++\n release()\n }\n }\n\n function idle () {\n return _running === 0 && self.length() === 0\n }\n\n function push (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n current.errorHandler = errorHandler\n\n if (_running === self.concurrency || self.paused) {\n if (queueTail) {\n queueTail.next = current\n queueTail = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function unshift (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n\n if (_running === self.concurrency || self.paused) {\n if (queueHead) {\n current.next = queueHead\n queueHead = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function release (holder) {\n if (holder) {\n cache.release(holder)\n }\n var next = queueHead\n if (next) {\n if (!self.paused) {\n if (queueTail === queueHead) {\n queueTail = null\n }\n queueHead = next.next\n next.next = null\n worker.call(context, next.value, next.worked)\n if (queueTail === null) {\n self.empty()\n }\n } else {\n _running--\n }\n } else if (--_running === 0) {\n self.drain()\n }\n }\n\n function kill () {\n queueHead = null\n queueTail = null\n self.drain = noop\n }\n\n function killAndDrain () {\n queueHead = null\n queueTail = null\n self.drain()\n self.drain = noop\n }\n\n function error (handler) {\n errorHandler = handler\n }\n}\n\nfunction noop () {}\n\nfunction Task () {\n this.value = null\n this.callback = noop\n this.next = null\n this.release = noop\n this.context = null\n this.errorHandler = null\n\n var self = this\n\n this.worked = function worked (err, result) {\n var callback = self.callback\n var errorHandler = self.errorHandler\n var val = self.value\n self.value = null\n self.callback = noop\n if (self.errorHandler) {\n errorHandler(err, val)\n }\n callback.call(self.context, err, result)\n self.release(self)\n }\n}\n\nfunction queueAsPromised (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n function asyncWrapper (arg, cb) {\n worker.call(this, arg)\n .then(function (res) {\n cb(null, res)\n }, cb)\n }\n\n var queue = fastqueue(context, asyncWrapper, concurrency)\n\n var pushCb = queue.push\n var unshiftCb = queue.unshift\n\n queue.push = push\n queue.unshift = unshift\n queue.drained = drained\n\n return queue\n\n function push (value) {\n var p = new Promise(function (resolve, reject) {\n pushCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n\n // Let's fork the promise chain to\n // make the error bubble up to the user but\n // not lead to a unhandledRejection\n p.catch(noop)\n\n return p\n }\n\n function unshift (value) {\n var p = new Promise(function (resolve, reject) {\n unshiftCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n\n // Let's fork the promise chain to\n // make the error bubble up to the user but\n // not lead to a unhandledRejection\n p.catch(noop)\n\n return p\n }\n\n function drained () {\n var previousDrain = queue.drain\n\n var p = new Promise(function (resolve) {\n queue.drain = function () {\n previousDrain()\n resolve()\n }\n })\n\n return p\n }\n}\n\nmodule.exports = fastqueue\nmodule.exports.promise = queueAsPromised\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = void 0;\nfunction isFatalError(settings, error) {\n if (settings.errorFilter === null) {\n return true;\n }\n return !settings.errorFilter(error);\n}\nexports.isFatalError = isFatalError;\nfunction isAppliedFilter(filter, value) {\n return filter === null || filter(value);\n}\nexports.isAppliedFilter = isAppliedFilter;\nfunction replacePathSegmentSeparator(filepath, separator) {\n return filepath.split(/[/\\\\]/).join(separator);\n}\nexports.replacePathSegmentSeparator = replacePathSegmentSeparator;\nfunction joinPathSegments(a, b, separator) {\n if (a === '') {\n return b;\n }\n /**\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\n */\n if (a.endsWith(separator)) {\n return a + b;\n }\n return a + separator + b;\n}\nexports.joinPathSegments = joinPathSegments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst common = require(\"./common\");\nclass Reader {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);\n }\n}\nexports.default = Reader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst events_1 = require(\"events\");\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nconst fastq = require(\"fastq\");\nconst common = require(\"./common\");\nconst reader_1 = require(\"./reader\");\nclass AsyncReader extends reader_1.default {\n constructor(_root, _settings) {\n super(_root, _settings);\n this._settings = _settings;\n this._scandir = fsScandir.scandir;\n this._emitter = new events_1.EventEmitter();\n this._queue = fastq(this._worker.bind(this), this._settings.concurrency);\n this._isFatalError = false;\n this._isDestroyed = false;\n this._queue.drain = () => {\n if (!this._isFatalError) {\n this._emitter.emit('end');\n }\n };\n }\n read() {\n this._isFatalError = false;\n this._isDestroyed = false;\n setImmediate(() => {\n this._pushToQueue(this._root, this._settings.basePath);\n });\n return this._emitter;\n }\n get isDestroyed() {\n return this._isDestroyed;\n }\n destroy() {\n if (this._isDestroyed) {\n throw new Error('The reader is already destroyed');\n }\n this._isDestroyed = true;\n this._queue.killAndDrain();\n }\n onEntry(callback) {\n this._emitter.on('entry', callback);\n }\n onError(callback) {\n this._emitter.once('error', callback);\n }\n onEnd(callback) {\n this._emitter.once('end', callback);\n }\n _pushToQueue(directory, base) {\n const queueItem = { directory, base };\n this._queue.push(queueItem, (error) => {\n if (error !== null) {\n this._handleError(error);\n }\n });\n }\n _worker(item, done) {\n this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => {\n if (error !== null) {\n done(error, undefined);\n return;\n }\n for (const entry of entries) {\n this._handleEntry(entry, item.base);\n }\n done(null, undefined);\n });\n }\n _handleError(error) {\n if (this._isDestroyed || !common.isFatalError(this._settings, error)) {\n return;\n }\n this._isFatalError = true;\n this._isDestroyed = true;\n this._emitter.emit('error', error);\n }\n _handleEntry(entry, base) {\n if (this._isDestroyed || this._isFatalError) {\n return;\n }\n const fullpath = entry.path;\n if (base !== undefined) {\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\n }\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\n this._emitEntry(entry);\n }\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\n this._pushToQueue(fullpath, base === undefined ? undefined : entry.path);\n }\n }\n _emitEntry(entry) {\n this._emitter.emit('entry', entry);\n }\n}\nexports.default = AsyncReader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst async_1 = require(\"../readers/async\");\nclass AsyncProvider {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._reader = new async_1.default(this._root, this._settings);\n this._storage = [];\n }\n read(callback) {\n this._reader.onError((error) => {\n callFailureCallback(callback, error);\n });\n this._reader.onEntry((entry) => {\n this._storage.push(entry);\n });\n this._reader.onEnd(() => {\n callSuccessCallback(callback, this._storage);\n });\n this._reader.read();\n }\n}\nexports.default = AsyncProvider;\nfunction callFailureCallback(callback, error) {\n callback(error);\n}\nfunction callSuccessCallback(callback, entries) {\n callback(null, entries);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst async_1 = require(\"../readers/async\");\nclass StreamProvider {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._reader = new async_1.default(this._root, this._settings);\n this._stream = new stream_1.Readable({\n objectMode: true,\n read: () => { },\n destroy: () => {\n if (!this._reader.isDestroyed) {\n this._reader.destroy();\n }\n }\n });\n }\n read() {\n this._reader.onError((error) => {\n this._stream.emit('error', error);\n });\n this._reader.onEntry((entry) => {\n this._stream.push(entry);\n });\n this._reader.onEnd(() => {\n this._stream.push(null);\n });\n this._reader.read();\n return this._stream;\n }\n}\nexports.default = StreamProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nconst common = require(\"./common\");\nconst reader_1 = require(\"./reader\");\nclass SyncReader extends reader_1.default {\n constructor() {\n super(...arguments);\n this._scandir = fsScandir.scandirSync;\n this._storage = [];\n this._queue = new Set();\n }\n read() {\n this._pushToQueue(this._root, this._settings.basePath);\n this._handleQueue();\n return this._storage;\n }\n _pushToQueue(directory, base) {\n this._queue.add({ directory, base });\n }\n _handleQueue() {\n for (const item of this._queue.values()) {\n this._handleDirectory(item.directory, item.base);\n }\n }\n _handleDirectory(directory, base) {\n try {\n const entries = this._scandir(directory, this._settings.fsScandirSettings);\n for (const entry of entries) {\n this._handleEntry(entry, base);\n }\n }\n catch (error) {\n this._handleError(error);\n }\n }\n _handleError(error) {\n if (!common.isFatalError(this._settings, error)) {\n return;\n }\n throw error;\n }\n _handleEntry(entry, base) {\n const fullpath = entry.path;\n if (base !== undefined) {\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\n }\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\n this._pushToStorage(entry);\n }\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\n this._pushToQueue(fullpath, base === undefined ? undefined : entry.path);\n }\n }\n _pushToStorage(entry) {\n this._storage.push(entry);\n }\n}\nexports.default = SyncReader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sync_1 = require(\"../readers/sync\");\nclass SyncProvider {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._reader = new sync_1.default(this._root, this._settings);\n }\n read() {\n return this._reader.read();\n }\n}\nexports.default = SyncProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.basePath = this._getValue(this._options.basePath, undefined);\n this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY);\n this.deepFilter = this._getValue(this._options.deepFilter, null);\n this.entryFilter = this._getValue(this._options.entryFilter, null);\n this.errorFilter = this._getValue(this._options.errorFilter, null);\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\n this.fsScandirSettings = new fsScandir.Settings({\n followSymbolicLinks: this._options.followSymbolicLinks,\n fs: this._options.fs,\n pathSegmentSeparator: this._options.pathSegmentSeparator,\n stats: this._options.stats,\n throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink\n });\n }\n _getValue(option, value) {\n return option !== null && option !== void 0 ? option : value;\n }\n}\nexports.default = Settings;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Settings = exports.walkStream = exports.walkSync = exports.walk = void 0;\nconst async_1 = require(\"./providers/async\");\nconst stream_1 = require(\"./providers/stream\");\nconst sync_1 = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction walk(directory, optionsOrSettingsOrCallback, callback) {\n if (typeof optionsOrSettingsOrCallback === 'function') {\n new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback);\n return;\n }\n new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback);\n}\nexports.walk = walk;\nfunction walkSync(directory, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n const provider = new sync_1.default(directory, settings);\n return provider.read();\n}\nexports.walkSync = walkSync;\nfunction walkStream(directory, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n const provider = new stream_1.default(directory, settings);\n return provider.read();\n}\nexports.walkStream = walkStream;\nfunction getSettings(settingsOrOptions = {}) {\n if (settingsOrOptions instanceof settings_1.default) {\n return settingsOrOptions;\n }\n return new settings_1.default(settingsOrOptions);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst utils = require(\"../utils\");\nclass Reader {\n constructor(_settings) {\n this._settings = _settings;\n this._fsStatSettings = new fsStat.Settings({\n followSymbolicLink: this._settings.followSymbolicLinks,\n fs: this._settings.fs,\n throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks\n });\n }\n _getFullEntryPath(filepath) {\n return path.resolve(this._settings.cwd, filepath);\n }\n _makeEntry(stats, pattern) {\n const entry = {\n name: pattern,\n path: pattern,\n dirent: utils.fs.createDirentFromStats(pattern, stats)\n };\n if (this._settings.stats) {\n entry.stats = stats;\n }\n return entry;\n }\n _isFatalError(error) {\n return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;\n }\n}\nexports.default = Reader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nclass ReaderStream extends reader_1.default {\n constructor() {\n super(...arguments);\n this._walkStream = fsWalk.walkStream;\n this._stat = fsStat.stat;\n }\n dynamic(root, options) {\n return this._walkStream(root, options);\n }\n static(patterns, options) {\n const filepaths = patterns.map(this._getFullEntryPath, this);\n const stream = new stream_1.PassThrough({ objectMode: true });\n stream._write = (index, _enc, done) => {\n return this._getEntry(filepaths[index], patterns[index], options)\n .then((entry) => {\n if (entry !== null && options.entryFilter(entry)) {\n stream.push(entry);\n }\n if (index === filepaths.length - 1) {\n stream.end();\n }\n done();\n })\n .catch(done);\n };\n for (let i = 0; i < filepaths.length; i++) {\n stream.write(i);\n }\n return stream;\n }\n _getEntry(filepath, pattern, options) {\n return this._getStat(filepath)\n .then((stats) => this._makeEntry(stats, pattern))\n .catch((error) => {\n if (options.errorFilter(error)) {\n return null;\n }\n throw error;\n });\n }\n _getStat(filepath) {\n return new Promise((resolve, reject) => {\n this._stat(filepath, this._fsStatSettings, (error, stats) => {\n return error === null ? resolve(stats) : reject(error);\n });\n });\n }\n}\nexports.default = ReaderStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nconst stream_1 = require(\"./stream\");\nclass ReaderAsync extends reader_1.default {\n constructor() {\n super(...arguments);\n this._walkAsync = fsWalk.walk;\n this._readerStream = new stream_1.default(this._settings);\n }\n dynamic(root, options) {\n return new Promise((resolve, reject) => {\n this._walkAsync(root, options, (error, entries) => {\n if (error === null) {\n resolve(entries);\n }\n else {\n reject(error);\n }\n });\n });\n }\n async static(patterns, options) {\n const entries = [];\n const stream = this._readerStream.static(patterns, options);\n // After #235, replace it with an asynchronous iterator.\n return new Promise((resolve, reject) => {\n stream.once('error', reject);\n stream.on('data', (entry) => entries.push(entry));\n stream.once('end', () => resolve(entries));\n });\n }\n}\nexports.default = ReaderAsync;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass Matcher {\n constructor(_patterns, _settings, _micromatchOptions) {\n this._patterns = _patterns;\n this._settings = _settings;\n this._micromatchOptions = _micromatchOptions;\n this._storage = [];\n this._fillStorage();\n }\n _fillStorage() {\n for (const pattern of this._patterns) {\n const segments = this._getPatternSegments(pattern);\n const sections = this._splitSegmentsIntoSections(segments);\n this._storage.push({\n complete: sections.length <= 1,\n pattern,\n segments,\n sections\n });\n }\n }\n _getPatternSegments(pattern) {\n const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions);\n return parts.map((part) => {\n const dynamic = utils.pattern.isDynamicPattern(part, this._settings);\n if (!dynamic) {\n return {\n dynamic: false,\n pattern: part\n };\n }\n return {\n dynamic: true,\n pattern: part,\n patternRe: utils.pattern.makeRe(part, this._micromatchOptions)\n };\n });\n }\n _splitSegmentsIntoSections(segments) {\n return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern));\n }\n}\nexports.default = Matcher;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst matcher_1 = require(\"./matcher\");\nclass PartialMatcher extends matcher_1.default {\n match(filepath) {\n const parts = filepath.split('/');\n const levels = parts.length;\n const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels);\n for (const pattern of patterns) {\n const section = pattern.sections[0];\n /**\n * In this case, the pattern has a globstar and we must read all directories unconditionally,\n * but only if the level has reached the end of the first group.\n *\n * fixtures/{a,b}/**\n * ^ true/false ^ always true\n */\n if (!pattern.complete && levels > section.length) {\n return true;\n }\n const match = parts.every((part, index) => {\n const segment = pattern.segments[index];\n if (segment.dynamic && segment.patternRe.test(part)) {\n return true;\n }\n if (!segment.dynamic && segment.pattern === part) {\n return true;\n }\n return false;\n });\n if (match) {\n return true;\n }\n }\n return false;\n }\n}\nexports.default = PartialMatcher;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nconst partial_1 = require(\"../matchers/partial\");\nclass DeepFilter {\n constructor(_settings, _micromatchOptions) {\n this._settings = _settings;\n this._micromatchOptions = _micromatchOptions;\n }\n getFilter(basePath, positive, negative) {\n const matcher = this._getMatcher(positive);\n const negativeRe = this._getNegativePatternsRe(negative);\n return (entry) => this._filter(basePath, entry, matcher, negativeRe);\n }\n _getMatcher(patterns) {\n return new partial_1.default(patterns, this._settings, this._micromatchOptions);\n }\n _getNegativePatternsRe(patterns) {\n const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern);\n return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions);\n }\n _filter(basePath, entry, matcher, negativeRe) {\n if (this._isSkippedByDeep(basePath, entry.path)) {\n return false;\n }\n if (this._isSkippedSymbolicLink(entry)) {\n return false;\n }\n const filepath = utils.path.removeLeadingDotSegment(entry.path);\n if (this._isSkippedByPositivePatterns(filepath, matcher)) {\n return false;\n }\n return this._isSkippedByNegativePatterns(filepath, negativeRe);\n }\n _isSkippedByDeep(basePath, entryPath) {\n /**\n * Avoid unnecessary depth calculations when it doesn't matter.\n */\n if (this._settings.deep === Infinity) {\n return false;\n }\n return this._getEntryLevel(basePath, entryPath) >= this._settings.deep;\n }\n _getEntryLevel(basePath, entryPath) {\n const entryPathDepth = entryPath.split('/').length;\n if (basePath === '') {\n return entryPathDepth;\n }\n const basePathDepth = basePath.split('/').length;\n return entryPathDepth - basePathDepth;\n }\n _isSkippedSymbolicLink(entry) {\n return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink();\n }\n _isSkippedByPositivePatterns(entryPath, matcher) {\n return !this._settings.baseNameMatch && !matcher.match(entryPath);\n }\n _isSkippedByNegativePatterns(entryPath, patternsRe) {\n return !utils.pattern.matchAny(entryPath, patternsRe);\n }\n}\nexports.default = DeepFilter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass EntryFilter {\n constructor(_settings, _micromatchOptions) {\n this._settings = _settings;\n this._micromatchOptions = _micromatchOptions;\n this.index = new Map();\n }\n getFilter(positive, negative) {\n const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions);\n const negativeRe = utils.pattern.convertPatternsToRe(negative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true }));\n return (entry) => this._filter(entry, positiveRe, negativeRe);\n }\n _filter(entry, positiveRe, negativeRe) {\n const filepath = utils.path.removeLeadingDotSegment(entry.path);\n if (this._settings.unique && this._isDuplicateEntry(filepath)) {\n return false;\n }\n if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {\n return false;\n }\n if (this._isSkippedByAbsoluteNegativePatterns(filepath, negativeRe)) {\n return false;\n }\n const isDirectory = entry.dirent.isDirectory();\n const isMatched = this._isMatchToPatterns(filepath, positiveRe, isDirectory) && !this._isMatchToPatterns(filepath, negativeRe, isDirectory);\n if (this._settings.unique && isMatched) {\n this._createIndexRecord(filepath);\n }\n return isMatched;\n }\n _isDuplicateEntry(filepath) {\n return this.index.has(filepath);\n }\n _createIndexRecord(filepath) {\n this.index.set(filepath, undefined);\n }\n _onlyFileFilter(entry) {\n return this._settings.onlyFiles && !entry.dirent.isFile();\n }\n _onlyDirectoryFilter(entry) {\n return this._settings.onlyDirectories && !entry.dirent.isDirectory();\n }\n _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) {\n if (!this._settings.absolute) {\n return false;\n }\n const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath);\n return utils.pattern.matchAny(fullpath, patternsRe);\n }\n _isMatchToPatterns(filepath, patternsRe, isDirectory) {\n // Trying to match files and directories by patterns.\n const isMatched = utils.pattern.matchAny(filepath, patternsRe);\n // A pattern with a trailling slash can be used for directory matching.\n // To apply such pattern, we need to add a tralling slash to the path.\n if (!isMatched && isDirectory) {\n return utils.pattern.matchAny(filepath + '/', patternsRe);\n }\n return isMatched;\n }\n}\nexports.default = EntryFilter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass ErrorFilter {\n constructor(_settings) {\n this._settings = _settings;\n }\n getFilter() {\n return (error) => this._isNonFatalError(error);\n }\n _isNonFatalError(error) {\n return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors;\n }\n}\nexports.default = ErrorFilter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass EntryTransformer {\n constructor(_settings) {\n this._settings = _settings;\n }\n getTransformer() {\n return (entry) => this._transform(entry);\n }\n _transform(entry) {\n let filepath = entry.path;\n if (this._settings.absolute) {\n filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);\n filepath = utils.path.unixify(filepath);\n }\n if (this._settings.markDirectories && entry.dirent.isDirectory()) {\n filepath += '/';\n }\n if (!this._settings.objectMode) {\n return filepath;\n }\n return Object.assign(Object.assign({}, entry), { path: filepath });\n }\n}\nexports.default = EntryTransformer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst deep_1 = require(\"./filters/deep\");\nconst entry_1 = require(\"./filters/entry\");\nconst error_1 = require(\"./filters/error\");\nconst entry_2 = require(\"./transformers/entry\");\nclass Provider {\n constructor(_settings) {\n this._settings = _settings;\n this.errorFilter = new error_1.default(this._settings);\n this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());\n this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());\n this.entryTransformer = new entry_2.default(this._settings);\n }\n _getRootDirectory(task) {\n return path.resolve(this._settings.cwd, task.base);\n }\n _getReaderOptions(task) {\n const basePath = task.base === '.' ? '' : task.base;\n return {\n basePath,\n pathSegmentSeparator: '/',\n concurrency: this._settings.concurrency,\n deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),\n entryFilter: this.entryFilter.getFilter(task.positive, task.negative),\n errorFilter: this.errorFilter.getFilter(),\n followSymbolicLinks: this._settings.followSymbolicLinks,\n fs: this._settings.fs,\n stats: this._settings.stats,\n throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,\n transform: this.entryTransformer.getTransformer()\n };\n }\n _getMicromatchOptions() {\n return {\n dot: this._settings.dot,\n matchBase: this._settings.baseNameMatch,\n nobrace: !this._settings.braceExpansion,\n nocase: !this._settings.caseSensitiveMatch,\n noext: !this._settings.extglob,\n noglobstar: !this._settings.globstar,\n posix: true,\n strictSlashes: false\n };\n }\n}\nexports.default = Provider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst async_1 = require(\"../readers/async\");\nconst provider_1 = require(\"./provider\");\nclass ProviderAsync extends provider_1.default {\n constructor() {\n super(...arguments);\n this._reader = new async_1.default(this._settings);\n }\n async read(task) {\n const root = this._getRootDirectory(task);\n const options = this._getReaderOptions(task);\n const entries = await this.api(root, task, options);\n return entries.map((entry) => options.transform(entry));\n }\n api(root, task, options) {\n if (task.dynamic) {\n return this._reader.dynamic(root, options);\n }\n return this._reader.static(task.patterns, options);\n }\n}\nexports.default = ProviderAsync;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst stream_2 = require(\"../readers/stream\");\nconst provider_1 = require(\"./provider\");\nclass ProviderStream extends provider_1.default {\n constructor() {\n super(...arguments);\n this._reader = new stream_2.default(this._settings);\n }\n read(task) {\n const root = this._getRootDirectory(task);\n const options = this._getReaderOptions(task);\n const source = this.api(root, task, options);\n const destination = new stream_1.Readable({ objectMode: true, read: () => { } });\n source\n .once('error', (error) => destination.emit('error', error))\n .on('data', (entry) => destination.emit('data', options.transform(entry)))\n .once('end', () => destination.emit('end'));\n destination\n .once('close', () => source.destroy());\n return destination;\n }\n api(root, task, options) {\n if (task.dynamic) {\n return this._reader.dynamic(root, options);\n }\n return this._reader.static(task.patterns, options);\n }\n}\nexports.default = ProviderStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nclass ReaderSync extends reader_1.default {\n constructor() {\n super(...arguments);\n this._walkSync = fsWalk.walkSync;\n this._statSync = fsStat.statSync;\n }\n dynamic(root, options) {\n return this._walkSync(root, options);\n }\n static(patterns, options) {\n const entries = [];\n for (const pattern of patterns) {\n const filepath = this._getFullEntryPath(pattern);\n const entry = this._getEntry(filepath, pattern, options);\n if (entry === null || !options.entryFilter(entry)) {\n continue;\n }\n entries.push(entry);\n }\n return entries;\n }\n _getEntry(filepath, pattern, options) {\n try {\n const stats = this._getStat(filepath);\n return this._makeEntry(stats, pattern);\n }\n catch (error) {\n if (options.errorFilter(error)) {\n return null;\n }\n throw error;\n }\n }\n _getStat(filepath) {\n return this._statSync(filepath, this._fsStatSettings);\n }\n}\nexports.default = ReaderSync;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sync_1 = require(\"../readers/sync\");\nconst provider_1 = require(\"./provider\");\nclass ProviderSync extends provider_1.default {\n constructor() {\n super(...arguments);\n this._reader = new sync_1.default(this._settings);\n }\n read(task) {\n const root = this._getRootDirectory(task);\n const options = this._getReaderOptions(task);\n const entries = this.api(root, task, options);\n return entries.map(options.transform);\n }\n api(root, task, options) {\n if (task.dynamic) {\n return this._reader.dynamic(root, options);\n }\n return this._reader.static(task.patterns, options);\n }\n}\nexports.default = ProviderSync;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nconst os = require(\"os\");\n/**\n * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.\n * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107\n */\nconst CPU_COUNT = Math.max(os.cpus().length, 1);\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = {\n lstat: fs.lstat,\n lstatSync: fs.lstatSync,\n stat: fs.stat,\n statSync: fs.statSync,\n readdir: fs.readdir,\n readdirSync: fs.readdirSync\n};\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.absolute = this._getValue(this._options.absolute, false);\n this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);\n this.braceExpansion = this._getValue(this._options.braceExpansion, true);\n this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);\n this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);\n this.cwd = this._getValue(this._options.cwd, process.cwd());\n this.deep = this._getValue(this._options.deep, Infinity);\n this.dot = this._getValue(this._options.dot, false);\n this.extglob = this._getValue(this._options.extglob, true);\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);\n this.fs = this._getFileSystemMethods(this._options.fs);\n this.globstar = this._getValue(this._options.globstar, true);\n this.ignore = this._getValue(this._options.ignore, []);\n this.markDirectories = this._getValue(this._options.markDirectories, false);\n this.objectMode = this._getValue(this._options.objectMode, false);\n this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);\n this.onlyFiles = this._getValue(this._options.onlyFiles, true);\n this.stats = this._getValue(this._options.stats, false);\n this.suppressErrors = this._getValue(this._options.suppressErrors, false);\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);\n this.unique = this._getValue(this._options.unique, true);\n if (this.onlyDirectories) {\n this.onlyFiles = false;\n }\n if (this.stats) {\n this.objectMode = true;\n }\n // Remove the cast to the array in the next major (#404).\n this.ignore = [].concat(this.ignore);\n }\n _getValue(option, value) {\n return option === undefined ? value : option;\n }\n _getFileSystemMethods(methods = {}) {\n return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);\n }\n}\nexports.default = Settings;\n","\"use strict\";\nconst taskManager = require(\"./managers/tasks\");\nconst async_1 = require(\"./providers/async\");\nconst stream_1 = require(\"./providers/stream\");\nconst sync_1 = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nconst utils = require(\"./utils\");\nasync function FastGlob(source, options) {\n assertPatternsInput(source);\n const works = getWorks(source, async_1.default, options);\n const result = await Promise.all(works);\n return utils.array.flatten(result);\n}\n// https://github.com/typescript-eslint/typescript-eslint/issues/60\n// eslint-disable-next-line no-redeclare\n(function (FastGlob) {\n FastGlob.glob = FastGlob;\n FastGlob.globSync = sync;\n FastGlob.globStream = stream;\n FastGlob.async = FastGlob;\n function sync(source, options) {\n assertPatternsInput(source);\n const works = getWorks(source, sync_1.default, options);\n return utils.array.flatten(works);\n }\n FastGlob.sync = sync;\n function stream(source, options) {\n assertPatternsInput(source);\n const works = getWorks(source, stream_1.default, options);\n /**\n * The stream returned by the provider cannot work with an asynchronous iterator.\n * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams.\n * This affects performance (+25%). I don't see best solution right now.\n */\n return utils.stream.merge(works);\n }\n FastGlob.stream = stream;\n function generateTasks(source, options) {\n assertPatternsInput(source);\n const patterns = [].concat(source);\n const settings = new settings_1.default(options);\n return taskManager.generate(patterns, settings);\n }\n FastGlob.generateTasks = generateTasks;\n function isDynamicPattern(source, options) {\n assertPatternsInput(source);\n const settings = new settings_1.default(options);\n return utils.pattern.isDynamicPattern(source, settings);\n }\n FastGlob.isDynamicPattern = isDynamicPattern;\n function escapePath(source) {\n assertPatternsInput(source);\n return utils.path.escape(source);\n }\n FastGlob.escapePath = escapePath;\n function convertPathToPattern(source) {\n assertPatternsInput(source);\n return utils.path.convertPathToPattern(source);\n }\n FastGlob.convertPathToPattern = convertPathToPattern;\n let posix;\n (function (posix) {\n function escapePath(source) {\n assertPatternsInput(source);\n return utils.path.escapePosixPath(source);\n }\n posix.escapePath = escapePath;\n function convertPathToPattern(source) {\n assertPatternsInput(source);\n return utils.path.convertPosixPathToPattern(source);\n }\n posix.convertPathToPattern = convertPathToPattern;\n })(posix = FastGlob.posix || (FastGlob.posix = {}));\n let win32;\n (function (win32) {\n function escapePath(source) {\n assertPatternsInput(source);\n return utils.path.escapeWindowsPath(source);\n }\n win32.escapePath = escapePath;\n function convertPathToPattern(source) {\n assertPatternsInput(source);\n return utils.path.convertWindowsPathToPattern(source);\n }\n win32.convertPathToPattern = convertPathToPattern;\n })(win32 = FastGlob.win32 || (FastGlob.win32 = {}));\n})(FastGlob || (FastGlob = {}));\nfunction getWorks(source, _Provider, options) {\n const patterns = [].concat(source);\n const settings = new settings_1.default(options);\n const tasks = taskManager.generate(patterns, settings);\n const provider = new _Provider(settings);\n return tasks.map(provider.read, provider);\n}\nfunction assertPatternsInput(input) {\n const source = [].concat(input);\n const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item));\n if (!isValidSource) {\n throw new TypeError('Patterns must be a string (non empty) or an array of strings');\n }\n}\nmodule.exports = FastGlob;\n","'use strict';\nconst {promisify} = require('util');\nconst fs = require('fs');\n\nasync function isType(fsStatType, statsMethodName, filePath) {\n\tif (typeof filePath !== 'string') {\n\t\tthrow new TypeError(`Expected a string, got ${typeof filePath}`);\n\t}\n\n\ttry {\n\t\tconst stats = await promisify(fs[fsStatType])(filePath);\n\t\treturn stats[statsMethodName]();\n\t} catch (error) {\n\t\tif (error.code === 'ENOENT') {\n\t\t\treturn false;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n\nfunction isTypeSync(fsStatType, statsMethodName, filePath) {\n\tif (typeof filePath !== 'string') {\n\t\tthrow new TypeError(`Expected a string, got ${typeof filePath}`);\n\t}\n\n\ttry {\n\t\treturn fs[fsStatType](filePath)[statsMethodName]();\n\t} catch (error) {\n\t\tif (error.code === 'ENOENT') {\n\t\t\treturn false;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n\nexports.isFile = isType.bind(null, 'stat', 'isFile');\nexports.isDirectory = isType.bind(null, 'stat', 'isDirectory');\nexports.isSymlink = isType.bind(null, 'lstat', 'isSymbolicLink');\nexports.isFileSync = isTypeSync.bind(null, 'statSync', 'isFile');\nexports.isDirectorySync = isTypeSync.bind(null, 'statSync', 'isDirectory');\nexports.isSymlinkSync = isTypeSync.bind(null, 'lstatSync', 'isSymbolicLink');\n","'use strict';\nconst path = require('path');\nconst pathType = require('path-type');\n\nconst getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0];\n\nconst getPath = (filepath, cwd) => {\n\tconst pth = filepath[0] === '!' ? filepath.slice(1) : filepath;\n\treturn path.isAbsolute(pth) ? pth : path.join(cwd, pth);\n};\n\nconst addExtensions = (file, extensions) => {\n\tif (path.extname(file)) {\n\t\treturn `**/${file}`;\n\t}\n\n\treturn `**/${file}.${getExtensions(extensions)}`;\n};\n\nconst getGlob = (directory, options) => {\n\tif (options.files && !Array.isArray(options.files)) {\n\t\tthrow new TypeError(`Expected \\`files\\` to be of type \\`Array\\` but received type \\`${typeof options.files}\\``);\n\t}\n\n\tif (options.extensions && !Array.isArray(options.extensions)) {\n\t\tthrow new TypeError(`Expected \\`extensions\\` to be of type \\`Array\\` but received type \\`${typeof options.extensions}\\``);\n\t}\n\n\tif (options.files && options.extensions) {\n\t\treturn options.files.map(x => path.posix.join(directory, addExtensions(x, options.extensions)));\n\t}\n\n\tif (options.files) {\n\t\treturn options.files.map(x => path.posix.join(directory, `**/${x}`));\n\t}\n\n\tif (options.extensions) {\n\t\treturn [path.posix.join(directory, `**/*.${getExtensions(options.extensions)}`)];\n\t}\n\n\treturn [path.posix.join(directory, '**')];\n};\n\nmodule.exports = async (input, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\t...options\n\t};\n\n\tif (typeof options.cwd !== 'string') {\n\t\tthrow new TypeError(`Expected \\`cwd\\` to be of type \\`string\\` but received type \\`${typeof options.cwd}\\``);\n\t}\n\n\tconst globs = await Promise.all([].concat(input).map(async x => {\n\t\tconst isDirectory = await pathType.isDirectory(getPath(x, options.cwd));\n\t\treturn isDirectory ? getGlob(x, options) : x;\n\t}));\n\n\treturn [].concat.apply([], globs); // eslint-disable-line prefer-spread\n};\n\nmodule.exports.sync = (input, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\t...options\n\t};\n\n\tif (typeof options.cwd !== 'string') {\n\t\tthrow new TypeError(`Expected \\`cwd\\` to be of type \\`string\\` but received type \\`${typeof options.cwd}\\``);\n\t}\n\n\tconst globs = [].concat(input).map(x => pathType.isDirectorySync(getPath(x, options.cwd)) ? getGlob(x, options) : x);\n\n\treturn [].concat.apply([], globs); // eslint-disable-line prefer-spread\n};\n","// A simple implementation of make-array\nfunction makeArray (subject) {\n return Array.isArray(subject)\n ? subject\n : [subject]\n}\n\nconst EMPTY = ''\nconst SPACE = ' '\nconst ESCAPE = '\\\\'\nconst REGEX_TEST_BLANK_LINE = /^\\s+$/\nconst REGEX_INVALID_TRAILING_BACKSLASH = /(?:[^\\\\]|^)\\\\$/\nconst REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\\\!/\nconst REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\\\#/\nconst REGEX_SPLITALL_CRLF = /\\r?\\n/g\n// /foo,\n// ./foo,\n// ../foo,\n// .\n// ..\nconst REGEX_TEST_INVALID_PATH = /^\\.*\\/|^\\.+$/\n\nconst SLASH = '/'\n\n// Do not use ternary expression here, since \"istanbul ignore next\" is buggy\nlet TMP_KEY_IGNORE = 'node-ignore'\n/* istanbul ignore else */\nif (typeof Symbol !== 'undefined') {\n TMP_KEY_IGNORE = Symbol.for('node-ignore')\n}\nconst KEY_IGNORE = TMP_KEY_IGNORE\n\nconst define = (object, key, value) =>\n Object.defineProperty(object, key, {value})\n\nconst REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g\n\nconst RETURN_FALSE = () => false\n\n// Sanitize the range of a regular expression\n// The cases are complicated, see test cases for details\nconst sanitizeRange = range => range.replace(\n REGEX_REGEXP_RANGE,\n (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0)\n ? match\n // Invalid range (out of order) which is ok for gitignore rules but\n // fatal for JavaScript regular expression, so eliminate it.\n : EMPTY\n)\n\n// See fixtures #59\nconst cleanRangeBackSlash = slashes => {\n const {length} = slashes\n return slashes.slice(0, length - length % 2)\n}\n\n// > If the pattern ends with a slash,\n// > it is removed for the purpose of the following description,\n// > but it would only find a match with a directory.\n// > In other words, foo/ will match a directory foo and paths underneath it,\n// > but will not match a regular file or a symbolic link foo\n// > (this is consistent with the way how pathspec works in general in Git).\n// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'\n// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call\n// you could use option `mark: true` with `glob`\n\n// '`foo/`' should not continue with the '`..`'\nconst REPLACERS = [\n\n // > Trailing spaces are ignored unless they are quoted with backslash (\"\\\")\n [\n // (a\\ ) -> (a )\n // (a ) -> (a)\n // (a \\ ) -> (a )\n /\\\\?\\s+$/,\n match => match.indexOf('\\\\') === 0\n ? SPACE\n : EMPTY\n ],\n\n // replace (\\ ) with ' '\n [\n /\\\\\\s/g,\n () => SPACE\n ],\n\n // Escape metacharacters\n // which is written down by users but means special for regular expressions.\n\n // > There are 12 characters with special meanings:\n // > - the backslash \\,\n // > - the caret ^,\n // > - the dollar sign $,\n // > - the period or dot .,\n // > - the vertical bar or pipe symbol |,\n // > - the question mark ?,\n // > - the asterisk or star *,\n // > - the plus sign +,\n // > - the opening parenthesis (,\n // > - the closing parenthesis ),\n // > - and the opening square bracket [,\n // > - the opening curly brace {,\n // > These special characters are often called \"metacharacters\".\n [\n /[\\\\$.|*+(){^]/g,\n match => `\\\\${match}`\n ],\n\n [\n // > a question mark (?) matches a single character\n /(?!\\\\)\\?/g,\n () => '[^/]'\n ],\n\n // leading slash\n [\n\n // > A leading slash matches the beginning of the pathname.\n // > For example, \"/*.c\" matches \"cat-file.c\" but not \"mozilla-sha1/sha1.c\".\n // A leading slash matches the beginning of the pathname\n /^\\//,\n () => '^'\n ],\n\n // replace special metacharacter slash after the leading slash\n [\n /\\//g,\n () => '\\\\/'\n ],\n\n [\n // > A leading \"**\" followed by a slash means match in all directories.\n // > For example, \"**/foo\" matches file or directory \"foo\" anywhere,\n // > the same as pattern \"foo\".\n // > \"**/foo/bar\" matches file or directory \"bar\" anywhere that is directly\n // > under directory \"foo\".\n // Notice that the '*'s have been replaced as '\\\\*'\n /^\\^*\\\\\\*\\\\\\*\\\\\\//,\n\n // '**/foo' <-> 'foo'\n () => '^(?:.*\\\\/)?'\n ],\n\n // starting\n [\n // there will be no leading '/'\n // (which has been replaced by section \"leading slash\")\n // If starts with '**', adding a '^' to the regular expression also works\n /^(?=[^^])/,\n function startingReplacer () {\n // If has a slash `/` at the beginning or middle\n return !/\\/(?!$)/.test(this)\n // > Prior to 2.22.1\n // > If the pattern does not contain a slash /,\n // > Git treats it as a shell glob pattern\n // Actually, if there is only a trailing slash,\n // git also treats it as a shell glob pattern\n\n // After 2.22.1 (compatible but clearer)\n // > If there is a separator at the beginning or middle (or both)\n // > of the pattern, then the pattern is relative to the directory\n // > level of the particular .gitignore file itself.\n // > Otherwise the pattern may also match at any level below\n // > the .gitignore level.\n ? '(?:^|\\\\/)'\n\n // > Otherwise, Git treats the pattern as a shell glob suitable for\n // > consumption by fnmatch(3)\n : '^'\n }\n ],\n\n // two globstars\n [\n // Use lookahead assertions so that we could match more than one `'/**'`\n /\\\\\\/\\\\\\*\\\\\\*(?=\\\\\\/|$)/g,\n\n // Zero, one or several directories\n // should not use '*', or it will be replaced by the next replacer\n\n // Check if it is not the last `'/**'`\n (_, index, str) => index + 6 < str.length\n\n // case: /**/\n // > A slash followed by two consecutive asterisks then a slash matches\n // > zero or more directories.\n // > For example, \"a/**/b\" matches \"a/b\", \"a/x/b\", \"a/x/y/b\" and so on.\n // '/**/'\n ? '(?:\\\\/[^\\\\/]+)*'\n\n // case: /**\n // > A trailing `\"/**\"` matches everything inside.\n\n // #21: everything inside but it should not include the current folder\n : '\\\\/.+'\n ],\n\n // normal intermediate wildcards\n [\n // Never replace escaped '*'\n // ignore rule '\\*' will match the path '*'\n\n // 'abc.*/' -> go\n // 'abc.*' -> skip this rule,\n // coz trailing single wildcard will be handed by [trailing wildcard]\n /(^|[^\\\\]+)(\\\\\\*)+(?=.+)/g,\n\n // '*.js' matches '.js'\n // '*.js' doesn't match 'abc'\n (_, p1, p2) => {\n // 1.\n // > An asterisk \"*\" matches anything except a slash.\n // 2.\n // > Other consecutive asterisks are considered regular asterisks\n // > and will match according to the previous rules.\n const unescaped = p2.replace(/\\\\\\*/g, '[^\\\\/]*')\n return p1 + unescaped\n }\n ],\n\n [\n // unescape, revert step 3 except for back slash\n // For example, if a user escape a '\\\\*',\n // after step 3, the result will be '\\\\\\\\\\\\*'\n /\\\\\\\\\\\\(?=[$.|*+(){^])/g,\n () => ESCAPE\n ],\n\n [\n // '\\\\\\\\' -> '\\\\'\n /\\\\\\\\/g,\n () => ESCAPE\n ],\n\n [\n // > The range notation, e.g. [a-zA-Z],\n // > can be used to match one of the characters in a range.\n\n // `\\` is escaped by step 3\n /(\\\\)?\\[([^\\]/]*?)(\\\\*)($|\\])/g,\n (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE\n // '\\\\[bar]' -> '\\\\\\\\[bar\\\\]'\n ? `\\\\[${range}${cleanRangeBackSlash(endEscape)}${close}`\n : close === ']'\n ? endEscape.length % 2 === 0\n // A normal case, and it is a range notation\n // '[bar]'\n // '[bar\\\\\\\\]'\n ? `[${sanitizeRange(range)}${endEscape}]`\n // Invalid range notaton\n // '[bar\\\\]' -> '[bar\\\\\\\\]'\n : '[]'\n : '[]'\n ],\n\n // ending\n [\n // 'js' will not match 'js.'\n // 'ab' will not match 'abc'\n /(?:[^*])$/,\n\n // WTF!\n // https://git-scm.com/docs/gitignore\n // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)\n // which re-fixes #24, #38\n\n // > If there is a separator at the end of the pattern then the pattern\n // > will only match directories, otherwise the pattern can match both\n // > files and directories.\n\n // 'js*' will not match 'a.js'\n // 'js/' will not match 'a.js'\n // 'js' will match 'a.js' and 'a.js/'\n match => /\\/$/.test(match)\n // foo/ will not match 'foo'\n ? `${match}$`\n // foo matches 'foo' and 'foo/'\n : `${match}(?=$|\\\\/$)`\n ],\n\n // trailing wildcard\n [\n /(\\^|\\\\\\/)?\\\\\\*$/,\n (_, p1) => {\n const prefix = p1\n // '\\^':\n // '/*' does not match EMPTY\n // '/*' does not match everything\n\n // '\\\\\\/':\n // 'abc/*' does not match 'abc/'\n ? `${p1}[^/]+`\n\n // 'a*' matches 'a'\n // 'a*' matches 'aa'\n : '[^/]*'\n\n return `${prefix}(?=$|\\\\/$)`\n }\n ],\n]\n\n// A simple cache, because an ignore rule only has only one certain meaning\nconst regexCache = Object.create(null)\n\n// @param {pattern}\nconst makeRegex = (pattern, ignoreCase) => {\n let source = regexCache[pattern]\n\n if (!source) {\n source = REPLACERS.reduce(\n (prev, current) => prev.replace(current[0], current[1].bind(pattern)),\n pattern\n )\n regexCache[pattern] = source\n }\n\n return ignoreCase\n ? new RegExp(source, 'i')\n : new RegExp(source)\n}\n\nconst isString = subject => typeof subject === 'string'\n\n// > A blank line matches no files, so it can serve as a separator for readability.\nconst checkPattern = pattern => pattern\n && isString(pattern)\n && !REGEX_TEST_BLANK_LINE.test(pattern)\n && !REGEX_INVALID_TRAILING_BACKSLASH.test(pattern)\n\n // > A line starting with # serves as a comment.\n && pattern.indexOf('#') !== 0\n\nconst splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF)\n\nclass IgnoreRule {\n constructor (\n origin,\n pattern,\n negative,\n regex\n ) {\n this.origin = origin\n this.pattern = pattern\n this.negative = negative\n this.regex = regex\n }\n}\n\nconst createRule = (pattern, ignoreCase) => {\n const origin = pattern\n let negative = false\n\n // > An optional prefix \"!\" which negates the pattern;\n if (pattern.indexOf('!') === 0) {\n negative = true\n pattern = pattern.substr(1)\n }\n\n pattern = pattern\n // > Put a backslash (\"\\\") in front of the first \"!\" for patterns that\n // > begin with a literal \"!\", for example, `\"\\!important!.txt\"`.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!')\n // > Put a backslash (\"\\\") in front of the first hash for patterns that\n // > begin with a hash.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#')\n\n const regex = makeRegex(pattern, ignoreCase)\n\n return new IgnoreRule(\n origin,\n pattern,\n negative,\n regex\n )\n}\n\nconst throwError = (message, Ctor) => {\n throw new Ctor(message)\n}\n\nconst checkPath = (path, originalPath, doThrow) => {\n if (!isString(path)) {\n return doThrow(\n `path must be a string, but got \\`${originalPath}\\``,\n TypeError\n )\n }\n\n // We don't know if we should ignore EMPTY, so throw\n if (!path) {\n return doThrow(`path must not be empty`, TypeError)\n }\n\n // Check if it is a relative path\n if (checkPath.isNotRelative(path)) {\n const r = '`path.relative()`d'\n return doThrow(\n `path should be a ${r} string, but got \"${originalPath}\"`,\n RangeError\n )\n }\n\n return true\n}\n\nconst isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path)\n\ncheckPath.isNotRelative = isNotRelative\ncheckPath.convert = p => p\n\nclass Ignore {\n constructor ({\n ignorecase = true,\n ignoreCase = ignorecase,\n allowRelativePaths = false\n } = {}) {\n define(this, KEY_IGNORE, true)\n\n this._rules = []\n this._ignoreCase = ignoreCase\n this._allowRelativePaths = allowRelativePaths\n this._initCache()\n }\n\n _initCache () {\n this._ignoreCache = Object.create(null)\n this._testCache = Object.create(null)\n }\n\n _addPattern (pattern) {\n // #32\n if (pattern && pattern[KEY_IGNORE]) {\n this._rules = this._rules.concat(pattern._rules)\n this._added = true\n return\n }\n\n if (checkPattern(pattern)) {\n const rule = createRule(pattern, this._ignoreCase)\n this._added = true\n this._rules.push(rule)\n }\n }\n\n // @param {Array<string> | string | Ignore} pattern\n add (pattern) {\n this._added = false\n\n makeArray(\n isString(pattern)\n ? splitPattern(pattern)\n : pattern\n ).forEach(this._addPattern, this)\n\n // Some rules have just added to the ignore,\n // making the behavior changed.\n if (this._added) {\n this._initCache()\n }\n\n return this\n }\n\n // legacy\n addPattern (pattern) {\n return this.add(pattern)\n }\n\n // | ignored : unignored\n // negative | 0:0 | 0:1 | 1:0 | 1:1\n // -------- | ------- | ------- | ------- | --------\n // 0 | TEST | TEST | SKIP | X\n // 1 | TESTIF | SKIP | TEST | X\n\n // - SKIP: always skip\n // - TEST: always test\n // - TESTIF: only test if checkUnignored\n // - X: that never happen\n\n // @param {boolean} whether should check if the path is unignored,\n // setting `checkUnignored` to `false` could reduce additional\n // path matching.\n\n // @returns {TestResult} true if a file is ignored\n _testOne (path, checkUnignored) {\n let ignored = false\n let unignored = false\n\n this._rules.forEach(rule => {\n const {negative} = rule\n if (\n unignored === negative && ignored !== unignored\n || negative && !ignored && !unignored && !checkUnignored\n ) {\n return\n }\n\n const matched = rule.regex.test(path)\n\n if (matched) {\n ignored = !negative\n unignored = negative\n }\n })\n\n return {\n ignored,\n unignored\n }\n }\n\n // @returns {TestResult}\n _test (originalPath, cache, checkUnignored, slices) {\n const path = originalPath\n // Supports nullable path\n && checkPath.convert(originalPath)\n\n checkPath(\n path,\n originalPath,\n this._allowRelativePaths\n ? RETURN_FALSE\n : throwError\n )\n\n return this._t(path, cache, checkUnignored, slices)\n }\n\n _t (path, cache, checkUnignored, slices) {\n if (path in cache) {\n return cache[path]\n }\n\n if (!slices) {\n // path/to/a.js\n // ['path', 'to', 'a.js']\n slices = path.split(SLASH)\n }\n\n slices.pop()\n\n // If the path has no parent directory, just test it\n if (!slices.length) {\n return cache[path] = this._testOne(path, checkUnignored)\n }\n\n const parent = this._t(\n slices.join(SLASH) + SLASH,\n cache,\n checkUnignored,\n slices\n )\n\n // If the path contains a parent directory, check the parent first\n return cache[path] = parent.ignored\n // > It is not possible to re-include a file if a parent directory of\n // > that file is excluded.\n ? parent\n : this._testOne(path, checkUnignored)\n }\n\n ignores (path) {\n return this._test(path, this._ignoreCache, false).ignored\n }\n\n createFilter () {\n return path => !this.ignores(path)\n }\n\n filter (paths) {\n return makeArray(paths).filter(this.createFilter())\n }\n\n // @returns {TestResult}\n test (path) {\n return this._test(path, this._testCache, true)\n }\n}\n\nconst factory = options => new Ignore(options)\n\nconst isPathValid = path =>\n checkPath(path && checkPath.convert(path), path, RETURN_FALSE)\n\nfactory.isPathValid = isPathValid\n\n// Fixes typescript\nfactory.default = factory\n\nmodule.exports = factory\n\n// Windows\n// --------------------------------------------------------------\n/* istanbul ignore if */\nif (\n // Detect `process` so that it can run in browsers.\n typeof process !== 'undefined'\n && (\n process.env && process.env.IGNORE_TEST_WIN32\n || process.platform === 'win32'\n )\n) {\n /* eslint no-control-regex: \"off\" */\n const makePosix = str => /^\\\\\\\\\\?\\\\/.test(str)\n || /[\"<>|\\u0000-\\u001F]+/u.test(str)\n ? str\n : str.replace(/\\\\/g, '/')\n\n checkPath.convert = makePosix\n\n // 'C:\\\\foo' <- 'C:\\\\foo' has been converted to 'C:/'\n // 'd:\\\\foo'\n const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\\//i\n checkPath.isNotRelative = path =>\n REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path)\n || isNotRelative(path)\n}\n","'use strict';\n\nconst fs = require('fs');\nconst { Readable } = require('stream');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst picomatch = require('picomatch');\n\nconst readdir = promisify(fs.readdir);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\n/**\n * @typedef {Object} EntryInfo\n * @property {String} path\n * @property {String} fullPath\n * @property {fs.Stats=} stats\n * @property {fs.Dirent=} dirent\n * @property {String} basename\n */\n\nconst BANG = '!';\nconst RECURSIVE_ERROR_CODE = 'READDIRP_RECURSIVE_ERROR';\nconst NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP', RECURSIVE_ERROR_CODE]);\nconst FILE_TYPE = 'files';\nconst DIR_TYPE = 'directories';\nconst FILE_DIR_TYPE = 'files_directories';\nconst EVERYTHING_TYPE = 'all';\nconst ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE];\n\nconst isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code);\nconst [maj, min] = process.versions.node.split('.').slice(0, 2).map(n => Number.parseInt(n, 10));\nconst wantBigintFsStats = process.platform === 'win32' && (maj > 10 || (maj === 10 && min >= 5));\n\nconst normalizeFilter = filter => {\n if (filter === undefined) return;\n if (typeof filter === 'function') return filter;\n\n if (typeof filter === 'string') {\n const glob = picomatch(filter.trim());\n return entry => glob(entry.basename);\n }\n\n if (Array.isArray(filter)) {\n const positive = [];\n const negative = [];\n for (const item of filter) {\n const trimmed = item.trim();\n if (trimmed.charAt(0) === BANG) {\n negative.push(picomatch(trimmed.slice(1)));\n } else {\n positive.push(picomatch(trimmed));\n }\n }\n\n if (negative.length > 0) {\n if (positive.length > 0) {\n return entry =>\n positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename));\n }\n return entry => !negative.some(f => f(entry.basename));\n }\n return entry => positive.some(f => f(entry.basename));\n }\n};\n\nclass ReaddirpStream extends Readable {\n static get defaultOptions() {\n return {\n root: '.',\n /* eslint-disable no-unused-vars */\n fileFilter: (path) => true,\n directoryFilter: (path) => true,\n /* eslint-enable no-unused-vars */\n type: FILE_TYPE,\n lstat: false,\n depth: 2147483648,\n alwaysStat: false\n };\n }\n\n constructor(options = {}) {\n super({\n objectMode: true,\n autoDestroy: true,\n highWaterMark: options.highWaterMark || 4096\n });\n const opts = { ...ReaddirpStream.defaultOptions, ...options };\n const { root, type } = opts;\n\n this._fileFilter = normalizeFilter(opts.fileFilter);\n this._directoryFilter = normalizeFilter(opts.directoryFilter);\n\n const statMethod = opts.lstat ? lstat : stat;\n // Use bigint stats if it's windows and stat() supports options (node 10+).\n if (wantBigintFsStats) {\n this._stat = path => statMethod(path, { bigint: true });\n } else {\n this._stat = statMethod;\n }\n\n this._maxDepth = opts.depth;\n this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n this._wantsEverything = type === EVERYTHING_TYPE;\n this._root = sysPath.resolve(root);\n this._isDirent = ('Dirent' in fs) && !opts.alwaysStat;\n this._statsProp = this._isDirent ? 'dirent' : 'stats';\n this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent };\n\n // Launch stream with one parent, the root dir.\n this.parents = [this._exploreDir(root, 1)];\n this.reading = false;\n this.parent = undefined;\n }\n\n async _read(batch) {\n if (this.reading) return;\n this.reading = true;\n\n try {\n while (!this.destroyed && batch > 0) {\n const { path, depth, files = [] } = this.parent || {};\n\n if (files.length > 0) {\n const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path));\n for (const entry of await Promise.all(slice)) {\n if (this.destroyed) return;\n\n const entryType = await this._getEntryType(entry);\n if (entryType === 'directory' && this._directoryFilter(entry)) {\n if (depth <= this._maxDepth) {\n this.parents.push(this._exploreDir(entry.fullPath, depth + 1));\n }\n\n if (this._wantsDir) {\n this.push(entry);\n batch--;\n }\n } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) {\n if (this._wantsFile) {\n this.push(entry);\n batch--;\n }\n }\n }\n } else {\n const parent = this.parents.pop();\n if (!parent) {\n this.push(null);\n break;\n }\n this.parent = await parent;\n if (this.destroyed) return;\n }\n }\n } catch (error) {\n this.destroy(error);\n } finally {\n this.reading = false;\n }\n }\n\n async _exploreDir(path, depth) {\n let files;\n try {\n files = await readdir(path, this._rdOptions);\n } catch (error) {\n this._onError(error);\n }\n return { files, depth, path };\n }\n\n async _formatEntry(dirent, path) {\n let entry;\n try {\n const basename = this._isDirent ? dirent.name : dirent;\n const fullPath = sysPath.resolve(sysPath.join(path, basename));\n entry = { path: sysPath.relative(this._root, fullPath), fullPath, basename };\n entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);\n } catch (err) {\n this._onError(err);\n }\n return entry;\n }\n\n _onError(err) {\n if (isNormalFlowError(err) && !this.destroyed) {\n this.emit('warn', err);\n } else {\n this.destroy(err);\n }\n }\n\n async _getEntryType(entry) {\n // entry may be undefined, because a warning or an error were emitted\n // and the statsProp is undefined\n const stats = entry && entry[this._statsProp];\n if (!stats) {\n return;\n }\n if (stats.isFile()) {\n return 'file';\n }\n if (stats.isDirectory()) {\n return 'directory';\n }\n if (stats && stats.isSymbolicLink()) {\n const full = entry.fullPath;\n try {\n const entryRealPath = await realpath(full);\n const entryRealPathStats = await lstat(entryRealPath);\n if (entryRealPathStats.isFile()) {\n return 'file';\n }\n if (entryRealPathStats.isDirectory()) {\n const len = entryRealPath.length;\n if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath.sep) {\n const recursiveError = new Error(\n `Circular symlink detected: \"${full}\" points to \"${entryRealPath}\"`\n );\n recursiveError.code = RECURSIVE_ERROR_CODE;\n return this._onError(recursiveError);\n }\n return 'directory';\n }\n } catch (error) {\n this._onError(error);\n }\n }\n }\n\n _includeAsFile(entry) {\n const stats = entry && entry[this._statsProp];\n\n return stats && this._wantsEverything && !stats.isDirectory();\n }\n}\n\n/**\n * @typedef {Object} ReaddirpArguments\n * @property {Function=} fileFilter\n * @property {Function=} directoryFilter\n * @property {String=} type\n * @property {Number=} depth\n * @property {String=} root\n * @property {Boolean=} lstat\n * @property {Boolean=} bigint\n */\n\n/**\n * Main function which ends up calling readdirRec and reads all files and directories in given root recursively.\n * @param {String} root Root directory\n * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth\n */\nconst readdirp = (root, options = {}) => {\n let type = options.entryType || options.type;\n if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility\n if (type) options.type = type;\n if (!root) {\n throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)');\n } else if (typeof root !== 'string') {\n throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)');\n } else if (type && !ALL_TYPES.includes(type)) {\n throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`);\n }\n\n options.root = root;\n return new ReaddirpStream(options);\n};\n\nconst readdirpPromise = (root, options = {}) => {\n return new Promise((resolve, reject) => {\n const files = [];\n readdirp(root, options)\n .on('data', entry => files.push(entry))\n .on('end', () => resolve(files))\n .on('error', error => reject(error));\n });\n};\n\nreaddirp.promise = readdirpPromise;\nreaddirp.ReaddirpStream = ReaddirpStream;\nreaddirp.default = readdirp;\n\nmodule.exports = readdirp;\n","/*!\n * normalize-path <https://github.com/jonschlinkert/normalize-path>\n *\n * Copyright (c) 2014-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nmodule.exports = function(path, stripTrailing) {\n if (typeof path !== 'string') {\n throw new TypeError('expected path to be a string');\n }\n\n if (path === '\\\\' || path === '/') return '/';\n\n var len = path.length;\n if (len <= 1) return path;\n\n // ensure that win32 namespaces has two leading slashes, so that the path is\n // handled properly by the win32 version of path.parse() after being normalized\n // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces\n var prefix = '';\n if (len > 4 && path[3] === '\\\\') {\n var ch = path[2];\n if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\\\\\') {\n path = path.slice(2);\n prefix = '//';\n }\n }\n\n var segs = path.split(/[/\\\\]+/);\n if (stripTrailing !== false && segs[segs.length - 1] === '') {\n segs.pop();\n }\n return prefix + segs.join('/');\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nconst picomatch = require('picomatch');\nconst normalizePath = require('normalize-path');\n\n/**\n * @typedef {(testString: string) => boolean} AnymatchFn\n * @typedef {string|RegExp|AnymatchFn} AnymatchPattern\n * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher\n */\nconst BANG = '!';\nconst DEFAULT_OPTIONS = {returnIndex: false};\nconst arrify = (item) => Array.isArray(item) ? item : [item];\n\n/**\n * @param {AnymatchPattern} matcher\n * @param {object} options\n * @returns {AnymatchFn}\n */\nconst createPattern = (matcher, options) => {\n if (typeof matcher === 'function') {\n return matcher;\n }\n if (typeof matcher === 'string') {\n const glob = picomatch(matcher, options);\n return (string) => matcher === string || glob(string);\n }\n if (matcher instanceof RegExp) {\n return (string) => matcher.test(string);\n }\n return (string) => false;\n};\n\n/**\n * @param {Array<Function>} patterns\n * @param {Array<Function>} negPatterns\n * @param {String|Array} args\n * @param {Boolean} returnIndex\n * @returns {boolean|number}\n */\nconst matchPatterns = (patterns, negPatterns, args, returnIndex) => {\n const isList = Array.isArray(args);\n const _path = isList ? args[0] : args;\n if (!isList && typeof _path !== 'string') {\n throw new TypeError('anymatch: second argument must be a string: got ' +\n Object.prototype.toString.call(_path))\n }\n const path = normalizePath(_path);\n\n for (let index = 0; index < negPatterns.length; index++) {\n const nglob = negPatterns[index];\n if (nglob(path)) {\n return returnIndex ? -1 : false;\n }\n }\n\n const applied = isList && [path].concat(args.slice(1));\n for (let index = 0; index < patterns.length; index++) {\n const pattern = patterns[index];\n if (isList ? pattern(...applied) : pattern(path)) {\n return returnIndex ? index : true;\n }\n }\n\n return returnIndex ? -1 : false;\n};\n\n/**\n * @param {AnymatchMatcher} matchers\n * @param {Array|string} testString\n * @param {object} options\n * @returns {boolean|number|Function}\n */\nconst anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => {\n if (matchers == null) {\n throw new TypeError('anymatch: specify first argument');\n }\n const opts = typeof options === 'boolean' ? {returnIndex: options} : options;\n const returnIndex = opts.returnIndex || false;\n\n // Early cache for matchers.\n const mtchers = arrify(matchers);\n const negatedGlobs = mtchers\n .filter(item => typeof item === 'string' && item.charAt(0) === BANG)\n .map(item => item.slice(1))\n .map(item => picomatch(item, opts));\n const patterns = mtchers\n .filter(item => typeof item !== 'string' || (typeof item === 'string' && item.charAt(0) !== BANG))\n .map(matcher => createPattern(matcher, opts));\n\n if (testString == null) {\n return (testString, ri = false) => {\n const returnIndex = typeof ri === 'boolean' ? ri : false;\n return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n }\n }\n\n return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n};\n\nanymatch.default = anymatch;\nmodule.exports = anymatch;\n","[\n\t\"3dm\",\n\t\"3ds\",\n\t\"3g2\",\n\t\"3gp\",\n\t\"7z\",\n\t\"a\",\n\t\"aac\",\n\t\"adp\",\n\t\"ai\",\n\t\"aif\",\n\t\"aiff\",\n\t\"alz\",\n\t\"ape\",\n\t\"apk\",\n\t\"appimage\",\n\t\"ar\",\n\t\"arj\",\n\t\"asf\",\n\t\"au\",\n\t\"avi\",\n\t\"bak\",\n\t\"baml\",\n\t\"bh\",\n\t\"bin\",\n\t\"bk\",\n\t\"bmp\",\n\t\"btif\",\n\t\"bz2\",\n\t\"bzip2\",\n\t\"cab\",\n\t\"caf\",\n\t\"cgm\",\n\t\"class\",\n\t\"cmx\",\n\t\"cpio\",\n\t\"cr2\",\n\t\"cur\",\n\t\"dat\",\n\t\"dcm\",\n\t\"deb\",\n\t\"dex\",\n\t\"djvu\",\n\t\"dll\",\n\t\"dmg\",\n\t\"dng\",\n\t\"doc\",\n\t\"docm\",\n\t\"docx\",\n\t\"dot\",\n\t\"dotm\",\n\t\"dra\",\n\t\"DS_Store\",\n\t\"dsk\",\n\t\"dts\",\n\t\"dtshd\",\n\t\"dvb\",\n\t\"dwg\",\n\t\"dxf\",\n\t\"ecelp4800\",\n\t\"ecelp7470\",\n\t\"ecelp9600\",\n\t\"egg\",\n\t\"eol\",\n\t\"eot\",\n\t\"epub\",\n\t\"exe\",\n\t\"f4v\",\n\t\"fbs\",\n\t\"fh\",\n\t\"fla\",\n\t\"flac\",\n\t\"flatpak\",\n\t\"fli\",\n\t\"flv\",\n\t\"fpx\",\n\t\"fst\",\n\t\"fvt\",\n\t\"g3\",\n\t\"gh\",\n\t\"gif\",\n\t\"graffle\",\n\t\"gz\",\n\t\"gzip\",\n\t\"h261\",\n\t\"h263\",\n\t\"h264\",\n\t\"icns\",\n\t\"ico\",\n\t\"ief\",\n\t\"img\",\n\t\"ipa\",\n\t\"iso\",\n\t\"jar\",\n\t\"jpeg\",\n\t\"jpg\",\n\t\"jpgv\",\n\t\"jpm\",\n\t\"jxr\",\n\t\"key\",\n\t\"ktx\",\n\t\"lha\",\n\t\"lib\",\n\t\"lvp\",\n\t\"lz\",\n\t\"lzh\",\n\t\"lzma\",\n\t\"lzo\",\n\t\"m3u\",\n\t\"m4a\",\n\t\"m4v\",\n\t\"mar\",\n\t\"mdi\",\n\t\"mht\",\n\t\"mid\",\n\t\"midi\",\n\t\"mj2\",\n\t\"mka\",\n\t\"mkv\",\n\t\"mmr\",\n\t\"mng\",\n\t\"mobi\",\n\t\"mov\",\n\t\"movie\",\n\t\"mp3\",\n\t\"mp4\",\n\t\"mp4a\",\n\t\"mpeg\",\n\t\"mpg\",\n\t\"mpga\",\n\t\"mxu\",\n\t\"nef\",\n\t\"npx\",\n\t\"numbers\",\n\t\"nupkg\",\n\t\"o\",\n\t\"odp\",\n\t\"ods\",\n\t\"odt\",\n\t\"oga\",\n\t\"ogg\",\n\t\"ogv\",\n\t\"otf\",\n\t\"ott\",\n\t\"pages\",\n\t\"pbm\",\n\t\"pcx\",\n\t\"pdb\",\n\t\"pdf\",\n\t\"pea\",\n\t\"pgm\",\n\t\"pic\",\n\t\"png\",\n\t\"pnm\",\n\t\"pot\",\n\t\"potm\",\n\t\"potx\",\n\t\"ppa\",\n\t\"ppam\",\n\t\"ppm\",\n\t\"pps\",\n\t\"ppsm\",\n\t\"ppsx\",\n\t\"ppt\",\n\t\"pptm\",\n\t\"pptx\",\n\t\"psd\",\n\t\"pya\",\n\t\"pyc\",\n\t\"pyo\",\n\t\"pyv\",\n\t\"qt\",\n\t\"rar\",\n\t\"ras\",\n\t\"raw\",\n\t\"resources\",\n\t\"rgb\",\n\t\"rip\",\n\t\"rlc\",\n\t\"rmf\",\n\t\"rmvb\",\n\t\"rpm\",\n\t\"rtf\",\n\t\"rz\",\n\t\"s3m\",\n\t\"s7z\",\n\t\"scpt\",\n\t\"sgi\",\n\t\"shar\",\n\t\"snap\",\n\t\"sil\",\n\t\"sketch\",\n\t\"slk\",\n\t\"smv\",\n\t\"snk\",\n\t\"so\",\n\t\"stl\",\n\t\"suo\",\n\t\"sub\",\n\t\"swf\",\n\t\"tar\",\n\t\"tbz\",\n\t\"tbz2\",\n\t\"tga\",\n\t\"tgz\",\n\t\"thmx\",\n\t\"tif\",\n\t\"tiff\",\n\t\"tlz\",\n\t\"ttc\",\n\t\"ttf\",\n\t\"txz\",\n\t\"udf\",\n\t\"uvh\",\n\t\"uvi\",\n\t\"uvm\",\n\t\"uvp\",\n\t\"uvs\",\n\t\"uvu\",\n\t\"viv\",\n\t\"vob\",\n\t\"war\",\n\t\"wav\",\n\t\"wax\",\n\t\"wbmp\",\n\t\"wdp\",\n\t\"weba\",\n\t\"webm\",\n\t\"webp\",\n\t\"whl\",\n\t\"wim\",\n\t\"wm\",\n\t\"wma\",\n\t\"wmv\",\n\t\"wmx\",\n\t\"woff\",\n\t\"woff2\",\n\t\"wrm\",\n\t\"wvx\",\n\t\"xbm\",\n\t\"xif\",\n\t\"xla\",\n\t\"xlam\",\n\t\"xls\",\n\t\"xlsb\",\n\t\"xlsm\",\n\t\"xlsx\",\n\t\"xlt\",\n\t\"xltm\",\n\t\"xltx\",\n\t\"xm\",\n\t\"xmind\",\n\t\"xpi\",\n\t\"xpm\",\n\t\"xwd\",\n\t\"xz\",\n\t\"z\",\n\t\"zip\",\n\t\"zipx\"\n]\n","module.exports = require('./binary-extensions.json');\n","'use strict';\nconst path = require('path');\nconst binaryExtensions = require('binary-extensions');\n\nconst extensions = new Set(binaryExtensions);\n\nmodule.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase());\n","'use strict';\n\nconst {sep} = require('path');\nconst {platform} = process;\nconst os = require('os');\n\nexports.EV_ALL = 'all';\nexports.EV_READY = 'ready';\nexports.EV_ADD = 'add';\nexports.EV_CHANGE = 'change';\nexports.EV_ADD_DIR = 'addDir';\nexports.EV_UNLINK = 'unlink';\nexports.EV_UNLINK_DIR = 'unlinkDir';\nexports.EV_RAW = 'raw';\nexports.EV_ERROR = 'error';\n\nexports.STR_DATA = 'data';\nexports.STR_END = 'end';\nexports.STR_CLOSE = 'close';\n\nexports.FSEVENT_CREATED = 'created';\nexports.FSEVENT_MODIFIED = 'modified';\nexports.FSEVENT_DELETED = 'deleted';\nexports.FSEVENT_MOVED = 'moved';\nexports.FSEVENT_CLONED = 'cloned';\nexports.FSEVENT_UNKNOWN = 'unknown';\nexports.FSEVENT_FLAG_MUST_SCAN_SUBDIRS = 1;\nexports.FSEVENT_TYPE_FILE = 'file';\nexports.FSEVENT_TYPE_DIRECTORY = 'directory';\nexports.FSEVENT_TYPE_SYMLINK = 'symlink';\n\nexports.KEY_LISTENERS = 'listeners';\nexports.KEY_ERR = 'errHandlers';\nexports.KEY_RAW = 'rawEmitters';\nexports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW];\n\nexports.DOT_SLASH = `.${sep}`;\n\nexports.BACK_SLASH_RE = /\\\\/g;\nexports.DOUBLE_SLASH_RE = /\\/\\//;\nexports.SLASH_OR_BACK_SLASH_RE = /[/\\\\]/;\nexports.DOT_RE = /\\..*\\.(sw[px])$|~$|\\.subl.*\\.tmp/;\nexports.REPLACER_RE = /^\\.[/\\\\]/;\n\nexports.SLASH = '/';\nexports.SLASH_SLASH = '//';\nexports.BRACE_START = '{';\nexports.BANG = '!';\nexports.ONE_DOT = '.';\nexports.TWO_DOTS = '..';\nexports.STAR = '*';\nexports.GLOBSTAR = '**';\nexports.ROOT_GLOBSTAR = '/**/*';\nexports.SLASH_GLOBSTAR = '/**';\nexports.DIR_SUFFIX = 'Dir';\nexports.ANYMATCH_OPTS = {dot: true};\nexports.STRING_TYPE = 'string';\nexports.FUNCTION_TYPE = 'function';\nexports.EMPTY_STR = '';\nexports.EMPTY_FN = () => {};\nexports.IDENTITY_FN = val => val;\n\nexports.isWindows = platform === 'win32';\nexports.isMacos = platform === 'darwin';\nexports.isLinux = platform === 'linux';\nexports.isIBMi = os.type() === 'OS400';\n","'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst isBinaryPath = require('is-binary-path');\nconst {\n isWindows,\n isLinux,\n EMPTY_FN,\n EMPTY_STR,\n KEY_LISTENERS,\n KEY_ERR,\n KEY_RAW,\n HANDLER_KEYS,\n EV_CHANGE,\n EV_ADD,\n EV_ADD_DIR,\n EV_ERROR,\n STR_DATA,\n STR_END,\n BRACE_START,\n STAR\n} = require('./constants');\n\nconst THROTTLE_MODE_WATCH = 'watch';\n\nconst open = promisify(fs.open);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst close = promisify(fs.close);\nconst fsrealpath = promisify(fs.realpath);\n\nconst statMethods = { lstat, stat };\n\n// TODO: emit errors properly. Example: EMFILE on Macos.\nconst foreach = (val, fn) => {\n if (val instanceof Set) {\n val.forEach(fn);\n } else {\n fn(val);\n }\n};\n\nconst addAndConvert = (main, prop, item) => {\n let container = main[prop];\n if (!(container instanceof Set)) {\n main[prop] = container = new Set([container]);\n }\n container.add(item);\n};\n\nconst clearItem = cont => key => {\n const set = cont[key];\n if (set instanceof Set) {\n set.clear();\n } else {\n delete cont[key];\n }\n};\n\nconst delFromSet = (main, prop, item) => {\n const container = main[prop];\n if (container instanceof Set) {\n container.delete(item);\n } else if (container === item) {\n delete main[prop];\n }\n};\n\nconst isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val;\n\n/**\n * @typedef {String} Path\n */\n\n// fs_watch helpers\n\n// object to hold per-process fs_watch instances\n// (may be shared across chokidar FSWatcher instances)\n\n/**\n * @typedef {Object} FsWatchContainer\n * @property {Set} listeners\n * @property {Set} errHandlers\n * @property {Set} rawEmitters\n * @property {fs.FSWatcher=} watcher\n * @property {Boolean=} watcherUnusable\n */\n\n/**\n * @type {Map<String,FsWatchContainer>}\n */\nconst FsWatchInstances = new Map();\n\n/**\n * Instantiates the fs_watch interface\n * @param {String} path to be watched\n * @param {Object} options to be passed to fs_watch\n * @param {Function} listener main event handler\n * @param {Function} errHandler emits info about errors\n * @param {Function} emitRaw emits raw event data\n * @returns {fs.FSWatcher} new fsevents instance\n */\nfunction createFsWatchInstance(path, options, listener, errHandler, emitRaw) {\n const handleEvent = (rawEvent, evPath) => {\n listener(path);\n emitRaw(rawEvent, evPath, {watchedPath: path});\n\n // emit based on events occurring for files from a directory's watcher in\n // case the file's watcher misses it (and rely on throttling to de-dupe)\n if (evPath && path !== evPath) {\n fsWatchBroadcast(\n sysPath.resolve(path, evPath), KEY_LISTENERS, sysPath.join(path, evPath)\n );\n }\n };\n try {\n return fs.watch(path, options, handleEvent);\n } catch (error) {\n errHandler(error);\n }\n}\n\n/**\n * Helper for passing fs_watch event data to a collection of listeners\n * @param {Path} fullPath absolute path bound to fs_watch instance\n * @param {String} type listener type\n * @param {*=} val1 arguments to be passed to listeners\n * @param {*=} val2\n * @param {*=} val3\n */\nconst fsWatchBroadcast = (fullPath, type, val1, val2, val3) => {\n const cont = FsWatchInstances.get(fullPath);\n if (!cont) return;\n foreach(cont[type], (listener) => {\n listener(val1, val2, val3);\n });\n};\n\n/**\n * Instantiates the fs_watch interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path\n * @param {String} fullPath absolute path\n * @param {Object} options to be passed to fs_watch\n * @param {Object} handlers container for event listener functions\n */\nconst setFsWatchListener = (path, fullPath, options, handlers) => {\n const {listener, errHandler, rawEmitter} = handlers;\n let cont = FsWatchInstances.get(fullPath);\n\n /** @type {fs.FSWatcher=} */\n let watcher;\n if (!options.persistent) {\n watcher = createFsWatchInstance(\n path, options, listener, errHandler, rawEmitter\n );\n return watcher.close.bind(watcher);\n }\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_ERR, errHandler);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n } else {\n watcher = createFsWatchInstance(\n path,\n options,\n fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS),\n errHandler, // no need to use broadcast here\n fsWatchBroadcast.bind(null, fullPath, KEY_RAW)\n );\n if (!watcher) return;\n watcher.on(EV_ERROR, async (error) => {\n const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR);\n cont.watcherUnusable = true; // documented since Node 10.4.1\n // Workaround for https://github.com/joyent/node/issues/4337\n if (isWindows && error.code === 'EPERM') {\n try {\n const fd = await open(path, 'r');\n await close(fd);\n broadcastErr(error);\n } catch (err) {}\n } else {\n broadcastErr(error);\n }\n });\n cont = {\n listeners: listener,\n errHandlers: errHandler,\n rawEmitters: rawEmitter,\n watcher\n };\n FsWatchInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n\n // removes this instance's listeners and closes the underlying fs_watch\n // instance if there are no more listeners left\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_ERR, errHandler);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n // Check to protect against issue gh-730.\n // if (cont.watcherUnusable) {\n cont.watcher.close();\n // }\n FsWatchInstances.delete(fullPath);\n HANDLER_KEYS.forEach(clearItem(cont));\n cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n\n// fs_watchFile helpers\n\n// object to hold per-process fs_watchFile instances\n// (may be shared across chokidar FSWatcher instances)\nconst FsWatchFileInstances = new Map();\n\n/**\n * Instantiates the fs_watchFile interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path to be watched\n * @param {String} fullPath absolute path\n * @param {Object} options options to be passed to fs_watchFile\n * @param {Object} handlers container for event listener functions\n * @returns {Function} closer\n */\nconst setFsWatchFileListener = (path, fullPath, options, handlers) => {\n const {listener, rawEmitter} = handlers;\n let cont = FsWatchFileInstances.get(fullPath);\n\n /* eslint-disable no-unused-vars, prefer-destructuring */\n let listeners = new Set();\n let rawEmitters = new Set();\n\n const copts = cont && cont.options;\n if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) {\n // \"Upgrade\" the watcher to persistence or a quicker interval.\n // This creates some unlikely edge case issues if the user mixes\n // settings in a very weird way, but solving for those cases\n // doesn't seem worthwhile for the added complexity.\n listeners = cont.listeners;\n rawEmitters = cont.rawEmitters;\n fs.unwatchFile(fullPath);\n cont = undefined;\n }\n\n /* eslint-enable no-unused-vars, prefer-destructuring */\n\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n } else {\n // TODO\n // listeners.add(listener);\n // rawEmitters.add(rawEmitter);\n cont = {\n listeners: listener,\n rawEmitters: rawEmitter,\n options,\n watcher: fs.watchFile(fullPath, options, (curr, prev) => {\n foreach(cont.rawEmitters, (rawEmitter) => {\n rawEmitter(EV_CHANGE, fullPath, {curr, prev});\n });\n const currmtime = curr.mtimeMs;\n if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {\n foreach(cont.listeners, (listener) => listener(path, curr));\n }\n })\n };\n FsWatchFileInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n\n // Removes this instance's listeners and closes the underlying fs_watchFile\n // instance if there are no more listeners left.\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n FsWatchFileInstances.delete(fullPath);\n fs.unwatchFile(fullPath);\n cont.options = cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n\n/**\n * @mixin\n */\nclass NodeFsHandler {\n\n/**\n * @param {import(\"../index\").FSWatcher} fsW\n */\nconstructor(fsW) {\n this.fsw = fsW;\n this._boundHandleError = (error) => fsW._handleError(error);\n}\n\n/**\n * Watch file for changes with fs_watchFile or fs_watch.\n * @param {String} path to file or dir\n * @param {Function} listener on fs change\n * @returns {Function} closer for the watcher instance\n */\n_watchWithNodeFs(path, listener) {\n const opts = this.fsw.options;\n const directory = sysPath.dirname(path);\n const basename = sysPath.basename(path);\n const parent = this.fsw._getWatchedDir(directory);\n parent.add(basename);\n const absolutePath = sysPath.resolve(path);\n const options = {persistent: opts.persistent};\n if (!listener) listener = EMPTY_FN;\n\n let closer;\n if (opts.usePolling) {\n options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ?\n opts.binaryInterval : opts.interval;\n closer = setFsWatchFileListener(path, absolutePath, options, {\n listener,\n rawEmitter: this.fsw._emitRaw\n });\n } else {\n closer = setFsWatchListener(path, absolutePath, options, {\n listener,\n errHandler: this._boundHandleError,\n rawEmitter: this.fsw._emitRaw\n });\n }\n return closer;\n}\n\n/**\n * Watch a file and emit add event if warranted.\n * @param {Path} file Path\n * @param {fs.Stats} stats result of fs_stat\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @returns {Function} closer for the watcher instance\n */\n_handleFile(file, stats, initialAdd) {\n if (this.fsw.closed) {\n return;\n }\n const dirname = sysPath.dirname(file);\n const basename = sysPath.basename(file);\n const parent = this.fsw._getWatchedDir(dirname);\n // stats is always present\n let prevStats = stats;\n\n // if the file is already being watched, do nothing\n if (parent.has(basename)) return;\n\n const listener = async (path, newStats) => {\n if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return;\n if (!newStats || newStats.mtimeMs === 0) {\n try {\n const newStats = await stat(file);\n if (this.fsw.closed) return;\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV_CHANGE, file, newStats);\n }\n if (isLinux && prevStats.ino !== newStats.ino) {\n this.fsw._closeFile(path)\n prevStats = newStats;\n this.fsw._addPathCloser(path, this._watchWithNodeFs(file, listener));\n } else {\n prevStats = newStats;\n }\n } catch (error) {\n // Fix issues where mtime is null but file is still present\n this.fsw._remove(dirname, basename);\n }\n // add is about to be emitted if file not already tracked in parent\n } else if (parent.has(basename)) {\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV_CHANGE, file, newStats);\n }\n prevStats = newStats;\n }\n }\n // kick off the watcher\n const closer = this._watchWithNodeFs(file, listener);\n\n // emit an add event if we're supposed to\n if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) {\n if (!this.fsw._throttle(EV_ADD, file, 0)) return;\n this.fsw._emit(EV_ADD, file, stats);\n }\n\n return closer;\n}\n\n/**\n * Handle symlinks encountered while reading a dir.\n * @param {Object} entry returned by readdirp\n * @param {String} directory path of dir being read\n * @param {String} path of this item\n * @param {String} item basename of this item\n * @returns {Promise<Boolean>} true if no more processing is needed for this entry.\n */\nasync _handleSymlink(entry, directory, path, item) {\n if (this.fsw.closed) {\n return;\n }\n const full = entry.fullPath;\n const dir = this.fsw._getWatchedDir(directory);\n\n if (!this.fsw.options.followSymlinks) {\n // watch symlink directly (don't follow) and detect changes\n this.fsw._incrReadyCount();\n\n let linkPath;\n try {\n linkPath = await fsrealpath(path);\n } catch (e) {\n this.fsw._emitReady();\n return true;\n }\n\n if (this.fsw.closed) return;\n if (dir.has(item)) {\n if (this.fsw._symlinkPaths.get(full) !== linkPath) {\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV_CHANGE, path, entry.stats);\n }\n } else {\n dir.add(item);\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV_ADD, path, entry.stats);\n }\n this.fsw._emitReady();\n return true;\n }\n\n // don't follow the same symlink more than once\n if (this.fsw._symlinkPaths.has(full)) {\n return true;\n }\n\n this.fsw._symlinkPaths.set(full, true);\n}\n\n_handleRead(directory, initialAdd, wh, target, dir, depth, throttler) {\n // Normalize the directory name on Windows\n directory = sysPath.join(directory, EMPTY_STR);\n\n if (!wh.hasGlob) {\n throttler = this.fsw._throttle('readdir', directory, 1000);\n if (!throttler) return;\n }\n\n const previous = this.fsw._getWatchedDir(wh.path);\n const current = new Set();\n\n let stream = this.fsw._readdirp(directory, {\n fileFilter: entry => wh.filterPath(entry),\n directoryFilter: entry => wh.filterDir(entry),\n depth: 0\n }).on(STR_DATA, async (entry) => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const item = entry.path;\n let path = sysPath.join(directory, item);\n current.add(item);\n\n if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) {\n return;\n }\n\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n // Files that present in current directory snapshot\n // but absent in previous are added to watch list and\n // emit `add` event.\n if (item === target || !target && !previous.has(item)) {\n this.fsw._incrReadyCount();\n\n // ensure relativeness of path is preserved in case of watcher reuse\n path = sysPath.join(dir, sysPath.relative(dir, path));\n\n this._addToNodeFs(path, initialAdd, wh, depth + 1);\n }\n }).on(EV_ERROR, this._boundHandleError);\n\n return new Promise(resolve =>\n stream.once(STR_END, () => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const wasThrottled = throttler ? throttler.clear() : false;\n\n resolve();\n\n // Files that absent in current directory snapshot\n // but present in previous emit `remove` event\n // and are removed from @watched[directory].\n previous.getChildren().filter((item) => {\n return item !== directory &&\n !current.has(item) &&\n // in case of intersecting globs;\n // a path may have been filtered out of this readdir, but\n // shouldn't be removed because it matches a different glob\n (!wh.hasGlob || wh.filterPath({\n fullPath: sysPath.resolve(directory, item)\n }));\n }).forEach((item) => {\n this.fsw._remove(directory, item);\n });\n\n stream = undefined;\n\n // one more time for any missed in case changes came in extremely quickly\n if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler);\n })\n );\n}\n\n/**\n * Read directory to add / remove files from `@watched` list and re-read it on change.\n * @param {String} dir fs path\n * @param {fs.Stats} stats\n * @param {Boolean} initialAdd\n * @param {Number} depth relative to user-supplied path\n * @param {String} target child path targeted for watch\n * @param {Object} wh Common watch helpers for this path\n * @param {String} realpath\n * @returns {Promise<Function>} closer for the watcher instance.\n */\nasync _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) {\n const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir));\n const tracked = parentDir.has(sysPath.basename(dir));\n if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) {\n if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats);\n }\n\n // ensure dir is tracked (harmless if redundant)\n parentDir.add(sysPath.basename(dir));\n this.fsw._getWatchedDir(dir);\n let throttler;\n let closer;\n\n const oDepth = this.fsw.options.depth;\n if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) {\n if (!target) {\n await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler);\n if (this.fsw.closed) return;\n }\n\n closer = this._watchWithNodeFs(dir, (dirPath, stats) => {\n // if current directory is removed, do nothing\n if (stats && stats.mtimeMs === 0) return;\n\n this._handleRead(dirPath, false, wh, target, dir, depth, throttler);\n });\n }\n return closer;\n}\n\n/**\n * Handle added file, directory, or glob pattern.\n * Delegates call to _handleFile / _handleDir after checks.\n * @param {String} path to file or ir\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @param {Object} priorWh depth relative to user-supplied path\n * @param {Number} depth Child path actually targeted for watch\n * @param {String=} target Child path actually targeted for watch\n * @returns {Promise}\n */\nasync _addToNodeFs(path, initialAdd, priorWh, depth, target) {\n const ready = this.fsw._emitReady;\n if (this.fsw._isIgnored(path) || this.fsw.closed) {\n ready();\n return false;\n }\n\n const wh = this.fsw._getWatchHelpers(path, depth);\n if (!wh.hasGlob && priorWh) {\n wh.hasGlob = priorWh.hasGlob;\n wh.globFilter = priorWh.globFilter;\n wh.filterPath = entry => priorWh.filterPath(entry);\n wh.filterDir = entry => priorWh.filterDir(entry);\n }\n\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n ready();\n return false;\n }\n\n const follow = this.fsw.options.followSymlinks && !path.includes(STAR) && !path.includes(BRACE_START);\n let closer;\n if (stats.isDirectory()) {\n const absPath = sysPath.resolve(path);\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed) return;\n closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);\n if (this.fsw.closed) return;\n // preserve this symlink's target path\n if (absPath !== targetPath && targetPath !== undefined) {\n this.fsw._symlinkPaths.set(absPath, targetPath);\n }\n } else if (stats.isSymbolicLink()) {\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed) return;\n const parent = sysPath.dirname(wh.watchPath);\n this.fsw._getWatchedDir(parent).add(wh.watchPath);\n this.fsw._emit(EV_ADD, wh.watchPath, stats);\n closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath);\n if (this.fsw.closed) return;\n\n // preserve this symlink's target path\n if (targetPath !== undefined) {\n this.fsw._symlinkPaths.set(sysPath.resolve(path), targetPath);\n }\n } else {\n closer = this._handleFile(wh.watchPath, stats, initialAdd);\n }\n ready();\n\n this.fsw._addPathCloser(path, closer);\n return false;\n\n } catch (error) {\n if (this.fsw._handleError(error)) {\n ready();\n return path;\n }\n }\n}\n\n}\n\nmodule.exports = NodeFsHandler;\n","'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\n\nlet fsevents;\ntry {\n fsevents = require('fsevents');\n} catch (error) {\n if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error);\n}\n\nif (fsevents) {\n // TODO: real check\n const mtch = process.version.match(/v(\\d+)\\.(\\d+)/);\n if (mtch && mtch[1] && mtch[2]) {\n const maj = Number.parseInt(mtch[1], 10);\n const min = Number.parseInt(mtch[2], 10);\n if (maj === 8 && min < 16) {\n fsevents = undefined;\n }\n }\n}\n\nconst {\n EV_ADD,\n EV_CHANGE,\n EV_ADD_DIR,\n EV_UNLINK,\n EV_ERROR,\n STR_DATA,\n STR_END,\n FSEVENT_CREATED,\n FSEVENT_MODIFIED,\n FSEVENT_DELETED,\n FSEVENT_MOVED,\n // FSEVENT_CLONED,\n FSEVENT_UNKNOWN,\n FSEVENT_FLAG_MUST_SCAN_SUBDIRS,\n FSEVENT_TYPE_FILE,\n FSEVENT_TYPE_DIRECTORY,\n FSEVENT_TYPE_SYMLINK,\n\n ROOT_GLOBSTAR,\n DIR_SUFFIX,\n DOT_SLASH,\n FUNCTION_TYPE,\n EMPTY_FN,\n IDENTITY_FN\n} = require('./constants');\n\nconst Depth = (value) => isNaN(value) ? {} : {depth: value};\n\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\nconst statMethods = { stat, lstat };\n\n/**\n * @typedef {String} Path\n */\n\n/**\n * @typedef {Object} FsEventsWatchContainer\n * @property {Set<Function>} listeners\n * @property {Function} rawEmitter\n * @property {{stop: Function}} watcher\n */\n\n// fsevents instance helper functions\n/**\n * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances)\n * @type {Map<Path,FsEventsWatchContainer>}\n */\nconst FSEventsWatchers = new Map();\n\n// Threshold of duplicate path prefixes at which to start\n// consolidating going forward\nconst consolidateThreshhold = 10;\n\nconst wrongEventFlags = new Set([\n 69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912\n]);\n\n/**\n * Instantiates the fsevents interface\n * @param {Path} path path to be watched\n * @param {Function} callback called when fsevents is bound and ready\n * @returns {{stop: Function}} new fsevents instance\n */\nconst createFSEventsInstance = (path, callback) => {\n const stop = fsevents.watch(path, callback);\n return {stop};\n};\n\n/**\n * Instantiates the fsevents interface or binds listeners to an existing one covering\n * the same file tree.\n * @param {Path} path - to be watched\n * @param {Path} realPath - real path for symlinks\n * @param {Function} listener - called when fsevents emits events\n * @param {Function} rawEmitter - passes data to listeners of the 'raw' event\n * @returns {Function} closer\n */\nfunction setFSEventsListener(path, realPath, listener, rawEmitter) {\n let watchPath = sysPath.extname(realPath) ? sysPath.dirname(realPath) : realPath;\n\n const parentPath = sysPath.dirname(watchPath);\n let cont = FSEventsWatchers.get(watchPath);\n\n // If we've accumulated a substantial number of paths that\n // could have been consolidated by watching one directory\n // above the current one, create a watcher on the parent\n // path instead, so that we do consolidate going forward.\n if (couldConsolidate(parentPath)) {\n watchPath = parentPath;\n }\n\n const resolvedPath = sysPath.resolve(path);\n const hasSymlink = resolvedPath !== realPath;\n\n const filteredListener = (fullPath, flags, info) => {\n if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath);\n if (\n fullPath === resolvedPath ||\n !fullPath.indexOf(resolvedPath + sysPath.sep)\n ) listener(fullPath, flags, info);\n };\n\n // check if there is already a watcher on a parent path\n // modifies `watchPath` to the parent path when it finds a match\n let watchedParent = false;\n for (const watchedPath of FSEventsWatchers.keys()) {\n if (realPath.indexOf(sysPath.resolve(watchedPath) + sysPath.sep) === 0) {\n watchPath = watchedPath;\n cont = FSEventsWatchers.get(watchPath);\n watchedParent = true;\n break;\n }\n }\n\n if (cont || watchedParent) {\n cont.listeners.add(filteredListener);\n } else {\n cont = {\n listeners: new Set([filteredListener]),\n rawEmitter,\n watcher: createFSEventsInstance(watchPath, (fullPath, flags) => {\n if (!cont.listeners.size) return;\n if (flags & FSEVENT_FLAG_MUST_SCAN_SUBDIRS) return;\n const info = fsevents.getInfo(fullPath, flags);\n cont.listeners.forEach(list => {\n list(fullPath, flags, info);\n });\n\n cont.rawEmitter(info.event, fullPath, info);\n })\n };\n FSEventsWatchers.set(watchPath, cont);\n }\n\n // removes this instance's listeners and closes the underlying fsevents\n // instance if there are no more listeners left\n return () => {\n const lst = cont.listeners;\n\n lst.delete(filteredListener);\n if (!lst.size) {\n FSEventsWatchers.delete(watchPath);\n if (cont.watcher) return cont.watcher.stop().then(() => {\n cont.rawEmitter = cont.watcher = undefined;\n Object.freeze(cont);\n });\n }\n };\n}\n\n// Decide whether or not we should start a new higher-level\n// parent watcher\nconst couldConsolidate = (path) => {\n let count = 0;\n for (const watchPath of FSEventsWatchers.keys()) {\n if (watchPath.indexOf(path) === 0) {\n count++;\n if (count >= consolidateThreshhold) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n// returns boolean indicating whether fsevents can be used\nconst canUse = () => fsevents && FSEventsWatchers.size < 128;\n\n// determines subdirectory traversal levels from root to path\nconst calcDepth = (path, root) => {\n let i = 0;\n while (!path.indexOf(root) && (path = sysPath.dirname(path)) !== root) i++;\n return i;\n};\n\n// returns boolean indicating whether the fsevents' event info has the same type\n// as the one returned by fs.stat\nconst sameTypes = (info, stats) => (\n info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() ||\n info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() ||\n info.type === FSEVENT_TYPE_FILE && stats.isFile()\n)\n\n/**\n * @mixin\n */\nclass FsEventsHandler {\n\n/**\n * @param {import('../index').FSWatcher} fsw\n */\nconstructor(fsw) {\n this.fsw = fsw;\n}\ncheckIgnored(path, stats) {\n const ipaths = this.fsw._ignoredPaths;\n if (this.fsw._isIgnored(path, stats)) {\n ipaths.add(path);\n if (stats && stats.isDirectory()) {\n ipaths.add(path + ROOT_GLOBSTAR);\n }\n return true;\n }\n\n ipaths.delete(path);\n ipaths.delete(path + ROOT_GLOBSTAR);\n}\n\naddOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n const event = watchedDir.has(item) ? EV_CHANGE : EV_ADD;\n this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n}\n\nasync checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n try {\n const stats = await stat(path)\n if (this.fsw.closed) return;\n if (sameTypes(info, stats)) {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } catch (error) {\n if (error.code === 'EACCES') {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n }\n}\n\nhandleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n if (this.fsw.closed || this.checkIgnored(path)) return;\n\n if (event === EV_UNLINK) {\n const isDirectory = info.type === FSEVENT_TYPE_DIRECTORY\n // suppress unlink events on never before seen files\n if (isDirectory || watchedDir.has(item)) {\n this.fsw._remove(parent, item, isDirectory);\n }\n } else {\n if (event === EV_ADD) {\n // track new directories\n if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path);\n\n if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) {\n // push symlinks back to the top of the stack to get handled\n const curDepth = opts.depth === undefined ?\n undefined : calcDepth(fullPath, realPath) + 1;\n return this._addToFsEvents(path, false, true, curDepth);\n }\n\n // track new paths\n // (other than symlinks being followed, which will be tracked soon)\n this.fsw._getWatchedDir(parent).add(item);\n }\n /**\n * @type {'add'|'addDir'|'unlink'|'unlinkDir'}\n */\n const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event;\n this.fsw._emit(eventName, path);\n if (eventName === EV_ADD_DIR) this._addToFsEvents(path, false, true);\n }\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} watchPath - file/dir path to be watched with fsevents\n * @param {String} realPath - real path (in case of symlinks)\n * @param {Function} transform - path transformer\n * @param {Function} globFilter - path filter in case a glob pattern was provided\n * @returns {Function} closer for the watcher instance\n*/\n_watchWithFsEvents(watchPath, realPath, transform, globFilter) {\n if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return;\n const opts = this.fsw.options;\n const watchCallback = async (fullPath, flags, info) => {\n if (this.fsw.closed) return;\n if (\n opts.depth !== undefined &&\n calcDepth(fullPath, realPath) > opts.depth\n ) return;\n const path = transform(sysPath.join(\n watchPath, sysPath.relative(watchPath, fullPath)\n ));\n if (globFilter && !globFilter(path)) return;\n // ensure directories are tracked\n const parent = sysPath.dirname(path);\n const item = sysPath.basename(path);\n const watchedDir = this.fsw._getWatchedDir(\n info.type === FSEVENT_TYPE_DIRECTORY ? path : parent\n );\n\n // correct for wrong events emitted\n if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) {\n if (typeof opts.ignored === FUNCTION_TYPE) {\n let stats;\n try {\n stats = await stat(path);\n } catch (error) {}\n if (this.fsw.closed) return;\n if (this.checkIgnored(path, stats)) return;\n if (sameTypes(info, stats)) {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } else {\n this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } else {\n switch (info.event) {\n case FSEVENT_CREATED:\n case FSEVENT_MODIFIED:\n return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n case FSEVENT_DELETED:\n case FSEVENT_MOVED:\n return this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n }\n };\n\n const closer = setFSEventsListener(\n watchPath,\n realPath,\n watchCallback,\n this.fsw._emitRaw\n );\n\n this.fsw._emitReady();\n return closer;\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} linkPath path to symlink\n * @param {String} fullPath absolute path to the symlink\n * @param {Function} transform pre-existing path transformer\n * @param {Number} curDepth level of subdirectories traversed to where symlink is\n * @returns {Promise<void>}\n */\nasync _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) {\n // don't follow the same symlink more than once\n if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return;\n\n this.fsw._symlinkPaths.set(fullPath, true);\n this.fsw._incrReadyCount();\n\n try {\n const linkTarget = await realpath(linkPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(linkTarget)) {\n return this.fsw._emitReady();\n }\n\n this.fsw._incrReadyCount();\n\n // add the linkTarget for watching with a wrapper for transform\n // that causes emitted paths to incorporate the link's path\n this._addToFsEvents(linkTarget || linkPath, (path) => {\n let aliasedPath = linkPath;\n if (linkTarget && linkTarget !== DOT_SLASH) {\n aliasedPath = path.replace(linkTarget, linkPath);\n } else if (path !== DOT_SLASH) {\n aliasedPath = sysPath.join(linkPath, path);\n }\n return transform(aliasedPath);\n }, false, curDepth);\n } catch(error) {\n if (this.fsw._handleError(error)) {\n return this.fsw._emitReady();\n }\n }\n}\n\n/**\n *\n * @param {Path} newPath\n * @param {fs.Stats} stats\n */\nemitAdd(newPath, stats, processPath, opts, forceAdd) {\n const pp = processPath(newPath);\n const isDir = stats.isDirectory();\n const dirObj = this.fsw._getWatchedDir(sysPath.dirname(pp));\n const base = sysPath.basename(pp);\n\n // ensure empty dirs get tracked\n if (isDir) this.fsw._getWatchedDir(pp);\n if (dirObj.has(base)) return;\n dirObj.add(base);\n\n if (!opts.ignoreInitial || forceAdd === true) {\n this.fsw._emit(isDir ? EV_ADD_DIR : EV_ADD, pp, stats);\n }\n}\n\ninitWatch(realPath, path, wh, processPath) {\n if (this.fsw.closed) return;\n const closer = this._watchWithFsEvents(\n wh.watchPath,\n sysPath.resolve(realPath || wh.watchPath),\n processPath,\n wh.globFilter\n );\n this.fsw._addPathCloser(path, closer);\n}\n\n/**\n * Handle added path with fsevents\n * @param {String} path file/dir path or glob pattern\n * @param {Function|Boolean=} transform converts working path to what the user expects\n * @param {Boolean=} forceAdd ensure add is emitted\n * @param {Number=} priorDepth Level of subdirectories already traversed.\n * @returns {Promise<void>}\n */\nasync _addToFsEvents(path, transform, forceAdd, priorDepth) {\n if (this.fsw.closed) {\n return;\n }\n const opts = this.fsw.options;\n const processPath = typeof transform === FUNCTION_TYPE ? transform : IDENTITY_FN;\n\n const wh = this.fsw._getWatchHelpers(path);\n\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n throw null;\n }\n if (stats.isDirectory()) {\n // emit addDir unless this is a glob parent\n if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd);\n\n // don't recurse further if it would exceed depth setting\n if (priorDepth && priorDepth > opts.depth) return;\n\n // scan the contents of the dir\n this.fsw._readdirp(wh.watchPath, {\n fileFilter: entry => wh.filterPath(entry),\n directoryFilter: entry => wh.filterDir(entry),\n ...Depth(opts.depth - (priorDepth || 0))\n }).on(STR_DATA, (entry) => {\n // need to check filterPath on dirs b/c filterDir is less restrictive\n if (this.fsw.closed) {\n return;\n }\n if (entry.stats.isDirectory() && !wh.filterPath(entry)) return;\n\n const joinedPath = sysPath.join(wh.watchPath, entry.path);\n const {fullPath} = entry;\n\n if (wh.followSymlinks && entry.stats.isSymbolicLink()) {\n // preserve the current depth here since it can't be derived from\n // real paths past the symlink\n const curDepth = opts.depth === undefined ?\n undefined : calcDepth(joinedPath, sysPath.resolve(wh.watchPath)) + 1;\n\n this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth);\n } else {\n this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd);\n }\n }).on(EV_ERROR, EMPTY_FN).on(STR_END, () => {\n this.fsw._emitReady();\n });\n } else {\n this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd);\n this.fsw._emitReady();\n }\n } catch (error) {\n if (!error || this.fsw._handleError(error)) {\n // TODO: Strange thing: \"should not choke on an ignored watch path\" will be failed without 2 ready calls -__-\n this.fsw._emitReady();\n this.fsw._emitReady();\n }\n }\n\n if (opts.persistent && forceAdd !== true) {\n if (typeof transform === FUNCTION_TYPE) {\n // realpath has already been resolved\n this.initWatch(undefined, path, wh, processPath);\n } else {\n let realPath;\n try {\n realPath = await realpath(wh.watchPath);\n } catch (e) {}\n this.initWatch(realPath, path, wh, processPath);\n }\n }\n}\n\n}\n\nmodule.exports = FsEventsHandler;\nmodule.exports.canUse = canUse;\n","'use strict';\n\nconst { EventEmitter } = require('events');\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst readdirp = require('readdirp');\nconst anymatch = require('anymatch').default;\nconst globParent = require('glob-parent');\nconst isGlob = require('is-glob');\nconst braces = require('braces');\nconst normalizePath = require('normalize-path');\n\nconst NodeFsHandler = require('./lib/nodefs-handler');\nconst FsEventsHandler = require('./lib/fsevents-handler');\nconst {\n EV_ALL,\n EV_READY,\n EV_ADD,\n EV_CHANGE,\n EV_UNLINK,\n EV_ADD_DIR,\n EV_UNLINK_DIR,\n EV_RAW,\n EV_ERROR,\n\n STR_CLOSE,\n STR_END,\n\n BACK_SLASH_RE,\n DOUBLE_SLASH_RE,\n SLASH_OR_BACK_SLASH_RE,\n DOT_RE,\n REPLACER_RE,\n\n SLASH,\n SLASH_SLASH,\n BRACE_START,\n BANG,\n ONE_DOT,\n TWO_DOTS,\n GLOBSTAR,\n SLASH_GLOBSTAR,\n ANYMATCH_OPTS,\n STRING_TYPE,\n FUNCTION_TYPE,\n EMPTY_STR,\n EMPTY_FN,\n\n isWindows,\n isMacos,\n isIBMi\n} = require('./lib/constants');\n\nconst stat = promisify(fs.stat);\nconst readdir = promisify(fs.readdir);\n\n/**\n * @typedef {String} Path\n * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName\n * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType\n */\n\n/**\n *\n * @typedef {Object} WatchHelpers\n * @property {Boolean} followSymlinks\n * @property {'stat'|'lstat'} statMethod\n * @property {Path} path\n * @property {Path} watchPath\n * @property {Function} entryPath\n * @property {Boolean} hasGlob\n * @property {Object} globFilter\n * @property {Function} filterPath\n * @property {Function} filterDir\n */\n\nconst arrify = (value = []) => Array.isArray(value) ? value : [value];\nconst flatten = (list, result = []) => {\n list.forEach(item => {\n if (Array.isArray(item)) {\n flatten(item, result);\n } else {\n result.push(item);\n }\n });\n return result;\n};\n\nconst unifyPaths = (paths_) => {\n /**\n * @type {Array<String>}\n */\n const paths = flatten(arrify(paths_));\n if (!paths.every(p => typeof p === STRING_TYPE)) {\n throw new TypeError(`Non-string provided as watch path: ${paths}`);\n }\n return paths.map(normalizePathToUnix);\n};\n\n// If SLASH_SLASH occurs at the beginning of path, it is not replaced\n// because \"//StoragePC/DrivePool/Movies\" is a valid network path\nconst toUnix = (string) => {\n let str = string.replace(BACK_SLASH_RE, SLASH);\n let prepend = false;\n if (str.startsWith(SLASH_SLASH)) {\n prepend = true;\n }\n while (str.match(DOUBLE_SLASH_RE)) {\n str = str.replace(DOUBLE_SLASH_RE, SLASH);\n }\n if (prepend) {\n str = SLASH + str;\n }\n return str;\n};\n\n// Our version of upath.normalize\n// TODO: this is not equal to path-normalize module - investigate why\nconst normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path)));\n\nconst normalizeIgnored = (cwd = EMPTY_STR) => (path) => {\n if (typeof path !== STRING_TYPE) return path;\n return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path));\n};\n\nconst getAbsolutePath = (path, cwd) => {\n if (sysPath.isAbsolute(path)) {\n return path;\n }\n if (path.startsWith(BANG)) {\n return BANG + sysPath.join(cwd, path.slice(1));\n }\n return sysPath.join(cwd, path);\n};\n\nconst undef = (opts, key) => opts[key] === undefined;\n\n/**\n * Directory entry.\n * @property {Path} path\n * @property {Set<Path>} items\n */\nclass DirEntry {\n /**\n * @param {Path} dir\n * @param {Function} removeWatcher\n */\n constructor(dir, removeWatcher) {\n this.path = dir;\n this._removeWatcher = removeWatcher;\n /** @type {Set<Path>} */\n this.items = new Set();\n }\n\n add(item) {\n const {items} = this;\n if (!items) return;\n if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item);\n }\n\n async remove(item) {\n const {items} = this;\n if (!items) return;\n items.delete(item);\n if (items.size > 0) return;\n\n const dir = this.path;\n try {\n await readdir(dir);\n } catch (err) {\n if (this._removeWatcher) {\n this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir));\n }\n }\n }\n\n has(item) {\n const {items} = this;\n if (!items) return;\n return items.has(item);\n }\n\n /**\n * @returns {Array<String>}\n */\n getChildren() {\n const {items} = this;\n if (!items) return;\n return [...items.values()];\n }\n\n dispose() {\n this.items.clear();\n delete this.path;\n delete this._removeWatcher;\n delete this.items;\n Object.freeze(this);\n }\n}\n\nconst STAT_METHOD_F = 'stat';\nconst STAT_METHOD_L = 'lstat';\nclass WatchHelper {\n constructor(path, watchPath, follow, fsw) {\n this.fsw = fsw;\n this.path = path = path.replace(REPLACER_RE, EMPTY_STR);\n this.watchPath = watchPath;\n this.fullWatchPath = sysPath.resolve(watchPath);\n this.hasGlob = watchPath !== path;\n /** @type {object|boolean} */\n if (path === EMPTY_STR) this.hasGlob = false;\n this.globSymlink = this.hasGlob && follow ? undefined : false;\n this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false;\n this.dirParts = this.getDirParts(path);\n this.dirParts.forEach((parts) => {\n if (parts.length > 1) parts.pop();\n });\n this.followSymlinks = follow;\n this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L;\n }\n\n checkGlobSymlink(entry) {\n // only need to resolve once\n // first entry should always have entry.parentDir === EMPTY_STR\n if (this.globSymlink === undefined) {\n this.globSymlink = entry.fullParentDir === this.fullWatchPath ?\n false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath};\n }\n\n if (this.globSymlink) {\n return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath);\n }\n\n return entry.fullPath;\n }\n\n entryPath(entry) {\n return sysPath.join(this.watchPath,\n sysPath.relative(this.watchPath, this.checkGlobSymlink(entry))\n );\n }\n\n filterPath(entry) {\n const {stats} = entry;\n if (stats && stats.isSymbolicLink()) return this.filterDir(entry);\n const resolvedPath = this.entryPath(entry);\n const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ?\n this.globFilter(resolvedPath) : true;\n return matchesGlob &&\n this.fsw._isntIgnored(resolvedPath, stats) &&\n this.fsw._hasReadPermissions(stats);\n }\n\n getDirParts(path) {\n if (!this.hasGlob) return [];\n const parts = [];\n const expandedPath = path.includes(BRACE_START) ? braces.expand(path) : [path];\n expandedPath.forEach((path) => {\n parts.push(sysPath.relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE));\n });\n return parts;\n }\n\n filterDir(entry) {\n if (this.hasGlob) {\n const entryParts = this.getDirParts(this.checkGlobSymlink(entry));\n let globstar = false;\n this.unmatchedGlob = !this.dirParts.some((parts) => {\n return parts.every((part, i) => {\n if (part === GLOBSTAR) globstar = true;\n return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS);\n });\n });\n }\n return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats);\n }\n}\n\n/**\n * Watches files & directories for changes. Emitted events:\n * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error`\n *\n * new FSWatcher()\n * .add(directories)\n * .on('add', path => log('File', path, 'was added'))\n */\nclass FSWatcher extends EventEmitter {\n// Not indenting methods for history sake; for now.\nconstructor(_opts) {\n super();\n\n const opts = {};\n if (_opts) Object.assign(opts, _opts); // for frozen objects\n\n /** @type {Map<String, DirEntry>} */\n this._watched = new Map();\n /** @type {Map<String, Array>} */\n this._closers = new Map();\n /** @type {Set<String>} */\n this._ignoredPaths = new Set();\n\n /** @type {Map<ThrottleType, Map>} */\n this._throttled = new Map();\n\n /** @type {Map<Path, String|Boolean>} */\n this._symlinkPaths = new Map();\n\n this._streams = new Set();\n this.closed = false;\n\n // Set up default options.\n if (undef(opts, 'persistent')) opts.persistent = true;\n if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false;\n if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false;\n if (undef(opts, 'interval')) opts.interval = 100;\n if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300;\n if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false;\n opts.enableBinaryInterval = opts.binaryInterval !== opts.interval;\n\n // Enable fsevents on OS X when polling isn't explicitly enabled.\n if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling;\n\n // If we can't use fsevents, ensure the options reflect it's disabled.\n const canUseFsEvents = FsEventsHandler.canUse();\n if (!canUseFsEvents) opts.useFsEvents = false;\n\n // Use polling on Mac if not using fsevents.\n // Other platforms use non-polling fs_watch.\n if (undef(opts, 'usePolling') && !opts.useFsEvents) {\n opts.usePolling = isMacos;\n }\n\n // Always default to polling on IBM i because fs.watch() is not available on IBM i.\n if(isIBMi) {\n opts.usePolling = true;\n }\n\n // Global override (useful for end-developers that need to force polling for all\n // instances of chokidar, regardless of usage/dependency depth)\n const envPoll = process.env.CHOKIDAR_USEPOLLING;\n if (envPoll !== undefined) {\n const envLower = envPoll.toLowerCase();\n\n if (envLower === 'false' || envLower === '0') {\n opts.usePolling = false;\n } else if (envLower === 'true' || envLower === '1') {\n opts.usePolling = true;\n } else {\n opts.usePolling = !!envLower;\n }\n }\n const envInterval = process.env.CHOKIDAR_INTERVAL;\n if (envInterval) {\n opts.interval = Number.parseInt(envInterval, 10);\n }\n\n // Editor atomic write normalization enabled by default with fs.watch\n if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents;\n if (opts.atomic) this._pendingUnlinks = new Map();\n\n if (undef(opts, 'followSymlinks')) opts.followSymlinks = true;\n\n if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false;\n if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {};\n const awf = opts.awaitWriteFinish;\n if (awf) {\n if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000;\n if (!awf.pollInterval) awf.pollInterval = 100;\n this._pendingWrites = new Map();\n }\n if (opts.ignored) opts.ignored = arrify(opts.ignored);\n\n let readyCalls = 0;\n this._emitReady = () => {\n readyCalls++;\n if (readyCalls >= this._readyCount) {\n this._emitReady = EMPTY_FN;\n this._readyEmitted = true;\n // use process.nextTick to allow time for listener to be bound\n process.nextTick(() => this.emit(EV_READY));\n }\n };\n this._emitRaw = (...args) => this.emit(EV_RAW, ...args);\n this._readyEmitted = false;\n this.options = opts;\n\n // Initialize with proper watcher.\n if (opts.useFsEvents) {\n this._fsEventsHandler = new FsEventsHandler(this);\n } else {\n this._nodeFsHandler = new NodeFsHandler(this);\n }\n\n // You’re frozen when your heart’s not open.\n Object.freeze(opts);\n}\n\n// Public methods\n\n/**\n * Adds paths to be watched on an existing FSWatcher instance\n * @param {Path|Array<Path>} paths_\n * @param {String=} _origAdd private; for handling non-existent paths to be watched\n * @param {Boolean=} _internal private; indicates a non-user add\n * @returns {FSWatcher} for chaining\n */\nadd(paths_, _origAdd, _internal) {\n const {cwd, disableGlobbing} = this.options;\n this.closed = false;\n let paths = unifyPaths(paths_);\n if (cwd) {\n paths = paths.map((path) => {\n const absPath = getAbsolutePath(path, cwd);\n\n // Check `path` instead of `absPath` because the cwd portion can't be a glob\n if (disableGlobbing || !isGlob(path)) {\n return absPath;\n }\n return normalizePath(absPath);\n });\n }\n\n // set aside negated glob strings\n paths = paths.filter((path) => {\n if (path.startsWith(BANG)) {\n this._ignoredPaths.add(path.slice(1));\n return false;\n }\n\n // if a path is being added that was previously ignored, stop ignoring it\n this._ignoredPaths.delete(path);\n this._ignoredPaths.delete(path + SLASH_GLOBSTAR);\n\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n\n return true;\n });\n\n if (this.options.useFsEvents && this._fsEventsHandler) {\n if (!this._readyCount) this._readyCount = paths.length;\n if (this.options.persistent) this._readyCount += paths.length;\n paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path));\n } else {\n if (!this._readyCount) this._readyCount = 0;\n this._readyCount += paths.length;\n Promise.all(\n paths.map(async path => {\n const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd);\n if (res) this._emitReady();\n return res;\n })\n ).then(results => {\n if (this.closed) return;\n results.filter(item => item).forEach(item => {\n this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item));\n });\n });\n }\n\n return this;\n}\n\n/**\n * Close watchers or start ignoring events from specified paths.\n * @param {Path|Array<Path>} paths_ - string or array of strings, file/directory paths and/or globs\n * @returns {FSWatcher} for chaining\n*/\nunwatch(paths_) {\n if (this.closed) return this;\n const paths = unifyPaths(paths_);\n const {cwd} = this.options;\n\n paths.forEach((path) => {\n // convert to absolute path unless relative path already matches\n if (!sysPath.isAbsolute(path) && !this._closers.has(path)) {\n if (cwd) path = sysPath.join(cwd, path);\n path = sysPath.resolve(path);\n }\n\n this._closePath(path);\n\n this._ignoredPaths.add(path);\n if (this._watched.has(path)) {\n this._ignoredPaths.add(path + SLASH_GLOBSTAR);\n }\n\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n });\n\n return this;\n}\n\n/**\n * Close watchers and remove all listeners from watched paths.\n * @returns {Promise<void>}.\n*/\nclose() {\n if (this.closed) return this._closePromise;\n this.closed = true;\n\n // Memory management.\n this.removeAllListeners();\n const closers = [];\n this._closers.forEach(closerList => closerList.forEach(closer => {\n const promise = closer();\n if (promise instanceof Promise) closers.push(promise);\n }));\n this._streams.forEach(stream => stream.destroy());\n this._userIgnored = undefined;\n this._readyCount = 0;\n this._readyEmitted = false;\n this._watched.forEach(dirent => dirent.dispose());\n ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => {\n this[`_${key}`].clear();\n });\n\n this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve();\n return this._closePromise;\n}\n\n/**\n * Expose list of watched paths\n * @returns {Object} for chaining\n*/\ngetWatched() {\n const watchList = {};\n this._watched.forEach((entry, dir) => {\n const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir;\n watchList[key || ONE_DOT] = entry.getChildren().sort();\n });\n return watchList;\n}\n\nemitWithAll(event, args) {\n this.emit(...args);\n if (event !== EV_ERROR) this.emit(EV_ALL, ...args);\n}\n\n// Common helpers\n// --------------\n\n/**\n * Normalize and emit events.\n * Calling _emit DOES NOT MEAN emit() would be called!\n * @param {EventName} event Type of event\n * @param {Path} path File or directory path\n * @param {*=} val1 arguments to be passed with event\n * @param {*=} val2\n * @param {*=} val3\n * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\nasync _emit(event, path, val1, val2, val3) {\n if (this.closed) return;\n\n const opts = this.options;\n if (isWindows) path = sysPath.normalize(path);\n if (opts.cwd) path = sysPath.relative(opts.cwd, path);\n /** @type Array<any> */\n const args = [event, path];\n if (val3 !== undefined) args.push(val1, val2, val3);\n else if (val2 !== undefined) args.push(val1, val2);\n else if (val1 !== undefined) args.push(val1);\n\n const awf = opts.awaitWriteFinish;\n let pw;\n if (awf && (pw = this._pendingWrites.get(path))) {\n pw.lastChange = new Date();\n return this;\n }\n\n if (opts.atomic) {\n if (event === EV_UNLINK) {\n this._pendingUnlinks.set(path, args);\n setTimeout(() => {\n this._pendingUnlinks.forEach((entry, path) => {\n this.emit(...entry);\n this.emit(EV_ALL, ...entry);\n this._pendingUnlinks.delete(path);\n });\n }, typeof opts.atomic === 'number' ? opts.atomic : 100);\n return this;\n }\n if (event === EV_ADD && this._pendingUnlinks.has(path)) {\n event = args[0] = EV_CHANGE;\n this._pendingUnlinks.delete(path);\n }\n }\n\n if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) {\n const awfEmit = (err, stats) => {\n if (err) {\n event = args[0] = EV_ERROR;\n args[1] = err;\n this.emitWithAll(event, args);\n } else if (stats) {\n // if stats doesn't exist the file must have been deleted\n if (args.length > 2) {\n args[2] = stats;\n } else {\n args.push(stats);\n }\n this.emitWithAll(event, args);\n }\n };\n\n this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit);\n return this;\n }\n\n if (event === EV_CHANGE) {\n const isThrottled = !this._throttle(EV_CHANGE, path, 50);\n if (isThrottled) return this;\n }\n\n if (opts.alwaysStat && val1 === undefined &&\n (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE)\n ) {\n const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path;\n let stats;\n try {\n stats = await stat(fullPath);\n } catch (err) {}\n // Suppress event when fs_stat fails, to avoid sending undefined 'stat'\n if (!stats || this.closed) return;\n args.push(stats);\n }\n this.emitWithAll(event, args);\n\n return this;\n}\n\n/**\n * Common handler for errors\n * @param {Error} error\n * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\n_handleError(error) {\n const code = error && error.code;\n if (error && code !== 'ENOENT' && code !== 'ENOTDIR' &&\n (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES'))\n ) {\n this.emit(EV_ERROR, error);\n }\n return error || this.closed;\n}\n\n/**\n * Helper utility for throttling\n * @param {ThrottleType} actionType type being throttled\n * @param {Path} path being acted upon\n * @param {Number} timeout duration of time to suppress duplicate actions\n * @returns {Object|false} tracking object or false if action should be suppressed\n */\n_throttle(actionType, path, timeout) {\n if (!this._throttled.has(actionType)) {\n this._throttled.set(actionType, new Map());\n }\n\n /** @type {Map<Path, Object>} */\n const action = this._throttled.get(actionType);\n /** @type {Object} */\n const actionPath = action.get(path);\n\n if (actionPath) {\n actionPath.count++;\n return false;\n }\n\n let timeoutObject;\n const clear = () => {\n const item = action.get(path);\n const count = item ? item.count : 0;\n action.delete(path);\n clearTimeout(timeoutObject);\n if (item) clearTimeout(item.timeoutObject);\n return count;\n };\n timeoutObject = setTimeout(clear, timeout);\n const thr = {timeoutObject, clear, count: 0};\n action.set(path, thr);\n return thr;\n}\n\n_incrReadyCount() {\n return this._readyCount++;\n}\n\n/**\n * Awaits write operation to finish.\n * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback.\n * @param {Path} path being acted upon\n * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished\n * @param {EventName} event\n * @param {Function} awfEmit Callback to be called when ready for event to be emitted.\n */\n_awaitWriteFinish(path, threshold, event, awfEmit) {\n let timeoutHandler;\n\n let fullPath = path;\n if (this.options.cwd && !sysPath.isAbsolute(path)) {\n fullPath = sysPath.join(this.options.cwd, path);\n }\n\n const now = new Date();\n\n const awaitWriteFinish = (prevStat) => {\n fs.stat(fullPath, (err, curStat) => {\n if (err || !this._pendingWrites.has(path)) {\n if (err && err.code !== 'ENOENT') awfEmit(err);\n return;\n }\n\n const now = Number(new Date());\n\n if (prevStat && curStat.size !== prevStat.size) {\n this._pendingWrites.get(path).lastChange = now;\n }\n const pw = this._pendingWrites.get(path);\n const df = now - pw.lastChange;\n\n if (df >= threshold) {\n this._pendingWrites.delete(path);\n awfEmit(undefined, curStat);\n } else {\n timeoutHandler = setTimeout(\n awaitWriteFinish,\n this.options.awaitWriteFinish.pollInterval,\n curStat\n );\n }\n });\n };\n\n if (!this._pendingWrites.has(path)) {\n this._pendingWrites.set(path, {\n lastChange: now,\n cancelWait: () => {\n this._pendingWrites.delete(path);\n clearTimeout(timeoutHandler);\n return event;\n }\n });\n timeoutHandler = setTimeout(\n awaitWriteFinish,\n this.options.awaitWriteFinish.pollInterval\n );\n }\n}\n\n_getGlobIgnored() {\n return [...this._ignoredPaths.values()];\n}\n\n/**\n * Determines whether user has asked to ignore this path.\n * @param {Path} path filepath or dir\n * @param {fs.Stats=} stats result of fs.stat\n * @returns {Boolean}\n */\n_isIgnored(path, stats) {\n if (this.options.atomic && DOT_RE.test(path)) return true;\n if (!this._userIgnored) {\n const {cwd} = this.options;\n const ign = this.options.ignored;\n\n const ignored = ign && ign.map(normalizeIgnored(cwd));\n const paths = arrify(ignored)\n .filter((path) => typeof path === STRING_TYPE && !isGlob(path))\n .map((path) => path + SLASH_GLOBSTAR);\n const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths);\n this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS);\n }\n\n return this._userIgnored([path, stats]);\n}\n\n_isntIgnored(path, stat) {\n return !this._isIgnored(path, stat);\n}\n\n/**\n * Provides a set of common helpers and properties relating to symlink and glob handling.\n * @param {Path} path file, directory, or glob pattern being watched\n * @param {Number=} depth at any depth > 0, this isn't a glob\n * @returns {WatchHelper} object containing helpers for this path\n */\n_getWatchHelpers(path, depth) {\n const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path);\n const follow = this.options.followSymlinks;\n\n return new WatchHelper(path, watchPath, follow, this);\n}\n\n// Directory helpers\n// -----------------\n\n/**\n * Provides directory tracking objects\n * @param {String} directory path of the directory\n * @returns {DirEntry} the directory's tracking object\n */\n_getWatchedDir(directory) {\n if (!this._boundRemove) this._boundRemove = this._remove.bind(this);\n const dir = sysPath.resolve(directory);\n if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove));\n return this._watched.get(dir);\n}\n\n// File helpers\n// ------------\n\n/**\n * Check for read permissions.\n * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405\n * @param {fs.Stats} stats - object, result of fs_stat\n * @returns {Boolean} indicates whether the file can be read\n*/\n_hasReadPermissions(stats) {\n if (this.options.ignorePermissionErrors) return true;\n\n // stats.mode may be bigint\n const md = stats && Number.parseInt(stats.mode, 10);\n const st = md & 0o777;\n const it = Number.parseInt(st.toString(8)[0], 10);\n return Boolean(4 & it);\n}\n\n/**\n * Handles emitting unlink events for\n * files and directories, and via recursion, for\n * files and directories within directories that are unlinked\n * @param {String} directory within which the following item is located\n * @param {String} item base path of item/directory\n * @returns {void}\n*/\n_remove(directory, item, isDirectory) {\n // if what is being deleted is a directory, get that directory's paths\n // for recursive deleting and cleaning of watched object\n // if it is not a directory, nestedDirectoryChildren will be empty array\n const path = sysPath.join(directory, item);\n const fullPath = sysPath.resolve(path);\n isDirectory = isDirectory != null\n ? isDirectory\n : this._watched.has(path) || this._watched.has(fullPath);\n\n // prevent duplicate handling in case of arriving here nearly simultaneously\n // via multiple paths (such as _handleFile and _handleDir)\n if (!this._throttle('remove', path, 100)) return;\n\n // if the only watched file is removed, watch for its return\n if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) {\n this.add(directory, item, true);\n }\n\n // This will create a new entry in the watched object in either case\n // so we got to do the directory check beforehand\n const wp = this._getWatchedDir(path);\n const nestedDirectoryChildren = wp.getChildren();\n\n // Recursively remove children directories / files.\n nestedDirectoryChildren.forEach(nested => this._remove(path, nested));\n\n // Check if item was on the watched list and remove it\n const parent = this._getWatchedDir(directory);\n const wasTracked = parent.has(item);\n parent.remove(item);\n\n // Fixes issue #1042 -> Relative paths were detected and added as symlinks\n // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612),\n // but never removed from the map in case the path was deleted.\n // This leads to an incorrect state if the path was recreated:\n // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553\n if (this._symlinkPaths.has(fullPath)) {\n this._symlinkPaths.delete(fullPath);\n }\n\n // If we wait for this file to be fully written, cancel the wait.\n let relPath = path;\n if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path);\n if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {\n const event = this._pendingWrites.get(relPath).cancelWait();\n if (event === EV_ADD) return;\n }\n\n // The Entry will either be a directory that just got removed\n // or a bogus entry to a file, in either case we have to remove it\n this._watched.delete(path);\n this._watched.delete(fullPath);\n const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK;\n if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path);\n\n // Avoid conflicts if we later create another file with the same name\n if (!this.options.useFsEvents) {\n this._closePath(path);\n }\n}\n\n/**\n * Closes all watchers for a path\n * @param {Path} path\n */\n_closePath(path) {\n this._closeFile(path)\n const dir = sysPath.dirname(path);\n this._getWatchedDir(dir).remove(sysPath.basename(path));\n}\n\n/**\n * Closes only file-specific watchers\n * @param {Path} path\n */\n_closeFile(path) {\n const closers = this._closers.get(path);\n if (!closers) return;\n closers.forEach(closer => closer());\n this._closers.delete(path);\n}\n\n/**\n *\n * @param {Path} path\n * @param {Function} closer\n */\n_addPathCloser(path, closer) {\n if (!closer) return;\n let list = this._closers.get(path);\n if (!list) {\n list = [];\n this._closers.set(path, list);\n }\n list.push(closer);\n}\n\n_readdirp(root, opts) {\n if (this.closed) return;\n const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts};\n let stream = readdirp(root, options);\n this._streams.add(stream);\n stream.once(STR_CLOSE, () => {\n stream = undefined;\n });\n stream.once(STR_END, () => {\n if (stream) {\n this._streams.delete(stream);\n stream = undefined;\n }\n });\n return stream;\n}\n\n}\n\n// Export FSWatcher class\nexports.FSWatcher = FSWatcher;\n\n/**\n * Instantiates watcher with paths to be tracked.\n * @param {String|Array<String>} paths file/directory paths and/or globs\n * @param {Object=} options chokidar opts\n * @returns an instance of FSWatcher for chaining.\n */\nconst watch = (paths, options) => {\n const watcher = new FSWatcher(options);\n watcher.add(paths);\n return watcher;\n};\n\nexports.watch = watch;\n","/**\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\nmodule.exports = isObject;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\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\nmodule.exports = root;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\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\nmodule.exports = getRawTag;\n","/** 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\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\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\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","import VError from 'verror';\nimport type { VariantOf } from 'variant';\nimport type { CliErrorCode } from './cli-error-codes.js';\n\nconst { WError } = VError;\n\nexport type CliErrorCodeType = VariantOf<typeof CliErrorCode>;\n\nexport class CliError extends WError {\n public cliCode: CliErrorCodeType;\n\n constructor(options: {\n code: CliErrorCodeType;\n cause?: unknown;\n info?: Record<string, unknown>;\n }) {\n const normalizedCause =\n options.cause instanceof Error\n ? options.cause\n : new Error(JSON.stringify(options.cause));\n super(\n {\n name: options.code.type,\n cause: normalizedCause,\n info: options.info,\n },\n options.code.type\n );\n\n this.cliCode = options.code;\n this.name = options.code.type;\n if (process.env.NODE_ENV === 'test') {\n // If we get an unexpected error during tests, it helps to see the full\n // stack trace without debugging. This is especially useful when the error\n // is thrown in CI\n this.stack =\n this.stack + '\\ncaused by: ' + VError.fullStack(normalizedCause);\n }\n }\n}\n","import { fields, variant } from 'variant';\nimport type { ZodError } from 'zod';\n\nexport const CliSystemErrorCode = variant({\n FailedToGetDeviceCode: {},\n FailedToGetAuthToken: {},\n FailedToRenewAuthToken: {},\n FailedToRefreshTokenForSite: {},\n FailedToRevokeRefreshToken: fields<{ email: string }>(),\n UnknownFailure: fields<{ error: unknown }>(),\n FailedToFetchPackageJson: {},\n FailedToGetDeveloperApps: {},\n FailedToUpdateTelemetryConfig: {},\n FailedToSyncToRevision: fields<{ revision: string }>(),\n FailedToCreateVersion: {},\n FailedToReadCache: fields<{ path: string }>(),\n FailedToWriteCache: fields<{ path: string }>(),\n UploadApplicationFailed: {},\n FailedToCreateDevCenterApp: {},\n GridAppFailedToUpdateFiles: {},\n FailedToCreateGridApp: fields<{ error?: string }>(),\n FailedToGetPackageDetails: {},\n InvalidCreateAppResponse: {},\n InvalidDeployAppResponse: {},\n InvalidGetDeploymentResponse: {},\n FailedToGetPagesDiff: {},\n InvalidViteBuildOutput: {},\n ViteModuleBundleNotFound: {},\n ViteFileNotFoundInOutput: fields<{ fileName: string }>(),\n FailedToCreatePresignedUrl: {},\n FailedToUploadApplicationFiles: {},\n FailedToVerifyDeployment: {},\n FailedToGetUserInfo: {},\n FailedToCreateDevelopmentSite: {},\n FailedToGetDevelopmentSites: {},\n FailedToGetDevelopmentSitesLimit: {},\n FailedToGetAppValidity: {},\n FailedToQuerySites: {},\n FailedToGetSite: {},\n FailedToDeploySite: {},\n FailedToPublishDeployment: {},\n FailedToCheckIfAppInstalled: {},\n TypeErrorInvalidUrl: {},\n FailedToGenerateSelfsignedCertificate: {},\n FailedToResolveViteOrigin: {},\n FailedToCreateAppRelease: {},\n FailedToUpdateAppRelease: {},\n FailedToGetResolveNpmDependenciesResult: {},\n FailedToResolveNpmDependencies: {},\n FailedToCheckDeprecatedStatus: {},\n FailedToCreateSiteOverride: {},\n FailedToGetDeploymentStatus: {},\n FailedToGetPipelineErrorInfo: {},\n});\n\nexport const CliUserErrorCode = variant({\n LatestVersionOfCreateAppRequired: fields<{\n currentVersion: string;\n latestVersion: string;\n updateCommand: string;\n }>(),\n EmptyDirectoryRequiredAppGeneration: fields<{ folder: string }>(),\n InvalidNewPackageName: fields<{\n packageName: string;\n validations: Array<string>;\n }>(),\n UnsupportedPackageManager: fields<{\n packageManagerName?: string;\n }>(),\n UnsupportedPackageManagerWorkspaces: fields<{\n packageManagerName: string;\n }>(),\n FailedAddingPackageToWorkspace: {},\n SitePermissionDenied: fields<{ siteId: string }>(),\n AppPermissionDenied: fields<{ appId: string }>(),\n BuiltProjectNeeded: {},\n UnsupportedWixInstallCommand: {},\n WixUninstallMissingPackageName: {},\n FailedToReadJson: fields<{ filePath: string; cause: unknown }>(),\n FailedToWriteJson: fields<{ filePath: string; cause: unknown }>(),\n InvalidJsonFile: fields<{\n filePath: string;\n cause: unknown;\n }>(),\n FailedToWriteWixLock: {},\n InvalidVeloConfigJson: fields<{ configFilename: string; cause: unknown }>(),\n DashboardPageConfigNotFound: fields<{ configPath: string }>(),\n EmbeddedScriptConfigNotFound: fields<{ configPath: string }>(),\n NoExtensionsFound: {},\n CustomElementConfigNotFound: fields<{ configPath: string }>(),\n NoPagesDirectoryFound: fields<{ srcDir: string }>(),\n DashboardPluginConfigNotFound: fields<{ configPath: string }>(),\n DashboardMenuPluginConfigNotFound: fields<{ configPath: string }>(),\n DashboardModalConfigNotFound: fields<{ configPath: string }>(),\n InvalidConfigSchemaError: fields<{\n configPath: string;\n zodError: ZodError;\n }>(),\n InvalidParamsOverrideSchemaError: fields<{\n paramsOverridePath: string;\n zodError: ZodError;\n }>(),\n PermissionDenied: {},\n SiteSelectorTimedout: {},\n FailedToReadProjectFiles: fields<{ cause: unknown }>(),\n FailedToCreateVersionForSubmittedApp: {},\n GridAppFilesMaxLengthExcceeded: fields<{\n filePaths: string[];\n maxSizeViolationsData: {\n expectedSize?: number;\n files: {\n fileIndex: number;\n receivedSize: number;\n }[];\n } | null;\n }>(),\n DeviceCodeTimedOut: {},\n DuplicateComponentIdsError: fields<{\n issues: {\n id: string;\n components: Array<{\n name: string;\n path: string;\n type:\n | 'page'\n | 'plugin'\n | 'menu-plugin'\n | 'modal'\n | 'sidebar-category'\n | 'embedded-script'\n | 'custom-element';\n }>;\n suggestedId: string;\n }[];\n }>(),\n FailedToSaveDevelopmentSite: fields<{ path: string }>(),\n FailedToBuildApp: {},\n FailedToInitializeGitRepo: fields<{ cause: unknown }>(),\n FailedToInstallDependencies: fields<{ cause: unknown }>(),\n FailedToCommitChanges: fields<{ cause: unknown }>(),\n FailedToDeleteAuthData: fields<{ cause: unknown }>(),\n FailedToDeleteLegacyAuthData: fields<{ cause: unknown }>(),\n FailedToSaveAuthData: fields<{ cause: unknown }>(),\n FailedToRenewAuthTokenSiteNotFound: fields<{ siteId: string }>(),\n FailedToInstallPackage: fields<{ packageName: string; cause: unknown }>(),\n FailedToInstallPackages: fields<{ cause: unknown }>(),\n FailedToUninstallPackage: fields<{ packageName: string; cause: unknown }>(),\n FailedMigrationToAnyNpm: {},\n DeprecatedVersion: fields<{\n currentVersion: string;\n }>(),\n TemplatePathNotFound: fields<{ templatePath: string }>(),\n FailedToCloneRepo: fields<{ cause: unknown }>(),\n InvalidGitUrl: fields<{ url: string }>(),\n AuthenticationRequired: {},\n SiteConfiguredRequired: {},\n NonInteractiveTerminal: {},\n FailedToWatchFiles: fields<{\n cause: unknown;\n }>(),\n CliAppVersionMismatch: fields<{\n cliVersion: string;\n cliAppVersion: string;\n }>(),\n});\n\nexport const CliValidationError = variant({\n InvalidDashboardPageRoute: fields<{ route: string; errorMessage: string }>(),\n InvalidEmbeddedScriptFolder: fields<{\n path: string;\n errorMessage: string;\n }>(),\n InvalidEmbeddedScriptTemplate: fields<{\n templateFilename: string;\n errorMessage: string;\n }>(),\n InvalidCustomElementTagName: fields<{\n tagName: string;\n errorMessage: string;\n }>(),\n});\n\nexport const CliErrorCode = variant({\n ...CliSystemErrorCode,\n ...CliUserErrorCode,\n ...CliValidationError,\n});\n","export { CliError } from './cli-error.js';\nexport type { CliErrorCodeType } from './cli-error.js';\nexport { CliErrorCode, CliSystemErrorCode } from './cli-error-codes.js';\nexport { isCliSystemError, isCliError } from './is-cli-error.js';\nexport { normalizeError } from './normalize-error.js';\n","import { isOfVariant } from 'variant';\nimport type { CliError } from './cli-error.js';\nimport { CliErrorCode, CliSystemErrorCode } from './cli-error-codes.js';\n\nexport function isCliError(error: unknown): error is CliError {\n if (error && typeof error === 'object' && 'cliCode' in error) {\n return isOfVariant(error.cliCode, CliErrorCode);\n }\n\n return false;\n}\n\nexport function isCliSystemError(error: CliError): boolean {\n return isOfVariant(error.cliCode, CliSystemErrorCode);\n}\n","import { isOfVariant } from 'variant';\nimport VError from 'verror';\nimport { CliError } from './cli-error.js';\nimport { isCliError } from './is-cli-error.js';\nimport { CliErrorCode, CliUserErrorCode } from './cli-error-codes.js';\n\nfunction getFirstUserError(error: Error): CliError | null {\n if (isCliError(error) && isOfVariant(error.cliCode, CliUserErrorCode)) {\n return error;\n }\n\n const nestedError = VError.cause(error);\n\n return nestedError ? getFirstUserError(nestedError) : null;\n}\n\nexport function normalizeError(error: unknown) {\n const cliError = isCliError(error)\n ? error\n : new CliError({\n code: CliErrorCode.UnknownFailure({ error }),\n });\n\n const firstUserError = getFirstUserError(cliError);\n\n // If there's a nested user error in the chain, it doesn't matter if it is\n // being wrapped by other errors later. When throwing such error, the intent\n // is always to show that error to the user, not any wrapping errors.\n return firstUserError ?? cliError;\n}\n","import { join } from 'node:path';\nimport { getGitIgnoredFolder } from '@wix/velo-github-layout-definitions';\n\nexport const SENTRY_DSN =\n 'https://d15bb47ad34c428f92d0ac434a5734eb@o37417.ingest.sentry.io/4504116669317120';\nexport const CONFIG_FILENAME = 'wix.config.json';\nexport const WIX_LOCK_FILENAME = 'wix.lock';\nexport const PACKAGE_JSON_FILENAME = 'package.json';\nexport const VERSION_FILE_NAME = 'version.cache.json';\n\nexport function getDebugLogFilePath(projectFolder: string) {\n return join(getGitIgnoredFolder(projectFolder), 'debug.log');\n}\n","// src/index.ts\nimport { join } from \"node:path\";\nfunction getGitIgnoredFolder(projectFolder = \"\") {\n return join(projectFolder, \".wix\");\n}\nfunction getTypesDir(projectFolder) {\n return join(getGitIgnoredFolder(projectFolder), \"types\");\n}\nfunction getPageTypesDir(projectFolder, pageId) {\n return join(getTypesDir(projectFolder), pageId);\n}\nfunction getPageConfigFilename(projectFolder, pageId) {\n return join(getPageTypesDir(projectFolder, pageId), `jsconfig.json`);\n}\nfunction getBackendConfigPath(projectFolder) {\n return join(getTypesDir(projectFolder), \"backend\", \"jsconfig.json\");\n}\nfunction getPublicConfigPath(projectFolder) {\n return join(getTypesDir(projectFolder), \"public\", \"jsconfig.json\");\n}\nfunction getSourceFolder(projectFolder) {\n return join(projectFolder, \"src\");\n}\nfunction getPagesFolder(projectFolder = \"\") {\n return join(getSourceFolder(projectFolder), \"pages\");\n}\nfunction getPublicFolder(projectFolder = \"\") {\n return join(getSourceFolder(projectFolder), \"public\");\n}\nfunction getBackendFolder(projectFolder = \"\") {\n return join(getSourceFolder(projectFolder), \"backend\");\n}\nvar SLASH = \"/\";\nvar ENCODED_SLASH = \"\\\\\\\\\";\nfunction encodeSlash(string) {\n return string.replace(new RegExp(SLASH, \"g\"), ENCODED_SLASH);\n}\nfunction getPageCodeFilePath(projectFolder, page, shouldEscapeSlash = false) {\n const pageTitle = shouldEscapeSlash ? encodeSlash(page.pageTitle) : page.pageTitle;\n return join(\n getPagesFolder(projectFolder),\n `${[pageTitle, page.pageMetaData.pageId].filter(Boolean).join(\".\")}.js`\n );\n}\nexport {\n encodeSlash,\n getBackendConfigPath,\n getBackendFolder,\n getGitIgnoredFolder,\n getPageCodeFilePath,\n getPageConfigFilename,\n getPageTypesDir,\n getPagesFolder,\n getPublicConfigPath,\n getPublicFolder,\n getSourceFolder,\n getTypesDir\n};\n","import React, {\n type FC,\n type ReactNode,\n createContext,\n useContext,\n useState,\n useEffect,\n} from 'react';\nimport type { WixConfig } from '@wix/cli-app-definitions';\nimport { readWixConfig } from './files/wix.config.js';\nimport type { DevCenterComponent } from './dev-center/components/dev-center-component.js';\nimport { loadDevCenterComponents } from './dev-center/components/load-dev-center-components.js';\nimport { ProjectModelWatcher } from './app-manifest/project-model-watcher.js';\n\nexport type ProjectModel = {\n config: WixConfig;\n projectFolder: string;\n components: DevCenterComponent[];\n};\n\nexport async function loadProjectModel(\n projectFolder: string\n): Promise<ProjectModel> {\n const config = await readWixConfig();\n\n return {\n projectFolder,\n config,\n components: await loadDevCenterComponents({\n projectFolder,\n config,\n }),\n };\n}\n\ninterface ProjectModelState {\n model: ProjectModel;\n watcher: ProjectModelWatcher;\n}\n\nconst ProjectModelContext = createContext<ProjectModelState | null>(null);\n\ninterface Props {\n watchForChanges?: boolean;\n value: ProjectModel;\n children: ReactNode;\n}\n\nexport const ProjectModelProvider: FC<Props> = (props) => {\n const [model, setModel] = useState(props.value);\n const [watcher] = useState(() => {\n const watcher = new ProjectModelWatcher(model);\n\n if (props.watchForChanges === true) {\n watcher.watch().onChange((newModel, changeType) => {\n if (changeType === 'model-updated') {\n setModel(newModel);\n }\n });\n }\n\n return watcher;\n });\n\n useEffect(() => {\n return () => {\n watcher.close();\n };\n }, [watcher]);\n\n return (\n <ProjectModelContext.Provider value={{ model, watcher }}>\n {props.children}\n </ProjectModelContext.Provider>\n );\n};\n\nexport function useProjectModel(): ProjectModelState {\n const context = useContext(ProjectModelContext);\n if (context === null) {\n throw new Error(\n 'useProjectModel() cannot be used without an <ProjectModelProvider>'\n );\n }\n return context;\n}\n","import type { WixConfig } from '@wix/cli-app-definitions';\nimport { CONFIG_FILENAME } from '@wix/cli-core-definitions';\nimport { wixConfigSchema } from '@wix/cli-app-definitions';\nimport { readJson, writeJson } from '@wix/cli-fs';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\n\nexport async function readWixConfig(): Promise<WixConfig> {\n const configFile = await readJson(CONFIG_FILENAME);\n const config = wixConfigSchema.safeParse(configFile);\n\n if (config.success) {\n return config.data;\n }\n\n throw new CliError({\n code: CliErrorCode.InvalidConfigSchemaError({\n configPath: CONFIG_FILENAME,\n zodError: config.error,\n }),\n });\n}\n\nexport async function saveWixConfig(config: WixConfig): Promise<void> {\n return writeJson(CONFIG_FILENAME, config, { spaces: 2 });\n}\n","import { join } from 'node:path';\nimport { fields, variant, type VariantOf } from 'variant';\nimport { z } from 'zod';\nimport {\n EmbedCategory,\n EmbeddedScriptPlacement,\n} from '@wix/ambassador-devcenter-components-v1-component/types';\n\nconst DIST_DIR = 'dist';\nconst GIT_IGNORED_DIR = '.wix';\nconst SRC_DIR = 'src';\n\nexport const APP_CONFIG_PATH = join(GIT_IGNORED_DIR, 'app.config.json');\nexport const DEV_LOG_PATH = join(GIT_IGNORED_DIR, 'dev.log');\n\nconst DASHBOARD_DIR = join(SRC_DIR, 'dashboard');\nexport const DASHBOARD_PAGES_DIR = join(DASHBOARD_DIR, 'pages');\nexport const DASHBOARD_PLUGINS_DIR = join(DASHBOARD_DIR, 'plugins');\nexport const DASHBOARD_MENU_PLUGINS_DIR = join(DASHBOARD_DIR, 'menu-plugins');\nexport const DASHBOARD_MODALS_DIR = join(DASHBOARD_DIR, 'modals');\n\nconst SITE_DIR = join(SRC_DIR, 'site');\nconst SITE_WIDGETS_DIR = join(SITE_DIR, 'widgets');\nexport const EMBEDDED_SCRIPTS_DIR = join(SITE_DIR, 'embedded-scripts');\nexport const CUSTOM_ELEMENTS_DIR = join(SITE_WIDGETS_DIR, 'custom-elements');\n\nexport function getDashboardPagesDir(projectFolder: string) {\n return join(projectFolder, DASHBOARD_PAGES_DIR);\n}\n\nexport function getDashboardPluginsDir(projectFolder: string) {\n return join(projectFolder, DASHBOARD_PLUGINS_DIR);\n}\n\nexport function getDashboardMenuPluginsDir(projectFolder: string) {\n return join(projectFolder, DASHBOARD_MENU_PLUGINS_DIR);\n}\n\nexport function getDashboardModalsDir(projectFolder: string) {\n return join(projectFolder, DASHBOARD_MODALS_DIR);\n}\n\nexport function getEmbeddedScriptsDir(projectFolder: string) {\n return join(projectFolder, EMBEDDED_SCRIPTS_DIR);\n}\n\nexport function getCustomElementsDir(projectFolder: string) {\n return join(projectFolder, CUSTOM_ELEMENTS_DIR);\n}\n\nfunction getDistFolder(projectFolder: string) {\n return join(projectFolder, DIST_DIR);\n}\n\nexport function getAppBuildFolder(projectFolder: string) {\n return join(getDistFolder(projectFolder), 'statics');\n}\n\nexport function getAppConfigPath(projectFolder: string) {\n return join(projectFolder, APP_CONFIG_PATH);\n}\n\nexport function getDevLogPath(projectFolder: string) {\n return join(projectFolder, DEV_LOG_PATH);\n}\n\nexport function getAppManifestPath(projectFolder: string) {\n return join(getDistFolder(projectFolder), 'devcenter', 'app-manifest.json');\n}\n\nexport const dashboardSidebarCategoryConfig = z.object({\n id: z.string(),\n label: z.string(),\n priority: z.number().int().optional(),\n});\n\nexport type DashboardSidebarCategoryConfig = z.infer<\n typeof dashboardSidebarCategoryConfig\n>;\n\nconst dashboardConfigSchema = z.object({\n sidebar: z\n .object({\n categories: z.array(dashboardSidebarCategoryConfig).optional(),\n })\n .optional(),\n});\n\nexport const wixConfigSchema = z\n .object({\n appId: z.string().uuid(),\n projectId: z.string(),\n sentryDSN: z.string().optional(),\n trusted: z.boolean().default(false),\n dashboard: dashboardConfigSchema.optional(),\n })\n .strict();\n\nexport type WixConfig = z.infer<typeof wixConfigSchema>;\n\nexport const appConfigSchema = z.object({\n siteId: z.string().uuid().optional(),\n devArmTag: z.string().optional(),\n devSiteOverrideId: z.string().optional(),\n});\nexport type AppConfig = z.infer<typeof appConfigSchema>;\n\nconst sidebarConfigSchema = z.object({\n disabled: z.boolean().optional(),\n categoryId: z.string().uuid().optional(),\n priority: z.number().int().optional(),\n whenActive: z\n .object({\n selectedPageId: z.string().optional(),\n hideSidebar: z.boolean().optional(),\n })\n .optional(),\n});\n\nexport const dashboardPageConfigSchema = z\n .object({\n id: z.string().uuid(),\n title: z.string().min(1),\n additionalRoutes: z.array(z.string()).optional(),\n requiredPermission: z.string().optional(),\n sidebar: sidebarConfigSchema.optional(),\n sentryDSN: z.string().optional(),\n experiments: z\n .object({\n enabledBy: z.string(),\n })\n .optional(),\n })\n .strict();\n\nexport type DashboardPageConfig = z.infer<typeof dashboardPageConfigSchema>;\n\nexport const dashboardModalConfigSchema = z\n .object({\n id: z.string().uuid(),\n title: z.string().min(1),\n requiredPermission: z.string().optional(),\n width: z.number().optional(),\n height: z.number().optional(),\n sentryDSN: z.string().optional(),\n })\n .strict();\n\nexport type DashboardModalConfig = z.infer<typeof dashboardModalConfigSchema>;\n\nexport const dashboardPluginConfigSchema = z.object({\n id: z.string().uuid(),\n title: z.string().min(1),\n requiredPermission: z.string().optional(),\n width: z.number().optional(),\n height: z.number().optional(),\n extends: z.string().uuid(),\n sentryDSN: z.string().optional(),\n});\n\nexport type DashboardPluginConfig = z.infer<typeof dashboardPluginConfigSchema>;\n\nexport const actionSchema = z\n .object({\n navigateToPage: z.object({\n pageId: z.string().uuid(),\n relativeUrl: z.string().optional(),\n }),\n openModal: z.object({\n componentId: z.string().uuid(),\n componentParams: z\n .record(z.string().min(1), z.string().min(1))\n .optional(),\n }),\n })\n .partial()\n .superRefine((data, ctx) => {\n if (!data.navigateToPage && !data.openModal) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'action must have either navigateToPage or openModal',\n });\n }\n });\n\nexport type ActionSchema = z.infer<typeof actionSchema>;\n\nexport const dashboardMenuPluginConfigSchema = z\n .object({\n id: z.string().uuid(),\n title: z.string().min(1),\n subtitle: z.string().max(200).optional(),\n iconKey: z.string().min(3).max(50).optional(),\n extends: z.string().uuid(),\n action: actionSchema,\n sentryDSN: z.string().optional(),\n requiredPermission: z.string().optional(),\n })\n .strict();\n\nexport type DashboardMenuPluginConfig = z.infer<\n typeof dashboardMenuPluginConfigSchema\n>;\n\nexport const embeddedScriptConfigSchema = z.object({\n id: z.string().uuid(),\n name: z.string().min(1),\n scriptType: z.enum([\n EmbedCategory.FUNCTIONAL,\n EmbedCategory.ESSENTIAL,\n EmbedCategory.ANALYTICS,\n EmbedCategory.ADVERTISING,\n ]),\n placement: z.enum([\n EmbeddedScriptPlacement.HEAD,\n EmbeddedScriptPlacement.BODY_START,\n EmbeddedScriptPlacement.BODY_END,\n ]),\n});\n\nexport type EmbeddedScriptConfig = z.infer<typeof embeddedScriptConfigSchema>;\n\nexport const PlatformType = variant({\n Site: {},\n Editor: {},\n Dashboard: fields<{ route?: string }>(),\n});\n\nexport type PlatformType = VariantOf<typeof PlatformType>;\n\nexport const customElementConfigSchema = z\n .object({\n id: z.string().uuid(),\n name: z.string().min(1),\n height: z.object({\n defaultHeight: z.number(),\n }),\n width: z.object({\n defaultWidth: z.number(),\n stretchByDefault: z.boolean().optional(),\n allowStretch: z.boolean().optional(),\n }),\n installation: z\n .object({\n autoAddToSite: z.boolean().optional(),\n essential: z.boolean().optional(),\n maxInstances: z.number().optional(),\n })\n .optional(),\n })\n .strict();\n\nexport type CustomElementConfig = z.infer<typeof customElementConfigSchema>;\n\nexport const embeddedScriptParamsOverrideSchema = z.record(z.string());\n\nexport type EmbeddedScriptParamsOverride = z.infer<\n typeof embeddedScriptParamsOverrideSchema\n>;\n","var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message || errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n syncPairs.push({\n key: await pair.key,\n value: await pair.value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" &&\n (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n if (typeof ctx.data === \"undefined\") {\n return { message: required_error !== null && required_error !== void 0 ? required_error : ctx.defaultError };\n }\n return { message: invalid_type_error !== null && invalid_type_error !== void 0 ? invalid_type_error : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[a-z][a-z0-9]*$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_+-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\nconst ipv4Regex = /^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/;\nconst ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\n// Adapted from https://stackoverflow.com/a/3143231\nconst datetimeRegex = (args) => {\n if (args.precision) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}Z$`);\n }\n }\n else if (args.precision === 0) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}Z$`);\n }\n }\n else {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?Z$`);\n }\n }\n};\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n }\n //\n );\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n syncPairs.push({\n key,\n value: await pair.value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return Object.keys(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else {\n return null;\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (this._def.values.indexOf(input.data) === -1) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values) {\n return ZodEnum.create(values);\n }\n exclude(values) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)));\n }\n}\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (nativeEnumValues.indexOf(input.data) === -1) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.issues.length) {\n return {\n status: \"dirty\",\n value: ctx.data,\n };\n }\n if (ctx.common.async) {\n return Promise.resolve(processed).then((processed) => {\n return this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n });\n }\n else {\n return this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc\n // effect: RefinementEffect<any>\n ) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n if (isValid(result)) {\n result.value = Object.freeze(result.value);\n }\n return result;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\nconst custom = (check, params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) => {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n};\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n ZodReadonly: ZodReadonly,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodReadonly, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n",null,"import { statSync } from 'node:fs';\nimport { access, readFile, writeFile, mkdir, stat } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport { EOL } from 'node:os';\nimport { create } from 'tar';\nimport VError from 'verror';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\n\nexport function toJsonString(object: unknown, opts?: { spaces: number }) {\n return JSON.stringify(object, null, opts?.spaces).concat(EOL);\n}\n\nexport async function writeJson(\n filePath: string,\n object: unknown,\n opts?: { spaces: number }\n) {\n try {\n const str = toJsonString(object, opts);\n await mkdir(dirname(filePath), { recursive: true });\n await writeFile(filePath, str, 'utf-8');\n } catch (e) {\n throw new CliError({\n code: CliErrorCode.FailedToWriteJson({\n filePath,\n cause: e,\n }),\n cause: e,\n });\n }\n}\n\nexport async function readJson(file: string): Promise<unknown> {\n let content = null;\n try {\n content = await readFile(file, 'utf-8');\n } catch (e) {\n throw new CliError({\n code: CliErrorCode.FailedToReadJson({\n filePath: file,\n cause: e,\n }),\n });\n }\n\n try {\n return JSON.parse(content);\n } catch (e) {\n throw new CliError({\n code: CliErrorCode.InvalidJsonFile({\n filePath: file,\n cause: e,\n }),\n });\n }\n}\n\nexport function pathExists(path: string) {\n return access(path)\n .then(() => true)\n .catch(() => false);\n}\n\nexport async function outputFile(file: string, content: string) {\n await mkdir(dirname(file), { recursive: true });\n await writeFile(file, content, 'utf-8');\n}\n\nexport type ArchiveResponse = {\n fileCount: number;\n compressedSizeInKb: number;\n uncompressedSizeInKb: number;\n};\n\nexport async function createArchive(\n path: string,\n outputFilePath: string\n): Promise<ArchiveResponse> {\n if (!(await pathExists(path))) {\n throw new VError({ name: 'PathNotFound' }, `Folder not found at '${path}'`);\n }\n\n let fileCount = 0;\n let uncompressedSizeInBytes = 0;\n\n await create(\n {\n strict: true,\n gzip: true,\n portable: true,\n cwd: path,\n filter(entry) {\n const fullPath = join(path, entry);\n const stat = statSync(fullPath);\n\n if (stat.isFile()) {\n fileCount++;\n uncompressedSizeInBytes += stat.size;\n }\n\n return true;\n },\n file: outputFilePath,\n },\n ['.']\n );\n\n const compressedSizeInKb = (await stat(outputFilePath)).size / 1024;\n\n return {\n fileCount,\n compressedSizeInKb: Math.round(compressedSizeInKb),\n uncompressedSizeInKb: Math.round(uncompressedSizeInBytes / 1024),\n };\n}\n","import type { WixConfig } from '@wix/cli-app-definitions';\nimport {\n loadDashboardMenuPluginComponents,\n loadDashboardPluginComponents,\n loadDashboardModalComponents,\n loadDashboardPageComponents,\n loadDashboardSidebarCategoryComponent,\n} from './dashboard/components.js';\nimport { loadEmbeddedScriptComponents } from './site/components.js';\nimport { loadCustomElementComponents } from './site/components.js';\nimport type { DevCenterComponent } from './dev-center-component.js';\n\nexport async function loadDevCenterComponents({\n projectFolder,\n config,\n}: {\n projectFolder: string;\n config: WixConfig;\n}): Promise<DevCenterComponent[]> {\n const dashboardPages = await loadDashboardPageComponents(projectFolder);\n const dashboardPlugins = await loadDashboardPluginComponents(projectFolder);\n const dashboardMenuPlugins = await loadDashboardMenuPluginComponents(\n projectFolder\n );\n const dashboardModals = await loadDashboardModalComponents(projectFolder);\n const embeddedScripts = await loadEmbeddedScriptComponents(projectFolder);\n const dashboardSidebarCategories =\n loadDashboardSidebarCategoryComponent(config);\n const customElements = await loadCustomElementComponents(projectFolder);\n\n return [\n ...dashboardPages,\n ...dashboardPlugins,\n ...dashboardMenuPlugins,\n ...dashboardModals,\n ...embeddedScripts,\n ...dashboardSidebarCategories,\n ...customElements,\n ];\n}\n","import { join } from 'node:path';\nimport { globby } from 'globby';\nimport type { WixConfig } from '@wix/cli-app-definitions';\nimport {\n DASHBOARD_MENU_PLUGINS_DIR,\n DASHBOARD_PAGES_DIR,\n DASHBOARD_PLUGINS_DIR,\n DASHBOARD_MODALS_DIR,\n PlatformType,\n} from '@wix/cli-app-definitions';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { DevCenterComponent } from '../dev-center-component.js';\nimport {\n loadDashboardPluginComponentConfig,\n loadDashboardMenuPluginComponentConfig,\n loadDashboardModalComponentConfig,\n loadDashboardPageComponentConfig,\n} from './config.js';\nimport { normalizeGlobbyPattern, deriveRoute } from '../path.js';\nimport { createDashboardRouteValidation } from '../validations';\n\nexport const DASHBOARD_PAGES_PATTERN = join(\n DASHBOARD_PAGES_DIR,\n '**',\n 'page.{ts,tsx,js,jsx}'\n);\n\nexport const DASHBOARD_PLUGINS_PATTERN = join(\n DASHBOARD_PLUGINS_DIR,\n '**',\n 'plugin.{ts,tsx,js,jsx}'\n);\n\nexport const DASHBOARD_MENU_PLUGINS_PATTERN = join(\n DASHBOARD_MENU_PLUGINS_DIR,\n '**',\n 'plugin.json'\n);\n\nexport const DASHBOARD_MODALS_PATTERN = join(\n DASHBOARD_MODALS_DIR,\n '**',\n 'modal.{ts,tsx,js,jsx}'\n);\n\nasync function loadDashboardPageComponent(\n projectFolder: string,\n relativePath: string\n): Promise<DevCenterComponent<'DashboardPage'>> {\n const pageConfig = await loadDashboardPageComponentConfig(relativePath);\n const route = deriveRoute(projectFolder, join(projectFolder, relativePath));\n\n return DevCenterComponent.DashboardPage({\n ...pageConfig,\n route,\n relativePath,\n platforms: [PlatformType.Dashboard()],\n });\n}\n\nexport async function loadDashboardPageComponents(\n projectFolder: string\n): Promise<DevCenterComponent<'DashboardPage'>[]> {\n const dashboardPagesPaths = await globby(\n normalizeGlobbyPattern(DASHBOARD_PAGES_PATTERN),\n {\n cwd: projectFolder,\n }\n );\n\n const dashboardPages = await Promise.all(\n dashboardPagesPaths.map((pagePath) =>\n loadDashboardPageComponent(projectFolder, pagePath)\n )\n );\n\n const validateDashboardRoute = createDashboardRouteValidation(dashboardPages);\n\n dashboardPages.forEach(({ route }) => {\n const result = validateDashboardRoute(route);\n\n if (!result.valid) {\n throw new CliError({\n code: CliErrorCode.InvalidDashboardPageRoute({\n route,\n errorMessage: result.reason,\n }),\n });\n }\n });\n\n return dashboardPages;\n}\n\nasync function loadDashboardPluginComponent(\n pluginPath: string\n): Promise<DevCenterComponent<'DashboardPlugin'>> {\n const pluginConfig = await loadDashboardPluginComponentConfig(pluginPath);\n\n return DevCenterComponent.DashboardPlugin({\n ...pluginConfig,\n relativePath: pluginPath,\n platforms: [PlatformType.Dashboard()],\n });\n}\n\nexport async function loadDashboardPluginComponents(\n projectFolder: string\n): Promise<DevCenterComponent<'DashboardPlugin'>[]> {\n const pluginPaths = await globby(\n normalizeGlobbyPattern(DASHBOARD_PLUGINS_PATTERN),\n {\n cwd: projectFolder,\n }\n );\n\n const plugins = await Promise.all(\n pluginPaths.map((pluginPath) => loadDashboardPluginComponent(pluginPath))\n );\n\n return plugins;\n}\n\nasync function loadDashboardMenuPluginComponent(\n menuPluginPath: string\n): Promise<DevCenterComponent<'DashboardMenuPlugin'>> {\n const menuPluginConfig = await loadDashboardMenuPluginComponentConfig(\n menuPluginPath\n );\n\n return DevCenterComponent.DashboardMenuPlugin({\n ...menuPluginConfig,\n relativePath: menuPluginPath,\n platforms: [PlatformType.Dashboard()],\n });\n}\n\nasync function loadDashboardModalComponent(\n modalPath: string\n): Promise<DevCenterComponent<'DashboardModal'>> {\n const modalConfig = await loadDashboardModalComponentConfig(modalPath);\n\n return DevCenterComponent.DashboardModal({\n ...modalConfig,\n relativePath: modalPath,\n platforms: [PlatformType.Dashboard()],\n });\n}\n\nexport async function loadDashboardMenuPluginComponents(\n projectFolder: string\n): Promise<DevCenterComponent<'DashboardMenuPlugin'>[]> {\n const menuPluginPaths = await globby(\n normalizeGlobbyPattern(DASHBOARD_MENU_PLUGINS_PATTERN),\n {\n cwd: projectFolder,\n }\n );\n\n const menuPlugins = await Promise.all(\n menuPluginPaths.map((menuPluginPath) =>\n loadDashboardMenuPluginComponent(menuPluginPath)\n )\n );\n\n return menuPlugins;\n}\n\nexport async function loadDashboardModalComponents(\n projectFolder: string\n): Promise<DevCenterComponent<'DashboardModal'>[]> {\n const modalPaths = await globby(\n normalizeGlobbyPattern(DASHBOARD_MODALS_PATTERN),\n {\n cwd: projectFolder,\n }\n );\n\n const modals = await Promise.all(\n modalPaths.map((modalPath) => loadDashboardModalComponent(modalPath))\n );\n\n return modals;\n}\n\nexport function loadDashboardSidebarCategoryComponent(\n config: WixConfig\n): DevCenterComponent<'DashboardSidebarCategory'>[] {\n return (\n config.dashboard?.sidebar?.categories?.map((sidebarCategory) =>\n DevCenterComponent.DashboardSidebarCategory({\n ...sidebarCategory,\n platforms: [],\n })\n ) || []\n );\n}\n","import fs from 'node:fs';\nimport nodePath from 'node:path';\nimport merge2 from 'merge2';\nimport fastGlob from 'fast-glob';\nimport dirGlob from 'dir-glob';\nimport {\n\tGITIGNORE_FILES_PATTERN,\n\tisIgnoredByIgnoreFiles,\n\tisIgnoredByIgnoreFilesSync,\n} from './ignore.js';\nimport {FilterStream, toPath, isNegativePattern} from './utilities.js';\n\nconst assertPatternsInput = patterns => {\n\tif (patterns.some(pattern => typeof pattern !== 'string')) {\n\t\tthrow new TypeError('Patterns must be a string or an array of strings');\n\t}\n};\n\nconst toPatternsArray = patterns => {\n\tpatterns = [...new Set([patterns].flat())];\n\tassertPatternsInput(patterns);\n\treturn patterns;\n};\n\nconst checkCwdOption = options => {\n\tif (!options.cwd) {\n\t\treturn;\n\t}\n\n\tlet stat;\n\ttry {\n\t\tstat = fs.statSync(options.cwd);\n\t} catch {\n\t\treturn;\n\t}\n\n\tif (!stat.isDirectory()) {\n\t\tthrow new Error('The `cwd` option must be a path to a directory');\n\t}\n};\n\nconst normalizeOptions = (options = {}) => {\n\toptions = {\n\t\t...options,\n\t\tignore: options.ignore || [],\n\t\texpandDirectories: options.expandDirectories === undefined\n\t\t\t? true\n\t\t\t: options.expandDirectories,\n\t\tcwd: toPath(options.cwd),\n\t};\n\n\tcheckCwdOption(options);\n\n\treturn options;\n};\n\nconst normalizeArguments = fn => async (patterns, options) => fn(toPatternsArray(patterns), normalizeOptions(options));\nconst normalizeArgumentsSync = fn => (patterns, options) => fn(toPatternsArray(patterns), normalizeOptions(options));\n\nconst getIgnoreFilesPatterns = options => {\n\tconst {ignoreFiles, gitignore} = options;\n\n\tconst patterns = ignoreFiles ? toPatternsArray(ignoreFiles) : [];\n\tif (gitignore) {\n\t\tpatterns.push(GITIGNORE_FILES_PATTERN);\n\t}\n\n\treturn patterns;\n};\n\nconst getFilter = async options => {\n\tconst ignoreFilesPatterns = getIgnoreFilesPatterns(options);\n\treturn createFilterFunction(\n\t\tignoreFilesPatterns.length > 0 && await isIgnoredByIgnoreFiles(ignoreFilesPatterns, options),\n\t);\n};\n\nconst getFilterSync = options => {\n\tconst ignoreFilesPatterns = getIgnoreFilesPatterns(options);\n\treturn createFilterFunction(\n\t\tignoreFilesPatterns.length > 0 && isIgnoredByIgnoreFilesSync(ignoreFilesPatterns, options),\n\t);\n};\n\nconst createFilterFunction = isIgnored => {\n\tconst seen = new Set();\n\n\treturn fastGlobResult => {\n\t\tconst path = fastGlobResult.path || fastGlobResult;\n\t\tconst pathKey = nodePath.normalize(path);\n\t\tconst seenOrIgnored = seen.has(pathKey) || (isIgnored && isIgnored(path));\n\t\tseen.add(pathKey);\n\t\treturn !seenOrIgnored;\n\t};\n};\n\nconst unionFastGlobResults = (results, filter) => results.flat().filter(fastGlobResult => filter(fastGlobResult));\nconst unionFastGlobStreams = (streams, filter) => merge2(streams).pipe(new FilterStream(fastGlobResult => filter(fastGlobResult)));\n\nconst convertNegativePatterns = (patterns, options) => {\n\tconst tasks = [];\n\n\twhile (patterns.length > 0) {\n\t\tconst index = patterns.findIndex(pattern => isNegativePattern(pattern));\n\n\t\tif (index === -1) {\n\t\t\ttasks.push({patterns, options});\n\t\t\tbreak;\n\t\t}\n\n\t\tconst ignorePattern = patterns[index].slice(1);\n\n\t\tfor (const task of tasks) {\n\t\t\ttask.options.ignore.push(ignorePattern);\n\t\t}\n\n\t\tif (index !== 0) {\n\t\t\ttasks.push({\n\t\t\t\tpatterns: patterns.slice(0, index),\n\t\t\t\toptions: {\n\t\t\t\t\t...options,\n\t\t\t\t\tignore: [\n\t\t\t\t\t\t...options.ignore,\n\t\t\t\t\t\tignorePattern,\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tpatterns = patterns.slice(index + 1);\n\t}\n\n\treturn tasks;\n};\n\nconst getDirGlobOptions = (options, cwd) => ({\n\t...(cwd ? {cwd} : {}),\n\t...(Array.isArray(options) ? {files: options} : options),\n});\n\nconst generateTasks = async (patterns, options) => {\n\tconst globTasks = convertNegativePatterns(patterns, options);\n\n\tconst {cwd, expandDirectories} = options;\n\n\tif (!expandDirectories) {\n\t\treturn globTasks;\n\t}\n\n\tconst patternExpandOptions = getDirGlobOptions(expandDirectories, cwd);\n\tconst ignoreExpandOptions = cwd ? {cwd} : undefined;\n\n\treturn Promise.all(\n\t\tglobTasks.map(async task => {\n\t\t\tlet {patterns, options} = task;\n\n\t\t\t[\n\t\t\t\tpatterns,\n\t\t\t\toptions.ignore,\n\t\t\t] = await Promise.all([\n\t\t\t\tdirGlob(patterns, patternExpandOptions),\n\t\t\t\tdirGlob(options.ignore, ignoreExpandOptions),\n\t\t\t]);\n\n\t\t\treturn {patterns, options};\n\t\t}),\n\t);\n};\n\nconst generateTasksSync = (patterns, options) => {\n\tconst globTasks = convertNegativePatterns(patterns, options);\n\n\tconst {cwd, expandDirectories} = options;\n\n\tif (!expandDirectories) {\n\t\treturn globTasks;\n\t}\n\n\tconst patternExpandOptions = getDirGlobOptions(expandDirectories, cwd);\n\tconst ignoreExpandOptions = cwd ? {cwd} : undefined;\n\n\treturn globTasks.map(task => {\n\t\tlet {patterns, options} = task;\n\t\tpatterns = dirGlob.sync(patterns, patternExpandOptions);\n\t\toptions.ignore = dirGlob.sync(options.ignore, ignoreExpandOptions);\n\t\treturn {patterns, options};\n\t});\n};\n\nexport const globby = normalizeArguments(async (patterns, options) => {\n\tconst [\n\t\ttasks,\n\t\tfilter,\n\t] = await Promise.all([\n\t\tgenerateTasks(patterns, options),\n\t\tgetFilter(options),\n\t]);\n\tconst results = await Promise.all(tasks.map(task => fastGlob(task.patterns, task.options)));\n\n\treturn unionFastGlobResults(results, filter);\n});\n\nexport const globbySync = normalizeArgumentsSync((patterns, options) => {\n\tconst tasks = generateTasksSync(patterns, options);\n\tconst filter = getFilterSync(options);\n\tconst results = tasks.map(task => fastGlob.sync(task.patterns, task.options));\n\n\treturn unionFastGlobResults(results, filter);\n});\n\nexport const globbyStream = normalizeArgumentsSync((patterns, options) => {\n\tconst tasks = generateTasksSync(patterns, options);\n\tconst filter = getFilterSync(options);\n\tconst streams = tasks.map(task => fastGlob.stream(task.patterns, task.options));\n\n\treturn unionFastGlobStreams(streams, filter);\n});\n\nexport const isDynamicPattern = normalizeArgumentsSync(\n\t(patterns, options) => patterns.some(pattern => fastGlob.isDynamicPattern(pattern, options)),\n);\n\nexport const generateGlobTasks = normalizeArguments(generateTasks);\nexport const generateGlobTasksSync = normalizeArgumentsSync(generateTasksSync);\n\nexport {\n\tisGitIgnored,\n\tisGitIgnoredSync,\n} from './ignore.js';\n","import process from 'node:process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport fastGlob from 'fast-glob';\nimport gitIgnore from 'ignore';\nimport slash from 'slash';\nimport {toPath, isNegativePattern} from './utilities.js';\n\nconst ignoreFilesGlobOptions = {\n\tignore: [\n\t\t'**/node_modules',\n\t\t'**/flow-typed',\n\t\t'**/coverage',\n\t\t'**/.git',\n\t],\n\tabsolute: true,\n\tdot: true,\n};\n\nexport const GITIGNORE_FILES_PATTERN = '**/.gitignore';\n\nconst applyBaseToPattern = (pattern, base) => isNegativePattern(pattern)\n\t? '!' + path.posix.join(base, pattern.slice(1))\n\t: path.posix.join(base, pattern);\n\nconst parseIgnoreFile = (file, cwd) => {\n\tconst base = slash(path.relative(cwd, path.dirname(file.filePath)));\n\n\treturn file.content\n\t\t.split(/\\r?\\n/)\n\t\t.filter(line => line && !line.startsWith('#'))\n\t\t.map(pattern => applyBaseToPattern(pattern, base));\n};\n\nconst toRelativePath = (fileOrDirectory, cwd) => {\n\tcwd = slash(cwd);\n\tif (path.isAbsolute(fileOrDirectory)) {\n\t\tif (slash(fileOrDirectory).startsWith(cwd)) {\n\t\t\treturn path.relative(cwd, fileOrDirectory);\n\t\t}\n\n\t\tthrow new Error(`Path ${fileOrDirectory} is not in cwd ${cwd}`);\n\t}\n\n\treturn fileOrDirectory;\n};\n\nconst getIsIgnoredPredicate = (files, cwd) => {\n\tconst patterns = files.flatMap(file => parseIgnoreFile(file, cwd));\n\tconst ignores = gitIgnore().add(patterns);\n\n\treturn fileOrDirectory => {\n\t\tfileOrDirectory = toPath(fileOrDirectory);\n\t\tfileOrDirectory = toRelativePath(fileOrDirectory, cwd);\n\t\treturn fileOrDirectory ? ignores.ignores(slash(fileOrDirectory)) : false;\n\t};\n};\n\nconst normalizeOptions = (options = {}) => ({\n\tcwd: toPath(options.cwd) || process.cwd(),\n\tsuppressErrors: Boolean(options.suppressErrors),\n\tdeep: typeof options.deep === 'number' ? options.deep : Number.POSITIVE_INFINITY,\n});\n\nexport const isIgnoredByIgnoreFiles = async (patterns, options) => {\n\tconst {cwd, suppressErrors, deep} = normalizeOptions(options);\n\n\tconst paths = await fastGlob(patterns, {cwd, suppressErrors, deep, ...ignoreFilesGlobOptions});\n\n\tconst files = await Promise.all(\n\t\tpaths.map(async filePath => ({\n\t\t\tfilePath,\n\t\t\tcontent: await fs.promises.readFile(filePath, 'utf8'),\n\t\t})),\n\t);\n\n\treturn getIsIgnoredPredicate(files, cwd);\n};\n\nexport const isIgnoredByIgnoreFilesSync = (patterns, options) => {\n\tconst {cwd, suppressErrors, deep} = normalizeOptions(options);\n\n\tconst paths = fastGlob.sync(patterns, {cwd, suppressErrors, deep, ...ignoreFilesGlobOptions});\n\n\tconst files = paths.map(filePath => ({\n\t\tfilePath,\n\t\tcontent: fs.readFileSync(filePath, 'utf8'),\n\t}));\n\n\treturn getIsIgnoredPredicate(files, cwd);\n};\n\nexport const isGitIgnored = options => isIgnoredByIgnoreFiles(GITIGNORE_FILES_PATTERN, options);\nexport const isGitIgnoredSync = options => isIgnoredByIgnoreFilesSync(GITIGNORE_FILES_PATTERN, options);\n","export default function slash(path) {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(path);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(path); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn path;\n\t}\n\n\treturn path.replace(/\\\\/g, '/');\n}\n","import {fileURLToPath} from 'node:url';\nimport {Transform} from 'node:stream';\n\nexport const toPath = urlOrPath => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n\nexport class FilterStream extends Transform {\n\tconstructor(filter) {\n\t\tsuper({\n\t\t\tobjectMode: true,\n\t\t\ttransform(data, encoding, callback) {\n\t\t\t\tcallback(undefined, filter(data) ? data : undefined);\n\t\t\t},\n\t\t});\n\t}\n}\n\nexport const isNegativePattern = pattern => pattern[0] === '!';\n","import type {\n DashboardPageConfig,\n DashboardPluginConfig,\n DashboardMenuPluginConfig,\n DashboardModalConfig,\n DashboardSidebarCategoryConfig,\n EmbeddedScriptConfig,\n CustomElementConfig,\n EmbeddedScriptParamsOverride,\n PlatformType,\n} from '@wix/cli-app-definitions';\nimport type { TypeNames, VariantOf } from 'variant';\nimport { fields, variant } from 'variant';\n\ninterface PlatformTypes {\n platforms: PlatformType[];\n}\n\ninterface DashboardPageComponent extends DashboardPageConfig, PlatformTypes {\n relativePath: string;\n route: string; // e.g. '/', '/foo/bar', '/foo%20bar'\n}\n\ninterface DashboardPluginComponent\n extends DashboardPluginConfig,\n PlatformTypes {\n relativePath: string;\n}\n\ninterface DashboardMenuPluginComponent\n extends DashboardMenuPluginConfig,\n PlatformTypes {\n relativePath: string;\n}\n\ninterface DashboardModalComponent extends DashboardModalConfig, PlatformTypes {\n relativePath: string;\n}\n\ninterface EmbeddedScriptComponent extends EmbeddedScriptConfig, PlatformTypes {\n relativePath: string;\n paramsOverride: EmbeddedScriptParamsOverride | null;\n}\ninterface CustomElementComponent extends CustomElementConfig, PlatformTypes {\n relativePath: string;\n relativePanelPath?: string;\n tagName: string;\n}\n\ninterface DashboardSidebarCategory\n extends DashboardSidebarCategoryConfig,\n PlatformTypes {}\n\nexport const DevCenterComponent = variant({\n DashboardPage: fields<DashboardPageComponent>(),\n DashboardPlugin: fields<DashboardPluginComponent>(),\n DashboardMenuPlugin: fields<DashboardMenuPluginComponent>(),\n DashboardModal: fields<DashboardModalComponent>(),\n DashboardSidebarCategory: fields<DashboardSidebarCategory>(),\n EmbeddedScript: fields<EmbeddedScriptComponent>(),\n CustomElement: fields<CustomElementComponent>(),\n});\n\nexport type DevCenterComponent<\n T extends TypeNames<typeof DevCenterComponent> = undefined\n> = VariantOf<typeof DevCenterComponent, T>;\n","import type {\n DashboardMenuPluginConfig,\n DashboardPageConfig,\n DashboardModalConfig,\n DashboardPluginConfig,\n} from '@wix/cli-app-definitions';\nimport {\n dashboardPageConfigSchema,\n dashboardModalConfigSchema,\n dashboardPluginConfigSchema,\n dashboardMenuPluginConfigSchema,\n} from '@wix/cli-app-definitions';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { pathExists, readJson } from '@wix/cli-fs';\nimport { isType } from 'variant';\nimport { replaceExtension } from '../path.js';\nimport type { ProjectModel } from '../../../model.js';\nimport { DevCenterComponent } from '../dev-center-component.js';\n\nexport async function loadDashboardPageComponentConfig(\n path: string\n): Promise<DashboardPageConfig> {\n const configPath = replaceExtension(path, 'json');\n const isConfigExist = await pathExists(configPath);\n\n if (!isConfigExist) {\n throw new CliError({\n code: CliErrorCode.DashboardPageConfigNotFound({ configPath }),\n });\n }\n\n const config = await readJson(configPath);\n const parsedConfig = dashboardPageConfigSchema.safeParse(config);\n\n if (parsedConfig.success) {\n return parsedConfig.data;\n }\n\n throw new CliError({\n code: CliErrorCode.InvalidConfigSchemaError({\n configPath,\n zodError: parsedConfig.error,\n }),\n });\n}\n\nexport async function loadDashboardPluginComponentConfig(\n pluginPath: string\n): Promise<DashboardPluginConfig> {\n const configPath = replaceExtension(pluginPath, 'json');\n const isConfigExist = await pathExists(configPath);\n\n if (!isConfigExist) {\n throw new CliError({\n code: CliErrorCode.DashboardPluginConfigNotFound({ configPath }),\n });\n }\n\n const config = await readJson(configPath);\n const parsedConfig = dashboardPluginConfigSchema.safeParse(config);\n\n if (parsedConfig.success) {\n return parsedConfig.data;\n }\n\n throw new CliError({\n code: CliErrorCode.InvalidConfigSchemaError({\n configPath,\n zodError: parsedConfig.error,\n }),\n });\n}\n\nexport async function loadDashboardMenuPluginComponentConfig(\n menuPluginPath: string\n): Promise<DashboardMenuPluginConfig> {\n const configPath = replaceExtension(menuPluginPath, 'json');\n const isConfigExist = await pathExists(configPath);\n\n if (!isConfigExist) {\n throw new CliError({\n code: CliErrorCode.DashboardMenuPluginConfigNotFound({ configPath }),\n });\n }\n\n const config = await readJson(configPath);\n const parsedConfig = dashboardMenuPluginConfigSchema.safeParse(config);\n\n if (parsedConfig.success) {\n return parsedConfig.data;\n }\n\n throw new CliError({\n code: CliErrorCode.InvalidConfigSchemaError({\n configPath,\n zodError: parsedConfig.error,\n }),\n });\n}\n\nexport async function loadDashboardModalComponentConfig(\n modalPath: string\n): Promise<DashboardModalConfig> {\n const configPath = replaceExtension(modalPath, 'json');\n const isConfigExist = await pathExists(configPath);\n\n if (!isConfigExist) {\n throw new CliError({\n code: CliErrorCode.DashboardModalConfigNotFound({ configPath }),\n });\n }\n\n const config = await readJson(configPath);\n const parsedConfig = dashboardModalConfigSchema.safeParse(config);\n\n if (parsedConfig.success) {\n return parsedConfig.data;\n }\n\n throw new CliError({\n code: CliErrorCode.InvalidConfigSchemaError({\n configPath,\n zodError: parsedConfig.error,\n }),\n });\n}\n\nexport function virtualPathForHTMLAsset(componentId: string) {\n return `wix/html/dashboard-asset/${componentId}.html`;\n}\n\nexport function virtualDashboardHTMLAssets(model: ProjectModel) {\n return new Map(\n model.components\n .filter(\n (\n component\n ): component is DevCenterComponent<\n 'DashboardPage' | 'DashboardPlugin' | 'DashboardModal'\n > =>\n isType(component, DevCenterComponent.DashboardPage) ||\n isType(component, DevCenterComponent.DashboardPlugin) ||\n isType(component, DevCenterComponent.DashboardModal)\n )\n .map((comp) => [virtualPathForHTMLAsset(comp.id), comp])\n );\n}\n\nexport function virtualModuleIdForScriptAsset(componentId: string) {\n return `wix/scripts/dashboard-asset/${componentId}.js`;\n}\n\nexport function virtualDashboardScriptAssets(model: ProjectModel) {\n return new Map(\n model.components\n .filter(\n (\n component\n ): component is DevCenterComponent<\n 'DashboardPage' | 'DashboardPlugin' | 'DashboardModal'\n > =>\n isType(component, DevCenterComponent.DashboardPage) ||\n isType(component, DevCenterComponent.DashboardPlugin) ||\n isType(component, DevCenterComponent.DashboardModal)\n )\n .map((comp) => [virtualModuleIdForScriptAsset(comp.id), comp])\n );\n}\n","import { dirname, join, parse, relative, sep } from 'node:path';\nimport { platform } from 'node:os';\nimport { getDashboardPagesDir } from '@wix/cli-app-definitions';\n\nexport function replaceExtension(filePath: string, extension: string) {\n const { dir, name } = parse(filePath);\n if (extension !== '') {\n return join(dir, `${name}.${extension}`);\n }\n return join(dir, name);\n}\n\nexport function deriveRoute(projectFolder: string, pagePath: string) {\n const relativeDir = relative(\n getDashboardPagesDir(projectFolder),\n dirname(pagePath)\n );\n\n // Replacing with `/` for Dev Center's `routePath` URL delimiter\n return `/${relativeDir.split(sep).map(encodeURIComponent).join('/')}`;\n}\n\nexport function deriveTagName(elementPath: string) {\n return dirname(elementPath).split(sep).at(-1)!;\n}\n\n// Replacing backslashes with forward slashes to make globby work on Windows\n// (https://github.com/sindresorhus/globby/issues/179#issuecomment-990398774)\nexport function normalizeGlobbyPattern(globPattern: string) {\n if (platform() === 'win32') {\n return globPattern.replace(/\\\\/g, '/');\n }\n return globPattern;\n}\n","const VALID_PATH_REGEX = /^[a-z0-9\\-/]+$/;\n\nconst VALID_UUID_REGEX =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\n\nexport function pathValidation(path: string): boolean {\n return VALID_PATH_REGEX.test(path);\n}\n\nexport function uuidValidation(id: string): boolean {\n return VALID_UUID_REGEX.test(id);\n}\n\nexport type ValidationResult =\n | { valid: true }\n | { valid: false; reason: string };\n\nexport function composeValidations<T>(\n validations: [(value: T) => boolean, reason: string][]\n): (value: T) => ValidationResult {\n return (value) => {\n for (const [validation, reason] of validations) {\n if (!validation(value)) {\n return { valid: false, reason };\n }\n }\n return { valid: true };\n };\n}\n\nexport function useValidation<T>(fn: (value: T) => ValidationResult) {\n return (value: T): true | string => {\n const result = fn(value);\n return result.valid || result.reason;\n };\n}\n","import { type DevCenterComponent } from '../dev-center-component.js';\nimport { composeValidations, pathValidation } from './common.js';\n\nconst PATH_INVALID_MESSAGE =\n 'The page route must be a valid URL path ([a-z0-9-/]+) and must not start with a dot.';\nconst ROUTE_EXISTS_MESSAGE =\n 'The page route must be unique, please choose a route that has not been used yet in your application.';\n\nexport function pageRouteExistsValidation(\n existingPages: DevCenterComponent<'DashboardPage'>[]\n) {\n return (route: string) =>\n existingPages.every((page) => page.route !== `/${route}`);\n}\n\nexport const dashboardPathValidation = composeValidations([\n [pathValidation, PATH_INVALID_MESSAGE],\n]);\n\nexport function createDashboardRouteValidation(\n dashboardPages: DevCenterComponent<'DashboardPage'>[]\n) {\n return composeValidations([\n [pageRouteExistsValidation(dashboardPages), ROUTE_EXISTS_MESSAGE],\n [pathValidation, PATH_INVALID_MESSAGE],\n ]);\n}\n","import mustache from 'mustache';\nimport { readFile } from 'node:fs/promises';\nimport { EMBEDDED_SCRIPTS_DIR } from '@wix/cli-app-definitions';\nimport { type DevCenterComponent } from '../dev-center-component.js';\nimport {\n type ValidationResult,\n composeValidations,\n pathValidation,\n} from './common.js';\n\nfunction getEmbeddedScriptFolderName(folder: string) {\n return folder\n .replace(`${EMBEDDED_SCRIPTS_DIR}/`, '')\n .replace('/embedded.html', '');\n}\n\nexport function embeddedScriptExistsValidation(\n existingScripts: DevCenterComponent<'EmbeddedScript'>[]\n) {\n return (folder: string) =>\n existingScripts.every(\n (existingScript) =>\n folder !== getEmbeddedScriptFolderName(existingScript.relativePath)\n );\n}\n\nexport function embeddedScriptNameValidation(name: string) {\n return pathValidation(getEmbeddedScriptFolderName(name));\n}\n\nasync function readTemplate(filepath: string) {\n const html = await readFile(filepath, 'utf-8');\n return mustache.parse(html).filter(([type]) => type === 'name');\n}\n\nexport async function validateEmbeddedScriptHtml(\n path: string\n): Promise<ValidationResult> {\n try {\n const template = await readTemplate(path);\n const params = template.filter(([type]) => type === 'name');\n\n const invalidParameters = params\n .filter(([, name]) => !/^[a-zA-Z]+$/.test(name))\n .map(([, name]) => name);\n\n if (invalidParameters.length > 0) {\n return {\n valid: false,\n reason: `Dynamic parameters can only include letters, but some include invalid names: ${invalidParameters.join(\n ', '\n )}`,\n };\n }\n\n return { valid: true };\n } catch (error) {\n return {\n valid: false,\n reason:\n error instanceof Error\n ? error.message\n : 'Invalid embedded script template',\n };\n }\n}\n\nexport function createEmbeddedScriptFolderValidation(\n embeddedScripts: DevCenterComponent<'EmbeddedScript'>[]\n) {\n return composeValidations([\n [\n embeddedScriptExistsValidation(embeddedScripts),\n 'The script folder must be unique, please choose a name that has not been used yet in your application.',\n ],\n [\n embeddedScriptNameValidation,\n 'The script folder must be a valid path ([a-z0-9-/]+) and must not start with a dot.',\n ],\n ]);\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\nvar objectToString = Object.prototype.toString;\nvar isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n};\n\nfunction isFunction (object) {\n return typeof object === 'function';\n}\n\n/**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\nfunction typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n}\n\nfunction escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n}\n\n/**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\nfunction hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n}\n\n/**\n * Safe way of detecting whether or not the given thing is a primitive and\n * whether it has the given property\n */\nfunction primitiveHasOwnProperty (primitive, propName) {\n return (\n primitive != null\n && typeof primitive !== 'object'\n && primitive.hasOwnProperty\n && primitive.hasOwnProperty(propName)\n );\n}\n\n// Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n// See https://github.com/janl/mustache.js/issues/189\nvar regExpTest = RegExp.prototype.test;\nfunction testRegExp (re, string) {\n return regExpTest.call(re, string);\n}\n\nvar nonSpaceRe = /\\S/;\nfunction isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n}\n\nvar entityMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n '/': '&#x2F;',\n '`': '&#x60;',\n '=': '&#x3D;'\n};\n\nfunction escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n}\n\nvar whiteRe = /\\s*/;\nvar spaceRe = /\\s+/;\nvar equalsRe = /\\s*=/;\nvar curlyRe = /\\s*\\}/;\nvar tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n/**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n *\n * Tokens for partials also contain two more elements: 1) a string value of\n * indendation prior to that tag and 2) the index of that tag on that line -\n * eg a value of 2 indicates the partial is the third tag on this line.\n */\nfunction parseTemplate (template, tags) {\n if (!template)\n return [];\n var lineHasNonSpace = false;\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n var indentation = ''; // Tracks indentation for tags that use it\n var tagIndex = 0; // Stores a count of number of tags encountered on a line\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n indentation += chr;\n } else {\n nonSpace = true;\n lineHasNonSpace = true;\n indentation += ' ';\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n') {\n stripSpace();\n indentation = '';\n tagIndex = 0;\n lineHasNonSpace = false;\n }\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n if (type == '>') {\n token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];\n } else {\n token = [ type, value, start, scanner.pos ];\n }\n tagIndex++;\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n stripSpace();\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n}\n\n/**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\nfunction squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n}\n\n/**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\nfunction nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n}\n\n/**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\nfunction Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n}\n\n/**\n * Returns `true` if the tail is empty (end of string).\n */\nScanner.prototype.eos = function eos () {\n return this.tail === '';\n};\n\n/**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\nScanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n};\n\n/**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\nScanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n};\n\n/**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\nfunction Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n}\n\n/**\n * Creates a new context using the given view with this context\n * as the parent.\n */\nContext.prototype.push = function push (view) {\n return new Context(view, this);\n};\n\n/**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\nContext.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, intermediateValue, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n intermediateValue = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n *\n * In the case where dot notation is used, we consider the lookup\n * to be successful even if the last \"object\" in the path is\n * not actually an object but a primitive (e.g., a string, or an\n * integer), because it is sometimes useful to access a property\n * of an autoboxed primitive, such as the length of a string.\n **/\n while (intermediateValue != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = (\n hasProperty(intermediateValue, names[index])\n || primitiveHasOwnProperty(intermediateValue, names[index])\n );\n\n intermediateValue = intermediateValue[names[index++]];\n }\n } else {\n intermediateValue = context.view[name];\n\n /**\n * Only checking against `hasProperty`, which always returns `false` if\n * `context.view` is not an object. Deliberately omitting the check\n * against `primitiveHasOwnProperty` if dot notation is not used.\n *\n * Consider this example:\n * ```\n * Mustache.render(\"The length of a football field is {{#length}}{{length}}{{/length}}.\", {length: \"100 yards\"})\n * ```\n *\n * If we were to check also against `primitiveHasOwnProperty`, as we do\n * in the dot notation case, then render call would return:\n *\n * \"The length of a football field is 9.\"\n *\n * rather than the expected:\n *\n * \"The length of a football field is 100 yards.\"\n **/\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit) {\n value = intermediateValue;\n break;\n }\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n};\n\n/**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\nfunction Writer () {\n this.templateCache = {\n _cache: {},\n set: function set (key, value) {\n this._cache[key] = value;\n },\n get: function get (key) {\n return this._cache[key];\n },\n clear: function clear () {\n this._cache = {};\n }\n };\n}\n\n/**\n * Clears all cached templates in this writer.\n */\nWriter.prototype.clearCache = function clearCache () {\n if (typeof this.templateCache !== 'undefined') {\n this.templateCache.clear();\n }\n};\n\n/**\n * Parses and caches the given `template` according to the given `tags` or\n * `mustache.tags` if `tags` is omitted, and returns the array of tokens\n * that is generated from the parse.\n */\nWriter.prototype.parse = function parse (template, tags) {\n var cache = this.templateCache;\n var cacheKey = template + ':' + (tags || mustache.tags).join(':');\n var isCacheEnabled = typeof cache !== 'undefined';\n var tokens = isCacheEnabled ? cache.get(cacheKey) : undefined;\n\n if (tokens == undefined) {\n tokens = parseTemplate(template, tags);\n isCacheEnabled && cache.set(cacheKey, tokens);\n }\n return tokens;\n};\n\n/**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n *\n * If the optional `config` argument is given here, then it should be an\n * object with a `tags` attribute or an `escape` attribute or both.\n * If an array is passed, then it will be interpreted the same way as\n * a `tags` attribute on a `config` object.\n *\n * The `tags` attribute of a `config` object must be an array with two\n * string values: the opening and closing tags used in the template (e.g.\n * [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n *\n * The `escape` attribute of a `config` object must be a function which\n * accepts a string as input and outputs a safely escaped string.\n * If an `escape` function is not provided, then an HTML-safe string\n * escaping function is used as the default.\n */\nWriter.prototype.render = function render (template, view, partials, config) {\n var tags = this.getConfigTags(config);\n var tokens = this.parse(template, tags);\n var context = (view instanceof Context) ? view : new Context(view, undefined);\n return this.renderTokens(tokens, context, partials, template, config);\n};\n\n/**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\nWriter.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, config) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate, config);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate, config);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, config);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context, config);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n};\n\nWriter.prototype.renderSection = function renderSection (token, context, partials, originalTemplate, config) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials, config);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate, config);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate, config);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate, config);\n }\n return buffer;\n};\n\nWriter.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate, config) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate, config);\n};\n\nWriter.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {\n var filteredIndentation = indentation.replace(/[^ \\t]/g, '');\n var partialByNl = partial.split('\\n');\n for (var i = 0; i < partialByNl.length; i++) {\n if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {\n partialByNl[i] = filteredIndentation + partialByNl[i];\n }\n }\n return partialByNl.join('\\n');\n};\n\nWriter.prototype.renderPartial = function renderPartial (token, context, partials, config) {\n if (!partials) return;\n var tags = this.getConfigTags(config);\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null) {\n var lineHasNonSpace = token[6];\n var tagIndex = token[5];\n var indentation = token[4];\n var indentedValue = value;\n if (tagIndex == 0 && indentation) {\n indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);\n }\n var tokens = this.parse(indentedValue, tags);\n return this.renderTokens(tokens, context, partials, indentedValue, config);\n }\n};\n\nWriter.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n};\n\nWriter.prototype.escapedValue = function escapedValue (token, context, config) {\n var escape = this.getConfigEscape(config) || mustache.escape;\n var value = context.lookup(token[1]);\n if (value != null)\n return (typeof value === 'number' && escape === mustache.escape) ? String(value) : escape(value);\n};\n\nWriter.prototype.rawValue = function rawValue (token) {\n return token[1];\n};\n\nWriter.prototype.getConfigTags = function getConfigTags (config) {\n if (isArray(config)) {\n return config;\n }\n else if (config && typeof config === 'object') {\n return config.tags;\n }\n else {\n return undefined;\n }\n};\n\nWriter.prototype.getConfigEscape = function getConfigEscape (config) {\n if (config && typeof config === 'object' && !isArray(config)) {\n return config.escape;\n }\n else {\n return undefined;\n }\n};\n\nvar mustache = {\n name: 'mustache.js',\n version: '4.2.0',\n tags: [ '{{', '}}' ],\n clearCache: undefined,\n escape: undefined,\n parse: undefined,\n render: undefined,\n Scanner: undefined,\n Context: undefined,\n Writer: undefined,\n /**\n * Allows a user to override the default caching strategy, by providing an\n * object with set, get and clear methods. This can also be used to disable\n * the cache by setting it to the literal `undefined`.\n */\n set templateCache (cache) {\n defaultWriter.templateCache = cache;\n },\n /**\n * Gets the default or overridden caching object from the default writer.\n */\n get templateCache () {\n return defaultWriter.templateCache;\n }\n};\n\n// All high-level mustache.* functions use this writer.\nvar defaultWriter = new Writer();\n\n/**\n * Clears all cached templates in the default writer.\n */\nmustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n};\n\n/**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\nmustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n};\n\n/**\n * Renders the `template` with the given `view`, `partials`, and `config`\n * using the default writer.\n */\nmustache.render = function render (template, view, partials, config) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials, config);\n};\n\n// Export the escaping function so that the user may override it.\n// See https://github.com/janl/mustache.js/issues/244\nmustache.escape = escapeHtml;\n\n// Export these mainly for testing, but also for advanced usage.\nmustache.Scanner = Scanner;\nmustache.Context = Context;\nmustache.Writer = Writer;\n\nexport default mustache;\n","import { type DevCenterComponent } from '../dev-center-component.js';\nimport { composeValidations } from './common.js';\n\nconst PotentialCustomElementNameRegEx =\n //eslint-disable-next-line no-misleading-character-class\n /^[a-z](?:[.0-9_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*-(?:[\\x2D.0-9_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*$/;\n\nconst isPotentialCustomElementName = function (string: string) {\n return PotentialCustomElementNameRegEx.test(string);\n};\n\nconst reservedNames = new Set([\n 'annotation-xml',\n 'color-profile',\n 'font-face',\n 'font-face-src',\n 'font-face-uri',\n 'font-face-format',\n 'font-face-name',\n 'missing-glyph',\n]);\n\nexport const validateCustomElementName = composeValidations<string>([\n [(name) => Boolean(name), 'Missing custom element name.'],\n [\n (name) => !/[A-Z]/.test(name),\n 'Custom element names must not contain uppercase ASCII characters.',\n ],\n [\n (name) => name.includes('-'),\n 'Custom element names must contain a hyphen. Example: unicorn-cake',\n ],\n [\n (name) => !/^\\d/i.test(name),\n 'Custom element names must not start with a digit.',\n ],\n [\n (name) => !/^-/i.test(name),\n 'Custom element names must not start with a hyphen.',\n ],\n [(name) => isPotentialCustomElementName(name), 'Invalid element name.'],\n [\n (name) => !reservedNames.has(name),\n \"The supplied element name is reserved and can't be used.\\nSee: https://html.spec.whatwg.org/multipage/scripting.html#valid-custom-element-name\",\n ],\n]);\n\nexport function customElementExistsValidation(\n existingCustomElements: DevCenterComponent<'CustomElement'>[]\n) {\n return (folder: string) =>\n existingCustomElements.every(\n (existingCustomElement) => folder !== existingCustomElement.tagName\n );\n}\n","import { dirname, join } from 'node:path';\nimport { globby } from 'globby';\nimport { pathExists } from '@wix/cli-fs';\nimport { EMBEDDED_SCRIPTS_DIR, PlatformType } from '@wix/cli-app-definitions';\nimport { CUSTOM_ELEMENTS_DIR } from '@wix/cli-app-definitions';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { normalizeGlobbyPattern, deriveTagName } from '../path.js';\nimport {\n loadEmbeddedScriptComponentConfig,\n loadEmbeddedScriptParamsOverride,\n} from './config.js';\nimport {\n createEmbeddedScriptFolderValidation,\n validateCustomElementName,\n validateEmbeddedScriptHtml,\n} from '../validations';\nimport { DevCenterComponent } from '../dev-center-component.js';\nimport { loadCustomElementComponentConfig } from './config.js';\n\nexport const EMBEDDED_SCRIPTS_PATTERN = join(\n EMBEDDED_SCRIPTS_DIR,\n '**',\n 'embedded.html'\n);\n\nexport const CUSTOM_ELEMENTS_PATTERN = join(\n CUSTOM_ELEMENTS_DIR,\n '**',\n 'element.{ts,tsx,js,jsx}'\n);\n\nexport const CUSTOM_ELEMENTS_PANEL_PATTERN = join(\n CUSTOM_ELEMENTS_DIR,\n '**',\n 'panel.{ts,tsx,js,jsx}'\n);\n\nasync function loadCustomElementComponent(\n customElementPath: string,\n projectFolder: string\n): Promise<DevCenterComponent<'CustomElement'>> {\n const customElementConfig = await loadCustomElementComponentConfig(\n customElementPath\n );\n const customElementPanelPath = join(dirname(customElementPath), 'panel.tsx');\n const tagName = deriveTagName(customElementPath);\n\n const isPanelExists = await pathExists(\n join(projectFolder, customElementPanelPath)\n );\n return DevCenterComponent.CustomElement({\n ...customElementConfig,\n tagName,\n relativePath: customElementPath,\n platforms: [PlatformType.Site(), PlatformType.Editor()],\n ...(isPanelExists ? { relativePanelPath: customElementPanelPath } : {}),\n });\n}\n\nexport async function loadCustomElementComponents(\n projectFolder: string\n): Promise<DevCenterComponent<'CustomElement'>[]> {\n const customElementsPaths = await globby(\n normalizeGlobbyPattern(CUSTOM_ELEMENTS_PATTERN),\n {\n cwd: projectFolder,\n }\n );\n\n const customElements = await Promise.all(\n customElementsPaths.map((customElementPath) =>\n loadCustomElementComponent(customElementPath, projectFolder)\n )\n );\n\n customElements.forEach(({ tagName }) => {\n const result = validateCustomElementName(tagName);\n\n if (!result.valid) {\n throw new CliError({\n code: CliErrorCode.InvalidCustomElementTagName({\n tagName,\n errorMessage: result.reason,\n }),\n });\n }\n });\n\n return customElements;\n}\n\nexport const EMBEDDED_SCRIPTS_PARAMS_OVERRIDE_PATTERN = join(\n EMBEDDED_SCRIPTS_DIR,\n '**',\n 'params.dev.json'\n);\n\nasync function loadEmbeddedScriptComponent(\n embeddedScriptPath: string\n): Promise<DevCenterComponent<'EmbeddedScript'>> {\n const embeddedScriptConfig = await loadEmbeddedScriptComponentConfig(\n embeddedScriptPath\n );\n\n const paramsOverride = await loadEmbeddedScriptParamsOverride(\n embeddedScriptPath\n );\n\n return DevCenterComponent.EmbeddedScript({\n ...embeddedScriptConfig,\n relativePath: embeddedScriptPath,\n platforms: [PlatformType.Site()],\n paramsOverride,\n });\n}\n\nexport async function loadEmbeddedScriptComponents(\n projectFolder: string\n): Promise<DevCenterComponent<'EmbeddedScript'>[]> {\n const embeddedScriptsPaths = await globby(\n normalizeGlobbyPattern(EMBEDDED_SCRIPTS_PATTERN),\n {\n cwd: projectFolder,\n }\n );\n\n const embeddedScripts = await Promise.all(\n embeddedScriptsPaths.map((pagePath) =>\n loadEmbeddedScriptComponent(pagePath)\n )\n );\n\n const validateEmbeddedScriptFolder =\n createEmbeddedScriptFolderValidation(embeddedScripts);\n\n await Promise.all(\n embeddedScripts.map(async ({ relativePath }) => {\n const folderResult = validateEmbeddedScriptFolder(relativePath);\n const htmlResult = await validateEmbeddedScriptHtml(relativePath);\n\n if (!folderResult.valid) {\n throw new CliError({\n code: CliErrorCode.InvalidEmbeddedScriptFolder({\n path: relativePath,\n errorMessage: folderResult.reason,\n }),\n });\n }\n\n if (!htmlResult.valid) {\n throw new CliError({\n code: CliErrorCode.InvalidEmbeddedScriptTemplate({\n templateFilename: relativePath,\n errorMessage: htmlResult.reason,\n }),\n });\n }\n })\n );\n\n return embeddedScripts;\n}\n","import { join, dirname } from 'node:path';\nimport type {\n EmbeddedScriptConfig,\n CustomElementConfig,\n EmbeddedScriptParamsOverride,\n} from '@wix/cli-app-definitions';\nimport {\n embeddedScriptConfigSchema,\n customElementConfigSchema,\n embeddedScriptParamsOverrideSchema,\n} from '@wix/cli-app-definitions';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { pathExists, readJson } from '@wix/cli-fs';\nimport { isType } from 'variant';\nimport { replaceExtension } from '../path.js';\nimport type { ProjectModel } from '../../../model.js';\nimport { DevCenterComponent } from '../dev-center-component.js';\n\nexport async function loadEmbeddedScriptComponentConfig(\n embeddedScriptPath: string\n): Promise<EmbeddedScriptConfig> {\n const configPath = replaceExtension(embeddedScriptPath, 'json');\n const isConfigExist = await pathExists(configPath);\n\n if (!isConfigExist) {\n throw new CliError({\n code: CliErrorCode.EmbeddedScriptConfigNotFound({ configPath }),\n });\n }\n\n const config = await readJson(configPath);\n const parsedConfig = embeddedScriptConfigSchema.safeParse(config);\n\n if (parsedConfig.success) {\n return parsedConfig.data;\n }\n\n throw new CliError({\n code: CliErrorCode.InvalidConfigSchemaError({\n configPath,\n zodError: parsedConfig.error,\n }),\n });\n}\n\nexport async function loadCustomElementComponentConfig(\n customElementPath: string\n): Promise<CustomElementConfig> {\n const configPath = replaceExtension(customElementPath, 'json');\n const isConfigExist = await pathExists(configPath);\n\n if (!isConfigExist) {\n throw new CliError({\n code: CliErrorCode.CustomElementConfigNotFound({ configPath }),\n });\n }\n\n const config = await readJson(configPath);\n const parsedConfig = customElementConfigSchema.safeParse(config);\n\n if (parsedConfig.success) {\n return parsedConfig.data;\n }\n\n throw new CliError({\n code: CliErrorCode.InvalidConfigSchemaError({\n configPath,\n zodError: parsedConfig.error,\n }),\n });\n}\n\nexport function virtualPathForCustomElementPanelHTMLAsset(componentId: string) {\n return `wix/html/custom-element-asset/${componentId}.html`;\n}\n\nexport function virtualModuleIdForCustomElementPanelScriptAsset(\n componentId: string\n) {\n return `wix/scripts/custom-element-asset/panel-${componentId}.js`;\n}\n\nexport function virtualModuleIdForCustomElementScriptAsset(\n componentId: string\n) {\n return `wix/scripts/custom-element-asset/${componentId}.js`;\n}\n\nexport function virtualCustomElementPanelHTMLAssets(model: ProjectModel) {\n return new Map(\n model.components\n .filter((component): component is DevCenterComponent<'CustomElement'> =>\n isType(component, DevCenterComponent.CustomElement)\n )\n .map((comp) => [virtualPathForCustomElementPanelHTMLAsset(comp.id), comp])\n );\n}\n\nexport function virtualCustomElementScriptAssets(model: ProjectModel) {\n return new Map(\n model.components\n .filter((component): component is DevCenterComponent<'CustomElement'> =>\n isType(component, DevCenterComponent.CustomElement)\n )\n .map((comp) => [\n virtualModuleIdForCustomElementScriptAsset(comp.id),\n comp,\n ])\n );\n}\n\nexport function virtualCustomElementPanelScriptAssets(model: ProjectModel) {\n return new Map(\n model.components\n .filter(\n (component): component is DevCenterComponent<'CustomElement'> =>\n isType(component, DevCenterComponent.CustomElement) &&\n Boolean(component.relativePanelPath)\n )\n .map((comp) => [\n virtualModuleIdForCustomElementPanelScriptAsset(comp.id),\n comp,\n ])\n );\n}\n\nexport async function loadEmbeddedScriptParamsOverride(\n embeddedScriptPath: string\n): Promise<EmbeddedScriptParamsOverride | null> {\n const paramsOverridePath = join(\n dirname(embeddedScriptPath),\n 'params.dev.json'\n );\n const isParamsOverrideExist = await pathExists(paramsOverridePath);\n\n if (!isParamsOverrideExist) {\n return null;\n }\n\n const paramsOverride = await readJson(paramsOverridePath);\n const parsedConfig =\n embeddedScriptParamsOverrideSchema.safeParse(paramsOverride);\n\n if (parsedConfig.success) {\n return parsedConfig.data || null;\n }\n\n throw new CliError({\n code: CliErrorCode.InvalidParamsOverrideSchemaError({\n paramsOverridePath,\n zodError: parsedConfig.error,\n }),\n });\n}\n","import { join, basename } from 'node:path';\nimport { EventEmitter } from 'node:events';\nimport {\n DASHBOARD_PAGES_DIR,\n DASHBOARD_PLUGINS_DIR,\n DASHBOARD_MENU_PLUGINS_DIR,\n DASHBOARD_MODALS_DIR,\n EMBEDDED_SCRIPTS_DIR,\n CUSTOM_ELEMENTS_DIR,\n} from '@wix/cli-app-definitions';\nimport type TypedEmitter from 'typed-emitter';\nimport chokidar from 'chokidar';\nimport _debounce from 'lodash/debounce.js';\nimport { deepEqual } from 'fast-equals';\nimport { CONFIG_FILENAME } from '@wix/cli-core-definitions';\nimport type { ProjectModel } from '../model.js';\nimport { loadProjectModel } from '../model.js';\nimport {\n EMBEDDED_SCRIPTS_PARAMS_OVERRIDE_PATTERN,\n EMBEDDED_SCRIPTS_PATTERN,\n} from '../dev-center/components/site/components.js';\n\nexport type ChangeType =\n | 'change-received'\n | 'model-updated'\n | 'model-did-not-change';\n\ntype ConfigEvents = {\n all: (model: ProjectModel, changeType: ChangeType) => void;\n error: (error: unknown) => void;\n};\n\nconst DASHBOARD_PAGES_CONFIG_PATTERN = join(\n DASHBOARD_PAGES_DIR,\n '**',\n 'page.json'\n);\n\nconst DASHBOARD_PLUGINS_CONFIG_PATTERN = join(\n DASHBOARD_PLUGINS_DIR,\n '**',\n 'plugin.json'\n);\n\nconst DASHBOARD_MENU_PLUGINS_CONFIG_PATTERN = join(\n DASHBOARD_MENU_PLUGINS_DIR,\n '**',\n 'plugin.json'\n);\n\nconst DASHBOARD_MODALS_CONFIG_PATTERN = join(\n DASHBOARD_MODALS_DIR,\n '**',\n 'modal.json'\n);\n\nconst EMBEDDED_SCRIPTS_CONFIG_PATTERN = join(\n EMBEDDED_SCRIPTS_DIR,\n '**',\n 'embedded.json'\n);\n\nconst CUSTOM_ELEMENTS_CONFIG_PATTERN = join(\n CUSTOM_ELEMENTS_DIR,\n '**',\n 'element.json'\n);\n\nexport class ProjectModelWatcher {\n private readonly emitter = new EventEmitter() as TypedEmitter<ConfigEvents>;\n private readonly fsWatchers: chokidar.FSWatcher[] = [];\n private prevModel: ProjectModel;\n\n constructor(initialModel: ProjectModel) {\n this.prevModel = initialModel;\n }\n\n watch() {\n const jsonWatcher = chokidar\n .watch(\n [\n DASHBOARD_PAGES_CONFIG_PATTERN,\n DASHBOARD_PLUGINS_CONFIG_PATTERN,\n DASHBOARD_MODALS_CONFIG_PATTERN,\n EMBEDDED_SCRIPTS_CONFIG_PATTERN,\n EMBEDDED_SCRIPTS_PATTERN,\n CUSTOM_ELEMENTS_CONFIG_PATTERN,\n DASHBOARD_MENU_PLUGINS_CONFIG_PATTERN,\n EMBEDDED_SCRIPTS_PARAMS_OVERRIDE_PATTERN,\n CONFIG_FILENAME,\n ],\n {\n ignoreInitial: true,\n }\n )\n .on('add', this.emitConfigUpdate)\n .on('change', this.emitConfigUpdate);\n\n // Deletion event is not triggered when I'm using specific file pattern, like for adding or updating.\n // Therefore I'm handling it separately in a general way.\n const dirWatcher = chokidar\n .watch(\n [\n `${DASHBOARD_PAGES_DIR}/**`,\n `${DASHBOARD_PLUGINS_DIR}/**`,\n `${DASHBOARD_MENU_PLUGINS_DIR}/**`,\n `${DASHBOARD_MODALS_CONFIG_PATTERN}/**`,\n `${EMBEDDED_SCRIPTS_DIR}/**`,\n `${CUSTOM_ELEMENTS_DIR}/**`,\n ],\n {\n ignoreInitial: true,\n }\n )\n .on('unlink', async (path) => {\n const filename = basename(path);\n if (\n filename === 'page.json' ||\n filename === 'plugin.json' ||\n filename === 'modal.json' ||\n filename === 'embedded.json' ||\n filename == 'element.json'\n ) {\n await this.emitConfigUpdate(path);\n }\n });\n\n this.fsWatchers.push(jsonWatcher, dirWatcher);\n return this;\n }\n\n onChange(cb: (model: ProjectModel, changeType: ChangeType) => void) {\n this.emitter.on('all', cb);\n return this;\n }\n\n onError(cb: (error: unknown) => void) {\n this.emitter.on('error', cb);\n return this;\n }\n\n async close() {\n await Promise.all(this.fsWatchers.map((watcher) => watcher.close()));\n }\n\n private emitConfigUpdate = _debounce(async (path: string) => {\n try {\n const model = await loadProjectModel(this.prevModel.projectFolder);\n this.emitter.emit('all', model, 'change-received');\n if (\n !deepEqual(model, this.prevModel) ||\n basename(path) === 'embedded.html'\n ) {\n this.prevModel = model;\n this.emitter.emit('all', model, 'model-updated');\n } else {\n this.emitter.emit('all', model, 'model-did-not-change');\n }\n } catch (e) {\n this.emitter.emit('error', e);\n }\n }, 200);\n}\n","import {\n AnyEqualityComparator,\n Cache,\n CircularState,\n Dictionary,\n State,\n TypeEqualityComparator,\n} from './internalTypes';\n\nconst { getOwnPropertyNames, getOwnPropertySymbols } = Object;\nconst { hasOwnProperty } = Object.prototype;\n\n/**\n * Combine two comparators into a single comparators.\n */\nexport function combineComparators<Meta>(\n comparatorA: AnyEqualityComparator<Meta>,\n comparatorB: AnyEqualityComparator<Meta>,\n) {\n return function isEqual<A, B>(a: A, b: B, state: State<Meta>) {\n return comparatorA(a, b, state) && comparatorB(a, b, state);\n };\n}\n\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nexport function createIsCircular<\n AreItemsEqual extends TypeEqualityComparator<any, any>,\n>(areItemsEqual: AreItemsEqual): AreItemsEqual {\n return function isCircular(\n a: any,\n b: any,\n state: CircularState<Cache<any, any>>,\n ) {\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n return areItemsEqual(a, b, state);\n }\n\n const { cache } = state;\n\n const cachedA = cache.get(a);\n const cachedB = cache.get(b);\n\n if (cachedA && cachedB) {\n return cachedA === b && cachedB === a;\n }\n\n cache.set(a, b);\n cache.set(b, a);\n\n const result = areItemsEqual(a, b, state);\n\n cache.delete(a);\n cache.delete(b);\n\n return result;\n } as AreItemsEqual;\n}\n\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nexport function getStrictProperties(\n object: Dictionary,\n): Array<string | symbol> {\n return (getOwnPropertyNames(object) as Array<string | symbol>).concat(\n getOwnPropertySymbols(object),\n );\n}\n\n/**\n * Whether the object contains the property passed as an own property.\n */\nexport const hasOwn =\n Object.hasOwn ||\n ((object: Dictionary, property: number | string | symbol) =>\n hasOwnProperty.call(object, property));\n\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nexport function sameValueZeroEqual(a: any, b: any): boolean {\n return a || b ? a === b : a === b || (a !== a && b !== b);\n}\n","import { getStrictProperties, hasOwn, sameValueZeroEqual } from './utils';\nimport type {\n Dictionary,\n PrimitiveWrapper,\n State,\n TypedArray,\n} from './internalTypes';\n\nconst OWNER = '_owner';\n\nconst { getOwnPropertyDescriptor, keys } = Object;\n\n/**\n * Whether the arrays are equal in value.\n */\nexport function areArraysEqual(a: any[], b: any[], state: State<any>) {\n let index = a.length;\n\n if (b.length !== index) {\n return false;\n }\n\n while (index-- > 0) {\n if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the dates passed are equal in value.\n */\nexport function areDatesEqual(a: Date, b: Date): boolean {\n return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n\n/**\n * Whether the `Map`s are equal in value.\n */\nexport function areMapsEqual(\n a: Map<any, any>,\n b: Map<any, any>,\n state: State<any>,\n): boolean {\n if (a.size !== b.size) {\n return false;\n }\n\n const matchedIndices: Record<number, true> = {};\n const aIterable = a.entries();\n\n let index = 0;\n let aResult: IteratorResult<[any, any]>;\n let bResult: IteratorResult<[any, any]>;\n\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n\n const bIterable = b.entries();\n\n let hasMatch = false;\n let matchIndex = 0;\n\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n\n const [aKey, aValue] = aResult.value;\n const [bKey, bValue] = bResult.value;\n\n if (\n !hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch =\n state.equals(aKey, bKey, index, matchIndex, a, b, state) &&\n state.equals(aValue, bValue, aKey, bKey, a, b, state))\n ) {\n matchedIndices[matchIndex] = true;\n }\n\n matchIndex++;\n }\n\n if (!hasMatch) {\n return false;\n }\n\n index++;\n }\n\n return true;\n}\n\n/**\n * Whether the objects are equal in value.\n */\nexport function areObjectsEqual(\n a: Dictionary,\n b: Dictionary,\n state: State<any>,\n): boolean {\n const properties = keys(a);\n\n let index = properties.length;\n\n if (keys(b).length !== index) {\n return false;\n }\n\n let property: string;\n\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index]!;\n\n if (\n property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof\n ) {\n return false;\n }\n\n if (\n !hasOwn(b, property) ||\n !state.equals(a[property], b[property], property, property, a, b, state)\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nexport function areObjectsEqualStrict(\n a: Dictionary,\n b: Dictionary,\n state: State<any>,\n): boolean {\n const properties = getStrictProperties(a);\n\n let index = properties.length;\n\n if (getStrictProperties(b).length !== index) {\n return false;\n }\n\n let property: string | symbol;\n let descriptorA: ReturnType<typeof getOwnPropertyDescriptor>;\n let descriptorB: ReturnType<typeof getOwnPropertyDescriptor>;\n\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index]!;\n\n if (\n property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof\n ) {\n return false;\n }\n\n if (!hasOwn(b, property)) {\n return false;\n }\n\n if (\n !state.equals(a[property], b[property], property, property, a, b, state)\n ) {\n return false;\n }\n\n descriptorA = getOwnPropertyDescriptor(a, property);\n descriptorB = getOwnPropertyDescriptor(b, property);\n\n if (\n (descriptorA || descriptorB) &&\n (!descriptorA ||\n !descriptorB ||\n descriptorA.configurable !== descriptorB.configurable ||\n descriptorA.enumerable !== descriptorB.enumerable ||\n descriptorA.writable !== descriptorB.writable)\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nexport function arePrimitiveWrappersEqual(\n a: PrimitiveWrapper,\n b: PrimitiveWrapper,\n): boolean {\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n\n/**\n * Whether the regexps passed are equal in value.\n */\nexport function areRegExpsEqual(a: RegExp, b: RegExp): boolean {\n return a.source === b.source && a.flags === b.flags;\n}\n\n/**\n * Whether the `Set`s are equal in value.\n */\nexport function areSetsEqual(\n a: Set<any>,\n b: Set<any>,\n state: State<any>,\n): boolean {\n if (a.size !== b.size) {\n return false;\n }\n\n const matchedIndices: Record<number, true> = {};\n const aIterable = a.values();\n\n let aResult: IteratorResult<any>;\n let bResult: IteratorResult<any>;\n\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n\n const bIterable = b.values();\n\n let hasMatch = false;\n let matchIndex = 0;\n\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n\n if (\n !hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch = state.equals(\n aResult.value,\n bResult.value,\n aResult.value,\n bResult.value,\n a,\n b,\n state,\n ))\n ) {\n matchedIndices[matchIndex] = true;\n }\n\n matchIndex++;\n }\n\n if (!hasMatch) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the TypedArray instances are equal in value.\n */\nexport function areTypedArraysEqual(a: TypedArray, b: TypedArray) {\n let index = a.length;\n\n if (b.length !== index) {\n return false;\n }\n\n while (index-- > 0) {\n if (a[index] !== b[index]) {\n return false;\n }\n }\n\n return true;\n}\n","import {\n areArraysEqual as areArraysEqualDefault,\n areDatesEqual as areDatesEqualDefault,\n areMapsEqual as areMapsEqualDefault,\n areObjectsEqual as areObjectsEqualDefault,\n areObjectsEqualStrict as areObjectsEqualStrictDefault,\n arePrimitiveWrappersEqual as arePrimitiveWrappersEqualDefault,\n areRegExpsEqual as areRegExpsEqualDefault,\n areSetsEqual as areSetsEqualDefault,\n areTypedArraysEqual,\n} from './equals';\nimport { combineComparators, createIsCircular } from './utils';\nimport type {\n ComparatorConfig,\n CreateState,\n CustomEqualCreatorOptions,\n EqualityComparator,\n InternalEqualityComparator,\n State,\n} from './internalTypes';\n\nconst ARGUMENTS_TAG = '[object Arguments]';\nconst BOOLEAN_TAG = '[object Boolean]';\nconst DATE_TAG = '[object Date]';\nconst MAP_TAG = '[object Map]';\nconst NUMBER_TAG = '[object Number]';\nconst OBJECT_TAG = '[object Object]';\nconst REG_EXP_TAG = '[object RegExp]';\nconst SET_TAG = '[object Set]';\nconst STRING_TAG = '[object String]';\n\nconst { isArray } = Array;\nconst isTypedArray =\n typeof ArrayBuffer === 'function' && ArrayBuffer.isView\n ? ArrayBuffer.isView\n : null;\nconst { assign } = Object;\nconst getTag = Object.prototype.toString.call.bind(\n Object.prototype.toString,\n) as (a: object) => string;\n\ninterface CreateIsEqualOptions<Meta> {\n circular: boolean;\n comparator: EqualityComparator<Meta>;\n createState: CreateState<Meta> | undefined;\n equals: InternalEqualityComparator<Meta>;\n strict: boolean;\n}\n\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nexport function createEqualityComparator<Meta>({\n areArraysEqual,\n areDatesEqual,\n areMapsEqual,\n areObjectsEqual,\n arePrimitiveWrappersEqual,\n areRegExpsEqual,\n areSetsEqual,\n areTypedArraysEqual,\n}: ComparatorConfig<Meta>): EqualityComparator<Meta> {\n /**\n * compare the value of the two objects and return true if they are equivalent in values\n */\n return function comparator(a: any, b: any, state: State<Meta>): boolean {\n // If the items are strictly equal, no need to do a value comparison.\n if (a === b) {\n return true;\n }\n\n // If the items are not non-nullish objects, then the only possibility\n // of them being equal but not strictly is if they are both `NaN`. Since\n // `NaN` is uniquely not equal to itself, we can use self-comparison of\n // both objects, which is faster than `isNaN()`.\n if (\n a == null ||\n b == null ||\n typeof a !== 'object' ||\n typeof b !== 'object'\n ) {\n return a !== a && b !== b;\n }\n\n const constructor = a.constructor;\n\n // Checks are listed in order of commonality of use-case:\n // 1. Common complex object types (plain object, array)\n // 2. Common data values (date, regexp)\n // 3. Less-common complex object types (map, set)\n // 4. Less-common data values (promise, primitive wrappers)\n // Inherently this is both subjective and assumptive, however\n // when reviewing comparable libraries in the wild this order\n // appears to be generally consistent.\n\n // Constructors should match, otherwise there is potential for false positives\n // between class and subclass or custom object and POJO.\n if (constructor !== b.constructor) {\n return false;\n }\n\n // `isPlainObject` only checks against the object's own realm. Cross-realm\n // comparisons are rare, and will be handled in the ultimate fallback, so\n // we can avoid capturing the string tag.\n if (constructor === Object) {\n return areObjectsEqual(a, b, state);\n }\n\n // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n // the string tag or doing an `instanceof` check.\n if (isArray(a)) {\n return areArraysEqual(a, b, state);\n }\n\n // `isTypedArray()` works on all possible TypedArray classes, so we can avoid\n // capturing the string tag or comparing against all possible constructors.\n if (isTypedArray != null && isTypedArray(a)) {\n return areTypedArraysEqual(a, b, state);\n }\n\n // Try to fast-path equality checks for other complex object types in the\n // same realm to avoid capturing the string tag. Strict equality is used\n // instead of `instanceof` because it is more performant for the common\n // use-case. If someone is subclassing a native class, it will be handled\n // with the string tag comparison.\n\n if (constructor === Date) {\n return areDatesEqual(a, b, state);\n }\n\n if (constructor === RegExp) {\n return areRegExpsEqual(a, b, state);\n }\n\n if (constructor === Map) {\n return areMapsEqual(a, b, state);\n }\n\n if (constructor === Set) {\n return areSetsEqual(a, b, state);\n }\n\n // Since this is a custom object, capture the string tag to determing its type.\n // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n const tag = getTag(a);\n\n if (tag === DATE_TAG) {\n return areDatesEqual(a, b, state);\n }\n\n if (tag === REG_EXP_TAG) {\n return areRegExpsEqual(a, b, state);\n }\n\n if (tag === MAP_TAG) {\n return areMapsEqual(a, b, state);\n }\n\n if (tag === SET_TAG) {\n return areSetsEqual(a, b, state);\n }\n\n if (tag === OBJECT_TAG) {\n // The exception for value comparison is custom `Promise`-like class instances. These should\n // be treated the same as standard `Promise` objects, which means strict equality, and if\n // it reaches this point then that strict equality comparison has already failed.\n return (\n typeof a.then !== 'function' &&\n typeof b.then !== 'function' &&\n areObjectsEqual(a, b, state)\n );\n }\n\n // If an arguments tag, it should be treated as a standard object.\n if (tag === ARGUMENTS_TAG) {\n return areObjectsEqual(a, b, state);\n }\n\n // As the penultimate fallback, check if the values passed are primitive wrappers. This\n // is very rare in modern JS, which is why it is deprioritized compared to all other object\n // types.\n if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n return arePrimitiveWrappersEqual(a, b, state);\n }\n\n // If not matching any tags that require a specific type of comparison, then we hard-code false because\n // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n // - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n // comparison that can be made.\n // - For types that can be introspected, but rarely have requirements to be compared\n // (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n // use-cases (may be included in a future release, if requested enough).\n // - For types that can be introspected but do not have an objective definition of what\n // equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n // In all cases, these decisions should be reevaluated based on changes to the language and\n // common development practices.\n return false;\n };\n}\n\n/**\n * Create the configuration object used for building comparators.\n */\nexport function createEqualityComparatorConfig<Meta>({\n circular,\n createCustomConfig,\n strict,\n}: CustomEqualCreatorOptions<Meta>): ComparatorConfig<Meta> {\n let config = {\n areArraysEqual: strict\n ? areObjectsEqualStrictDefault\n : areArraysEqualDefault,\n areDatesEqual: areDatesEqualDefault,\n areMapsEqual: strict\n ? combineComparators(areMapsEqualDefault, areObjectsEqualStrictDefault)\n : areMapsEqualDefault,\n areObjectsEqual: strict\n ? areObjectsEqualStrictDefault\n : areObjectsEqualDefault,\n arePrimitiveWrappersEqual: arePrimitiveWrappersEqualDefault,\n areRegExpsEqual: areRegExpsEqualDefault,\n areSetsEqual: strict\n ? combineComparators(areSetsEqualDefault, areObjectsEqualStrictDefault)\n : areSetsEqualDefault,\n areTypedArraysEqual: strict\n ? areObjectsEqualStrictDefault\n : areTypedArraysEqual,\n };\n\n if (createCustomConfig) {\n config = assign({}, config, createCustomConfig(config));\n }\n\n if (circular) {\n const areArraysEqual = createIsCircular(config.areArraysEqual);\n const areMapsEqual = createIsCircular(config.areMapsEqual);\n const areObjectsEqual = createIsCircular(config.areObjectsEqual);\n const areSetsEqual = createIsCircular(config.areSetsEqual);\n\n config = assign({}, config, {\n areArraysEqual,\n areMapsEqual,\n areObjectsEqual,\n areSetsEqual,\n });\n }\n\n return config;\n}\n\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nexport function createInternalEqualityComparator<Meta>(\n compare: EqualityComparator<Meta>,\n): InternalEqualityComparator<Meta> {\n return function (\n a: any,\n b: any,\n _indexOrKeyA: any,\n _indexOrKeyB: any,\n _parentA: any,\n _parentB: any,\n state: State<Meta>,\n ) {\n return compare(a, b, state);\n };\n}\n\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nexport function createIsEqual<Meta>({\n circular,\n comparator,\n createState,\n equals,\n strict,\n}: CreateIsEqualOptions<Meta>) {\n if (createState) {\n return function isEqual<A, B>(a: A, b: B): boolean {\n const { cache = circular ? new WeakMap() : undefined, meta } =\n createState!();\n\n return comparator(a, b, {\n cache,\n equals,\n meta,\n strict,\n } as State<Meta>);\n };\n }\n\n if (circular) {\n return function isEqual<A, B>(a: A, b: B): boolean {\n return comparator(a, b, {\n cache: new WeakMap(),\n equals,\n meta: undefined as Meta,\n strict,\n } as State<Meta>);\n };\n }\n\n const state = {\n cache: undefined,\n equals,\n meta: undefined,\n strict,\n } as State<Meta>;\n\n return function isEqual<A, B>(a: A, b: B): boolean {\n return comparator(a, b, state);\n };\n}\n","import {\n createEqualityComparatorConfig,\n createEqualityComparator,\n createInternalEqualityComparator,\n createIsEqual,\n} from './comparator';\nimport type { CustomEqualCreatorOptions } from './internalTypes';\nimport { sameValueZeroEqual } from './utils';\n\nexport { sameValueZeroEqual };\nexport * from './internalTypes';\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nexport const deepEqual = createCustomEqual();\n\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nexport const strictDeepEqual = createCustomEqual({ strict: true });\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nexport const circularDeepEqual = createCustomEqual({ circular: true });\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nexport const strictCircularDeepEqual = createCustomEqual({\n circular: true,\n strict: true,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nexport const shallowEqual = createCustomEqual({\n createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nexport const strictShallowEqual = createCustomEqual({\n strict: true,\n createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nexport const circularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nexport const strictCircularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: () => sameValueZeroEqual,\n strict: true,\n});\n\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nexport function createCustomEqual<Meta = undefined>(\n options: CustomEqualCreatorOptions<Meta> = {},\n) {\n const {\n circular = false,\n createInternalComparator: createCustomInternalComparator,\n createState,\n strict = false,\n } = options;\n\n const config = createEqualityComparatorConfig<Meta>(options);\n const comparator = createEqualityComparator(config);\n const equals = createCustomInternalComparator\n ? createCustomInternalComparator(comparator)\n : createInternalEqualityComparator(comparator);\n\n return createIsEqual({ circular, comparator, createState, equals, strict });\n}\n","import process from 'node:process';\nimport z from 'zod';\n\nconst testOverridesSchema = z.object({\n biLoggerBaseUrl: z.string().url().optional(),\n devEditorBaseUrl: z.string().url().optional(),\n inkDebug: z.boolean().optional(),\n minRetryTimeout: z.number().optional(),\n sentryDsn: z.string().optional(),\n userBrowserTestEndpoint: z.string().url().optional(),\n dataDir: z.string().optional(),\n wixCliDependencyVersion: z.string().optional(),\n wixCliAppDependencyVersion: z.string().optional(),\n appInstallationPollInterval: z.number().optional(),\n disableTTY: z.boolean().optional(),\n waitForLoginInterval: z.number().optional(),\n registryUrl: z.string().optional(),\n fsCacheDir: z.string().optional(),\n});\n\nexport type CLITestOverrides = z.infer<typeof testOverridesSchema>;\n\nexport const TEST_OVERRIDES_ENV_VAR = 'WIX_CLI_TEST_OVERRIDES';\n\nexport function getTestOverrides(): CLITestOverrides {\n const rawOverrides = process.env[TEST_OVERRIDES_ENV_VAR];\n\n if (!rawOverrides) {\n return {};\n }\n\n return testOverridesSchema.parse(JSON.parse(rawOverrides));\n}\n\nexport function isTestEnv(): boolean {\n return !!process.env[TEST_OVERRIDES_ENV_VAR];\n}\n\nexport function setupTestEnv(): void {\n if (isTestEnv()) {\n // See https://github.com/wix-private/wix-cli/pull/814\n process.stdout.columns = 300;\n process.stderr.columns = 300;\n\n process.stdin.isTTY = !getTestOverrides().disableTTY;\n process.stdin.setRawMode = () => process.stdin;\n }\n}\n"],"mappings":"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AUgB,EAAcH,EAAYV,CAAW,CACtE,EAEAQ,GAAS,QAAUA,GACnBzB,GAAO,QAAUyB,KCvGjB,IAAAO,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAA,GAAA,SACC,MACA,MACA,MACA,MACA,KACA,IACA,MACA,MACA,KACA,MACA,OACA,MACA,MACA,MACA,WACA,KACA,MACA,MACA,KACA,MACA,MACA,OACA,KACA,MACA,KACA,MACA,OACA,MACA,QACA,MACA,MACA,MACA,QACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,OACA,MACA,WACA,MACA,MACA,QACA,MACA,MACA,MACA,YACA,YACA,YACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,KACA,MACA,OACA,UACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,UACA,KACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,QACA,MACA,MACA,OACA,OACA,MACA,OACA,MACA,MACA,MACA,UACA,QACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,OACA,MACA,MACA,OACA,OACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,YACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,KACA,MACA,MACA,OACA,MACA,OACA,OACA,MACA,SACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,OACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAC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","names":["require_assert","__commonJSMin","exports","module","init_esm_shims","assert","Stream","util","UUID_REGEXP","_capitalize","str","_toss","name","expected","oper","arg","actual","_getClass","noop","types","_setExports","ndebug","keys","out","msg","k","type","i","require_extsprintf","__commonJSMin","exports","init_esm_shims","mod_assert","mod_util","jsSprintf","jsPrintf","jsFprintf","ofmt","regex","re","args","fmt","flags","width","precision","conversion","left","pad","sign","arg","match","ret","argn","posn","convposn","curconv","jsError","doPad","dumpException","fmtstr","reason","stream","chr","str","ex","cex","require_util","__commonJSMin","exports","init_esm_shims","isArray","arg","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","re","isObject","isDate","d","isError","e","isFunction","isPrimitive","o","require_verror","__commonJSMin","exports","module","init_esm_shims","mod_assertplus","mod_util","mod_extsprintf","mod_isError","sprintf","VError","SError","WError","MultiError","parseConstructorArguments","args","argv","options","sprintf_args","shortmessage","k","a","obj","parsed","cause","ctor","message","str","err","rv","name","errors","func","e","c","require_isType","__commonJSMin","exports","init_esm_shims","isTypeImpl","key","isType","instanceOrType","type","typeArg","typeStr","instance","require_util","__commonJSMin","exports","init_esm_shims","identityFunc","x","isPromise","HOI","definition","require_variant","__commonJSMin","exports","init_esm_shims","util_1","scopeType","scope","type","descopeType","s","_a","VARIANT_CREATOR_BRAND","isVariantCreator","func","variantImpl","key","v","acc","variation","descope","obj","creator","maker","args","returned","result","variantModule","template","vmKey","vmVal","variantList","t","variant","require_precepts","__commonJSMin","exports","init_esm_shims","require_match","__commonJSMin","exports","init_esm_shims","variant_1","precepts_1","matchImpl","key","prematch","_","handler","instance","match","args","_a","_b","instanceOrTypeOrCreator","handlerParam","instanceOrCreator","ofLiteral","tType","partial","h","onLiteral","lookup","handlerWithFuncs","acc","cur","otherwise","branches","elseFunc","withFallback","fallback","require_types","__commonJSMin","exports","init_esm_shims","variant_1","typesImpl","key","types","content","c","inferTypes","_","property","require_flags","__commonJSMin","exports","init_esm_shims","flagsImpl","key","flags","o","v","require_isOfVariant","__commonJSMin","exports","init_esm_shims","isOfVariantImpl","key","isOfVariant","args","variant","instance","vc","require_remote","__commonJSMin","exports","init_esm_shims","isType_1","match_1","variant_1","CompareResult","remoteImpl","key","isType","match","variantList","isFunctions","vmod","acc","remote","getType","input","_sequence","module","order","result","keyOrder","a","b","ai","i","bi","diff","type","_sequenceOfList","sequence","require_typed","__commonJSMin","exports","init_esm_shims","pass","x","typedImpl","_key","typed","defOrFactory","require_match_tools","__commonJSMin","exports","init_esm_shims","constant","x","unpack","require_matcher","__commonJSMin","exports","init_esm_shims","match_tools_1","variant_1","tableToHandler","table","acc","cur","key","Matcher","_Matcher","target","handler","options","_a","_b","chosenHandler","remainingCases","combinedHandler","func","newHandler","variations","newCases","type","matcherImpl","matcher","actualTarget","require_cosmos","__commonJSMin","exports","init_esm_shims","isType_1","match_1","variant_1","types_1","flags_1","isOfVariant_1","remote_1","typed_1","matcher_1","variantCosmos","key","isType","flags","require_type","__commonJSMin","exports","init_esm_shims","_a","cosmos_1","require_augment","__commonJSMin","exports","init_esm_shims","type_1","variant_1","augment","variantDefinition","f","acc","key","inputFunc","returnFunc","args","result","branch","item","require_constrained","__commonJSMin","exports","init_esm_shims","constrained","_constraint_","v","require_construct","__commonJSMin","exports","init_esm_shims","construct","cls","args","require_generic","__commonJSMin","exports","init_esm_shims","flags_1","variant_1","GENERIC_BRAND","onTerms","func","GTERM","genericTerms","flags","GP","f","require_typeCatalog","__commonJSMin","exports","init_esm_shims","typeCatalog","variant","result","vc","typeMap","key","require_catalog","__commonJSMin","exports","init_esm_shims","catalog","factory","result","current","index","require_patterned","__commonJSMin","exports","init_esm_shims","patterned","_constraint_","v","require_variant_tools","__commonJSMin","exports","init_esm_shims","fields","defaults","args","arg","payload","_example","nil","require_slim","__commonJSMin","exports","init_esm_shims","augment_1","constrained_1","construct_1","cosmos_1","generic_1","typeCatalog_1","catalog_1","match_tools_1","patterned_1","typed_1","util_1","variant_tools_1","require_lib","__commonJSMin","exports","init_esm_shims","__createBinding","o","m","k","k2","__exportStar","p","require_high_level_opt","__commonJSMin","exports","module","init_esm_shims","argmap","opt","k","set","kv","require_minipass","__commonJSMin","exports","init_esm_shims","proc","EE","Stream","stringdecoder","SD","EOF","MAYBE_EMIT_END","EMITTED_END","EMITTING_END","EMITTED_ERROR","CLOSED","READ","FLUSH","FLUSHCHUNK","ENCODING","DECODER","FLOWING","PAUSED","RESUME","BUFFER","PIPES","BUFFERLENGTH","BUFFERPUSH","BUFFERSHIFT","OBJECTMODE","DESTROYED","ERROR","EMITDATA","EMITEND","EMITEND2","ASYNC","ABORT","ABORTED","SIGNAL","defer","fn","doIter","ASYNCITERATOR","ITERATOR","isEndish","ev","isArrayBuffer","b","isArrayBufferView","Pipe","src","dest","opts","PipeProxyErrors","er","Minipass","_Minipass","options","enc","chunk","om","a","_","encoding","cb","f","n","ret","noDrain","ended","p","data","extra","buf","c","resolve","reject","stopped","stop","res","onerr","ondata","onend","ondestroy","value","rej","next","s","require_constants","__commonJSMin","exports","module","init_esm_shims","realZlibConstants","require_minipass","__commonJSMin","exports","module","init_esm_shims","proc","EE","Stream","SD","EOF","MAYBE_EMIT_END","EMITTED_END","EMITTING_END","EMITTED_ERROR","CLOSED","READ","FLUSH","FLUSHCHUNK","ENCODING","DECODER","FLOWING","PAUSED","RESUME","BUFFERLENGTH","BUFFERPUSH","BUFFERSHIFT","OBJECTMODE","DESTROYED","EMITDATA","EMITEND","EMITEND2","ASYNC","defer","fn","doIter","ASYNCITERATOR","ITERATOR","isEndish","ev","isArrayBuffer","b","isArrayBufferView","Pipe","src","dest","opts","PipeProxyErrors","er","Minipass","options","enc","chunk","om","a","encoding","cb","f","n","ret","noDrain","ended","p","data","extra","buf","c","resolve","reject","res","onerr","ondata","onend","value","ondestroy","rej","s","require_minizlib","__commonJSMin","exports","init_esm_shims","assert","Buffer","realZlib","constants","Minipass","OriginalBufferConcat","_superWrite","ZlibError","err","_opts","_flushFlag","_finishFlushFlag","_fullFlushFlag","_handle","_onError","_sawError","_level","_strategy","_ended","_defaultFullFlush","ZlibBase","opts","mode","er","flushFlag","chunk","encoding","cb","nativeHandle","originalNativeClose","originalClose","args","result","writeReturn","i","data","Zlib","level","strategy","origFlush","Deflate","Inflate","_portable","Gzip","Gunzip","DeflateRaw","InflateRaw","Unzip","Brotli","BrotliCompress","BrotliDecompress","require_normalize_windows_path","__commonJSMin","exports","module","init_esm_shims","platform","p","require_read_entry","__commonJSMin","exports","module","init_esm_shims","Minipass","normPath","SLURP","header","ex","gex","data","writeLen","r","br","global","k","require_types","__commonJSMin","exports","init_esm_shims","kv","require_large_numbers","__commonJSMin","exports","module","init_esm_shims","encode","num","buf","encodeNegative","encodePositive","i","flipped","byte","onesComp","twosComp","parse","pre","value","pos","twos","len","sum","f","require_header","__commonJSMin","exports","module","init_esm_shims","types","pathModule","large","SLURP","TYPE","Header","data","off","ex","gex","buf","decString","decNumber","decDate","prefix","sum","i","global","k","prefixSize","split","splitPrefix","path","encString","encNumber","encDate","type","p","pp","ret","root","size","numToDate","num","decSmallNumber","nanNull","value","MAXNUM","number","encSmallNumber","octalString","padOctal","string","date","NULLS","require_pax","__commonJSMin","exports","module","init_esm_shims","Header","path","Pax","obj","global","body","bodyLen","bufLen","buf","i","field","v","byteLen","digits","string","ex","g","merge","parseKV","a","b","s","k","parseKVLine","set","line","n","kv","require_strip_trailing_slashes","__commonJSMin","exports","module","init_esm_shims","str","i","slashesStart","require_warn_mixin","__commonJSMin","exports","module","init_esm_shims","Base","code","message","data","require_winchars","__commonJSMin","exports","module","init_esm_shims","raw","win","char","toWin","i","toRaw","s","c","require_strip_absolute_path","__commonJSMin","exports","module","init_esm_shims","isAbsolute","parse","path","r","parsed","root","require_mode_fix","__commonJSMin","exports","module","init_esm_shims","mode","isDir","portable","require_write_entry","__commonJSMin","exports","module","init_esm_shims","Minipass","Pax","Header","fs","path","normPath","stripSlash","prefixPath","prefix","maxReadSize","PROCESS","FILE","DIRECTORY","SYMLINK","HARDLINK","HEADER","READ","LSTAT","ONLSTAT","ONREAD","ONREADLINK","OPENFILE","ONOPENFILE","CLOSE","MODE","AWAITDRAIN","ONDRAIN","PREFIX","HAD_ERROR","warner","winchars","stripAbsolutePath","modeFix","WriteEntry","p","opt","pathWarn","root","stripped","ev","data","er","stat","getType","mode","linkpath","linkKey","fd","bufLen","buf","offset","length","pos","bytesRead","cb","writeBuf","WriteEntrySync","threw","WriteEntryTar","readEntry","writeLen","require_iterator","__commonJSMin","exports","module","init_esm_shims","Yallist","walker","require_yallist","__commonJSMin","exports","module","init_esm_shims","Yallist","Node","list","self","item","i","l","node","next","prev","head","tail","push","unshift","res","fn","thisp","walker","n","initial","acc","arr","from","to","ret","start","deleteCount","nodes","insert","p","value","inserted","require_pack","__commonJSMin","exports","module","init_esm_shims","PackJob","path","absolute","Minipass","zlib","ReadEntry","WriteEntry","WriteEntrySync","WriteEntryTar","Yallist","EOF","ONSTAT","ENDED","QUEUE","CURRENT","PROCESS","PROCESSING","PROCESSJOB","JOBS","JOBDONE","ADDFSENTRY","ADDTARENTRY","STAT","READDIR","ONREADDIR","PIPE","ENTRY","ENTRYOPT","WRITEENTRYCLASS","WRITE","ONDRAIN","fs","warner","normPath","Pack","opt","chunk","_","p","job","stat","er","entries","w","code","msg","data","entry","base","source","zip","PackSync","require_fs_minipass","__commonJSMin","exports","init_esm_shims","MiniPass","EE","fs","writev","binding","FSReqWrap","fd","iovec","pos","cb","done","er","bw","req","_autoClose","_close","_ended","_fd","_finished","_flags","_flush","_handleChunk","_makeBuf","_mode","_needDrain","_onerror","_onopen","_onread","_onwrite","_open","_path","_pos","_queue","_read","_readSize","_reading","_remain","_size","_write","_writing","_defaultFlag","_errored","ReadStream","path","opt","buf","br","ret","ev","data","ReadStreamSync","threw","WriteStream","defaultFlag","enc","WriteStreamSync","require_parse","__commonJSMin","exports","module","init_esm_shims","warner","Header","EE","Yallist","maxMetaEntrySize","Entry","Pax","zlib","nextTick","gzipHeader","STATE","WRITEENTRY","READENTRY","NEXTENTRY","PROCESSENTRY","EX","GEX","META","EMITMETA","BUFFER","QUEUE","ENDED","EMITTEDEND","EMIT","UNZIP","CONSUMECHUNK","CONSUMECHUNKSUB","CONSUMEBODY","CONSUMEMETA","CONSUMEHEADER","CONSUMING","BUFFERCONCAT","MAYBEEND","WRITING","ABORTED","DONE","SAW_VALID_ENTRY","SAW_NULL_BLOCK","SAW_EOF","CLOSESTREAM","noop","_","opt","isTBR","chunk","position","header","er","type","entry","onend","c","go","re","br","ret","ev","data","extra","error","i","maybeBrotli","ended","have","length","require_list","__commonJSMin","exports","module","init_esm_shims","hlo","Parser","fs","fsm","path","stripSlash","opt_","files","cb","opt","filesFilter","onentryFunction","listFileSync","listFile","list","onentry","e","map","f","filter","mapHas","file","r","root","ret","entry","p","threw","fd","stat","readSize","pos","buf","bytesRead","parse","resolve","reject","er","stream","require_create","__commonJSMin","exports","module","init_esm_shims","hlo","Pack","fsm","t","path","opt_","files","cb","opt","createFileSync","createFile","createSync","create","p","stream","addFilesSync","promise","res","rej","addFilesAsync","file","entry","_","require_replace","__commonJSMin","exports","module","init_esm_shims","hlo","Pack","fs","fsm","t","path","Header","opt_","files","cb","opt","replaceSync","replace","p","threw","fd","position","er","st","headBuf","POSITION","bufPos","bytes","h","entryBlockSize","streamSync","stream","addFilesSync","getPos","size","cb_","pos","_","onread","promise","resolve","reject","flag","onopen","addFilesAsync","file","entry","require_update","__commonJSMin","exports","module","init_esm_shims","hlo","r","opt_","files","cb","opt","mtimeFilter","filter","path","stat","require_opts_arg","__commonJSMin","exports","module","init_esm_shims","promisify","fs","optsArg","opts","require_path_arg","__commonJSMin","exports","module","init_esm_shims","platform","resolve","parse","pathArg","path","badWinChars","root","require_find_made","__commonJSMin","exports","module","init_esm_shims","dirname","findMade","opts","parent","path","st","er","findMadeSync","require_mkdirp_manual","__commonJSMin","exports","module","init_esm_shims","dirname","mkdirpManual","path","opts","made","parent","er","st","mkdirpManualSync","require_mkdirp_native","__commonJSMin","exports","module","init_esm_shims","dirname","findMade","findMadeSync","mkdirpManual","mkdirpManualSync","mkdirpNative","path","opts","made","er","mkdirpNativeSync","require_use_native","__commonJSMin","exports","module","init_esm_shims","fs","version","versArr","hasNative","useNative","opts","useNativeSync","require_mkdirp","__commonJSMin","exports","module","init_esm_shims","optsArg","pathArg","mkdirpNative","mkdirpNativeSync","mkdirpManual","mkdirpManualSync","useNative","useNativeSync","mkdirp","path","opts","mkdirpSync","require_chownr","__commonJSMin","exports","module","init_esm_shims","fs","path","LCHOWN","LCHOWNSYNC","needEISDIRHandled","lchownSync","uid","gid","er","chownSync","handleEISDIR","cb","_","__","___","handleEISDirSync","nodeVersion","readdir","options","readdirSync","chown","cpath","chownrKid","p","child","stats","chownr","children","len","errState","then","chownrKidSync","chownrSync","require_mkdir","__commonJSMin","exports","module","init_esm_shims","mkdirp","fs","path","chownr","normPath","SymlinkError","symlink","CwdError","code","cGet","cache","key","cSet","val","checkCwd","dir","cb","er","st","opt","umask","mode","needChmod","uid","gid","doChown","preserve","unlink","cwd","done","created","made","parts","mkdir_","base","p","part","onmkdir","statEr","checkCwdSync","ok","require_normalize_unicode","__commonJSMin","exports","module","init_esm_shims","normalizeCache","hasOwnProperty","s","require_path_reservations","__commonJSMin","exports","module","init_esm_shims","assert","normalize","stripSlashes","join","platform","isWindows","queues","reservations","getDirs","path","set","running","getQueues","fn","res","check","paths","dirs","q","run","clear","next","dir","p","a","b","require_get_write_flag","__commonJSMin","exports","module","init_esm_shims","platform","isWindows","fs","O_CREAT","O_TRUNC","O_WRONLY","UV_FS_O_FILEMAP","fMapEnabled","fMapLimit","fMapFlag","size","require_unpack","__commonJSMin","exports","module","init_esm_shims","assert","Parser","fs","fsm","path","mkdir","wc","pathReservations","stripAbsolutePath","normPath","stripSlash","normalize","ONENTRY","CHECKFS","CHECKFS2","PRUNECACHE","ISREUSABLE","MAKEFS","FILE","DIRECTORY","LINK","SYMLINK","HARDLINK","UNSUPPORTED","CHECKPATH","MKDIR","ONERROR","PENDING","PEND","UNPEND","ENDED","MAYBECLOSE","SKIP","DOCHOWN","UID","GID","CHECKED_CWD","crypto","getFlag","platform","isWindows","DEFAULT_MAX_DEPTH","unlinkFile","cb","name","er","unlinkFileSync","uint32","a","b","c","cacheKeyNormalize","pruneCache","cache","abs","pnorm","dropCache","key","Unpack","opt","_","entry","code","msg","data","p","parts","linkparts","root","stripped","aRoot","pRoot","dir","mode","fullyDone","stream","actions","done","fd","atime","mtime","er2","uid","gid","tx","linkpath","st","paths","checkCwd","start","parent","afterMakeParent","lstatEr","needChmod","afterChmod","link","callSync","fn","UnpackSync","mkParent","oner","closeError","e","chunk","futimeser","fchowner","require_extract","__commonJSMin","exports","module","init_esm_shims","hlo","Unpack","fs","fsm","path","stripSlash","opt_","files","cb","opt","filesFilter","extractFileSync","extractFile","extractSync","extract","map","f","filter","mapHas","file","r","root","ret","entry","u","stat","readSize","p","resolve","reject","er","stream","require_tar","__commonJSMin","exports","init_esm_shims","require_merge2","__commonJSMin","exports","module","init_esm_shims","Stream","PassThrough","slice","merge2","streamsQueue","args","merging","options","doEnd","doPipeError","mergedStream","addStream","i","len","pauseStreams","mergeStream","streams","endStream","pipesCount","next","pipe","stream","onend","onerror","err","require_array","__commonJSMin","exports","init_esm_shims","flatten","items","collection","item","splitWhen","predicate","result","groupIndex","require_errno","__commonJSMin","exports","init_esm_shims","isEnoentCodeError","error","require_fs","__commonJSMin","exports","init_esm_shims","DirentFromStats","name","stats","createDirentFromStats","require_path","__commonJSMin","exports","init_esm_shims","os","path","IS_WINDOWS_PLATFORM","LEADING_DOT_SEGMENT_CHARACTERS_COUNT","POSIX_UNESCAPED_GLOB_SYMBOLS_RE","WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE","DOS_DEVICE_PATH_RE","WINDOWS_BACKSLASHES_RE","unixify","filepath","makeAbsolute","cwd","removeLeadingDotSegment","entry","secondCharactery","escapeWindowsPath","escapePosixPath","pattern","convertWindowsPathToPattern","convertPosixPathToPattern","require_is_extglob","__commonJSMin","exports","module","init_esm_shims","str","match","require_is_glob","__commonJSMin","exports","module","init_esm_shims","isExtglob","chars","strictCheck","str","index","pipeIndex","closeSquareIndex","closeCurlyIndex","closeParenIndex","backSlashIndex","open","close","n","relaxedCheck","options","check","require_glob_parent","__commonJSMin","exports","module","init_esm_shims","isGlob","pathPosixDirname","isWin32","slash","backslash","enclosure","globby","escaped","str","opts","options","require_utils","__commonJSMin","exports","init_esm_shims","num","node","type","min","max","step","limit","block","n","nodes","acc","args","result","flat","arr","ele","require_stringify","__commonJSMin","exports","module","init_esm_shims","utils","ast","options","stringify","node","parent","invalidBlock","invalidNode","output","child","require_is_number","__commonJSMin","exports","module","init_esm_shims","num","require_to_regex_range","__commonJSMin","exports","module","init_esm_shims","isNumber","toRegexRange","min","max","options","opts","relax","shorthand","capture","wrap","cacheKey","a","b","result","isPadded","hasPadding","state","positives","negatives","newMin","splitToPatterns","collatePatterns","neg","pos","onlyNegative","filterPatterns","onlyPositive","intersected","splitToRanges","nines","zeros","stop","countNines","stops","countZeros","compare","rangeToPattern","start","zipped","zip","digits","pattern","count","i","startDigit","stopDigit","toCharacterClass","tok","ranges","tokens","prev","obj","toQuantifier","padZeros","arr","comparison","prefix","intersection","ele","string","contains","key","val","len","integer","str","value","diff","require_fill_range","__commonJSMin","exports","module","init_esm_shims","util","toRegexRange","isObject","val","transform","toNumber","value","isValidValue","isNumber","num","zeros","input","index","stringify","start","end","options","pad","maxLength","dash","toMaxLen","negative","toSequence","parts","a","b","prefix","positives","negatives","result","toRange","isNumbers","stop","toRegex","wrap","rangeError","args","invalidRange","invalidStep","step","fillNumbers","descending","startString","endString","stepString","padded","maxLen","format","push","range","fillLetters","min","max","fill","opts","require_compile","__commonJSMin","exports","module","init_esm_shims","fill","utils","compile","ast","options","walk","node","parent","invalidBlock","invalidNode","invalid","prefix","output","args","range","child","require_expand","__commonJSMin","exports","module","init_esm_shims","fill","stringify","utils","append","queue","stash","enclose","result","ele","item","value","expand","ast","options","rangeLimit","walk","node","parent","p","q","args","range","block","i","child","require_constants","__commonJSMin","exports","module","init_esm_shims","require_parse","__commonJSMin","exports","module","init_esm_shims","stringify","MAX_LENGTH","CHAR_BACKSLASH","CHAR_BACKTICK","CHAR_COMMA","CHAR_DOT","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_LEFT_CURLY_BRACE","CHAR_RIGHT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_DOUBLE_QUOTE","CHAR_SINGLE_QUOTE","CHAR_NO_BREAK_SPACE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","parse","input","options","opts","max","ast","stack","block","prev","brackets","length","index","depth","value","memo","advance","push","node","closed","next","open","brace","type","siblings","before","parent","require_braces","__commonJSMin","exports","module","init_esm_shims","stringify","compile","expand","parse","braces","input","options","output","pattern","result","require_constants","__commonJSMin","exports","module","init_esm_shims","path","WIN_SLASH","WIN_NO_SLASH","DOT_LITERAL","PLUS_LITERAL","QMARK_LITERAL","SLASH_LITERAL","ONE_CHAR","QMARK","END_ANCHOR","START_ANCHOR","DOTS_SLASH","NO_DOT","NO_DOTS","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK_NO_DOT","STAR","POSIX_CHARS","WINDOWS_CHARS","POSIX_REGEX_SOURCE","chars","win32","require_utils","__commonJSMin","exports","init_esm_shims","path","win32","REGEX_BACKSLASH","REGEX_REMOVE_BACKSLASH","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_GLOBAL","val","str","match","segs","options","input","char","lastIdx","idx","state","output","prepend","append","require_scan","__commonJSMin","exports","module","init_esm_shims","utils","CHAR_ASTERISK","CHAR_AT","CHAR_BACKWARD_SLASH","CHAR_COMMA","CHAR_DOT","CHAR_EXCLAMATION_MARK","CHAR_FORWARD_SLASH","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_PARENTHESES","CHAR_LEFT_SQUARE_BRACKET","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_PARENTHESES","CHAR_RIGHT_SQUARE_BRACKET","isPathSeparator","code","depth","token","scan","input","options","opts","length","scanToEnd","slashes","tokens","parts","str","index","start","lastIndex","isBrace","isBracket","isGlob","isExtglob","isGlobstar","braceEscaped","backslashes","negated","negatedExtglob","finished","braces","prev","eos","peek","advance","next","base","prefix","glob","state","prevIndex","idx","n","i","value","require_parse","__commonJSMin","exports","module","init_esm_shims","constants","utils","MAX_LENGTH","POSIX_REGEX_SOURCE","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REPLACEMENTS","expandRange","args","options","value","v","syntaxError","type","char","parse","input","opts","max","len","bos","tokens","capture","win32","PLATFORM_CHARS","EXTGLOB_CHARS","DOT_LITERAL","PLUS_LITERAL","SLASH_LITERAL","ONE_CHAR","DOTS_SLASH","NO_DOT","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK","QMARK_NO_DOT","STAR","START_ANCHOR","globstar","nodot","qmarkNoDot","star","state","extglobs","braces","stack","prev","eos","peek","n","advance","remaining","consume","num","append","token","negate","count","increment","decrement","push","tok","isBrace","isExtglob","extglobOpen","output","extglobClose","rest","extglobStar","expression","backslashes","m","esc","chars","first","index","next","match","slashes","inner","idx","pre","posix","extglob","prevValue","escaped","open","brace","arr","range","i","out","toks","t","prior","before","isStart","afterStar","after","end","NO_DOTS","slashDot","create","str","source","require_picomatch","__commonJSMin","exports","module","init_esm_shims","path","scan","parse","utils","constants","isObject","val","picomatch","glob","options","returnState","fns","input","str","isMatch","state","isState","opts","posix","regex","isIgnored","ignoreOpts","matcher","returnObject","match","output","result","format","patterns","pattern","p","returnOutput","prepend","append","source","parsed","err","require_picomatch","__commonJSMin","exports","module","init_esm_shims","require_micromatch","__commonJSMin","exports","module","init_esm_shims","util","braces","picomatch","utils","isEmptyString","val","micromatch","list","patterns","options","omit","keep","items","negatives","onResult","state","i","isMatch","negated","item","matched","matches","p","pattern","str","result","obj","keys","res","key","glob","input","posix","match","v","args","require_pattern","__commonJSMin","exports","init_esm_shims","path","globParent","micromatch","GLOBSTAR","ESCAPE_SYMBOL","COMMON_GLOB_SYMBOLS_RE","REGEX_CHARACTER_CLASS_SYMBOLS_RE","REGEX_GROUP_SYMBOLS_RE","GLOB_EXTENSION_SYMBOLS_RE","BRACE_EXPANSION_SEPARATORS_RE","DOUBLE_SLASH_RE","isStaticPattern","pattern","options","isDynamicPattern","hasBraceExpansion","openingBraceIndex","closingBraceIndex","braceContent","convertToPositivePattern","isNegativePattern","convertToNegativePattern","isPositivePattern","getNegativePatterns","patterns","getPositivePatterns","getPatternsInsideCurrentDirectory","isPatternRelatedToParentDirectory","getPatternsOutsideCurrentDirectory","getBaseDirectory","hasGlobStar","endsWithSlashGlobStar","isAffectDepthOfReadingPattern","basename","expandPatternsWithBraceExpansion","collection","expandBraceExpansion","a","b","getPatternParts","parts","makeRe","convertPatternsToRe","matchAny","entry","patternsRe","patternRe","removeDuplicateSlashes","require_stream","__commonJSMin","exports","init_esm_shims","merge2","merge","streams","mergedStream","stream","error","propagateCloseEventToSources","require_string","__commonJSMin","exports","init_esm_shims","isString","input","isEmpty","require_utils","__commonJSMin","exports","init_esm_shims","array","errno","fs","path","pattern","stream","string","require_tasks","__commonJSMin","exports","init_esm_shims","utils","generate","input","settings","patterns","processPatterns","ignore","positivePatterns","getPositivePatterns","negativePatterns","getNegativePatternsAsPositive","staticPatterns","pattern","dynamicPatterns","staticTasks","convertPatternsToTasks","dynamicTasks","positive","negative","dynamic","tasks","patternsOutsideCurrentDirectory","patternsInsideCurrentDirectory","outsideCurrentDirectoryGroup","groupPatternsByBaseDirectory","insideCurrentDirectoryGroup","convertPatternGroupsToTasks","convertPatternGroupToTask","group","collection","base","require_async","__commonJSMin","exports","init_esm_shims","read","path","settings","callback","lstatError","lstat","callFailureCallback","callSuccessCallback","statError","stat","error","result","require_sync","__commonJSMin","exports","init_esm_shims","read","path","settings","lstat","stat","error","require_fs","__commonJSMin","exports","init_esm_shims","fs","createFileSystemAdapter","fsMethods","require_settings","__commonJSMin","exports","init_esm_shims","fs","Settings","_options","option","value","require_out","__commonJSMin","exports","init_esm_shims","async","sync","settings_1","stat","path","optionsOrSettingsOrCallback","callback","getSettings","statSync","optionsOrSettings","settings","settingsOrOptions","require_queue_microtask","__commonJSMin","exports","module","init_esm_shims","promise","cb","err","require_run_parallel","__commonJSMin","exports","module","init_esm_shims","runParallel","queueMicrotask","tasks","cb","results","pending","keys","isSync","done","err","end","each","i","result","key","task","require_constants","__commonJSMin","exports","init_esm_shims","NODE_PROCESS_VERSION_PARTS","MAJOR_VERSION","MINOR_VERSION","SUPPORTED_MAJOR_VERSION","SUPPORTED_MINOR_VERSION","IS_MATCHED_BY_MAJOR","IS_MATCHED_BY_MAJOR_AND_MINOR","require_fs","__commonJSMin","exports","init_esm_shims","DirentFromStats","name","stats","createDirentFromStats","require_utils","__commonJSMin","exports","init_esm_shims","fs","require_common","__commonJSMin","exports","init_esm_shims","joinPathSegments","a","b","separator","require_async","__commonJSMin","exports","init_esm_shims","fsStat","rpl","constants_1","utils","common","read","directory","settings","callback","readdirWithFileTypes","readdir","readdirError","dirents","callFailureCallback","entries","dirent","callSuccessCallback","tasks","entry","makeRplTaskEntry","rplError","rplEntries","done","statError","stats","names","name","path","error","result","require_sync","__commonJSMin","exports","init_esm_shims","fsStat","constants_1","utils","common","read","directory","settings","readdirWithFileTypes","readdir","dirent","entry","stats","error","name","entryPath","require_fs","__commonJSMin","exports","init_esm_shims","fs","createFileSystemAdapter","fsMethods","require_settings","__commonJSMin","exports","init_esm_shims","path","fsStat","fs","Settings","_options","option","value","require_out","__commonJSMin","exports","init_esm_shims","async","sync","settings_1","scandir","path","optionsOrSettingsOrCallback","callback","getSettings","scandirSync","optionsOrSettings","settings","settingsOrOptions","require_reusify","__commonJSMin","exports","module","init_esm_shims","reusify","Constructor","head","tail","get","current","release","obj","require_queue","__commonJSMin","exports","module","init_esm_shims","reusify","fastqueue","context","worker","concurrency","cache","Task","queueHead","queueTail","_running","errorHandler","self","push","noop","pause","running","resume","idle","length","getQueue","unshift","kill","killAndDrain","error","current","counter","tasks","i","release","value","done","holder","next","handler","err","result","callback","val","queueAsPromised","asyncWrapper","arg","cb","res","queue","pushCb","unshiftCb","drained","p","resolve","reject","previousDrain","require_common","__commonJSMin","exports","init_esm_shims","isFatalError","settings","error","isAppliedFilter","filter","value","replacePathSegmentSeparator","filepath","separator","joinPathSegments","a","b","require_reader","__commonJSMin","exports","init_esm_shims","common","Reader","_root","_settings","require_async","__commonJSMin","exports","init_esm_shims","events_1","fsScandir","fastq","common","reader_1","AsyncReader","_root","_settings","callback","directory","base","queueItem","error","item","done","entries","entry","fullpath","require_async","__commonJSMin","exports","init_esm_shims","async_1","AsyncProvider","_root","_settings","callback","error","callFailureCallback","entry","callSuccessCallback","entries","require_stream","__commonJSMin","exports","init_esm_shims","stream_1","async_1","StreamProvider","_root","_settings","error","entry","require_sync","__commonJSMin","exports","init_esm_shims","fsScandir","common","reader_1","SyncReader","directory","base","item","entries","entry","error","fullpath","require_sync","__commonJSMin","exports","init_esm_shims","sync_1","SyncProvider","_root","_settings","require_settings","__commonJSMin","exports","init_esm_shims","path","fsScandir","Settings","_options","option","value","require_out","__commonJSMin","exports","init_esm_shims","async_1","stream_1","sync_1","settings_1","walk","directory","optionsOrSettingsOrCallback","callback","getSettings","walkSync","optionsOrSettings","settings","walkStream","settingsOrOptions","require_reader","__commonJSMin","exports","init_esm_shims","path","fsStat","utils","Reader","_settings","filepath","stats","pattern","entry","error","require_stream","__commonJSMin","exports","init_esm_shims","stream_1","fsStat","fsWalk","reader_1","ReaderStream","root","options","patterns","filepaths","stream","index","_enc","done","entry","i","filepath","pattern","stats","error","resolve","reject","require_async","__commonJSMin","exports","init_esm_shims","fsWalk","reader_1","stream_1","ReaderAsync","root","options","resolve","reject","error","entries","patterns","stream","entry","require_matcher","__commonJSMin","exports","init_esm_shims","utils","Matcher","_patterns","_settings","_micromatchOptions","pattern","segments","sections","part","segment","require_partial","__commonJSMin","exports","init_esm_shims","matcher_1","PartialMatcher","filepath","parts","levels","patterns","info","pattern","section","part","index","segment","require_deep","__commonJSMin","exports","init_esm_shims","utils","partial_1","DeepFilter","_settings","_micromatchOptions","basePath","positive","negative","matcher","negativeRe","entry","patterns","affectDepthOfReadingPatterns","filepath","entryPath","entryPathDepth","basePathDepth","patternsRe","require_entry","__commonJSMin","exports","init_esm_shims","utils","EntryFilter","_settings","_micromatchOptions","positive","negative","positiveRe","negativeRe","entry","filepath","isDirectory","isMatched","entryPath","patternsRe","fullpath","require_error","__commonJSMin","exports","init_esm_shims","utils","ErrorFilter","_settings","error","require_entry","__commonJSMin","exports","init_esm_shims","utils","EntryTransformer","_settings","entry","filepath","require_provider","__commonJSMin","exports","init_esm_shims","path","deep_1","entry_1","error_1","entry_2","Provider","_settings","task","basePath","require_async","__commonJSMin","exports","init_esm_shims","async_1","provider_1","ProviderAsync","task","root","options","entry","require_stream","__commonJSMin","exports","init_esm_shims","stream_1","stream_2","provider_1","ProviderStream","task","root","options","source","destination","error","entry","require_sync","__commonJSMin","exports","init_esm_shims","fsStat","fsWalk","reader_1","ReaderSync","root","options","patterns","entries","pattern","filepath","entry","stats","error","require_sync","__commonJSMin","exports","init_esm_shims","sync_1","provider_1","ProviderSync","task","root","options","require_settings","__commonJSMin","exports","init_esm_shims","fs","os","CPU_COUNT","Settings","_options","option","value","methods","require_out","__commonJSMin","exports","module","init_esm_shims","taskManager","async_1","stream_1","sync_1","settings_1","utils","FastGlob","source","options","assertPatternsInput","works","getWorks","result","sync","stream","generateTasks","patterns","settings","isDynamicPattern","escapePath","convertPathToPattern","posix","win32","_Provider","tasks","provider","input","item","require_path_type","__commonJSMin","exports","init_esm_shims","promisify","fs","isType","fsStatType","statsMethodName","filePath","error","isTypeSync","require_dir_glob","__commonJSMin","exports","module","init_esm_shims","path","pathType","getExtensions","extensions","getPath","filepath","cwd","pth","addExtensions","file","getGlob","directory","options","x","input","globs","require_ignore","__commonJSMin","exports","module","init_esm_shims","makeArray","subject","EMPTY","SPACE","ESCAPE","REGEX_TEST_BLANK_LINE","REGEX_INVALID_TRAILING_BACKSLASH","REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION","REGEX_REPLACE_LEADING_EXCAPED_HASH","REGEX_SPLITALL_CRLF","REGEX_TEST_INVALID_PATH","SLASH","TMP_KEY_IGNORE","KEY_IGNORE","define","object","key","value","REGEX_REGEXP_RANGE","RETURN_FALSE","sanitizeRange","range","match","from","to","cleanRangeBackSlash","slashes","length","REPLACERS","_","index","str","p1","p2","unescaped","leadEscape","endEscape","close","regexCache","makeRegex","pattern","ignoreCase","source","prev","current","isString","checkPattern","splitPattern","IgnoreRule","origin","negative","regex","createRule","throwError","message","Ctor","checkPath","path","originalPath","doThrow","isNotRelative","p","Ignore","ignorecase","allowRelativePaths","rule","checkUnignored","ignored","unignored","cache","slices","parent","paths","factory","options","isPathValid","makePosix","REGIX_IS_WINDOWS_PATH_ABSOLUTE","require_readdirp","__commonJSMin","exports","module","init_esm_shims","fs","Readable","sysPath","promisify","picomatch","readdir","stat","lstat","realpath","BANG","RECURSIVE_ERROR_CODE","NORMAL_FLOW_ERRORS","FILE_TYPE","DIR_TYPE","FILE_DIR_TYPE","EVERYTHING_TYPE","ALL_TYPES","isNormalFlowError","error","maj","min","n","wantBigintFsStats","normalizeFilter","filter","glob","entry","positive","negative","item","trimmed","f","ReaddirpStream","_ReaddirpStream","path","options","opts","root","type","statMethod","batch","depth","files","slice","dirent","entryType","parent","basename","fullPath","err","stats","full","entryRealPath","entryRealPathStats","len","recursiveError","readdirp","readdirpPromise","resolve","reject","require_normalize_path","__commonJSMin","exports","module","init_esm_shims","path","stripTrailing","len","prefix","ch","segs","require_anymatch","__commonJSMin","exports","module","init_esm_shims","picomatch","normalizePath","BANG","DEFAULT_OPTIONS","arrify","item","createPattern","matcher","options","glob","string","matchPatterns","patterns","negPatterns","args","returnIndex","isList","_path","path","index","nglob","applied","pattern","anymatch","matchers","testString","opts","mtchers","negatedGlobs","ri","require_binary_extensions","__commonJSMin","exports","module","require_binary_extensions","__commonJSMin","exports","module","init_esm_shims","require_is_binary_path","__commonJSMin","exports","module","init_esm_shims","path","binaryExtensions","extensions","filePath","require_constants","__commonJSMin","exports","init_esm_shims","sep","platform","os","val","require_nodefs_handler","__commonJSMin","exports","module","init_esm_shims","fs","sysPath","promisify","isBinaryPath","isWindows","isLinux","EMPTY_FN","EMPTY_STR","KEY_LISTENERS","KEY_ERR","KEY_RAW","HANDLER_KEYS","EV_CHANGE","EV_ADD","EV_ADD_DIR","EV_ERROR","STR_DATA","STR_END","BRACE_START","STAR","THROTTLE_MODE_WATCH","open","stat","lstat","close","fsrealpath","statMethods","foreach","val","fn","addAndConvert","main","prop","item","container","clearItem","cont","key","set","delFromSet","isEmptySet","FsWatchInstances","createFsWatchInstance","path","options","listener","errHandler","emitRaw","handleEvent","rawEvent","evPath","fsWatchBroadcast","error","fullPath","type","val1","val2","val3","setFsWatchListener","handlers","rawEmitter","watcher","broadcastErr","fd","FsWatchFileInstances","setFsWatchFileListener","listeners","rawEmitters","copts","curr","prev","currmtime","NodeFsHandler","fsW","opts","directory","basename","absolutePath","closer","file","stats","initialAdd","dirname","parent","prevStats","newStats","at","mt","entry","full","dir","linkPath","wh","target","depth","throttler","previous","current","stream","resolve","wasThrottled","realpath","parentDir","tracked","oDepth","dirPath","priorWh","ready","follow","absPath","targetPath","require_fsevents_handler","__commonJSMin","exports","module","init_esm_shims","fs","sysPath","promisify","fsevents","error","mtch","maj","min","EV_ADD","EV_CHANGE","EV_ADD_DIR","EV_UNLINK","EV_ERROR","STR_DATA","STR_END","FSEVENT_CREATED","FSEVENT_MODIFIED","FSEVENT_DELETED","FSEVENT_MOVED","FSEVENT_UNKNOWN","FSEVENT_FLAG_MUST_SCAN_SUBDIRS","FSEVENT_TYPE_FILE","FSEVENT_TYPE_DIRECTORY","FSEVENT_TYPE_SYMLINK","ROOT_GLOBSTAR","DIR_SUFFIX","DOT_SLASH","FUNCTION_TYPE","EMPTY_FN","IDENTITY_FN","Depth","value","stat","lstat","realpath","statMethods","FSEventsWatchers","consolidateThreshhold","wrongEventFlags","createFSEventsInstance","path","callback","setFSEventsListener","realPath","listener","rawEmitter","watchPath","parentPath","cont","couldConsolidate","resolvedPath","hasSymlink","filteredListener","fullPath","flags","info","watchedParent","watchedPath","list","lst","count","canUse","calcDepth","root","i","sameTypes","stats","FsEventsHandler","fsw","ipaths","parent","watchedDir","item","opts","event","isDirectory","curDepth","eventName","transform","globFilter","closer","linkPath","linkTarget","aliasedPath","newPath","processPath","forceAdd","pp","isDir","dirObj","base","wh","priorDepth","entry","joinedPath","require_chokidar","__commonJSMin","exports","init_esm_shims","EventEmitter","fs","sysPath","promisify","readdirp","anymatch","globParent","isGlob","braces","normalizePath","NodeFsHandler","FsEventsHandler","EV_ALL","EV_READY","EV_ADD","EV_CHANGE","EV_UNLINK","EV_ADD_DIR","EV_UNLINK_DIR","EV_RAW","EV_ERROR","STR_CLOSE","STR_END","BACK_SLASH_RE","DOUBLE_SLASH_RE","SLASH_OR_BACK_SLASH_RE","DOT_RE","REPLACER_RE","SLASH","SLASH_SLASH","BRACE_START","BANG","ONE_DOT","TWO_DOTS","GLOBSTAR","SLASH_GLOBSTAR","ANYMATCH_OPTS","STRING_TYPE","FUNCTION_TYPE","EMPTY_STR","EMPTY_FN","isWindows","isMacos","isIBMi","stat","readdir","arrify","value","flatten","list","result","item","unifyPaths","paths_","paths","p","normalizePathToUnix","toUnix","string","str","prepend","path","normalizeIgnored","cwd","getAbsolutePath","undef","opts","key","DirEntry","dir","removeWatcher","items","STAT_METHOD_F","STAT_METHOD_L","WatchHelper","watchPath","follow","fsw","parts","entry","stats","resolvedPath","entryParts","globstar","part","i","FSWatcher","_opts","envPoll","envLower","envInterval","awf","readyCalls","args","_origAdd","_internal","disableGlobbing","absPath","res","results","closers","closerList","closer","promise","stream","dirent","watchList","event","val1","val2","val3","pw","awfEmit","err","fullPath","error","code","actionType","timeout","action","actionPath","timeoutObject","clear","count","thr","threshold","timeoutHandler","now","awaitWriteFinish","prevStat","curStat","ign","ignored","depth","directory","st","isDirectory","nested","parent","wasTracked","relPath","eventName","root","options","watch","watcher","require_isObject","__commonJSMin","exports","module","init_esm_shims","isObject","value","type","require_freeGlobal","__commonJSMin","exports","module","init_esm_shims","freeGlobal","require_root","__commonJSMin","exports","module","init_esm_shims","freeGlobal","freeSelf","root","require_now","__commonJSMin","exports","module","init_esm_shims","root","now","require_trimmedEndIndex","__commonJSMin","exports","module","init_esm_shims","reWhitespace","trimmedEndIndex","string","index","require_baseTrim","__commonJSMin","exports","module","init_esm_shims","trimmedEndIndex","reTrimStart","baseTrim","string","require_Symbol","__commonJSMin","exports","module","init_esm_shims","root","Symbol","require_getRawTag","__commonJSMin","exports","module","init_esm_shims","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","value","isOwn","tag","unmasked","result","require_objectToString","__commonJSMin","exports","module","init_esm_shims","objectProto","nativeObjectToString","objectToString","value","require_baseGetTag","__commonJSMin","exports","module","init_esm_shims","Symbol","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","baseGetTag","value","require_isObjectLike","__commonJSMin","exports","module","init_esm_shims","isObjectLike","value","require_isSymbol","__commonJSMin","exports","module","init_esm_shims","baseGetTag","isObjectLike","symbolTag","isSymbol","value","require_toNumber","__commonJSMin","exports","module","init_esm_shims","baseTrim","isObject","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","value","other","isBinary","require_debounce","__commonJSMin","exports","module","init_esm_shims","isObject","now","toNumber","FUNC_ERROR_TEXT","nativeMax","nativeMin","debounce","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","init_esm_shims","import_verror","WError","VError","CliError","options","normalizedCause","init_esm_shims","import_variant","CliSystemErrorCode","CliUserErrorCode","CliValidationError","CliErrorCode","init_esm_shims","init_esm_shims","import_variant","isCliError","error","CliErrorCode","isCliSystemError","CliSystemErrorCode","init_esm_shims","import_variant","import_verror","getFirstUserError","error","isCliError","CliUserErrorCode","nestedError","VError","normalizeError","cliError","CliError","CliErrorCode","init_esm_shims","join","init_esm_shims","join","getGitIgnoredFolder","projectFolder","CONFIG_FILENAME","getDebugLogFilePath","projectFolder","join","getGitIgnoredFolder","init_esm_shims","React","createContext","useContext","useState","useEffect","init_esm_shims","init_esm_shims","import_variant","join","init_esm_shims","util","val","assertIs","_arg","assertNever","_x","items","obj","item","validKeys","k","filtered","e","object","keys","key","arr","checker","joinValues","array","separator","_","value","objectUtil","first","second","ZodParsedType","getParsedType","data","ZodIssueCode","quotelessJson","ZodError","issues","sub","subs","actualProto","_mapper","mapper","issue","fieldErrors","processError","error","curr","i","el","formErrors","errorMap","_ctx","message","overrideErrorMap","setErrorMap","map","getErrorMap","makeIssue","params","path","errorMaps","issueData","fullPath","fullIssue","errorMessage","maps","m","EMPTY_PATH","addIssueToContext","ctx","x","ParseStatus","_ParseStatus","status","results","arrayValue","s","INVALID","pairs","syncPairs","pair","finalObject","DIRTY","OK","isAborted","isDirty","isValid","isAsync","errorUtil","ParseInputLazyPath","parent","handleResult","result","processCreateParams","invalid_type_error","required_error","description","iss","ZodType","def","input","_a","maybeAsyncResult","check","getIssueProperties","setError","refinementData","refinement","ZodEffects","ZodFirstPartyTypeKind","ZodOptional","ZodNullable","ZodArray","ZodPromise","option","ZodUnion","incoming","ZodIntersection","transform","defaultValueFunc","ZodDefault","ZodBranded","catchValueFunc","ZodCatch","This","target","ZodPipeline","ZodReadonly","cuidRegex","cuid2Regex","ulidRegex","uuidRegex","emailRegex","_emojiRegex","emojiRegex","ipv4Regex","ipv6Regex","datetimeRegex","args","isValidIP","ip","version","ZodString","_ZodString","tooBig","tooSmall","regex","validation","options","minLength","maxLength","len","ch","min","max","floatSafeRemainder","step","valDecCount","stepDecCount","decCount","valInt","stepInt","ZodNumber","_ZodNumber","kind","inclusive","ZodBigInt","_ZodBigInt","ZodBoolean","ZodDate","_ZodDate","minDate","maxDate","ZodSymbol","ZodUndefined","ZodNull","ZodAny","ZodUnknown","ZodNever","ZodVoid","_ZodArray","schema","deepPartialify","ZodObject","newShape","fieldSchema","ZodTuple","_ZodObject","shape","shapeKeys","extraKeys","keyValidator","unknownKeys","catchall","_b","_c","_d","defaultError","augmentation","merging","index","mask","newField","createZodEnum","handleResults","unionErrors","childCtx","dirty","types","getDiscriminator","type","ZodLazy","ZodLiteral","ZodEnum","ZodNativeEnum","ZodDiscriminatedUnion","_ZodDiscriminatedUnion","discriminator","discriminatorValue","optionsMap","discriminatorValues","mergeValues","a","b","aType","bType","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","handleParsed","parsedLeft","parsedRight","merged","left","right","_ZodTuple","itemIndex","rest","schemas","ZodRecord","_ZodRecord","keyType","valueType","third","ZodMap","finalMap","ZodSet","_ZodSet","finalizeSet","elements","parsedSet","element","minSize","maxSize","size","ZodFunction","_ZodFunction","makeArgsIssue","makeReturnsIssue","returns","fn","me","parsedArgs","parsedReturns","returnType","func","getter","values","_ZodEnum","expectedValues","enumValues","opt","nativeEnumValues","promisified","effect","checkCtx","arg","processed","executeRefinement","acc","inner","base","preprocess","newCtx","ZodNaN","BRAND","_ZodPipeline","inResult","custom","fatal","p","_fatal","p2","late","instanceOfType","cls","stringType","numberType","nanType","bigIntType","booleanType","dateType","symbolType","undefinedType","nullType","anyType","unknownType","neverType","voidType","arrayType","objectType","strictObjectType","unionType","discriminatedUnionType","intersectionType","tupleType","recordType","mapType","setType","functionType","lazyType","literalType","enumType","nativeEnumType","promiseType","effectsType","optionalType","nullableType","preprocessType","pipelineType","ostring","onumber","oboolean","coerce","NEVER","z","init_esm_shims","ComponentType","WidgetVertical","WidgetHorizontal","WidgetWidthType","Region","UnitType","HorizontalDocking","VerticalDocking","ReplacementType","PluginInterface","InstallPage","RegionType","EmbeddedScriptPages","EmbeddedScriptPlacement","EmbedCategory","TemplateDefaultColor","ThumbnailsSize","BarAlignmentSelected","DefaultTextStyle","ElementType","ScriptType","ExtensionType","PrimitiveType","SimpleType","Exposure","PartialPaymentRestriction","HostContainerId","MandatoryField","MeasurementSystem","Default","HookType","Type","ExecutionType","ExtendingComponentType","BackOfficeHostingPlatforms","BackOfficeScriptAssetType","ViewMode","AlgorithmType","LockableOperation","RestrictedOperation","BlockType","Status","TextInputDisplayType","Tag","FilterSelectionType","FilterOptionsType","ChannelType","AcceptedDirectMessageType","MediaMimeType","AcceptedSmsMessageType","InitDirection","CalendarType","ConnectMethod","ListEventFromCalendars","SyncToCalendar","NavigationType","State","NotificationTopicState","NotificationTopicType","PlanFormPricingOption","PlanFormDefaultSection","PlanPeriodUnit","TypedDynamicParamType","UserNotificationDataRecipientFilterType","UserNotificationDataInitiatorType","Level","IconType","MobileApplication","AndroidStyle","ExposureRuleType","Intent","RecipientFilterType","InitiatorType","Environment","SchemaScope","FieldType","CustomElementScriptType","HeightMode","DIST_DIR","GIT_IGNORED_DIR","SRC_DIR","APP_CONFIG_PATH","join","DEV_LOG_PATH","DASHBOARD_DIR","DASHBOARD_PAGES_DIR","DASHBOARD_PLUGINS_DIR","DASHBOARD_MENU_PLUGINS_DIR","DASHBOARD_MODALS_DIR","SITE_DIR","SITE_WIDGETS_DIR","EMBEDDED_SCRIPTS_DIR","CUSTOM_ELEMENTS_DIR","getDashboardPagesDir","projectFolder","getEmbeddedScriptsDir","projectFolder","join","EMBEDDED_SCRIPTS_DIR","getDistFolder","projectFolder","join","DIST_DIR","getAppBuildFolder","getAppConfigPath","APP_CONFIG_PATH","getDevLogPath","DEV_LOG_PATH","getAppManifestPath","dashboardSidebarCategoryConfig","z","dashboardConfigSchema","wixConfigSchema","appConfigSchema","sidebarConfigSchema","dashboardPageConfigSchema","dashboardModalConfigSchema","dashboardPluginConfigSchema","actionSchema","data","ctx","dashboardMenuPluginConfigSchema","embeddedScriptConfigSchema","EmbedCategory","EmbeddedScriptPlacement","PlatformType","customElementConfigSchema","embeddedScriptParamsOverrideSchema","init_esm_shims","import_tar","import_verror","statSync","access","readFile","writeFile","mkdir","stat","dirname","join","EOL","toJsonString","object","opts","EOL","writeJson","filePath","str","mkdir","dirname","writeFile","e","CliError","CliErrorCode","readJson","file","content","readFile","pathExists","path","access","outputFile","createArchive","outputFilePath","VError","fileCount","uncompressedSizeInBytes","entry","fullPath","join","stat","statSync","compressedSizeInKb","readWixConfig","configFile","readJson","CONFIG_FILENAME","config","wixConfigSchema","CliError","CliErrorCode","saveWixConfig","writeJson","init_esm_shims","init_esm_shims","join","init_esm_shims","import_merge2","import_fast_glob","import_dir_glob","fs","nodePath","init_esm_shims","import_fast_glob","import_ignore","process","fs","path","init_esm_shims","slash","path","isExtendedLengthPath","hasNonAscii","init_esm_shims","fileURLToPath","Transform","toPath","urlOrPath","FilterStream","filter","data","encoding","callback","isNegativePattern","pattern","ignoreFilesGlobOptions","GITIGNORE_FILES_PATTERN","applyBaseToPattern","pattern","base","isNegativePattern","path","parseIgnoreFile","file","cwd","slash","line","toRelativePath","fileOrDirectory","getIsIgnoredPredicate","files","patterns","ignores","gitIgnore","toPath","normalizeOptions","options","process","isIgnoredByIgnoreFiles","suppressErrors","deep","paths","fastGlob","filePath","fs","isIgnoredByIgnoreFilesSync","assertPatternsInput","patterns","pattern","toPatternsArray","checkCwdOption","options","stat","fs","normalizeOptions","toPath","normalizeArguments","fn","normalizeArgumentsSync","getIgnoreFilesPatterns","ignoreFiles","gitignore","GITIGNORE_FILES_PATTERN","getFilter","ignoreFilesPatterns","createFilterFunction","isIgnoredByIgnoreFiles","getFilterSync","isIgnoredByIgnoreFilesSync","isIgnored","seen","fastGlobResult","path","pathKey","nodePath","seenOrIgnored","unionFastGlobResults","results","filter","unionFastGlobStreams","streams","merge2","FilterStream","convertNegativePatterns","tasks","index","isNegativePattern","ignorePattern","task","getDirGlobOptions","cwd","generateTasks","globTasks","expandDirectories","patternExpandOptions","ignoreExpandOptions","dirGlob","generateTasksSync","globby","fastGlob","globbySync","globbyStream","isDynamicPattern","generateGlobTasks","generateGlobTasksSync","init_esm_shims","import_variant","DevCenterComponent","init_esm_shims","import_variant","init_esm_shims","dirname","join","parse","relative","sep","platform","replaceExtension","filePath","extension","dir","name","parse","join","deriveRoute","projectFolder","pagePath","relative","getDashboardPagesDir","dirname","sep","deriveTagName","elementPath","normalizeGlobbyPattern","globPattern","platform","loadDashboardPageComponentConfig","path","configPath","replaceExtension","pathExists","CliError","CliErrorCode","config","readJson","parsedConfig","dashboardPageConfigSchema","loadDashboardPluginComponentConfig","pluginPath","dashboardPluginConfigSchema","loadDashboardMenuPluginComponentConfig","menuPluginPath","dashboardMenuPluginConfigSchema","loadDashboardModalComponentConfig","modalPath","dashboardModalConfigSchema","virtualPathForHTMLAsset","componentId","virtualDashboardHTMLAssets","model","component","DevCenterComponent","comp","virtualModuleIdForScriptAsset","virtualDashboardScriptAssets","init_esm_shims","VALID_PATH_REGEX","pathValidation","path","VALID_PATH_REGEX","composeValidations","validations","value","validation","reason","useValidation","fn","result","init_esm_shims","PATH_INVALID_MESSAGE","ROUTE_EXISTS_MESSAGE","pageRouteExistsValidation","existingPages","route","page","dashboardPathValidation","composeValidations","pathValidation","createDashboardRouteValidation","dashboardPages","init_esm_shims","init_esm_shims","objectToString","isArray","object","isFunction","typeStr","obj","escapeRegExp","string","hasProperty","propName","primitiveHasOwnProperty","primitive","regExpTest","testRegExp","re","nonSpaceRe","isWhitespace","entityMap","escapeHtml","s","whiteRe","spaceRe","equalsRe","curlyRe","tagRe","parseTemplate","template","tags","lineHasNonSpace","sections","tokens","spaces","hasTag","nonSpace","indentation","tagIndex","stripSpace","openingTagRe","closingTagRe","closingCurlyRe","compileTags","tagsToCompile","mustache","scanner","Scanner","start","type","value","chr","token","openSection","i","valueLength","nestTokens","squashTokens","squashedTokens","lastToken","numTokens","nestedTokens","collector","section","match","index","Context","view","parentContext","name","cache","context","intermediateValue","names","lookupHit","Writer","key","cacheKey","isCacheEnabled","partials","config","originalTemplate","buffer","symbol","self","subRender","j","partial","filteredIndentation","partialByNl","indentedValue","escape","defaultWriter","mustache_default","readFile","getEmbeddedScriptFolderName","folder","EMBEDDED_SCRIPTS_DIR","embeddedScriptExistsValidation","existingScripts","existingScript","embeddedScriptNameValidation","name","pathValidation","readTemplate","filepath","html","readFile","mustache_default","type","validateEmbeddedScriptHtml","path","invalidParameters","error","createEmbeddedScriptFolderValidation","embeddedScripts","composeValidations","init_esm_shims","PotentialCustomElementNameRegEx","isPotentialCustomElementName","string","reservedNames","validateCustomElementName","composeValidations","name","DASHBOARD_PAGES_PATTERN","join","DASHBOARD_PAGES_DIR","DASHBOARD_PLUGINS_PATTERN","DASHBOARD_PLUGINS_DIR","DASHBOARD_MENU_PLUGINS_PATTERN","DASHBOARD_MENU_PLUGINS_DIR","DASHBOARD_MODALS_PATTERN","DASHBOARD_MODALS_DIR","loadDashboardPageComponent","projectFolder","relativePath","pageConfig","loadDashboardPageComponentConfig","route","deriveRoute","DevCenterComponent","PlatformType","loadDashboardPageComponents","dashboardPagesPaths","globby","normalizeGlobbyPattern","dashboardPages","pagePath","validateDashboardRoute","createDashboardRouteValidation","result","CliError","CliErrorCode","loadDashboardPluginComponent","pluginPath","pluginConfig","loadDashboardPluginComponentConfig","loadDashboardPluginComponents","pluginPaths","loadDashboardMenuPluginComponent","menuPluginPath","menuPluginConfig","loadDashboardMenuPluginComponentConfig","loadDashboardModalComponent","modalPath","modalConfig","loadDashboardModalComponentConfig","loadDashboardMenuPluginComponents","menuPluginPaths","loadDashboardModalComponents","modalPaths","loadDashboardSidebarCategoryComponent","config","sidebarCategory","init_esm_shims","dirname","join","init_esm_shims","join","dirname","import_variant","loadEmbeddedScriptComponentConfig","embeddedScriptPath","configPath","replaceExtension","pathExists","CliError","CliErrorCode","config","readJson","parsedConfig","embeddedScriptConfigSchema","loadCustomElementComponentConfig","customElementPath","customElementConfigSchema","virtualPathForCustomElementPanelHTMLAsset","componentId","virtualModuleIdForCustomElementPanelScriptAsset","virtualModuleIdForCustomElementScriptAsset","virtualCustomElementPanelHTMLAssets","model","component","DevCenterComponent","comp","virtualCustomElementScriptAssets","virtualCustomElementPanelScriptAssets","loadEmbeddedScriptParamsOverride","paramsOverridePath","join","dirname","paramsOverride","embeddedScriptParamsOverrideSchema","EMBEDDED_SCRIPTS_PATTERN","join","EMBEDDED_SCRIPTS_DIR","CUSTOM_ELEMENTS_PATTERN","CUSTOM_ELEMENTS_DIR","CUSTOM_ELEMENTS_PANEL_PATTERN","loadCustomElementComponent","customElementPath","projectFolder","customElementConfig","loadCustomElementComponentConfig","customElementPanelPath","dirname","tagName","deriveTagName","isPanelExists","pathExists","DevCenterComponent","PlatformType","loadCustomElementComponents","customElementsPaths","globby","normalizeGlobbyPattern","customElements","result","validateCustomElementName","CliError","CliErrorCode","EMBEDDED_SCRIPTS_PARAMS_OVERRIDE_PATTERN","loadEmbeddedScriptComponent","embeddedScriptPath","embeddedScriptConfig","loadEmbeddedScriptComponentConfig","paramsOverride","loadEmbeddedScriptParamsOverride","loadEmbeddedScriptComponents","embeddedScriptsPaths","embeddedScripts","pagePath","validateEmbeddedScriptFolder","createEmbeddedScriptFolderValidation","relativePath","folderResult","htmlResult","validateEmbeddedScriptHtml","loadDevCenterComponents","projectFolder","config","dashboardPages","loadDashboardPageComponents","dashboardPlugins","loadDashboardPluginComponents","dashboardMenuPlugins","loadDashboardMenuPluginComponents","dashboardModals","loadDashboardModalComponents","embeddedScripts","loadEmbeddedScriptComponents","dashboardSidebarCategories","loadDashboardSidebarCategoryComponent","customElements","loadCustomElementComponents","init_esm_shims","join","basename","EventEmitter","import_chokidar","import_debounce","init_esm_shims","getOwnPropertyNames","getOwnPropertySymbols","hasOwnProperty","combineComparators","comparatorA","comparatorB","a","b","state","createIsCircular","areItemsEqual","cache","cachedA","cachedB","result","getStrictProperties","object","hasOwn","property","sameValueZeroEqual","OWNER","getOwnPropertyDescriptor","keys","areArraysEqual","index","areDatesEqual","areMapsEqual","matchedIndices","aIterable","aResult","bResult","bIterable","hasMatch","matchIndex","_a","aKey","aValue","_b","bKey","bValue","areObjectsEqual","properties","areObjectsEqualStrict","descriptorA","descriptorB","arePrimitiveWrappersEqual","areRegExpsEqual","areSetsEqual","areTypedArraysEqual","ARGUMENTS_TAG","BOOLEAN_TAG","DATE_TAG","MAP_TAG","NUMBER_TAG","OBJECT_TAG","REG_EXP_TAG","SET_TAG","STRING_TAG","isArray","isTypedArray","assign","getTag","createEqualityComparator","constructor","tag","createEqualityComparatorConfig","circular","createCustomConfig","strict","config","areObjectsEqualStrictDefault","areArraysEqualDefault","areDatesEqualDefault","areMapsEqualDefault","areObjectsEqualDefault","arePrimitiveWrappersEqualDefault","areRegExpsEqualDefault","areSetsEqualDefault","createInternalEqualityComparator","compare","_indexOrKeyA","_indexOrKeyB","_parentA","_parentB","createIsEqual","comparator","createState","equals","meta","deepEqual","createCustomEqual","strictDeepEqual","circularDeepEqual","strictCircularDeepEqual","shallowEqual","strictShallowEqual","circularShallowEqual","strictCircularShallowEqual","options","createCustomInternalComparator","DASHBOARD_PAGES_CONFIG_PATTERN","join","DASHBOARD_PAGES_DIR","DASHBOARD_PLUGINS_CONFIG_PATTERN","DASHBOARD_PLUGINS_DIR","DASHBOARD_MENU_PLUGINS_CONFIG_PATTERN","DASHBOARD_MENU_PLUGINS_DIR","DASHBOARD_MODALS_CONFIG_PATTERN","DASHBOARD_MODALS_DIR","EMBEDDED_SCRIPTS_CONFIG_PATTERN","EMBEDDED_SCRIPTS_DIR","CUSTOM_ELEMENTS_CONFIG_PATTERN","CUSTOM_ELEMENTS_DIR","ProjectModelWatcher","EventEmitter","initialModel","jsonWatcher","chokidar","EMBEDDED_SCRIPTS_PATTERN","EMBEDDED_SCRIPTS_PARAMS_OVERRIDE_PATTERN","CONFIG_FILENAME","dirWatcher","path","filename","basename","cb","watcher","_debounce","model","loadProjectModel","deepEqual","e","loadProjectModel","projectFolder","config","readWixConfig","loadDevCenterComponents","ProjectModelContext","createContext","ProjectModelProvider","props","model","setModel","useState","watcher","ProjectModelWatcher","newModel","changeType","useEffect","React","useProjectModel","context","useContext","init_esm_shims","process","testOverridesSchema","z","TEST_OVERRIDES_ENV_VAR","getTestOverrides","rawOverrides","process"]}