@palbase/backend 38.0.16 → 39.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/bin/palbase-backend.cjs +46 -1
  2. package/dist/bin/palbase-backend.cjs.map +1 -1
  3. package/dist/bin/palbase-backend.js +5 -5
  4. package/dist/{chunk-LFUNRWUE.js → chunk-4J6I4KVQ.js} +67 -3
  5. package/dist/{chunk-LFUNRWUE.js.map → chunk-4J6I4KVQ.js.map} +1 -1
  6. package/dist/{chunk-7WAGQ3VR.js → chunk-AR2I4M7I.js} +497 -17
  7. package/dist/chunk-AR2I4M7I.js.map +1 -0
  8. package/dist/{chunk-YANGWAIM.js → chunk-H7EKL6HC.js} +2 -2
  9. package/dist/{chunk-EHKEMHB4.js → chunk-JJSR4BUX.js} +49 -5
  10. package/dist/chunk-JJSR4BUX.js.map +1 -0
  11. package/dist/{chunk-CS6NQ6PO.js → chunk-JPTFYHP3.js} +2 -2
  12. package/dist/{chunk-CS6NQ6PO.js.map → chunk-JPTFYHP3.js.map} +1 -1
  13. package/dist/{chunk-X7UR3VXA.js → chunk-XZWOMPD3.js} +3 -2
  14. package/dist/chunk-XZWOMPD3.js.map +1 -0
  15. package/dist/{chunk-PDD55QWN.js → chunk-ZNQDL466.js} +2 -2
  16. package/dist/db/index.cjs +378 -14
  17. package/dist/db/index.cjs.map +1 -1
  18. package/dist/db/index.d.cts +1 -1
  19. package/dist/db/index.d.ts +1 -1
  20. package/dist/db/index.js +3 -3
  21. package/dist/engine/index.cjs +46 -1
  22. package/dist/engine/index.cjs.map +1 -1
  23. package/dist/engine/index.d.cts +3 -3
  24. package/dist/engine/index.d.ts +3 -3
  25. package/dist/engine/index.js +5 -5
  26. package/dist/{index-CI7S0Wqv.d.cts → index-B0mjUnxy.d.cts} +25 -2
  27. package/dist/{index-CUy50OLU.d.ts → index-eN4KzGa5.d.ts} +555 -29
  28. package/dist/{index-DRx880KY.d.cts → index-pK2At5Yc.d.cts} +555 -29
  29. package/dist/{index-Ogi30dbt.d.ts → index-yDno9Ju9.d.ts} +25 -2
  30. package/dist/index.cjs +628 -17
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.d.cts +183 -8
  33. package/dist/index.d.ts +183 -8
  34. package/dist/index.js +74 -6
  35. package/dist/index.js.map +1 -1
  36. package/dist/openapi/index.cjs.map +1 -1
  37. package/dist/openapi/index.d.cts +2 -2
  38. package/dist/openapi/index.d.ts +2 -2
  39. package/dist/openapi/index.js +2 -2
  40. package/dist/{registry-C7UCkQf0.d.cts → registry-9dNeVN5d.d.cts} +1 -1
  41. package/dist/{registry-DJcvbomD.d.ts → registry-B8ddZiMY.d.ts} +1 -1
  42. package/dist/test/index.cjs +19 -0
  43. package/dist/test/index.cjs.map +1 -1
  44. package/dist/test/index.d.cts +1 -1
  45. package/dist/test/index.d.ts +1 -1
  46. package/dist/test/index.js +20 -2
  47. package/dist/test/index.js.map +1 -1
  48. package/docs/README.md +1 -1
  49. package/docs/database.md +79 -0
  50. package/docs/llms-full.txt +462 -33
  51. package/docs/schema.md +382 -32
  52. package/package.json +1 -1
  53. package/template/package.json +1 -1
  54. package/dist/chunk-7WAGQ3VR.js.map +0 -1
  55. package/dist/chunk-EHKEMHB4.js.map +0 -1
  56. package/dist/chunk-X7UR3VXA.js.map +0 -1
  57. /package/dist/{chunk-YANGWAIM.js.map → chunk-H7EKL6HC.js.map} +0 -0
  58. /package/dist/{chunk-PDD55QWN.js.map → chunk-ZNQDL466.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/errno.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/fs.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/path.js","../../../node_modules/.pnpm/is-extglob@2.1.1/node_modules/is-extglob/index.js","../../../node_modules/.pnpm/is-glob@4.0.3/node_modules/is-glob/index.js","../../../node_modules/.pnpm/glob-parent@5.1.2/node_modules/glob-parent/index.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/utils.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/stringify.js","../../../node_modules/.pnpm/is-number@7.0.0/node_modules/is-number/index.js","../../../node_modules/.pnpm/to-regex-range@5.0.1/node_modules/to-regex-range/index.js","../../../node_modules/.pnpm/fill-range@7.1.1/node_modules/fill-range/index.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/compile.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/expand.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/constants.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/parse.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/index.js","../../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/constants.js","../../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/utils.js","../../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/scan.js","../../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/parse.js","../../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/picomatch.js","../../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/index.js","../../../node_modules/.pnpm/micromatch@4.0.8/node_modules/micromatch/index.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/pattern.js","../../../node_modules/.pnpm/merge2@1.4.1/node_modules/merge2/index.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/stream.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/string.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/index.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/managers/tasks.js","../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/providers/async.js","../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/providers/sync.js","../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/adapters/fs.js","../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/settings.js","../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/index.js","../../../node_modules/.pnpm/queue-microtask@1.2.3/node_modules/queue-microtask/index.js","../../../node_modules/.pnpm/run-parallel@1.2.0/node_modules/run-parallel/index.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/constants.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/utils/fs.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/utils/index.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/common.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/async.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/sync.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/adapters/fs.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/settings.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/index.js","../../../node_modules/.pnpm/reusify@1.1.0/node_modules/reusify/reusify.js","../../../node_modules/.pnpm/fastq@1.20.1/node_modules/fastq/queue.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/common.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/reader.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/async.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/async.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/stream.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/sync.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/sync.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/settings.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/index.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/reader.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/stream.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/async.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/matchers/matcher.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/matchers/partial.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/filters/deep.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/filters/entry.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/filters/error.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/transformers/entry.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/provider.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/async.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/stream.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/sync.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/sync.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/settings.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/index.js","../../src/openapi/index.ts","../../src/openapi/aggregate.ts","../../src/decorators/registry.ts","../../src/openapi/convert.ts","../../src/error-registry.ts","../../src/db/sqlstate.ts","../../src/errors.ts","../../src/openapi/auth.ts","../../src/openapi/controllers.ts","../../src/decorators/controller.ts","../../src/openapi/discover.ts"],"sourcesContent":["\"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 const 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\n const flat = arr => {\n for (let i = 0; i < arr.length; i++) {\n const ele = arr[i];\n\n if (Array.isArray(ele)) {\n flat(ele);\n continue;\n }\n\n if (ele !== undefined) {\n result.push(ele);\n }\n }\n return result;\n };\n\n flat(args);\n return result;\n};\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n const stringify = (node, parent = {}) => {\n const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n const 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 (const 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, maxLen) => {\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.map(v => toMaxLen(String(v), maxLen)).join('|');\n }\n\n if (parts.negatives.length) {\n negatives = `-(${prefix}${parts.negatives.map(v => toMaxLen(String(v), maxLen)).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, maxLen)\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 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 const walk = (node, parent = {}) => {\n const invalidBlock = utils.isInvalidBrace(parent);\n const invalidNode = node.invalid === true && options.escapeInvalid === true;\n const invalid = invalidBlock === true || invalidNode === true;\n const prefix = options.escapeInvalid === true ? '\\\\' : '';\n let output = '';\n\n if (node.isOpen === true) {\n return prefix + node.value;\n }\n\n if (node.isClose === true) {\n console.log('node.isClose', prefix, node.value);\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 const args = utils.reduce(node.nodes);\n const range = fill(...args, { ...options, wrap: false, toRegex: true, strictZeros: 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 (const child of node.nodes) {\n output += walk(child, node);\n }\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 const 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 (const item of queue) {\n if (Array.isArray(item)) {\n for (const 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 const rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit;\n\n const 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 const 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 const 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 const 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: 10000,\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 const opts = options || {};\n const 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 const ast = { type: 'root', input, nodes: [] };\n const stack = [ast];\n let block = ast;\n let prev = ast;\n let brackets = 0;\n const length = input.length;\n let index = 0;\n let depth = 0;\n let value;\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 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 const 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 const dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n const 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 const 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 const 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 const 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 const 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 const parent = stack[stack.length - 1];\n const 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 (const pattern of input) {\n const 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\nconst DEFAULT_MAX_EXTGLOB_RECURSION = 0;\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 __proto__: null,\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 DEFAULT_MAX_EXTGLOB_RECURSION,\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 __proto__: null,\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\nconst splitTopLevel = input => {\n const parts = [];\n let bracket = 0;\n let paren = 0;\n let quote = 0;\n let value = '';\n let escaped = false;\n\n for (const ch of input) {\n if (escaped === true) {\n value += ch;\n escaped = false;\n continue;\n }\n\n if (ch === '\\\\') {\n value += ch;\n escaped = true;\n continue;\n }\n\n if (ch === '\"') {\n quote = quote === 1 ? 0 : 1;\n value += ch;\n continue;\n }\n\n if (quote === 0) {\n if (ch === '[') {\n bracket++;\n } else if (ch === ']' && bracket > 0) {\n bracket--;\n } else if (bracket === 0) {\n if (ch === '(') {\n paren++;\n } else if (ch === ')' && paren > 0) {\n paren--;\n } else if (ch === '|' && paren === 0) {\n parts.push(value);\n value = '';\n continue;\n }\n }\n }\n\n value += ch;\n }\n\n parts.push(value);\n return parts;\n};\n\nconst isPlainBranch = branch => {\n let escaped = false;\n\n for (const ch of branch) {\n if (escaped === true) {\n escaped = false;\n continue;\n }\n\n if (ch === '\\\\') {\n escaped = true;\n continue;\n }\n\n if (/[?*+@!()[\\]{}]/.test(ch)) {\n return false;\n }\n }\n\n return true;\n};\n\nconst normalizeSimpleBranch = branch => {\n let value = branch.trim();\n let changed = true;\n\n while (changed === true) {\n changed = false;\n\n if (/^@\\([^\\\\()[\\]{}|]+\\)$/.test(value)) {\n value = value.slice(2, -1);\n changed = true;\n }\n }\n\n if (!isPlainBranch(value)) {\n return;\n }\n\n return value.replace(/\\\\(.)/g, '$1');\n};\n\nconst hasRepeatedCharPrefixOverlap = branches => {\n const values = branches.map(normalizeSimpleBranch).filter(Boolean);\n\n for (let i = 0; i < values.length; i++) {\n for (let j = i + 1; j < values.length; j++) {\n const a = values[i];\n const b = values[j];\n const char = a[0];\n\n if (!char || a !== char.repeat(a.length) || b !== char.repeat(b.length)) {\n continue;\n }\n\n if (a === b || a.startsWith(b) || b.startsWith(a)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst parseRepeatedExtglob = (pattern, requireEnd = true) => {\n if ((pattern[0] !== '+' && pattern[0] !== '*') || pattern[1] !== '(') {\n return;\n }\n\n let bracket = 0;\n let paren = 0;\n let quote = 0;\n let escaped = false;\n\n for (let i = 1; i < pattern.length; i++) {\n const ch = pattern[i];\n\n if (escaped === true) {\n escaped = false;\n continue;\n }\n\n if (ch === '\\\\') {\n escaped = true;\n continue;\n }\n\n if (ch === '\"') {\n quote = quote === 1 ? 0 : 1;\n continue;\n }\n\n if (quote === 1) {\n continue;\n }\n\n if (ch === '[') {\n bracket++;\n continue;\n }\n\n if (ch === ']' && bracket > 0) {\n bracket--;\n continue;\n }\n\n if (bracket > 0) {\n continue;\n }\n\n if (ch === '(') {\n paren++;\n continue;\n }\n\n if (ch === ')') {\n paren--;\n\n if (paren === 0) {\n if (requireEnd === true && i !== pattern.length - 1) {\n return;\n }\n\n return {\n type: pattern[0],\n body: pattern.slice(2, i),\n end: i\n };\n }\n }\n }\n};\n\nconst getStarExtglobSequenceOutput = pattern => {\n let index = 0;\n const chars = [];\n\n while (index < pattern.length) {\n const match = parseRepeatedExtglob(pattern.slice(index), false);\n\n if (!match || match.type !== '*') {\n return;\n }\n\n const branches = splitTopLevel(match.body).map(branch => branch.trim());\n if (branches.length !== 1) {\n return;\n }\n\n const branch = normalizeSimpleBranch(branches[0]);\n if (!branch || branch.length !== 1) {\n return;\n }\n\n chars.push(branch);\n index += match.end + 1;\n }\n\n if (chars.length < 1) {\n return;\n }\n\n const source = chars.length === 1\n ? utils.escapeRegex(chars[0])\n : `[${chars.map(ch => utils.escapeRegex(ch)).join('')}]`;\n\n return `${source}*`;\n};\n\nconst repeatedExtglobRecursion = pattern => {\n let depth = 0;\n let value = pattern.trim();\n let match = parseRepeatedExtglob(value);\n\n while (match) {\n depth++;\n value = match.body.trim();\n match = parseRepeatedExtglob(value);\n }\n\n return depth;\n};\n\nconst analyzeRepeatedExtglob = (body, options) => {\n if (options.maxExtglobRecursion === false) {\n return { risky: false };\n }\n\n const max =\n typeof options.maxExtglobRecursion === 'number'\n ? options.maxExtglobRecursion\n : constants.DEFAULT_MAX_EXTGLOB_RECURSION;\n\n const branches = splitTopLevel(body).map(branch => branch.trim());\n\n if (branches.length > 1) {\n if (\n branches.some(branch => branch === '') ||\n branches.some(branch => /^[*?]+$/.test(branch)) ||\n hasRepeatedCharPrefixOverlap(branches)\n ) {\n return { risky: true };\n }\n }\n\n for (const branch of branches) {\n const safeOutput = getStarExtglobSequenceOutput(branch);\n if (safeOutput) {\n return { risky: true, safeOutput };\n }\n\n if (repeatedExtglobRecursion(branch) > max) {\n return { risky: true };\n }\n }\n\n return { risky: false };\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 token.startIndex = state.index;\n token.tokensIndex = tokens.length;\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 const literal = input.slice(token.startIndex, state.index + 1);\n const body = input.slice(token.startIndex + 2, state.index);\n const analysis = analyzeRepeatedExtglob(body, opts);\n\n if ((token.type === 'plus' || token.type === 'star') && analysis.risky) {\n const safeOutput = analysis.safeOutput\n ? (token.output ? '' : ONE_CHAR) + (opts.capture ? `(${analysis.safeOutput})` : analysis.safeOutput)\n : undefined;\n const open = tokens[token.tokensIndex];\n\n open.type = 'text';\n open.value = literal;\n open.output = safeOutput || utils.escapeRegex(literal);\n\n for (let i = token.tokensIndex + 1; i < tokens.length; i++) {\n tokens[i].value = '';\n tokens[i].output = '';\n delete tokens[i].suffix;\n }\n\n state.output = token.output + open.output;\n state.backtrack = true;\n\n push({ type: 'paren', extglob: true, value, output: '' });\n decrement('parens');\n return;\n }\n\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');\n\nconst isEmptyString = v => v === '' || v === './';\nconst hasBraces = v => {\n const index = v.indexOf('{');\n return index > -1 && v.indexOf('}', index) > -1;\n};\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) || !hasBraces(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\n// exposed for tests\nmicromatch.hasBraces = hasBraces;\nmodule.exports = micromatch;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAbsolute = exports.partitionAbsoluteAndRelative = exports.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, keepEscaping: 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;\nfunction partitionAbsoluteAndRelative(patterns) {\n const absolute = [];\n const relative = [];\n for (const pattern of patterns) {\n if (isAbsolute(pattern)) {\n absolute.push(pattern);\n }\n else {\n relative.push(pattern);\n }\n }\n return [absolute, relative];\n}\nexports.partitionAbsoluteAndRelative = partitionAbsoluteAndRelative;\nfunction isAbsolute(pattern) {\n return path.isAbsolute(pattern);\n}\nexports.isAbsolute = isAbsolute;\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.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 equal to or 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\n get concurrency () {\n return _concurrency\n },\n set concurrency (value) {\n if (!(value >= 1)) {\n throw new Error('fastqueue concurrency must be equal to or greater than 1')\n }\n _concurrency = value\n\n if (self.paused) return\n for (; queueHead && _running < _concurrency;) {\n _running++\n release()\n }\n },\n\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 abort: abort\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 if (queueHead === null) {\n _running++\n release()\n return\n }\n for (; queueHead && _running < _concurrency;) {\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 >= _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 current.errorHandler = errorHandler\n\n if (_running >= _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 && _running <= _concurrency) {\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 abort () {\n var current = queueHead\n queueHead = null\n queueTail = null\n\n while (current) {\n var next = current.next\n var callback = current.callback\n var errorHandler = current.errorHandler\n var val = current.value\n var context = current.context\n\n // Reset the task state\n current.value = null\n current.callback = noop\n current.errorHandler = null\n\n // Call error handler if present\n if (errorHandler) {\n errorHandler(new Error('abort'), val)\n }\n\n // Call callback with error\n callback.call(context, new Error('abort'))\n\n // Release the task back to the pool\n current.release(current)\n\n current = next\n }\n\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 p = new Promise(function (resolve) {\n process.nextTick(function () {\n if (queue.idle()) {\n resolve()\n } else {\n var previousDrain = queue.drain\n queue.drain = function () {\n if (typeof previousDrain === 'function') previousDrain()\n resolve()\n queue.drain = previousDrain\n }\n }\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 [absoluteNegative, relativeNegative] = utils.pattern.partitionAbsoluteAndRelative(negative);\n const patterns = {\n positive: {\n all: utils.pattern.convertPatternsToRe(positive, this._micromatchOptions)\n },\n negative: {\n absolute: utils.pattern.convertPatternsToRe(absoluteNegative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })),\n relative: utils.pattern.convertPatternsToRe(relativeNegative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true }))\n }\n };\n return (entry) => this._filter(entry, patterns);\n }\n _filter(entry, patterns) {\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 const isMatched = this._isMatchToPatternsSet(filepath, patterns, entry.dirent.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 _isMatchToPatternsSet(filepath, patterns, isDirectory) {\n const isMatched = this._isMatchToPatterns(filepath, patterns.positive.all, isDirectory);\n if (!isMatched) {\n return false;\n }\n const isMatchedByRelativeNegative = this._isMatchToPatterns(filepath, patterns.negative.relative, isDirectory);\n if (isMatchedByRelativeNegative) {\n return false;\n }\n const isMatchedByAbsoluteNegative = this._isMatchToAbsoluteNegative(filepath, patterns.negative.absolute, isDirectory);\n if (isMatchedByAbsoluteNegative) {\n return false;\n }\n return true;\n }\n _isMatchToAbsoluteNegative(filepath, patternsRe, isDirectory) {\n if (patternsRe.length === 0) {\n return false;\n }\n const fullpath = utils.path.makeAbsolute(this._settings.cwd, filepath);\n return this._isMatchToPatterns(fullpath, patternsRe, isDirectory);\n }\n _isMatchToPatterns(filepath, patternsRe, isDirectory) {\n if (patternsRe.length === 0) {\n return false;\n }\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","// OpenAPI generator — internal pipeline used by `palbase backend deploy`\n// and `palbase backend dev`. Not part of the public @palbase/backend\n// surface; the CLI imports this directly via deep-path so we don't expose\n// the discovery + load helpers to user code.\nexport { aggregateOpenAPI } from \"./aggregate.js\";\nexport type { AggregateOptions, AggregateResult } from \"./aggregate.js\";\nexport {\n deriveControllerName,\n deriveControllerOperationId,\n joinControllerPath,\n} from \"./discover.js\";\nexport {\n discoverControllerFiles,\n loadControllers,\n flattenController,\n operationIdFor,\n ControllerLoadError,\n} from \"./controllers.js\";\nexport type {\n LoadedController,\n FlatRoute,\n RouteInputSchemas,\n ControllerClass,\n} from \"./controllers.js\";\nexport { ERROR_ENVELOPE_REF, BEARER_SCHEME } from \"./convert.js\";\nexport { isAuthEffectivelyRequired } from \"./auth.js\";\n","// Aggregate every discovered controller route into a single OpenAPI 3.2\n// document. The runtime's HTTP dispatcher (modules/backend) reads the same\n// artifact to validate inbound requests, so this is the single source of truth.\n//\n// Public function: `aggregateOpenAPI(projectRoot, options) → document`.\n// CLI calls this from a tsx-loaded script; the result is JSON-serialised\n// to dist/openapi.json and shipped with the deploy bundle.\nimport {\n OpenApiGeneratorV31,\n OpenAPIRegistry,\n extendZodWithOpenApi,\n} from \"@asteasolutions/zod-to-openapi\";\nimport { getRoom } from \"../decorators/registry.js\";\nimport { z } from \"zod\";\n\nimport {\n registerControllerRoute,\n registerErrorEnvelope,\n BEARER_SCHEME,\n assertRoomFieldsTyped,\n roomExtension,\n} from \"./convert.js\";\nimport {\n discoverControllerFiles,\n loadControllers,\n flattenController,\n operationIdFor,\n type LoadedController,\n type FlatRoute,\n} from \"./controllers.js\";\n\n// Patch z with .openapi(...) so callers can attach metadata if they want\n// — this is idempotent and safe to call from inside a CLI process.\nextendZodWithOpenApi(z);\n\nexport interface AggregateOptions {\n /** Pre-loaded controllers (test-only — bypass dynamic import). When\n * provided, controller discovery is skipped. */\n loadedControllers?: LoadedController[];\n /** Document version stamped onto the spec. Defaults to `0.0.0`. */\n version?: string;\n /** OpenAPI `info.title`. Defaults to `Palbase Backend`. */\n title?: string;\n /** Per-controller import timeout. */\n timeoutMs?: number;\n}\n\nexport interface AggregateResult {\n /** Final OpenAPI 3.2 document, ready to JSON.stringify. */\n document: ReturnType<OpenApiGeneratorV31[\"generateDocument\"]>;\n /** Number of routes registered. */\n endpointCount: number;\n /** Set of operationIds (handy for collision-detection tests). */\n operationIds: string[];\n}\n\n/**\n * Run the full pipeline: discover controllers → load → flatten → convert →\n * emit.\n *\n * Throws a ControllerLoadError on a single bad file. Throws a plain Error if\n * two routes derive the same operationId — collisions are caught after sort()\n * so the error message is deterministic.\n */\nexport async function aggregateOpenAPI(\n projectRoot: string,\n options: AggregateOptions = {},\n): Promise<AggregateResult> {\n // controllers/ + handlers/ path. When tests pass `loadedControllers` we skip\n // discovery; otherwise discover from disk.\n const loadedControllers =\n options.loadedControllers ??\n (await loadControllers(\n await discoverControllerFiles(projectRoot),\n projectRoot,\n { timeoutMs: options.timeoutMs },\n ));\n const controllerRoutes: FlatRoute[] = loadedControllers.flatMap((lc) =>\n flattenController(lc.controller),\n );\n\n const allOperationIds = controllerRoutes.map((r) => operationIdFor(r));\n detectDuplicateOperationIds(allOperationIds);\n\n const registry = new OpenAPIRegistry();\n registerErrorEnvelope(registry);\n registry.registerComponent(\"securitySchemes\", BEARER_SCHEME, {\n type: \"http\",\n scheme: \"bearer\",\n description: \"Palbase user bearer token (sent on authed routes).\",\n });\n for (const route of controllerRoutes) {\n registerControllerRoute(registry, route);\n }\n\n // Rooms: server code with no HTTP surface, so their schemas are registered as\n // components here and referenced from a DOCUMENT-level extension. A room has\n // no verb and no path, so unlike x-palbase-sse it cannot ride an operation.\n const roomExt: Record<string, unknown> = {};\n for (const lc of loadedControllers) {\n const room = getRoom(lc.controller as object);\n if (room === undefined) continue;\n assertRoomFieldsTyped(room.pattern, room);\n const slug = room.pattern.replace(/[^A-Za-z0-9]+/g, \"_\").replace(/^_|_$/g, \"\");\n roomExt[room.pattern] = roomExtension(room, (name, schema) => {\n const componentName = `Room_${slug}_${name}`;\n registry.register(componentName, schema);\n return `#/components/schemas/${componentName}`;\n });\n }\n\n // BUILT HERE, AFTER the room schemas above are registered. The generator\n // takes a SNAPSHOT of `registry.definitions`, so a schema registered\n // afterwards never reaches `components` and the extension's `$ref`s point at\n // nothing. Measured on the fixture: `x-palbase-room` carried\n // `#/components/schemas/Room_probe_sessionId_tick` with ZERO Room_ entries in\n // components. Nothing throws — a dangling $ref is valid JSON — and both\n // generators degrade SILENTLY: swiftgen's resolver returns nil, falls back to\n // the $ref wrapper, and the payload type comes out as `any` with no fields.\n // A typed client that is quietly untyped is worse than no client.\n const generator = new OpenApiGeneratorV31(registry.definitions);\n // 3.2 — the first OAS version where QUERY (RFC 10008) is a first-class\n // path-item verb.\n const document = generator.generateDocument({\n openapi: \"3.2.0\",\n info: {\n title: options.title ?? \"Palbase Backend\",\n version: options.version ?? \"0.0.0\",\n description:\n \"Auto-generated from class controllers (@Controller/@Get/@Post + @Body/@QueryParams/@Param) Zod schemas + method return types at deploy time. Do not edit by hand.\",\n },\n });\n\n if (Object.keys(roomExt).length > 0) {\n // Only when there ARE rooms: a project that never heard of them must produce\n // the document it produced before (NFR-004), and an empty extension key is\n // not \"nothing\". OpenAPIObject declares `[x-${string}]: any`, so the\n // extension key assigns without a cast.\n document[\"x-palbase-room\"] = roomExt;\n }\n\n return {\n document,\n endpointCount: controllerRoutes.length,\n operationIds: allOperationIds,\n };\n}\n\n/** Throw on any duplicate operationId across the route set. */\nfunction detectDuplicateOperationIds(operationIds: string[]): void {\n const seen = new Set<string>();\n for (const id of operationIds) {\n if (seen.has(id)) {\n throw new Error(\n `operationId collision for \"${id}\": two routes derive the same operationId. ` +\n `Rename the controller class or method so the derived operationId is unique.`,\n );\n }\n seen.add(id);\n }\n}\n","// The decorator registry — the single plain-data store the method + parameter\n// decorators write into, and the deploy/dispatch pipeline reads back. No\n// `reflect-metadata`, no `emitDecoratorMetadata`: the registry is built from the\n// decorator arguments + the parameter INDEX that esbuild/tsc preserve for legacy\n// parameter decorators (verified — see the design spec §0/§4.1).\n//\n// A controller class carries its route metadata on a symbol-keyed static\n// property (`ROUTES`). `@Get`/`@Post`/… append a {@link RouteMeta} entry;\n// `@Body`/`@User`/… append a {@link ParamMeta} entry onto the route for the\n// method they decorate. Because parameter decorators run BEFORE the method\n// decorator for the same member (TS evaluates innermost-first, params before the\n// method), the route entry may not exist yet when a param decorator fires — so\n// param metadata is buffered per method name and merged when the method\n// decorator creates the route entry.\nimport type { AuthSpec, RateLimitConfig } from \"../endpoint.js\";\nimport type { UploadConfig } from \"./upload.js\";\nimport type { SseConfig } from \"./sse.js\";\nimport type { ZodTypeAny } from \"zod\";\n\n/** The HTTP verbs a route may declare, upper-cased (the runtime router +\n * OpenAPI lower-case on their own). */\nexport type HttpMethodUpper = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\" | \"QUERY\";\n\n/** Route-level options accepted by the method decorators (`@Get`/`@Post`/…). */\nexport interface RouteOptions {\n /** Enforced before statements and COMMIT; include retries and service queries. */\n databaseBudget?: import(\"../db/diagnostics.js\").DatabaseBudget;\n /** OVERRIDES the controller-level default auth for this one route. */\n auth?: AuthSpec;\n /** Per-route rate limit. */\n rateLimit?: RateLimitConfig;\n /** Direct-storage upload config — present ONLY on `@Upload` routes (the\n * `@Get`/`@Post`/… decorators never set it). Its presence is what MARKS a\n * route as an upload route through the whole pipeline (registry → flatten →\n * openapi → codegen). The bytes go client→storage directly; the method body\n * runs as the completion handler. See {@link UploadConfig} (decorators/upload.ts). */\n uploadConfig?: UploadConfig;\n /** Streaming config — present ONLY on `@Sse` routes (the `@Get`/`@Post`/…\n * decorators never set it). Its presence is what MARKS a route as a streaming\n * route through the whole pipeline (registry → flatten → openapi → codegen),\n * exactly as `uploadConfig` does for uploads — never a special HTTP verb. An\n * `@Sse` route registers POST like any input-bearing route, so the verb cannot\n * carry the distinction. See {@link SseConfig} (decorators/sse.ts). */\n sseConfig?: SseConfig;\n}\n\n/** The kind of value a parameter decorator injects. Drives both dispatch\n * (which request slice to inject) and codegen (which OpenAPI parameter source a\n * schema-bearing kind maps to). */\nexport type ParamKind =\n | \"body\"\n | \"query\"\n | \"param\"\n | \"headers\"\n | \"user\"\n | \"optionalUser\"\n | \"client\"\n | \"requestId\"\n | \"traceId\"\n | \"req\"\n // `@UploadedObject()` — injects the uploaded object (completion input) on an\n // `@Upload` route. No schema (the shape is the fixed UploadedObject type).\n | \"uploadedObject\"\n // `@SseOut()` — injects the frame writer on an `@Sse` route. No schema (the\n // shape is the fixed SseWriter type).\n | \"sseOut\"\n // `@Signal()` — injects the request's AbortSignal, which aborts when the\n // client disconnects. No schema. NOT derivable from `@Req()`: PBRequest\n // carries only request-scoped data and has no signal (endpoint.ts:358-363).\n | \"signal\";\n\n/** One parameter decorator's recorded metadata. `index` is the parameter\n * position esbuild/tsc preserve; `schema` is present for the schema-bearing\n * kinds (`body`/`query`/`headers`); `name` is the path-param name for `param`. */\nexport interface ParamMeta {\n index: number;\n kind: ParamKind;\n /** Zod schema for `body`/`query`/`headers` (validation + codegen source). */\n schema?: ZodTypeAny;\n /** Path-param name for `@Param(\"id\")`. */\n name?: string;\n}\n\n/** One inferred throw site: the error CLASS name (e.g. \"TodoLocked\") and its\n * wire code (e.g. \"todo_locked\"). `status`, `hasData`, and the data JSON schema\n * are NOT carried here — they resolve from the error registry by `code` at\n * extract/openapi time (single source of truth). */\nexport interface ThrowDescriptor {\n name: string;\n code: string;\n}\n\n/** One route's recorded metadata: the verb + subpath + method name + options,\n * the ordered parameter metas, and the resolved return schema (injected by the\n * codegen step — see `returnSchema`). */\nexport interface RouteMeta {\n method: HttpMethodUpper;\n subpath: string;\n fnName: string;\n options: RouteOptions;\n params: ParamMeta[];\n /** Response schema for the route, if any. Derived from the method's RETURN\n * TYPE by codegen and written here via `recordReturn` (a generated top-level\n * IIFE injected per controller), not by an author-written decorator. */\n returnSchema?: ZodTypeAny;\n /** Error classes this route can throw, if inferred. Derived from the method\n * body + service call graph by the deploy stager's throw analysis and written\n * here via `recordThrows` (a generated top-level IIFE injected per controller,\n * the `recordReturn` twin), not by an author-written decorator. */\n throws?: ThrowDescriptor[];\n}\n\n/** Symbol the route metadata list is stored under on a controller class. Using\n * a symbol (not a string key) keeps it off the public structural surface and\n * avoids any chance of an authored property collision. */\nexport const ROUTES: unique symbol = Symbol.for(\"palbase.backend.routes\");\n\n/** Symbol the per-method buffered parameter metas are stored under while a class\n * is being decorated. Parameter decorators fire before the method decorator, so\n * they buffer here keyed by method name; the method decorator drains the buffer\n * into the route entry it creates. */\nconst PARAM_BUFFER: unique symbol = Symbol.for(\"palbase.backend.paramBuffer\");\n\n/** A room's own slots. Rooms are NOT routes — no verb, no path, no params — so\n * they get their own carrier slots instead of being squeezed into RouteMeta. */\nconst ROOM: unique symbol = Symbol.for(\"palbase.backend.room\");\nconst ROOM_HOOKS: unique symbol = Symbol.for(\"palbase.backend.roomHooks\");\n\n/** Symbol the per-method buffered return-type schemas are stored under while a\n * class's registry is being populated. The codegen-injected `recordReturn` call\n * can fire before OR after the method decorator; it buffers here keyed by method\n * name and `recordRoute` drains it into the route entry (and `recordReturn`\n * writes through if the route already exists). Buffering on BOTH sides means a\n * fully-formed route entry always carries its return schema — a raw-symbol\n * reader (the runtime) never has to re-merge. */\nconst RETURN_BUFFER: unique symbol = Symbol.for(\"palbase.backend.returnBuffer\");\n\n/** Symbol the per-method buffered throw descriptors are stored under while a\n * class's registry is being populated. The stager-injected `recordThrows` call\n * can fire before OR after the method decorator; it buffers here keyed by method\n * name and `recordRoute` drains it into the route entry (and `recordThrows`\n * writes through if the route already exists). Buffering on BOTH sides means a\n * fully-formed route entry always carries its throw descriptors — a raw-symbol\n * reader (the runtime) never has to re-merge. */\nconst THROWS_BUFFER: unique symbol = Symbol.for(\"palbase.backend.throwsBuffer\");\n\n/** A class constructor carrying the symbol-keyed registry slots. We type the\n * registry-bearing class as this so the decorators can read/write the slots\n * without `any` — a plain `Function` does not carry index signatures. */\ninterface RegistryCarrier {\n [ROUTES]?: RouteMeta[];\n [PARAM_BUFFER]?: Record<string, ParamMeta[]>;\n [ROOM]?: RoomMeta;\n [ROOM_HOOKS]?: RoomBuffer;\n [RETURN_BUFFER]?: Record<string, ZodTypeAny>;\n [THROWS_BUFFER]?: Record<string, ThrowDescriptor[]>;\n}\n\n/** Coerce a decorated target (class constructor or its prototype) into the\n * registry carrier that owns the slots. Method/param decorators receive the\n * PROTOTYPE as their target; the class decorator receives the constructor. We\n * always anchor the registry on the CONSTRUCTOR so `getRoutes(ctor)` finds it. */\nfunction carrierOf(target: object): RegistryCarrier {\n // For instance-member decorators, `target` is the prototype; its `.constructor`\n // is the class. For a static member or the class decorator, `target` is the\n // constructor already. Resolve to the constructor either way.\n const ctor =\n typeof target === \"function\"\n ? (target as unknown as RegistryCarrier)\n : (((target as { constructor?: unknown }).constructor ??\n target) as unknown as RegistryCarrier);\n return ctor;\n}\n\n/** Get (creating if absent) the own route list for a class constructor. Own —\n * not inherited — so a subclass does not mutate its base's routes. */\nfunction ownRoutes(carrier: RegistryCarrier): RouteMeta[] {\n if (!Object.prototype.hasOwnProperty.call(carrier, ROUTES)) {\n carrier[ROUTES] = [];\n }\n return carrier[ROUTES] as RouteMeta[];\n}\n\n/** Get (creating if absent) the own per-method param buffer for a class. */\nfunction ownParamBuffer(carrier: RegistryCarrier): Record<string, ParamMeta[]> {\n if (!Object.prototype.hasOwnProperty.call(carrier, PARAM_BUFFER)) {\n carrier[PARAM_BUFFER] = {};\n }\n return carrier[PARAM_BUFFER] as Record<string, ParamMeta[]>;\n}\n\n/** Record a route (called by the method decorators). Drains any parameter\n * metas already buffered for `fnName` into the new route entry, then sorts them\n * by parameter index so dispatch can inject positionally. */\nexport function recordRoute(\n target: object,\n fnName: string,\n method: HttpMethodUpper,\n subpath: string,\n options: RouteOptions,\n): void {\n const carrier = carrierOf(target);\n const routes = ownRoutes(carrier);\n const buffer = ownParamBuffer(carrier);\n const params = (buffer[fnName] ?? []).slice().sort((a, b) => a.index - b.index);\n const route: RouteMeta = { method, subpath, fnName, options, params };\n // Drain a buffered return schema (the recordReturn-ran-first ordering) so the\n // route entry is complete the moment it's created — a raw-symbol consumer\n // (the runtime extractor/worker) sees the return schema without re-merging.\n const returnBuffer = carrier[RETURN_BUFFER];\n if (returnBuffer && returnBuffer[fnName] !== undefined) {\n route.returnSchema = returnBuffer[fnName];\n }\n // Same drain for buffered throw descriptors (the recordThrows-ran-first\n // ordering) — the route entry is complete the moment it's created.\n const throwsBuffer = carrier[THROWS_BUFFER];\n if (throwsBuffer && throwsBuffer[fnName] !== undefined) {\n route.throws = throwsBuffer[fnName];\n }\n routes.push(route);\n}\n\n/** Record one parameter decorator (called by `@Body`/`@User`/…). Buffers per\n * method name; the method decorator merges the buffer into the route entry. If\n * the route already exists (method decorator ran first — TS does evaluate the\n * method decorator AFTER its parameter decorators, but we stay order-robust),\n * the meta is also appended directly so neither ordering loses it. */\nexport function recordParam(target: object, fnName: string, meta: ParamMeta): void {\n const carrier = carrierOf(target);\n const buffer = ownParamBuffer(carrier);\n (buffer[fnName] ??= []).push(meta);\n\n // Order-robust: if the route already exists, merge in place + keep sorted.\n const routes = carrier[ROUTES];\n if (routes) {\n const route = routes.find((r) => r.fnName === fnName);\n if (route) {\n route.params.push(meta);\n route.params.sort((a, b) => a.index - b.index);\n }\n }\n}\n\n/** Attach a return schema to the route for `fnName` (called by the codegen\n * injection that reads the method's return type). If the route does not exist\n * yet, the schema is buffered (RETURN_BUFFER) and drained into the route by\n * `recordRoute` when the method decorator runs. */\nexport function recordReturn(target: object, fnName: string, schema: ZodTypeAny): void {\n const carrier = carrierOf(target);\n const routes = carrier[ROUTES];\n const route = routes?.find((r) => r.fnName === fnName);\n if (route) {\n route.returnSchema = schema;\n return;\n }\n if (!Object.prototype.hasOwnProperty.call(carrier, RETURN_BUFFER)) {\n carrier[RETURN_BUFFER] = {};\n }\n const returnBuffer = carrier[RETURN_BUFFER];\n if (returnBuffer) returnBuffer[fnName] = schema;\n}\n\n/** Attach the inferred throw descriptors to the route for `fnName` (called by\n * the stager-injected IIFE that carries the throw analysis result — the\n * `recordReturn` twin). If the route does not exist yet, the descriptors are\n * buffered (THROWS_BUFFER) and drained into the route by `recordRoute` when the\n * method decorator runs. */\nexport function recordThrows(target: object, fnName: string, throws: ThrowDescriptor[]): void {\n const carrier = carrierOf(target);\n const routes = carrier[ROUTES];\n const route = routes?.find((r) => r.fnName === fnName);\n if (route) {\n route.throws = throws;\n return;\n }\n if (!Object.prototype.hasOwnProperty.call(carrier, THROWS_BUFFER)) {\n carrier[THROWS_BUFFER] = {};\n }\n const throwsBuffer = carrier[THROWS_BUFFER];\n if (throwsBuffer) throwsBuffer[fnName] = throws;\n}\n\n/** Read the route metadata for a controller class (the deploy/dispatch entry\n * point). Applies any buffered return schemas + throw descriptors (for the\n * recordReturn/recordThrows-runs-before orderings) and returns a defensive copy\n * so callers cannot mutate the registry.\n */\nexport function getRoutes(ctor: object): RouteMeta[] {\n const carrier = carrierOf(ctor);\n const routes = carrier[ROUTES] ?? [];\n const returnBuffer = carrier[RETURN_BUFFER];\n if (returnBuffer) {\n for (const route of routes) {\n const buffered = returnBuffer[route.fnName];\n if (buffered && route.returnSchema === undefined) {\n route.returnSchema = buffered;\n }\n }\n }\n const throwsBuffer = carrier[THROWS_BUFFER];\n if (throwsBuffer) {\n for (const route of routes) {\n const buffered = throwsBuffer[route.fnName];\n if (buffered && route.throws === undefined) {\n route.throws = buffered;\n }\n }\n }\n return routes.map((r) => ({\n ...r,\n params: r.params.slice(),\n ...(r.throws !== undefined ? { throws: r.throws.slice() } : {}),\n }));\n}\n\n// ── rooms ───────────────────────────────────────────────────────────────────\n\n/** Which lifecycle hook a method is bound to. */\nexport type RoomHook = \"authorize\" | \"first\" | \"join\" | \"leave\" | \"empty\";\n\nexport interface RoomMessageMeta {\n fnName: string;\n schema: ZodTypeAny;\n}\n\nexport interface RoomMeta {\n pattern: string;\n events: Record<string, ZodTypeAny>;\n graceMs: number;\n /** hook → the method name that implements it. */\n hooks: Partial<Record<RoomHook, string>>;\n /** inbound message name → its method and payload schema. */\n messages: Record<string, RoomMessageMeta>;\n}\n\ninterface RoomBuffer {\n hooks: Partial<Record<RoomHook, string>>;\n messages: Record<string, RoomMessageMeta>;\n}\n\n/** Get (creating if absent) the own hook buffer. Own — not inherited — so a\n * subclass never mutates its base's hooks. Member decorators fill this BEFORE\n * the class decorator runs; controller.ts:203 depends on the same ordering. */\nfunction ownRoomBuffer(carrier: RegistryCarrier): RoomBuffer {\n if (!Object.prototype.hasOwnProperty.call(carrier, ROOM_HOOKS)) {\n carrier[ROOM_HOOKS] = { hooks: {}, messages: {} };\n }\n return carrier[ROOM_HOOKS] as RoomBuffer;\n}\n\n/** Record a lifecycle hook. A second method for the same hook is refused: two\n * answers to \"who handles this\" cannot be resolved at dispatch, and silently\n * keeping one is how a hook stops running without anyone being told. */\nexport function recordRoomHook(target: object, hook: RoomHook, fnName: string): void {\n const buffer = ownRoomBuffer(carrierOf(target));\n const existing = buffer.hooks[hook];\n if (existing !== undefined && existing !== fnName) {\n const label = `On${hook.charAt(0).toUpperCase()}${hook.slice(1)}`;\n throw new Error(\n `@${label} is declared twice in one room (${existing} and ${fnName}). ` +\n `A room has one of each hook.`,\n );\n }\n buffer.hooks[hook] = fnName;\n}\n\n/** Record an inbound message handler. */\nexport function recordRoomMessage(\n target: object,\n name: string,\n fnName: string,\n schema: ZodTypeAny,\n): void {\n const buffer = ownRoomBuffer(carrierOf(target));\n const existing = buffer.messages[name];\n if (existing !== undefined && existing.fnName !== fnName) {\n throw new Error(\n `@OnMessage(\"${name}\") is declared twice in one room (${existing.fnName} and ${fnName}).`,\n );\n }\n buffer.messages[name] = { fnName, schema };\n}\n\n/** Record the room itself (called by the class decorator), draining the buffer\n * the member decorators already filled. */\nexport function recordRoom(\n ctor: object,\n meta: Omit<RoomMeta, \"hooks\" | \"messages\">,\n): void {\n const carrier = carrierOf(ctor);\n const buffer = ownRoomBuffer(carrier);\n carrier[ROOM] = { ...meta, hooks: buffer.hooks, messages: buffer.messages };\n // AND into the shared class registry, the same slot @Controller pushes to.\n //\n // Without this line a room compiles, bundles and deploys, and is never called:\n // the bundler's entry exports `SDK.getRegisteredControllers()` and the runtime\n // reads its rooms out of THAT list (server.ts's `collectRooms`). A room that\n // only marks its own constructor is a room nobody can find — measured, on the\n // fixture, at the last gate before it would have worked.\n //\n // Rooms and controllers share one list because they are one thing to the\n // loader: classes a bundle declared. What each IS is decided by the marker it\n // carries, never by which list it arrived in.\n const g = globalThis as unknown as Record<symbol, unknown[] | undefined>;\n const REGISTRY = Symbol.for(\"palbase.backend.allControllers\");\n const all = (g[REGISTRY] ??= []);\n if (!all.includes(ctor)) all.push(ctor);\n}\n\n/** The room a class declares, or undefined. A class with no `@Room` is not a\n * room — the marker is the CONFIG's presence, never a name or a base class\n * (the rule upload.ts:13-16 states for uploads). */\nexport function getRoom(ctor: object): RoomMeta | undefined {\n const carrier = carrierOf(ctor);\n if (!Object.prototype.hasOwnProperty.call(carrier, ROOM)) return undefined;\n return carrier[ROOM] as RoomMeta;\n}\n","// Convert one controller route (a FlatRoute) into an OpenAPI PathItem slice via\n// the shared builder (`registerOperation`). The class-controller model splits\n// the request sources by parameter decorator:\n// - `@Body(schema)` → requestBody\n// - `@QueryParams(schema)` → query parameters\n// - `@Param(\"id\")` → path parameters\n// - `@Headers(schema)` → header parameters\n// - method return type → JSON 200 or bodyless 204\n// - effective auth → security\n// The operationId is DOTTED (`<controllerName>.<methodName>`), with the flat\n// verb+path form as the fallback for routes carrying no controller metadata —\n// both derived in discover.ts.\n//\n// Refinements (`.refine`, `.transform`) collapse to base types — the runtime\n// still validates server-side, the spec just describes a looser envelope. We\n// emit `x-palbase-refined: true` when a refinement is detected so tooling can\n// surface a hint.\nimport {\n OpenAPIRegistry,\n OpenApiGeneratorV31,\n extendZodWithOpenApi,\n type ResponseConfig,\n type RouteConfig,\n} from \"@asteasolutions/zod-to-openapi\";\nimport type { ReferenceObject, SchemaObject } from \"openapi3-ts/oas31\";\nimport type { ZodTypeAny } from \"zod\";\nimport { z } from \"zod\";\n\nimport type { AuthSpec } from \"../endpoint.js\";\nimport type { ThrowDescriptor, RoomMeta } from \"../decorators/registry.js\";\nimport type { UploadConfig } from \"../decorators/upload.js\";\nimport type { SseConfig } from \"../decorators/sse.js\";\nimport { getErrorRegistry } from \"../error-registry.js\";\nimport { isAuthEffectivelyRequired } from \"./auth.js\";\nimport { operationIdFor, type FlatRoute } from \"./controllers.js\";\n\n// The envelope conversion below registers ad-hoc zod schemas; make sure the\n// `.openapi` extension is installed even when this module is loaded without\n// aggregate.ts (idempotent).\nextendZodWithOpenApi(z);\n\nexport const ERROR_ENVELOPE_REF = \"PalbaseErrorEnvelope\";\ntype OpenApiHttpMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\" | \"query\";\n\n/** OpenAPI security-scheme name for the bearer token every authed route uses. */\nexport const BEARER_SCHEME = \"PalbaseBearer\";\n\n/** The zod object type the library's `request.params`/`query`/`headers` accept. */\ntype RequestParam = RouteConfig[\"request\"] extends infer R\n ? R extends { params?: infer P }\n ? P\n : never\n : never;\n\n/**\n * Register the shared error envelope component once per document. Every\n * non-2xx response on every endpoint $refs this — keeps the document compact\n * and the contract uniform with what the runtime emits.\n */\nexport function registerErrorEnvelope(registry: OpenAPIRegistry): void {\n const envelope = z\n .object({\n error: z.string().describe(\"Stable machine-readable error code\"),\n error_description: z.string().describe(\"Human-readable error description\"),\n status: z.number().int().describe(\"HTTP status code\"),\n request_id: z.string().describe(\"Correlation id for tracing\"),\n })\n .openapi(ERROR_ENVELOPE_REF, {\n description:\n \"Shared Palbase error envelope. Every non-2xx response from a backend RPC call uses this shape.\",\n });\n registry.register(ERROR_ENVELOPE_REF, envelope);\n}\n\n/**\n * Register one controller route's path item with the OpenAPI registry. The verb\n * + full path are on the {@link FlatRoute}; the operationId is derived by\n * {@link operationIdFor} (dotted `<controllerName>.<methodName>`, flat verb+path\n * only as a fallback); the request sources + response come from the route's\n * split schemas.\n */\nexport function registerControllerRoute(registry: OpenAPIRegistry, route: FlatRoute): void {\n registerOperation(registry, {\n method: route.method,\n path: route.fullPath,\n operationId: operationIdFor(route),\n body: route.inputSchemas.body,\n query: route.inputSchemas.query,\n headers: route.inputSchemas.headers,\n pathParams: route.pathParams,\n returnSchema: route.returnSchema,\n effectiveAuth: route.effectiveAuth,\n throws: route.throws,\n ...(route.uploadConfig !== undefined ? { uploadConfig: route.uploadConfig } : {}),\n ...(route.sseConfig !== undefined ? { sseConfig: route.sseConfig } : {}),\n });\n}\n\n/** Everything an OpenAPI operation needs, sourced from a FlatRoute's split. */\ninterface OperationInput {\n method: string;\n path: string;\n operationId: string;\n body?: ZodTypeAny;\n query?: ZodTypeAny;\n headers?: ZodTypeAny;\n pathParams: string[];\n returnSchema?: ZodTypeAny;\n effectiveAuth: AuthSpec;\n throws?: ThrowDescriptor[];\n /** Present ONLY on `@Upload` routes — see the extension emitted below. */\n uploadConfig?: UploadConfig;\n /** Present ONLY on `@Sse` routes — see the extension emitted below. */\n sseConfig?: SseConfig;\n}\n\n/**\n * Register one operation (verb + path + split request sources + response +\n * security) on the registry. Path/query/header parameters ride the library's\n * native `request.{params,query,headers}` zod expansion; the body + 200\n * response carry their zod schemas verbatim.\n */\nfunction registerOperation(registry: OpenAPIRegistry, op: OperationInput): void {\n const endpointPath = op.path;\n const method = op.method.toLowerCase() as OpenApiHttpMethod;\n const refined =\n isRefinedSchema(op.body) || isRefinedSchema(op.query) || isRefinedSchema(op.returnSchema);\n\n const requestBody =\n op.body !== undefined\n ? { required: true, content: { \"application/json\": { schema: op.body } } }\n : undefined;\n\n // Path params (@Param(\"id\")) → a zod object of required strings the library\n // expands into `in: path` parameters.\n const paramsSchema =\n op.pathParams.length > 0\n ? z.object(Object.fromEntries(op.pathParams.map((n) => [n, z.string()])))\n : undefined;\n\n const request: RouteConfig[\"request\"] = {\n ...(requestBody ? { body: requestBody } : {}),\n ...(paramsSchema ? { params: paramsSchema as RequestParam } : {}),\n ...(op.query ? { query: op.query as RequestParam } : {}),\n ...(op.headers ? { headers: op.headers as RequestParam } : {}),\n };\n\n // Declared error contracts: resolve RouteMeta.throws against the error\n // registry, then emit the typed per-status responses ON TOP of the static\n // envelope responses (a typed 429 is more specific than the generic one).\n const resolvedThrows = resolveThrows(op.throws);\n\n const returnKind = (op.returnSchema as { _def?: { typeName?: string } } | undefined)?._def?.typeName;\n // Only an explicit no-body schema means 204. Missing/unknown schemas still\n // describe JSON; treating every permissive schema as void hides decode bugs.\n // SSE uses its frame schema even though the handler itself returns void.\n const noContent =\n op.sseConfig === undefined && (returnKind === \"ZodVoid\" || returnKind === \"ZodUndefined\");\n const successResponse: ResponseConfig = noContent\n ? { description: \"No Content\" }\n : {\n description: \"Success\",\n content: {\n \"application/json\": {\n // SSE's schema describes one frame, not the void handler return.\n schema: op.sseConfig?.frame ?? op.returnSchema ?? z.unknown(),\n },\n },\n };\n const responses: { [statusCode: string]: ResponseConfig | ReferenceObject } = {\n [noContent ? 204 : 200]: successResponse,\n 400: errorResponse(\"Validation error\"),\n 401: errorResponse(\"Unauthorized\"),\n 403: errorResponse(\"Forbidden\"),\n 429: errorResponse(\"Rate limit exceeded\"),\n 500: errorResponse(\"Internal error\"),\n ...typedErrorResponses(resolvedThrows),\n };\n\n // Authed routes carry the bearer security requirement; public routes do not.\n const security = isAuthEffectivelyRequired(op.effectiveAuth)\n ? [{ [BEARER_SCHEME]: [] }]\n : undefined;\n\n registry.registerPath({\n // zod-to-openapi@7.3.4's `Method` union predates RFC 10008 and lacks\n // \"query\"; the union is type-only (the lib never validates the method at\n // runtime — it just keys the path item), so bridge the one missing verb\n // by asserting to the overlap of the two unions.\n method: method as OpenApiHttpMethod & RouteConfig[\"method\"],\n path: endpointPath,\n operationId: op.operationId,\n tags: [\"backend\"],\n summary: `Invoke the ${op.operationId} backend endpoint.`,\n description: `Runtime path: ${endpointPath}`,\n ...(Object.keys(request).length > 0 ? { request } : {}),\n ...(security ? { security } : {}),\n responses,\n ...(refined ? { \"x-palbase-refined\": true } : {}),\n ...(resolvedThrows.length > 0 ? { \"x-palbase-errors\": errorExtension(resolvedThrows) } : {}),\n // WHAT MAKES AN UPLOAD ROUTE AN UPLOAD ROUTE, to every generator.\n //\n // An `@Upload` route's bytes never pass through the backend: the client\n // PUTs them straight at a signed URL the authorize pre-flight mints, and\n // the decorated method is the completion handler. Nothing about that is\n // visible in the request body — the pre-flight body is ordinary JSON — so a\n // document without this extension describes an upload route as a plain\n // POST, and every client generated from it has NO WAY TO SEND A FILE.\n //\n // Measured 2026-08-24 against centauri: the Swift generator reads\n // `x-palbase-upload` (palbase-swiftgen Parse.swift) and, finding none,\n // emitted `PBEndpoint` instead of `PBUploadEndpoint` — `uploadImage` lost\n // its `file:` parameter and the app stopped compiling. Photo upload and\n // identity verification, both gone, from an absent extension.\n ...(op.uploadConfig !== undefined\n ? {\n \"x-palbase-upload\": {\n bucket: op.uploadConfig.bucket,\n pathTemplate: op.uploadConfig.pathTemplate,\n },\n }\n : {}),\n // Without this extension the document describes a streaming route as a\n // plain POST, and every client generated from it reads the body ONCE\n // instead of iterating frames — a generated client that compiles, runs and\n // is simply wrong. Same failure class as the upload extension above.\n ...(op.sseConfig !== undefined ? { \"x-palbase-sse\": {} } : {}),\n });\n}\n\n/** One throw descriptor joined with its registry entry. */\ninterface ResolvedThrow {\n name: string;\n code: string;\n status: number;\n dataSchema?: ZodTypeAny;\n}\n\n/**\n * Resolve route throw descriptors against the project-global error registry\n * (`status`/`hasData`/data schema live there — the descriptor only carries\n * `{name, code}`). Unknown codes are SKIPPED silently — an unresolvable throw\n * site degrades to the client's `.other` case, never breaks emission. Dedupes\n * by code (first descriptor wins).\n */\nfunction resolveThrows(throws: ThrowDescriptor[] | undefined): ResolvedThrow[] {\n if (!throws || throws.length === 0) return [];\n const registry = getErrorRegistry();\n const seen = new Set<string>();\n const out: ResolvedThrow[] = [];\n for (const t of throws) {\n if (seen.has(t.code)) continue;\n const entry = registry.get(t.code);\n if (!entry) continue;\n seen.add(t.code);\n out.push({\n name: t.name,\n code: t.code,\n status: entry.status,\n ...(entry.dataSchema ? { dataSchema: entry.dataSchema } : {}),\n });\n }\n return out;\n}\n\n/** One `x-palbase-errors` entry — UNCHANGED v1 wire format (swiftgen parses\n * this shape today). */\ninterface PalbaseErrorExtensionEntry {\n status: number;\n code: string;\n hasData: boolean;\n description: string;\n}\n\n/** Build the `x-palbase-errors` extension object: key = lowerCamel(className). */\nfunction errorExtension(resolved: ResolvedThrow[]): Record<string, PalbaseErrorExtensionEntry> {\n const out: Record<string, PalbaseErrorExtensionEntry> = {};\n for (const t of resolved) {\n out[lowerCamel(t.name)] = {\n status: t.status,\n code: t.code,\n hasData: t.dataSchema !== undefined,\n description: \"\",\n };\n }\n return out;\n}\n\n/** \"TodoLocked\" → \"todoLocked\" (the v1 extension key derivation). */\nfunction lowerCamel(name: string): string {\n return name.charAt(0).toLowerCase() + name.slice(1);\n}\n\n/**\n * Build the typed per-status error responses. Each declared error's response\n * schema is the FULL envelope `{error: {const}, error_description, status,\n * request_id, data?}` — `data` carries the registered zod schema's JSON form.\n * Statuses shared by several errors collapse to a `oneOf` of their envelopes.\n * Statuses are emitted in ascending order so the document is deterministic.\n */\nfunction typedErrorResponses(resolved: ResolvedThrow[]): { [statusCode: string]: ResponseConfig } {\n const byStatus = new Map<number, ResolvedThrow[]>();\n for (const t of resolved) {\n const group = byStatus.get(t.status);\n if (group) group.push(t);\n else byStatus.set(t.status, [t]);\n }\n const out: { [statusCode: string]: ResponseConfig } = {};\n for (const status of [...byStatus.keys()].sort((a, b) => a - b)) {\n const group = byStatus.get(status) ?? [];\n const schemas = group.map((t) => envelopeSchemaObject(t));\n const schema: SchemaObject = schemas.length === 1 && schemas[0] ? schemas[0] : { oneOf: schemas };\n out[String(status)] = {\n description: group.map((t) => t.code).join(\" | \"),\n content: { \"application/json\": { schema } },\n };\n }\n return out;\n}\n\n/**\n * Convert one declared error to its envelope SchemaObject, using the SAME\n * zod→JSON-schema converter the response schemas ride (the asteasolutions\n * generator). The `error` property is then pinned to the v1 `const` form (the\n * library lowers literals to single-value enums).\n */\nfunction envelopeSchemaObject(t: ResolvedThrow): SchemaObject {\n const envelope = z.object({\n error: z.literal(t.code),\n error_description: z.string(),\n status: z.number().int(),\n request_id: z.string(),\n ...(t.dataSchema ? { data: t.dataSchema } : {}),\n });\n const obj = toSchemaObject(envelope);\n if (obj.properties) {\n obj.properties[\"error\"] = { type: \"string\", const: t.code };\n }\n return obj;\n}\n\n/** Run one zod schema through the document converter and return the plain\n * SchemaObject (inline — no component registration leaks into the document). */\nfunction toSchemaObject(schema: ZodTypeAny): SchemaObject {\n const TMP_REF = \"__PalbaseTypedErrorEnvelope\";\n const tmpRegistry = new OpenAPIRegistry();\n tmpRegistry.register(TMP_REF, schema.openapi(TMP_REF));\n const generated = new OpenApiGeneratorV31(tmpRegistry.definitions).generateComponents();\n const out = generated.components?.schemas?.[TMP_REF];\n if (!out || typeof out !== \"object\" || \"$ref\" in out) {\n throw new Error(\"typed-error envelope schema conversion produced no schema object\");\n }\n return out;\n}\n\n/** A non-2xx envelope-only response that $refs the shared error envelope. */\nfunction errorResponse(description: string): ResponseConfig {\n return {\n description,\n content: {\n \"application/json\": { schema: { $ref: `#/components/schemas/${ERROR_ENVELOPE_REF}` } },\n },\n };\n}\n\n/**\n * Cheap heuristic: detect Zod schemas that include `.refine`, `.transform`, or\n * `.preprocess` — those are dropped by the OpenAPI converter so the generated\n * spec is looser than the runtime contract. Surfacing a hint lets developers\n * know they shouldn't rely on the spec for input shaping.\n */\nfunction isRefinedSchema(schema: ZodTypeAny | undefined): boolean {\n if (!schema) return false;\n const typeName = (schema as { _def?: { typeName?: string } })._def?.typeName;\n if (!typeName) return false;\n return typeName === \"ZodEffects\" || typeName === \"ZodPreprocess\" || typeName === \"ZodTransform\";\n}\n\n// ── rooms ───────────────────────────────────────────────────────────────────\n\n/** Walk a zod object's fields and name the first untyped one, or undefined. */\nfunction firstUntypedField(schema: unknown): string | undefined {\n const shape = (schema as { shape?: Record<string, { _def?: { typeName?: string } }> })?.shape;\n if (!shape) return undefined;\n for (const [field, sub] of Object.entries(shape)) {\n const kind = sub?._def?.typeName;\n if (kind === \"ZodUnknown\" || kind === \"ZodAny\") return field;\n }\n return undefined;\n}\n\n/**\n * Refuse a room whose wire shape carries an untyped field.\n *\n * An untyped payload produces an OPAQUE generated client: it compiles, it runs,\n * and the value the app receives is a bag nobody can read. The `@Sse` contract\n * gate exists for the same reason and caught a real one on its first day\n * (`VSearchSearchRequest.roomIn`). Inbound messages are refused too, and there\n * the argument is stronger: that direction reaches the SERVER, so an untyped\n * field is one nothing downstream can validate.\n */\nexport function assertRoomFieldsTyped(pattern: string, room: RoomMeta): void {\n for (const [event, schema] of Object.entries(room.events)) {\n const field = firstUntypedField(schema);\n if (field !== undefined) {\n throw new Error(\n `@Room(\"${pattern}\") event \"${event}\" has an untyped field \"${field}\". ` +\n `An untyped payload makes every generated client opaque — declare its shape.`,\n );\n }\n }\n for (const [message, meta] of Object.entries(room.messages)) {\n const field = firstUntypedField(meta.schema);\n if (field !== undefined) {\n throw new Error(\n `@Room(\"${pattern}\") message \"${message}\" has an untyped field \"${field}\". ` +\n `Inbound payloads reach the server — declare the shape so it can be validated.`,\n );\n }\n }\n}\n\n/** The document-level extension for one room.\n *\n * Rooms carry no verb and no path, so unlike `x-palbase-sse` this cannot hang\n * off an operation — it lives on the document. Schemas are REGISTERED as\n * components and referenced, which is the shape both generators already read\n * for request and response bodies; inlining them would be a second schema\n * dialect for them to learn. */\nexport function roomExtension(\n room: RoomMeta,\n register: (name: string, schema: ZodTypeAny) => string,\n): {\n events: Record<string, { $ref: string }>;\n messages: Record<string, { $ref: string }>;\n graceMs: number;\n} {\n const events: Record<string, { $ref: string }> = {};\n for (const [name, schema] of Object.entries(room.events)) {\n events[name] = { $ref: register(name, schema) };\n }\n const messages: Record<string, { $ref: string }> = {};\n for (const [name, meta] of Object.entries(room.messages)) {\n messages[name] = { $ref: register(name, meta.schema) };\n }\n return { events, messages, graceMs: room.graceMs };\n}\n","// defineError — project-defined typed error classes + the module-global error\n// registry the OpenAPI spec twins join against.\n//\n// `defineError(code, status, dataSchema?)` returns an `HttpError` subclass whose\n// constructor is typed by the zod schema (`new TodoLocked({ retryAfter: 30 })`).\n// Each call self-registers `{ code, status, className, dataSchema }` in a\n// registry anchored on `globalThis` under `Symbol.for(...)` — mirroring the\n// ROUTES pattern — so the deploy bundle's registrations land on the single SDK\n// instance the extractor `require()`s. The registry is pre-seeded with the named\n// built-in classes (`NotFound`, `Conflict`, …) so throw inference can resolve\n// ad-hoc `throw new NotFound(...)` sites by their canonical wire codes.\n//\n// Duplicate code with a DIFFERENT shape (status OR converted data schema) is a\n// hard error at registration time (deploy fails loudly — error codes are\n// project-unique); structurally-identical re-registration is idempotent (each\n// controller BUNDLE carries its own copy of a shared models/errors.ts, so the\n// same defineError line legitimately runs once per bundle in one process).\nimport {\n OpenAPIRegistry,\n OpenApiGeneratorV31,\n extendZodWithOpenApi,\n} from \"@asteasolutions/zod-to-openapi\";\nimport { z, type ZodTypeAny } from \"zod\";\nimport { HttpError } from \"./errors.js\";\n\nextendZodWithOpenApi(z);\n\n/** One registered error: the wire code, HTTP status, the class name the\n * analyzer sees, the optional data payload schema, and whether it is one of the\n * pre-seeded built-in named classes. */\nexport interface RegisteredError {\n code: string;\n status: number;\n className: string;\n dataSchema?: ZodTypeAny;\n /** JSON.stringify of the converted JSON schema — equal digest ⇔ the spec\n * twins would emit an identical `data` schema for this error. */\n dataDigest?: string;\n builtin: boolean;\n}\n\n/** The cross-module-instance registry anchor (the pinned contract symbol). */\nconst ERROR_REGISTRY: unique symbol = Symbol.for(\"palbase.backend.errorRegistry\");\n\ninterface RegistryCarrier {\n [ERROR_REGISTRY]?: Map<string, RegisteredError>;\n}\n\n/** Get (creating + pre-seeding if absent) the project-global error registry,\n * keyed by wire code. Anchored on `globalThis` so every copy of the SDK in a\n * process shares the one registry. */\n/** The fixed data schemas the built-in named errors ship. Declared HERE (not in\n * errors.ts, which stays zod-free) because this is where the registry converts\n * them to JSON-schema for the spec — keying codegen's typed `error.data`. Only\n * the errors that semantically carry a payload have a schema; the rest are\n * data-less. `.int()` is preserved so the wire/codegen sees an integer. */\nconst BUILTIN_DATA_SCHEMAS: Record<string, ZodTypeAny> = {\n bad_request: z.object({\n fields: z.array(z.object({ field: z.string(), message: z.string() })),\n }),\n too_many_requests: z.object({ retryAfter: z.number().int() }),\n};\n\nexport function getErrorRegistry(): Map<string, RegisteredError> {\n const g = globalThis as RegistryCarrier;\n if (!g[ERROR_REGISTRY]) {\n const m = new Map<string, RegisteredError>();\n for (const [code, status, className] of [\n [\"bad_request\", 400, \"BadRequest\"],\n [\"unauthorized\", 401, \"Unauthorized\"],\n [\"forbidden\", 403, \"Forbidden\"],\n [\"not_found\", 404, \"NotFound\"],\n [\"conflict\", 409, \"Conflict\"],\n // The engine's own 23505 conversion (engine/db.ts) throws this, and an\n // author may too. Registered like every other built-in so the spec\n // emitter resolves it — an unregistered code is SKIPPED silently there\n // (openapi/convert.ts) and would degrade to the client's `.other` case.\n [\"unique_violation\", 409, \"UniqueViolation\"],\n [\"too_many_requests\", 429, \"TooManyRequests\"],\n ] as const) {\n const dataSchema = BUILTIN_DATA_SCHEMAS[code];\n m.set(code, {\n code,\n status,\n className,\n builtin: true,\n ...(dataSchema ? { dataSchema, dataDigest: digestOf(code, dataSchema) } : {}),\n });\n }\n g[ERROR_REGISTRY] = m;\n }\n return g[ERROR_REGISTRY];\n}\n\n/** Class returned for schema-bearing errors: ctor(data, message?). */\nexport interface DefinedErrorWithData<S extends ZodTypeAny> {\n new (data: z.input<S>, message?: string): HttpError;\n readonly code: string;\n readonly status: number;\n}\n\n/** Class returned for schema-less errors: ctor(message?). */\nexport interface DefinedError {\n new (message?: string): HttpError;\n readonly code: string;\n readonly status: number;\n}\n\n/**\n * Define a project error class. MUST be called with literal args (string\n * literal `code`, numeric literal `status`) at module top level — the deploy\n * stager's static analyzer reads those literals to resolve throw sites.\n *\n * @example\n * // models/todos/errors.ts\n * export const TodoLocked = defineError(\"todo_locked\", 409, z.object({ retryAfter: z.number() }));\n * // services/todo.service.ts\n * throw new TodoLocked({ retryAfter: 30 });\n */\nexport function defineError<S extends ZodTypeAny>(\n code: string,\n status: number,\n dataSchema: S,\n): DefinedErrorWithData<S>;\nexport function defineError(code: string, status: number): DefinedError;\nexport function defineError(code: string, status: number, dataSchema?: ZodTypeAny): unknown {\n if (!Number.isInteger(status) || status < 400 || status > 599) {\n throw new Error(\n `defineError: status for \"${code}\" must be a 4xx/5xx integer, got ${status} — ` +\n `error responses must not clobber success responses in the project spec.`,\n );\n }\n const registry = getErrorRegistry();\n const existing = registry.get(code);\n const className = defaultClassName(code);\n const dataDigest = dataSchema ? digestOf(code, dataSchema) : undefined;\n if (existing) {\n const sameShape =\n existing.status === status && !existing.builtin && existing.dataDigest === dataDigest;\n if (!sameShape) {\n throw new Error(\n `defineError: duplicate error code \"${code}\" with a different shape ` +\n `(existing: status ${existing.status}${existing.builtin ? \", built-in\" : \"\"}` +\n `${existing.status === status && !existing.builtin ? \", different data schema\" : \"\"}). ` +\n `Error codes are project-unique.`,\n );\n }\n }\n // Local factories so the class-constructor closures capture a NON-optional\n // schema binding (narrowing does not flow into closures created in a branch).\n const makeWithData = (schema: ZodTypeAny) =>\n class extends HttpError {\n static readonly code = code;\n static readonly status = status;\n constructor(data: unknown, message?: string) {\n super(status, code, message ?? humanize(code), schema.parse(data));\n this.name = className;\n }\n };\n const makeWithoutData = () =>\n class extends HttpError {\n static readonly code = code;\n static readonly status = status;\n constructor(message?: string) {\n super(status, code, message ?? humanize(code));\n this.name = className;\n }\n };\n const cls = dataSchema ? makeWithData(dataSchema) : makeWithoutData();\n Object.defineProperty(cls, \"name\", { value: className });\n registry.set(code, {\n code,\n status,\n className,\n builtin: false,\n ...(dataSchema ? { dataSchema } : {}),\n ...(dataDigest !== undefined ? { dataDigest } : {}),\n });\n return cls;\n}\n\n/** Convert a data schema through the SAME library the spec twins use and\n * return its JSON-schema digest (the duplicate-shape comparison key). Doubles\n * as the self-containment guard: a schema carrying `.openapi(refId)` metadata\n * (top-level or nested) converts to `$ref` pointers into components the\n * project spec never emits — a dangling ref every spec consumer would choke\n * on — so it is rejected here, at the definition site, with a fixable message. */\nfunction digestOf(code: string, dataSchema: ZodTypeAny): string {\n const TMP_REF = \"__PalbaseErrorDataDigest\";\n const tmpRegistry = new OpenAPIRegistry();\n // Wrap the schema as a property — exactly how the envelope embeds it — so a\n // TOP-LEVEL .openapi(refId) is not masked by the registration refId and\n // surfaces as the same $ref the real emission would produce.\n tmpRegistry.register(TMP_REF, z.object({ data: dataSchema }).openapi(TMP_REF));\n const generated = new OpenApiGeneratorV31(tmpRegistry.definitions).generateComponents();\n const out = generated.components?.schemas?.[TMP_REF];\n const digest = JSON.stringify(out ?? null);\n if (digest.includes('\"$ref\"')) {\n throw new Error(\n `defineError: dataSchema for \"${code}\" carries .openapi(refId) metadata — ` +\n `it would emit dangling $ref pointers in the project spec. ` +\n `Use a plain zod schema (z.object({...})) without .openapi(...).`,\n );\n }\n return digest;\n}\n\n/** \"todo_locked\" → \"TodoLocked\" (used as Error.name; the source class NAME the\n * analyzer sees is whatever the user assigned the const to — they should match\n * by convention, and the descriptor carries the analyzed const name anyway). */\nfunction defaultClassName(code: string): string {\n return code\n .split(\"_\")\n .map((p) => p.charAt(0).toUpperCase() + p.slice(1))\n .join(\"\");\n}\n\n/** \"todo_locked\" → \"Todo locked\" — the default human-readable message. */\nfunction humanize(code: string): string {\n const s = code.replace(/_/g, \" \");\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n","/** PostgreSQL protocol identifiers, shared by error mapping and retry policy. */\nexport const SQLSTATE = Object.freeze({\n serializationFailure: \"40001\",\n deadlockDetected: \"40P01\",\n queryCancelled: \"57014\",\n commandGuardFailed: \"PBC01\",\n} as const);\n\n/** These errors confirm that PostgreSQL aborted the transaction. A connection\n * failure does not: the COMMIT may already have succeeded. */\nexport function isTransactionRollbackState(state: unknown): boolean {\n return state === SQLSTATE.serializationFailure || state === SQLSTATE.deadlockDetected;\n}\n","import { SQLSTATE, isTransactionRollbackState } from \"./db/sqlstate.js\";\n\n/**\n * The brand that identifies an HttpError ACROSS SDK instances.\n *\n * A process legitimately holds more than one copy of this SDK — the runtime\n * loads the engine from its own node_modules while the tenant's bundle carries\n * an inlined copy, which is why the controller registry and the error registry\n * are both anchored on `Symbol.for`. The one place that did not follow the\n * pattern was the engine's catch: `err instanceof HttpError` compares CLASS\n * IDENTITY, so a `throw new NotFound()` from the bundle's copy did not match\n * the engine's copy and every typed error in every deployed backend degraded to\n * `500 internal_error`. Measured through the edge on a real deploy: a route\n * throwing `NotFound` answered 500 while the runtime's own log printed the\n * error object with `status: 404` right beside it.\n *\n * `Symbol.for` puts this in the cross-realm registry, so every copy of the SDK\n * agrees on it by VALUE rather than by identity.\n */\nexport const HTTP_ERROR_BRAND: unique symbol = Symbol.for(\"palbase.backend.httpError\");\n\n/**\n * Set on an `HttpError` the ENGINE built out of a driver failure, as opposed to\n * one the author constructed to ANSWER a request.\n *\n * The distinction cannot be read off the status, and 409 is why. The scaffold\n * teaches `throw new Conflict(\"title already taken\")` as the way to answer\n * (template/AGENTS.md), and the engine raises `UniqueViolation` — also a 409 —\n * when a write hits a unique index. Logging by status therefore either loses the\n * engine's event or writes an \"unhandled\" line every time an author takes the\n * documented path. Measured: it did the second.\n *\n * `Symbol.for` so the mark survives the bundle/runtime SDK split, the same way\n * {@link HTTP_ERROR_BRAND} does.\n */\nexport const ENGINE_RAISED: unique symbol = Symbol.for(\"palbase.backend.engineRaised\") as never;\n\n/** Mark `e` as engine-raised and return it, so a conversion site reads as one expression. */\nexport function markEngineRaised<E extends object>(e: E): E {\n (e as Record<symbol, unknown>)[ENGINE_RAISED] = true;\n return e;\n}\n\n/** Whether the engine built this error, rather than the author throwing it to answer. */\nexport function isEngineRaised(e: unknown): boolean {\n return typeof e === \"object\" && e !== null && (e as Record<symbol, unknown>)[ENGINE_RAISED] === true;\n}\n\n/**\n * Whether a thrown value is an HttpError from ANY copy of this SDK.\n *\n * The shape is checked as well as the brand: the brand says \"this claims to be\n * one of ours\", the fields say the envelope can actually be built from it, and\n * a half-formed object must fall through to the 500 path rather than produce a\n * malformed response.\n */\nexport function isHttpError(err: unknown): err is HttpError {\n if (typeof err !== \"object\" || err === null) return false;\n const e = err as Record<PropertyKey, unknown>;\n return (\n e[HTTP_ERROR_BRAND] === true &&\n typeof e.status === \"number\" &&\n typeof e.error === \"string\" &&\n typeof e.errorDescription === \"string\"\n );\n}\n\n/** HTTP error with structured error response format.\n *\n * The base class for the throwable error classes (`PalError`, `Conflict`,\n * `NotFound`, …). Construct one directly with `throw new HttpError(404,\n * \"todo_not_found\", \"No such todo\")`, or throw a named subclass\n * (`throw new NotFound(\"todo not found\")`). The runtime catches any `HttpError`\n * and emits the standard envelope; on the wire (and to iOS) it surfaces as\n * `BackendError.server(code, status, message, requestId)`.\n *\n * The optional `data` field carries a structured payload alongside the\n * standard envelope — for errors that need to ship extra context\n * (e.g. `new Conflict(\"locked\", \"title_locked\", { retryAfter: 30 })`). It rides\n * through to the iOS typed enum's associated value.\n */\nexport class HttpError extends Error {\n public readonly status: number;\n public readonly error: string;\n public readonly errorDescription: string;\n public readonly data?: unknown;\n /** See {@link HTTP_ERROR_BRAND} — how the engine recognises this across SDK copies. */\n public readonly [HTTP_ERROR_BRAND] = true;\n\n constructor(status: number, error: string, errorDescription: string, data?: unknown) {\n super(errorDescription);\n this.name = \"HttpError\";\n this.status = status;\n this.error = error;\n this.errorDescription = errorDescription;\n if (data !== undefined) {\n this.data = data;\n }\n }\n\n /**\n * Serialize to the standard Palbase error response format.\n * The `requestId` is injected by the runtime layer from the request context.\n * When called without arguments (e.g. JSON.stringify), request_id is omitted.\n * When `data` is set, it is appended as a strict-superset field.\n */\n toJSON(requestId?: string): {\n error: string;\n error_description: string;\n status: number;\n request_id?: string;\n data?: unknown;\n } {\n const result: {\n error: string;\n error_description: string;\n status: number;\n request_id?: string;\n data?: unknown;\n } = {\n error: this.error,\n error_description: this.errorDescription,\n status: this.status,\n };\n if (requestId) {\n result.request_id = requestId;\n }\n if (this.data !== undefined) {\n result.data = this.data;\n }\n return result;\n }\n}\n\n/**\n * Throw with a custom HTTP status + wire code. The general-purpose escape hatch\n * when none of the named classes (`Conflict`/`NotFound`/…) fits.\n *\n * @example\n * throw new PalError(418, \"teapot\", \"I'm a teapot\");\n */\nexport class PalError extends HttpError {\n constructor(status: number, code: string, description: string, data?: unknown) {\n super(status, code, description, data);\n this.name = \"PalError\";\n }\n}\n\n/** Base for the named status classes. Each subclass fixes its HTTP status; the\n * `code` defaults to the class's canonical wire code (overridable), and the\n * `message` defaults to a human-readable label (overridable). */\nabstract class NamedHttpError extends HttpError {\n protected constructor(\n status: number,\n defaultCode: string,\n name: string,\n message?: string,\n code?: string,\n data?: unknown,\n ) {\n super(status, code ?? defaultCode, message ?? defaultMessage(name), data);\n this.name = name;\n }\n}\n\n/** Derive a default human-readable message from a class name\n * (\"NotFound\" → \"Not found\", \"TooManyRequests\" → \"Too many requests\"). */\nfunction defaultMessage(name: string): string {\n const spaced = name.replace(/([a-z0-9])([A-Z])/g, \"$1 $2\");\n return spaced.charAt(0).toUpperCase() + spaced.slice(1).toLowerCase();\n}\n\n/**\n * 400 — the request was malformed or failed validation. Carries a fixed typed\n * payload: `new BadRequest({ fields: [{ field: \"email\", message: \"invalid\" }] })`.\n * The shape is declared once in the SDK so codegen surfaces `error.data.fields`\n * typed on the client.\n */\nexport class BadRequest extends NamedHttpError {\n public declare readonly data: BadRequestData;\n constructor(data: BadRequestData, message?: string) {\n super(400, \"bad_request\", \"BadRequest\", message, undefined, data);\n }\n}\n\n/** 401 — the caller is not authenticated. */\nexport class Unauthorized extends NamedHttpError {\n constructor(message?: string, code?: string, data?: unknown) {\n super(401, \"unauthorized\", \"Unauthorized\", message, code, data);\n }\n}\n\n/** 403 — the caller is authenticated but not allowed. */\nexport class Forbidden extends NamedHttpError {\n constructor(message?: string, code?: string, data?: unknown) {\n super(403, \"forbidden\", \"Forbidden\", message, code, data);\n }\n}\n\n/** 404 — the requested resource does not exist. */\nexport class NotFound extends NamedHttpError {\n constructor(message?: string, code?: string, data?: unknown) {\n super(404, \"not_found\", \"NotFound\", message, code, data);\n }\n}\n\n/** 409 — the request conflicts with the current state. */\nexport class Conflict extends NamedHttpError {\n constructor(message?: string, code?: string, data?: unknown) {\n super(409, \"conflict\", \"Conflict\", message, code, data);\n }\n}\n\n/**\n * 409 — a write was refused because it would duplicate an existing row.\n * Carries the NAME of the unique constraint Postgres named (`users_email_key`).\n *\n * The engine produces it: a statement rejected with SQLSTATE `23505` is\n * converted here rather than surfacing as an opaque driver error (see\n * `engine/db.ts`, `diagnosingDriver`). What that removes is the string match —\n * before this, the only way to act on a duplicate was to test the driver\n * message for \"duplicate key value violates unique constraint\", a contract\n * nobody signed that breaks on a Postgres upgrade, a locale, or a constraint\n * rename, silently and in production.\n *\n * THE NAME IS A FIELD AND STAYS OUT OF THE DEFAULT MESSAGE. The two are not\n * the same audience. `constraint` is read by the code that catches this — the\n * developer, who already knows the schema. `errorDescription` is the HTTP\n * response body, and an UNCAUGHT duplicate puts it in front of the\n * application's end user: `users_email_key` there discloses how the schema is\n * built to whoever sent the request. The platform's own data API took the same\n * decision one surface over and wrote down why —\n * `v2/internal/modules/database/internal/handler/pgerror.go:83-87` collapses\n * every 23xxx to a generic conflict, \"never disclose the constraint/column\n * name\". A thrower who WANTS the name on the wire passes it deliberately\n * (`new UniqueViolation(c, \\`\\${c} already exists\\`)`, or through `data`).\n *\n * @example\n * try {\n * await Database.public.users.insert({ email });\n * } catch (e) {\n * if (UniqueViolation.is(e) && e.constraint === \"users_email_key\") {\n * throw new Conflict(\"That email is taken\", \"email_taken\");\n * }\n * throw e;\n * }\n */\nexport class UniqueViolation extends Conflict {\n /**\n * Whether `e` is a unique violation — REGARDLESS of which copy of this SDK\n * constructed it.\n *\n * Use this instead of `instanceof`. Measured on a live stack: a controller\n * bundle INLINES its own copy of `@palbase/backend`, and the engine that\n * raises this error is the runtime's copy. Two copies, two class identities,\n * and `e instanceof UniqueViolation` is false in the one place a caller\n * writes it — a check that reads as correct and silently never matches.\n */\n static is(e: unknown): e is UniqueViolation {\n return (\n typeof e === \"object\" &&\n e !== null &&\n (e as { name?: unknown }).name === \"UniqueViolation\" &&\n typeof (e as { constraint?: unknown }).constraint === \"string\"\n );\n }\n\n /** The unique constraint the statement violated, as Postgres named it.\n * `\"\"` when the driver did not say which — see `engine/db.ts`. */\n public readonly constraint: string;\n\n constructor(constraint: string, message?: string, code?: string, data?: unknown) {\n super(message ?? \"Unique constraint violated\", code ?? \"unique_violation\", data);\n this.name = \"UniqueViolation\";\n this.constraint = constraint;\n }\n}\n\n/**\n * Eşzamanlılık yüzünden BAŞARISIZ OLAN, ama TEKRAR DENENİRSE başarılı olabilecek\n * hataların ortak yüzeyi (FR-036).\n *\n * `retryable: true` bir tahmin değil, Postgres'in söylediği şey: `40001` ve\n * `40P01` \"bu işlemi baştan çalıştır\" anlamına gelir. Kümenin DAR tutulması\n * kasıtlı — `23505` buraya girseydi, tekrar denemek aynı cevabı verir ve\n * döngü sonsuza kadar dönerdi.\n */\nexport interface RetryableError extends Error {\n readonly retryable: true;\n /** Beş karakterlik SQLSTATE — hangi eşzamanlılık hatası olduğunu SÖYLER. */\n readonly sqlstate: string;\n}\n\n/**\n * `e` tekrar denenebilir mi?\n *\n * `instanceof` DEĞİL şekil kontrolü — ve sebebi ÖLÇÜLMÜŞ (bkz. {@link\n * UniqueViolation.is}): bir controller bundle'ı kendi `@palbase/backend`\n * kopyasını inline'lıyor, hatayı fırlatan motor ise runtime'ın kopyası. İki\n * sınıf kimliği, ve `e instanceof SerializationFailure` yazan tek yerde\n * sessizce hiç eşleşmiyor.\n */\nexport function isRetryable(e: unknown): e is RetryableError {\n return (\n typeof e === \"object\" &&\n e !== null &&\n (e as { retryable?: unknown }).retryable === true &&\n isTransactionRollbackState((e as { sqlstate?: unknown }).sqlstate)\n );\n}\n\n/**\n * `40001 serialization_failure` — SERIALIZABLE ya da REPEATABLE READ altında\n * eşzamanlı bir işlem bu işlemi geçersiz kıldı.\n *\n * D-016: bu hata BLOKLANMIYOR, FIRLATILIYOR. Retry'sız bir izolasyon\n * yükseltmesi sunmak defect'tir — kullanıcıya çalışmayan bir düğme vermektir:\n * SERIALIZABLE'a çıkıp `40001`'i yakalamayan kod, önceden çalışan işlemleri\n * rastgele kaybetmeye başlar.\n */\nexport class SerializationFailure extends Conflict implements RetryableError {\n public readonly retryable = true as const;\n public readonly sqlstate: string;\n\n static is(e: unknown): e is SerializationFailure {\n return (\n typeof e === \"object\" && e !== null &&\n (e as { name?: unknown }).name === \"SerializationFailure\"\n );\n }\n\n constructor(sqlstate: string = SQLSTATE.serializationFailure, message?: string, data?: unknown) {\n super(\n message ??\n \"işlem eşzamanlı bir işlemle serileştirilemedi — aynı işlemi baştan çalıştırın \" +\n \"(karar okumaları ve yazmaları $atomic içine alıp { retry: n } verin)\",\n \"serialization_failure\",\n data,\n );\n this.name = \"SerializationFailure\";\n this.sqlstate = sqlstate;\n }\n}\n\n/**\n * `40P01 deadlock_detected` — iki işlem birbirinin kilidini bekliyordu;\n * Postgres birini seçip iptal etti.\n *\n * Bu hatayı GÖRMEK bir tasarım sinyali: kilit sırası deterministik değilse\n * tekrar denemek yalnız maliyeti öteler. `Database.$lockRows(...)` (FR-035)\n * ya da çok satırlı yazmanın CTE'si (FR-015) sırayı sabitler.\n */\nexport class DeadlockDetected extends Conflict implements RetryableError {\n public readonly retryable = true as const;\n public readonly sqlstate: string;\n\n static is(e: unknown): e is DeadlockDetected {\n return (\n typeof e === \"object\" && e !== null &&\n (e as { name?: unknown }).name === \"DeadlockDetected\"\n );\n }\n\n constructor(sqlstate: string = SQLSTATE.deadlockDetected, message?: string, data?: unknown) {\n super(\n message ??\n \"deadlock: iki işlem birbirinin kilidini bekledi ve bu işlem iptal edildi — \" +\n \"kilit sırasını sabitlemek için Database.$lockRows(tablo, id'ler) kullanın\",\n \"deadlock_detected\",\n data,\n );\n this.name = \"DeadlockDetected\";\n this.sqlstate = sqlstate;\n }\n}\n\n/** A single field-level validation failure carried by {@link BadRequest}. */\nexport interface FieldError {\n /** The offending field's name (dotted path for nested fields). */\n field: string;\n /** Human-readable reason the field failed. */\n message: string;\n}\n\n/** The fixed, typed payload {@link BadRequest} ships. */\nexport interface BadRequestData {\n /** The fields that failed validation. */\n fields: FieldError[];\n}\n\n/** The fixed, typed payload {@link TooManyRequests} ships. */\nexport interface TooManyRequestsData {\n /** Seconds the caller should wait before retrying. */\n retryAfter: number;\n}\n\n/**\n * 429 — the caller has exceeded the rate limit. Carries a fixed typed payload:\n * `new TooManyRequests({ retryAfter: 30 })`. The shape is declared once in the\n * SDK (error-registry pre-seed) so codegen surfaces `error.data.retryAfter`\n * typed on the client — no per-project definition needed.\n */\nexport class TooManyRequests extends NamedHttpError {\n public declare readonly data: TooManyRequestsData;\n constructor(data: TooManyRequestsData, message?: string) {\n super(429, \"too_many_requests\", \"TooManyRequests\", message, undefined, data);\n }\n}\n","// Resolve, at VALUE level, whether an `AuthSpec` requires authentication —\n// the runtime counterpart of the type-level `IsAuthed<TAuth>` (endpoint.ts).\n// Mirrors the runtime enforcement table (loader.go DefaultAuthConfig +\n// pipeline/auth.go): secure-by-default — auth is required UNLESS explicitly\n// disabled (`false` / `{ required: false }`).\nimport type { AuthSpec } from \"../endpoint.js\";\n\n/**\n * True when the effective auth requires a token. The cascade is resolved by the\n * caller (route ?? controller default ?? true) into a single `AuthSpec`; this\n * collapses it to a boolean.\n *\n * | AuthSpec | required |\n * |------------------------|----------|\n * | `true` | true |\n * | `false` | false |\n * | `{ required: true }` | true |\n * | `{ required: false }` | false |\n * | `{ role: \"admin\" }` | true |\n * | `{}` | true |\n */\nexport function isAuthEffectivelyRequired(auth: AuthSpec): boolean {\n if (typeof auth === \"boolean\") return auth;\n // Object form: only `required: false` opts out; everything else is secure.\n return auth.required !== false;\n}\n","// Discover + load controller files (`controllers/*.controller.ts` layout) and\n// flatten each `@Controller` CLASS into route entries the OpenAPI registry\n// consumes.\n//\n// A controller is now a CLASS decorated with `@Controller`/`@Get`/`@Post`/…\n// (see src/decorators/). `flattenController` reads the controller metadata via\n// `resolveController(class)` and the route metadata via `getRoutes(class)`, then\n// derives each route's full path + dotted operationId namespace (from the\n// class name) + effective auth + the per-source zod schemas\n// (body/query/params/headers) + the return schema.\nimport fastGlob from \"fast-glob\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { ZodTypeAny } from \"zod\";\n\nimport type { AuthSpec, RateLimitConfig } from \"../endpoint.js\";\nimport {\n resolveController,\n isController,\n resolveEffectiveAuth,\n type ControllerMeta,\n} from \"../decorators/controller.js\";\nimport { getRoutes, type ParamMeta, type ThrowDescriptor , getRoom } from \"../decorators/registry.js\";\nimport type { UploadConfig } from \"../decorators/upload.js\";\nimport type { SseConfig } from \"../decorators/sse.js\";\nimport {\n deriveControllerName,\n deriveControllerOperationId,\n joinControllerPath,\n} from \"./discover.js\";\n\nconst CONTROLLER_GLOB = \"controllers/**/*.ts\";\nconst DEFAULT_IGNORE = [\n \"**/*.test.ts\",\n \"**/*.spec.ts\",\n \"**/__tests__/**\",\n \"**/node_modules/**\",\n];\n\n/** A controller class (constructor). Kept loose — the only contract is that it\n * is a `@Controller`-decorated class, asserted via {@link isController}. */\nexport type ControllerClass = abstract new (...args: never[]) => object;\n\n/** A controller module loaded from a `controllers/*.controller.ts` file. */\nexport interface LoadedController {\n /** Path relative to projectRoot, posix-normalised. */\n relativePath: string;\n /** The default-exported `@Controller` class. */\n controller: ControllerClass;\n}\n\n/** The zod schemas one route declares, split by request source. Each is present\n * only when the matching parameter decorator (`@Body`/`@QueryParams`/`@Headers`) is. */\nexport interface RouteInputSchemas {\n body?: ZodTypeAny;\n query?: ZodTypeAny;\n /** A single `params` schema, when one is declared (currently only via\n * individual `@Param(\"id\")` decorators — collected into `pathParams`). */\n params?: ZodTypeAny;\n headers?: ZodTypeAny;\n}\n\n/** One flattened route: the HTTP verb, the FULL path (basePath + subpath), the\n * dotted operationId inputs (controllerName + fnName), the resolved effective\n * auth, the per-source input schemas, the named path params, the return\n * schema, and the rate limit. */\nexport interface FlatRoute {\n method: string;\n /** basePath + subpath, collapsed (the full route path). */\n fullPath: string;\n /** The controller method name — the method-name half of the dotted\n * operationId `<controllerName>.<fnName>`; also the worker dispatch key. */\n fnName: string;\n /** The dotted-operationId namespace derived from the controller CLASS name\n * (MembersController → \"members\"). \"\" when the derivation is empty — the\n * operationId then falls back to the flat verb-prefixed form. */\n controllerName: string;\n /** Resolved auth: route option ?? controller default ?? application default\n * ?? true (secure) — the cascade lives in `resolveEffectiveAuth`. */\n effectiveAuth: AuthSpec;\n /** All parameter metas for this route (ordered by index). */\n params: ParamMeta[];\n /** zod schemas split by request source (body/query/params/headers). */\n inputSchemas: RouteInputSchemas;\n /** Named path params (`@Param(\"id\")` → `\"id\"`), in declaration order. */\n pathParams: string[];\n /** The response zod schema (named by the method's return type), if any. */\n returnSchema?: ZodTypeAny;\n /** Per-route rate limit, if declared. */\n rateLimit?: RateLimitConfig;\n /** Inferred throw descriptors (recordThrows — the stager's throw analysis),\n * if any. Resolved against the error registry at emission time. */\n throws?: ThrowDescriptor[];\n /** Direct-storage upload config — present ONLY on `@Upload` routes. Its\n * presence MARKS this as an upload route through openapi + codegen (the bytes\n * go client→storage; the method body is the completion handler). */\n uploadConfig?: UploadConfig;\n /** Present ONLY on `@Sse` routes — the marker the converter turns into\n * `x-palbase-sse`. */\n sseConfig?: SseConfig;\n}\n\n/**\n * Flatten a `@Controller` class into its route entries. The full path is\n * `basePath + subpath`; the operationId is the DOTTED\n * `<controllerName>.<fnName>` id (PlacesController.importNearby →\n * places.importNearby) — matching the Go runtime (extract_meta.js derives the\n * namespace from the class name; generator.go joins). Effective auth resolves\n * the cascade (route ?? controller default ?? application default ??\n * secure-by-default) through the one resolver the route table asks too.\n */\nexport function flattenController(controller: ControllerClass): FlatRoute[] {\n // A room is server code that declares no HTTP surface: no verb, no path, no\n // params. It is loaded from the same directory as controllers because that is\n // where a project's server code lives, so this has to let it through rather\n // than refuse it as \"not a @Controller\". It contributes no routes.\n if (getRoom(controller) !== undefined && !isController(controller)) {\n return [];\n }\n\n const meta: ControllerMeta = resolveController(controller);\n const controllerName = deriveControllerName(controller.name);\n const routes = getRoutes(controller);\n\n // `@Sse` and `@Upload` on ONE method describe one handler twice.\n //\n // `recordRoute` PUSHES, so both decorators record their own route: one POST\n // that streams and one POST that is an upload authorize pre-flight, each\n // claiming the same body. Whichever the pipeline reads second wins, silently\n // — and the method body cannot be both a completion handler and a stream.\n //\n // Refused HERE rather than at deploy because the deploy gate receives only\n // route path strings (`RouteReporter.DeclaredRoutes() []string`) and cannot\n // see per-route markers; and because failing the BUILD puts the message in\n // front of the developer who wrote the pair, not in front of whoever\n // happened to run the next deploy.\n const kindsByMethod = new Map<string, { sse: boolean; upload: boolean }>();\n for (const route of routes) {\n const seen = kindsByMethod.get(route.fnName) ?? { sse: false, upload: false };\n if (route.options.sseConfig !== undefined) seen.sse = true;\n if (route.options.uploadConfig !== undefined) seen.upload = true;\n kindsByMethod.set(route.fnName, seen);\n }\n for (const [fnName, seen] of kindsByMethod) {\n if (seen.sse && seen.upload) {\n throw new Error(\n `${controller.name}.${fnName} declares BOTH @Sse and @Upload. ` +\n `One method cannot be both a streaming response and an upload completion ` +\n `handler — the two describe the same handler twice and the second one read ` +\n `silently wins. Split them into two methods.`,\n );\n }\n }\n\n const out: FlatRoute[] = [];\n for (const route of routes) {\n const fullPath = joinControllerPath(meta.basePath, route.subpath);\n const effectiveAuth = resolveEffectiveAuth(route.options.auth, meta.defaultAuth);\n const inputSchemas: RouteInputSchemas = {};\n const pathParams: string[] = [];\n for (const p of route.params) {\n switch (p.kind) {\n case \"body\":\n if (p.schema) inputSchemas.body = p.schema;\n break;\n case \"query\":\n if (p.schema) inputSchemas.query = p.schema;\n break;\n case \"headers\":\n if (p.schema) inputSchemas.headers = p.schema;\n break;\n case \"param\":\n if (p.name) pathParams.push(p.name);\n break;\n default:\n // user/optionalUser/client/requestId/traceId/req/uploadedObject — no\n // schema source. `uploadedObject` is the @Upload completion input; its\n // shape is the fixed UploadedObject type, not an author schema.\n break;\n }\n }\n // The decorators throw 403/429 without any `throw` in the method body, so\n // the stager's throw analysis cannot see them. Merge them in, deduped by\n // code (an explicitly analysed throw wins — it is the more specific fact).\n const seen = new Set((route.throws ?? []).map((t) => t.code));\n const allThrows = [\n ...(route.throws ?? []),\n ];\n\n out.push({\n method: route.method,\n fullPath,\n fnName: route.fnName,\n controllerName,\n effectiveAuth,\n params: route.params,\n inputSchemas,\n pathParams,\n ...(route.returnSchema !== undefined ? { returnSchema: route.returnSchema } : {}),\n ...(route.options.rateLimit !== undefined ? { rateLimit: route.options.rateLimit } : {}),\n ...(allThrows.length > 0 ? { throws: allThrows } : {}),\n ...(route.options.uploadConfig !== undefined ? { uploadConfig: route.options.uploadConfig } : {}),\n ...(route.options.sseConfig !== undefined ? { sseConfig: route.options.sseConfig } : {}),\n });\n }\n return out;\n}\n\n/** The operationId for a route — exposed so callers (convert/aggregate)\n * derive it consistently. Dotted `<controllerName>.<fnName>` (members.getUser)\n * when the namespace is derivable; flat verb-prefixed fallback otherwise —\n * byte-for-byte identical to the Go runtime's operationID() in\n * `internal/openapi/generator.go`. */\nexport function operationIdFor(route: FlatRoute): string {\n if (route.controllerName !== \"\" && route.fnName !== \"\") {\n return `${route.controllerName}.${route.fnName}`;\n }\n return deriveControllerOperationId(route.method, route.fullPath);\n}\n\n/** Discover controller files under projectRoot (sorted, deterministic). */\nexport async function discoverControllerFiles(projectRoot: string): Promise<string[]> {\n const matches = await fastGlob(CONTROLLER_GLOB, {\n cwd: projectRoot,\n ignore: DEFAULT_IGNORE,\n absolute: true,\n onlyFiles: true,\n dot: false,\n });\n const collator = new Intl.Collator(\"en\", { numeric: true, sensitivity: \"base\" });\n matches.sort(collator.compare);\n return matches;\n}\n\n/** Error thrown when a controller module fails to import or does not\n * default-export a `@Controller` class. */\nexport class ControllerLoadError extends Error {\n constructor(\n public readonly relativePath: string,\n message: string,\n public readonly cause?: unknown,\n ) {\n super(`${message} (file: ${relativePath})`);\n this.name = \"ControllerLoadError\";\n }\n}\n\n/** Load every discovered controller module, returning its `@Controller` class. */\nexport async function loadControllers(\n absolutePaths: string[],\n projectRoot: string,\n options: { timeoutMs?: number } = {},\n): Promise<LoadedController[]> {\n const timeoutMs = options.timeoutMs ?? 5_000;\n const out: LoadedController[] = [];\n for (const absolutePath of absolutePaths) {\n const relativePath = path.relative(projectRoot, absolutePath).split(path.sep).join(\"/\");\n let mod: { default?: unknown };\n try {\n mod = await withTimeout(\n () => import(pathToFileURL(absolutePath).href),\n timeoutMs,\n `import timed out after ${timeoutMs}ms`,\n );\n } catch (cause) {\n throw new ControllerLoadError(relativePath, \"failed to import controller module\", cause);\n }\n if (!isController(mod.default)) {\n throw new ControllerLoadError(\n relativePath,\n \"module has no default-exported @Controller class — every controller file must `export default` a @Controller-decorated class\",\n );\n }\n out.push({ relativePath, controller: mod.default as ControllerClass });\n }\n return out;\n}\n\nfunction withTimeout<T>(fn: () => Promise<T>, ms: number, message: string): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const t = setTimeout(() => reject(new Error(message)), ms);\n fn()\n .then((v) => {\n clearTimeout(t);\n resolve(v);\n })\n .catch((err) => {\n clearTimeout(t);\n reject(err);\n });\n });\n}\n","// `@Controller(basePath, options?)` — the class decorator that marks a class as\n// a Palbase backend controller. It stamps a non-enumerable `__palbase`\n// discriminant + the resolved controller metadata onto the class so the\n// deploy/dispatch pipeline (and `isController`/`resolveController`) can detect\n// and read it without `reflect-metadata`.\nimport type { AuthSpec } from \"../endpoint.js\";\nimport { getRoutes } from \"./registry.js\";\n\n/** The controller metadata stamped onto a `@Controller`-decorated class. The\n * default export of a `controllers/*.controller.ts` file resolves to this via\n * {@link resolveController}. */\nexport interface ControllerMeta {\n /** Discriminant the runtime + tooling read. */\n readonly __palbase: \"controller\";\n /** The base path every route in this controller mounts under (e.g. \"/todos\"). */\n basePath: string;\n /** Controller-level default auth, applied to routes that don't set their own\n * (`@Get(\"/x\", { auth })` overrides this). `undefined` ⇒ the application\n * default ({@link defineDefaultAuth}), and secure-by-default below that —\n * see {@link resolveEffectiveAuth} for the whole cascade. */\n defaultAuth?: AuthSpec;\n}\n\n/** Options accepted by `@Controller`. */\nexport interface ControllerOptions {\n /** Default auth for ALL routes in this controller (route-level overrides;\n * omitting it falls through to the application default declared with\n * {@link defineDefaultAuth}). */\n auth?: AuthSpec;\n}\n\n/** Symbol the controller metadata is stamped under. Symbol-keyed (not a string\n * property) so it never collides with an authored member and stays off the\n * structural surface. */\nexport const CONTROLLER_META: unique symbol = Symbol.for(\"palbase.backend.controllerMeta\");\n\n/**\n * Every class `@Controller` has decorated, in decoration order.\n *\n * This is what lets a controller file need no export at all: importing the file\n * runs the decorator, the decorator records the class here, and the runtime\n * reads the list. Without it the only handle on a class is its export name, so\n * every controller had to be exported AND named in a generated entry — the\n * ceremony NestJS still charges (`export class` PLUS\n * `@Module({controllers:[…]})`).\n *\n * Keyed on a well-known Symbol against globalThis rather than held in a module\n * variable, because a deployed bundle inlines its own copy of this package: two\n * copies would keep two lists, and the runtime would read the empty one. The\n * same hazard `runtimeHooks` exists for, closed the same way — one shared slot.\n */\nconst REGISTRY: unique symbol = Symbol.for(\"palbase.backend.allControllers\") as never;\n\nfunction registry(): unknown[] {\n const g = globalThis as unknown as Record<symbol, unknown[] | undefined>;\n const existing = g[REGISTRY];\n if (existing) return existing;\n const fresh: unknown[] = [];\n g[REGISTRY] = fresh;\n return fresh;\n}\n\n/**\n * The controller classes this process has loaded, in decoration order.\n *\n * Decoration order is import order, which the bundler fixes by sorting the\n * files it emits imports for — so two builds of one tree produce the same\n * route table, and route precedence is not a function of module-resolution\n * accidents.\n */\nexport function getRegisteredControllers(): readonly unknown[] {\n return registry().slice();\n}\n\n/** Empty the registry. For tests, which load controllers repeatedly. */\nexport function __resetRegisteredControllers(): void {\n registry().length = 0;\n}\n\n/**\n * The APPLICATION-level default auth.\n *\n * Held on globalThis under a well-known Symbol for exactly the reason\n * {@link REGISTRY} is: a deployed bundle inlines its own copy of this package,\n * and two copies keeping two defaults is how a security setting silently\n * becomes two different settings.\n */\nconst APP_DEFAULT_AUTH: unique symbol = Symbol.for(\"palbase.backend.appDefaultAuth\") as never;\n\nfunction appAuthSlot(): Record<symbol, AuthSpec | undefined> {\n return globalThis as unknown as Record<symbol, AuthSpec | undefined>;\n}\n\n/**\n * Declare the default auth for EVERY route in the application — the ring the\n * cascade consults when neither the route nor its controller says anything.\n *\n * The measured problem it removes: `auth: { verifiedEmail: true }` repeated by\n * hand on ten `@Controller`s. A security setting that must be repeated is a\n * security setting that will be forgotten — the eleventh controller opens the\n * door and nothing says so.\n *\n * Call it at MODULE SCOPE in a file the application imports (the controllers'\n * own barrel, or a module a controller imports). The cascade reads this slot\n * when the route table is built and when the spec is emitted — both of which\n * run after module loading — so declaration order does not matter, but being\n * imported at all does.\n *\n * @example\n * defineDefaultAuth({ verifiedEmail: true }); // every route, unless it says otherwise\n */\nexport function defineDefaultAuth(auth: AuthSpec): void {\n appAuthSlot()[APP_DEFAULT_AUTH] = auth;\n}\n\n/** The declared application default, or `undefined` when none was declared. */\nexport function getDefaultAuth(): AuthSpec | undefined {\n return appAuthSlot()[APP_DEFAULT_AUTH];\n}\n\n/** Clear the application default. For tests, which declare it repeatedly. */\nexport function __resetDefaultAuth(): void {\n delete appAuthSlot()[APP_DEFAULT_AUTH];\n}\n\n/**\n * THE auth cascade: route → controller → application → `true`.\n *\n * One function, every caller — the route table (`engine/router.ts`) and the\n * spec emitter (`openapi/controllers.ts`) ASK for the answer instead of\n * spelling the chain themselves. Two hand-written copies of a cascade is how\n * the build-time answer and the runtime answer come to disagree about who may\n * call an endpoint, and the disagreement shows up as an open door.\n *\n * The terminal `true` is secure-by-default and is load-bearing: a route that\n * declared nothing, under a controller that declared nothing, in an\n * application that declared nothing, is CLOSED.\n */\nexport function resolveEffectiveAuth(\n routeAuth: AuthSpec | undefined,\n controllerAuth: AuthSpec | undefined,\n): AuthSpec {\n return routeAuth ?? controllerAuth ?? getDefaultAuth() ?? true;\n}\n\n/** A class carrying the stamped controller metadata + discriminant. */\ninterface ControllerCarrier {\n __palbase?: \"controller\";\n [CONTROLLER_META]?: ControllerMeta;\n}\n\n/** The one path segment the platform owns. The isolate matches\n * `^/webhooks/([^/]+)$` on the raw request path BEFORE controller dispatch, so\n * anything a controller resolves to under it answers `404 webhook_not_found`\n * and never runs. */\nconst RESERVED_FIRST_SEGMENT = \"webhooks\";\n\n/**\n * Throw if `path` resolves under the reserved segment. Segments are compared the\n * way the isolate compares them — `split(\"/\").filter(Boolean)` — NOT by string\n * prefix, because empty segments collapse there: `@Controller(\"/\")` +\n * `@Post(\"/webhooks/x\")` composes to `//webhooks/x`, which the isolate serves as\n * `/webhooks/x`. A prefix check reads that as safe; the segment check does not.\n * `/webhooksy` stays allowed for the same reason — it is a different segment.\n *\n * Every verb is refused, not just the POST the isolate currently intercepts: the\n * reservation is of the URL namespace, so a `@Get(\"/webhooks/x\")` that happens\n * to work today would be silently shadowed the moment the isolate's method gate\n * widens. Refusing at build is recoverable; discovering it as a 404 is not.\n */\nfunction assertNotReserved(path: string, subject: string): void {\n const [first] = path.split(\"/\").filter(Boolean);\n if (first === RESERVED_FIRST_SEGMENT) {\n throw new Error(\n `${subject} resolves under the reserved /${RESERVED_FIRST_SEGMENT} path — ` +\n \"inbound webhooks are served there and would shadow this route\",\n );\n }\n}\n\n/**\n * Mark a class as a Palbase backend controller. `basePath` is the mount path\n * for every route the class declares; `options.auth` sets the controller-level\n * default auth (a route's own `auth` overrides it; absent ⇒ secure-by-default).\n *\n * @example\n * \\@Controller(\"/todos\", { auth: false })\n * export class TodosController {\n * \\@Get(\"\") list(\\@QueryParams(ListTodosQuery) q: ListTodosQuery): TodoSchema[] { … }\n * }\n */\nexport function Controller(basePath: string, options: ControllerOptions = {}) {\n return function <T extends abstract new (...args: never[]) => object>(ctor: T): T {\n // /webhooks/* belongs to the platform: the isolate matches the inbound\n // webhook route before controller dispatch, so a controller mounted here\n // would never receive a request. Silent shadowing is the failure mode this\n // whole change exists to remove, so refuse it at build.\n //\n // The COMPOSED path is what gets shadowed, not the base path. `@Controller(\"\")`\n // and `@Controller(\"/\")` both pass a base-path-only check while a\n // `@Post(\"/webhooks/stripe\")` inside them resolves to exactly the path the\n // isolate intercepts. Method decorators run BEFORE the class decorator (TS\n // evaluates members first), so every route this class declares is already in\n // the registry here — which is why the composed check can live at this one\n // seam instead of on the dispatch read path. The `@Controller(\"\") +\n // @Post(\"/webhooks/stripe\")` test is the lock on that ordering: if it ever\n // stopped holding, that test goes red.\n assertNotReserved(basePath, `@Controller(\"${basePath}\")`);\n for (const route of getRoutes(ctor)) {\n assertNotReserved(\n `${basePath}${route.subpath}`,\n `@${route.method}(\"${route.subpath}\") in @Controller(\"${basePath}\")`,\n );\n }\n\n const carrier = ctor as unknown as ControllerCarrier;\n const meta: ControllerMeta = {\n __palbase: \"controller\",\n basePath,\n ...(options.auth !== undefined ? { defaultAuth: options.auth } : {}),\n };\n // Non-enumerable so it doesn't leak onto instances / structural checks.\n Object.defineProperty(carrier, CONTROLLER_META, {\n value: meta,\n enumerable: false,\n configurable: true,\n writable: false,\n });\n // The bare `__palbase` discriminant is the cheap detection marker the\n // runtime/extractor checks; keep it readable but non-enumerable.\n Object.defineProperty(carrier, \"__palbase\", {\n value: \"controller\",\n enumerable: false,\n configurable: true,\n writable: false,\n });\n // Record it, so importing the file is enough and exporting is optional.\n // Guarded against a double-decoration re-entering the same class twice.\n const all = registry();\n if (!all.includes(ctor)) all.push(ctor);\n return ctor;\n };\n}\n\n/** True when `value` is a `@Controller`-decorated class (cheap discriminant\n * check). Accepts the class constructor (the default export of a controller\n * file). */\nexport function isController(value: unknown): boolean {\n if (typeof value !== \"function\" && (typeof value !== \"object\" || value === null)) {\n return false;\n }\n const carrier = value as ControllerCarrier;\n return carrier.__palbase === \"controller\" && carrier[CONTROLLER_META] !== undefined;\n}\n\n/** Read the resolved controller metadata off a `@Controller`-decorated class.\n * Throws if the class was not decorated — callers should gate with\n * {@link isController} first (the loader does). */\nexport function resolveController(ctor: unknown): ControllerMeta {\n if (typeof ctor !== \"function\" && (typeof ctor !== \"object\" || ctor === null)) {\n throw new TypeError(\"resolveController: value is not a class\");\n }\n const meta = (ctor as ControllerCarrier)[CONTROLLER_META];\n if (!meta) {\n throw new TypeError(\n \"resolveController: class is not a @Controller — decorate it with `@Controller(path)` and list it in a module's `controllers`\",\n );\n }\n return meta;\n}\n\n/**\n * A class the runtime constructs takes NO constructor parameters.\n *\n * ONE writer, four callers (controller, hook, job, webhook) and the build's own\n * check. Four hand-written copies of this message is how the four come to\n * disagree about what is refused — and the disagreement is silent, because a\n * class that slips past one of them still ends up with `undefined` fields.\n *\n * Why it is refused rather than injected: there is no container. The parameter\n * would arrive `undefined`, the code would compile, deploy, and fail at the\n * first request that touches the field — the most expensive place to learn it.\n */\nexport function assertZeroArgConstructor(Ctrl: unknown, kind: string): void {\n const arity = (Ctrl as { length?: number }).length ?? 0;\n if (arity === 0) return;\n\n // This function's NAME is a promise: whatever reaches it will be constructed\n // with a zero-argument constructor. Letting a class with parameters through\n // would make the name a lie — worse than the rename FR-029 guards against.\n //\n // An earlier design made it \"declaration-aware\": pass when metadata matches\n // arity. Measured, that re-opens the exact silence this exists to close.\n // ANY decorator triggers metadata emission, not just `@Injectable`:\n //\n // @Job(...) class J { constructor(repo: unknown) {} }\n // → design:paramtypes = [Object] ← matches arity\n //\n // so J would pass, then be built with `new J()`, and `repo` would be\n // `undefined` at the first scheduled run. Four tests in this repo asserted\n // that refusal and all four went red; the tests were right.\n //\n // What changed instead is the MESSAGE, and who calls this. Callers holding a\n // container resolve from it and never come here (router.ts, job/hook/webhook);\n // this stays the guard for the container-less path, and keeps its promise.\n const name = (Ctrl as { name?: string }).name ?? \"<anonymous>\";\n throw new Error(\n `${kind} ${name} declares a constructor with ${arity} parameter(s), and this path ` +\n `builds it with a zero-argument constructor — every parameter would arrive as ` +\n `undefined. If you meant to inject them, add @Injectable() to ${name} and list it ` +\n `in a module's providers, so the container builds it instead.`,\n );\n}\n","// Derive controller route metadata (dotted-operationId namespace +\n// flat-fallback operationId + full path) for the OpenAPI generator. Mirrors\n// the Go runtime (extract_meta.js + generator.go) byte-for-byte so the\n// codegen gate holds. Controller-file DISCOVERY (the fast-glob walk + import)\n// lives in controllers.ts; this module is pure derivation helpers.\n\n/** Capitalize the first character (ASCII), leaving the rest untouched. Mirrors\n * the Go runtime's `capitalize` in generator.go EXACTLY. */\nfunction capitalizeSegment(s: string): string {\n if (s.length === 0) return s;\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n/**\n * Derive the dotted-operationId NAMESPACE from a controller CLASS name: strip\n * ONE trailing \"Controller\" suffix (case-sensitive), then lower-case the first\n * letter. MembersController → \"members\", UserProfileController →\n * \"userProfile\", Members → \"members\". Returns \"\" when the derivation is empty\n * (a class named exactly \"Controller\", or an anonymous class) — callers then\n * fall back to the flat verb-prefixed id. Byte-for-byte identical to\n * `deriveControllerName` in the Go runtime's extract_meta.js.\n */\nexport function deriveControllerName(className: string): string {\n let name = className;\n if (name.endsWith(\"Controller\")) name = name.slice(0, -\"Controller\".length);\n if (name === \"\") return \"\";\n return name.charAt(0).toLowerCase() + name.slice(1);\n}\n\n/**\n * Derive the FLAT, verb-prefixed FALLBACK operationId for a route from its\n * HTTP method + FULL path — used only when the dotted\n * `<controllerName>.<fnName>` id cannot be derived (empty controllerName).\n * Byte-for-byte identical to the Go runtime's `flatOperationID(method, path)`\n * in `internal/openapi/generator.go`:\n *\n * lower(method) + Capitalize(seg) for each path segment,\n * with `{param}` → `ByParam`.\n *\n * Examples: (POST, /places/import) → \"postPlacesImport\";\n * (GET, /todos/{id}) → \"getTodosById\".\n */\nexport function deriveControllerOperationId(method: string, fullPath: string): string {\n const trimmed = fullPath.replace(/^\\//, \"\");\n const parts = trimmed.split(\"/\");\n let result = method.toLowerCase();\n for (const part of parts) {\n if (part === \"\") continue;\n const paramMatch = /^\\{(.+)\\}$/.exec(part);\n if (paramMatch) {\n result += \"By\" + capitalizeSegment(paramMatch[1]!);\n } else {\n result += capitalizeSegment(part);\n }\n }\n return result;\n}\n\n/**\n * Join a controller `basePath` with a route `subpath` into the full route path.\n * Collapses duplicate slashes and a trailing `/` so `(\"/places\", \"/\")` →\n * `/places` and `(\"/\", \"/\")` → `/`.\n */\nexport function joinControllerPath(basePath: string, subpath: string): string {\n const combined = `${basePath}/${subpath}`.replace(/\\/{2,}/g, \"/\");\n if (combined.length > 1 && combined.endsWith(\"/\")) {\n return combined.slice(0, -1);\n }\n return combined;\n}\n"],"mappings":"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","names":["exports","Object","defineProperty","value","splitWhen","flatten","items","reduce","collection","item","concat","predicate","result","groupIndex","push","exports","Object","defineProperty","value","isEnoentCodeError","error","code","exports","Object","defineProperty","value","createDirentFromStats","DirentFromStats","name","stats","isBlockDevice","bind","isCharacterDevice","isDirectory","isFIFO","isFile","isSocket","isSymbolicLink","exports","Object","defineProperty","value","convertPosixPathToPattern","convertWindowsPathToPattern","convertPathToPattern","escapePosixPath","escapeWindowsPath","escape","removeLeadingDotSegment","makeAbsolute","unixify","os","require","path","IS_WINDOWS_PLATFORM","platform","LEADING_DOT_SEGMENT_CHARACTERS_COUNT","POSIX_UNESCAPED_GLOB_SYMBOLS_RE","WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE","DOS_DEVICE_PATH_RE","WINDOWS_BACKSLASHES_RE","filepath","replace","cwd","resolve","entry","charAt","secondCharactery","slice","pattern","exports","module","isExtglob","str","match","exec","slice","index","length","exports","module","isExtglob","require","chars","strictCheck","str","index","pipeIndex","closeSquareIndex","closeCurlyIndex","closeParenIndex","backSlashIndex","length","test","indexOf","open","close","n","relaxedCheck","isGlob","options","check","strict","exports","module","isGlob","require","pathPosixDirname","posix","dirname","isWin32","platform","slash","backslash","enclosure","globby","escaped","globParent","str","opts","options","Object","assign","flipBackslashes","indexOf","replace","test","exports","isInteger","num","Number","trim","find","node","type","nodes","exceedsLimit","min","max","step","limit","escapeNode","block","n","escaped","value","encloseBrace","commas","ranges","invalid","isInvalidBrace","dollar","open","close","isOpenOrClose","reduce","acc","push","flatten","args","result","flat","arr","i","length","ele","Array","isArray","undefined","exports","module","utils","require","ast","options","stringify","node","parent","invalidBlock","escapeInvalid","isInvalidBrace","invalidNode","invalid","output","value","isOpenOrClose","nodes","child","exports","module","num","trim","Number","isFinite","exports","module","isNumber","require","toRegexRange","min","max","options","TypeError","String","opts","relaxZeros","strictZeros","relax","shorthand","capture","wrap","cacheKey","cache","hasOwnProperty","result","a","Math","b","abs","isPadded","hasPadding","state","positives","negatives","maxLen","length","newMin","splitToPatterns","collatePatterns","neg","pos","onlyNegative","filterPatterns","onlyPositive","intersected","subpatterns","concat","join","splitToRanges","nines","zeros","stop","countNines","stops","Set","add","countZeros","sort","compare","rangeToPattern","start","pattern","count","digits","zipped","zip","i","startDigit","stopDigit","toCharacterClass","tok","ranges","tokens","prev","obj","pop","push","string","toQuantifier","padZeros","arr","comparison","prefix","intersection","ele","contains","key","val","some","len","Number","slice","repeat","integer","pow","str","test","value","diff","clearCache","exports","module","util","require","toRegexRange","isObject","val","Array","isArray","transform","toNumber","value","Number","String","isValidValue","isNumber","num","isInteger","zeros","input","index","slice","stringify","start","end","options","pad","maxLength","dash","padStart","toMaxLen","negative","length","toSequence","parts","maxLen","negatives","sort","a","b","positives","prefix","capture","result","map","v","join","wrap","toRange","isNumbers","fromCharCode","stop","toRegex","rangeError","args","RangeError","inspect","invalidRange","strictRanges","invalidStep","step","TypeError","fillNumbers","descending","startString","endString","stepString","Math","max","abs","padded","format","push","range","fillLetters","charCodeAt","min","fill","opts","exports","module","fill","require","utils","compile","ast","options","walk","node","parent","invalidBlock","isInvalidBrace","invalidNode","invalid","escapeInvalid","prefix","output","isOpen","value","isClose","console","log","type","prev","nodes","ranges","args","reduce","range","wrap","toRegex","strictZeros","length","child","exports","module","fill","require","stringify","utils","append","queue","stash","enclose","result","concat","length","flatten","map","ele","item","Array","isArray","value","push","expand","ast","options","rangeLimit","undefined","walk","node","parent","p","q","type","invalid","dollar","pop","nodes","ranges","args","reduce","exceedsLimit","step","RangeError","range","encloseBrace","block","i","child","exports","module","MAX_LENGTH","CHAR_0","CHAR_9","CHAR_UPPERCASE_A","CHAR_LOWERCASE_A","CHAR_UPPERCASE_Z","CHAR_LOWERCASE_Z","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_ASTERISK","CHAR_AMPERSAND","CHAR_AT","CHAR_BACKSLASH","CHAR_BACKTICK","CHAR_CARRIAGE_RETURN","CHAR_CIRCUMFLEX_ACCENT","CHAR_COLON","CHAR_COMMA","CHAR_DOLLAR","CHAR_DOT","CHAR_DOUBLE_QUOTE","CHAR_EQUAL","CHAR_EXCLAMATION_MARK","CHAR_FORM_FEED","CHAR_FORWARD_SLASH","CHAR_HASH","CHAR_HYPHEN_MINUS","CHAR_LEFT_ANGLE_BRACKET","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_LINE_FEED","CHAR_NO_BREAK_SPACE","CHAR_PERCENT","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_ANGLE_BRACKET","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_SQUARE_BRACKET","CHAR_SEMICOLON","CHAR_SINGLE_QUOTE","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_VERTICAL_LINE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","exports","module","stringify","require","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","TypeError","opts","max","maxLength","Math","min","length","SyntaxError","ast","type","nodes","stack","block","prev","brackets","index","depth","value","advance","push","node","parent","keepEscaping","next","pop","open","keepQuotes","dollar","slice","brace","close","commas","ranges","shift","siblings","range","invalid","args","before","forEach","isOpen","isClose","indexOf","splice","exports","module","stringify","require","compile","expand","parse","braces","input","options","output","Array","isArray","pattern","result","create","push","concat","nodupes","Set","noempty","filter","Boolean","length","require_constants","exports","module","path","require","WIN_SLASH","WIN_NO_SLASH","DEFAULT_MAX_EXTGLOB_RECURSION","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","__proto__","alnum","alpha","ascii","blank","cntrl","digit","graph","lower","print","punct","space","upper","word","xdigit","MAX_LENGTH","REGEX_BACKSLASH","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REGEX_SPECIAL_CHARS_GLOBAL","REGEX_REMOVE_BACKSLASH","REPLACEMENTS","CHAR_0","CHAR_9","CHAR_UPPERCASE_A","CHAR_LOWERCASE_A","CHAR_UPPERCASE_Z","CHAR_LOWERCASE_Z","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_ASTERISK","CHAR_AMPERSAND","CHAR_AT","CHAR_BACKWARD_SLASH","CHAR_CARRIAGE_RETURN","CHAR_CIRCUMFLEX_ACCENT","CHAR_COLON","CHAR_COMMA","CHAR_DOT","CHAR_DOUBLE_QUOTE","CHAR_EQUAL","CHAR_EXCLAMATION_MARK","CHAR_FORM_FEED","CHAR_FORWARD_SLASH","CHAR_GRAVE_ACCENT","CHAR_HASH","CHAR_HYPHEN_MINUS","CHAR_LEFT_ANGLE_BRACKET","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_LINE_FEED","CHAR_NO_BREAK_SPACE","CHAR_PERCENT","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_ANGLE_BRACKET","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_SQUARE_BRACKET","CHAR_SEMICOLON","CHAR_SINGLE_QUOTE","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_VERTICAL_LINE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","SEP","sep","extglobChars","chars","type","open","close","globChars","win32","require_utils","exports","path","require","win32","process","platform","REGEX_BACKSLASH","REGEX_REMOVE_BACKSLASH","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_GLOBAL","isObject","val","Array","isArray","hasRegexChars","str","test","isRegexChar","length","escapeRegex","replace","toPosixSlashes","removeBackslashes","match","supportsLookbehinds","segs","version","slice","split","map","Number","isWindows","options","windows","sep","escapeLast","input","char","lastIdx","idx","lastIndexOf","removePrefix","state","output","startsWith","prefix","wrapOutput","prepend","contains","append","negated","exports","module","utils","require","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","isPrefix","isGlobstar","Infinity","scan","input","options","opts","length","scanToEnd","parts","slashes","tokens","str","index","start","lastIndex","isBrace","isBracket","isGlob","isExtglob","braceEscaped","backslashes","negated","negatedExtglob","finished","braces","prev","value","eos","peek","charCodeAt","advance","next","push","noext","isExtglobChar","nonegate","noparen","base","prefix","glob","slice","unescape","removeBackslashes","state","maxDepth","prevIndex","idx","n","i","require_parse","exports","module","constants","require","utils","MAX_LENGTH","POSIX_REGEX_SOURCE","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REPLACEMENTS","expandRange","args","options","sort","value","join","RegExp","ex","map","v","escapeRegex","syntaxError","type","char","splitTopLevel","input","parts","bracket","paren","quote","escaped","ch","push","isPlainBranch","branch","test","normalizeSimpleBranch","trim","changed","slice","replace","hasRepeatedCharPrefixOverlap","branches","values","filter","Boolean","i","length","j","a","b","repeat","startsWith","parseRepeatedExtglob","pattern","requireEnd","body","end","getStarExtglobSequenceOutput","index","chars","match","source","repeatedExtglobRecursion","depth","analyzeRepeatedExtglob","maxExtglobRecursion","risky","max","DEFAULT_MAX_EXTGLOB_RECURSION","some","safeOutput","parse","TypeError","opts","maxLength","Math","min","len","SyntaxError","bos","output","prepend","tokens","capture","win32","isWindows","PLATFORM_CHARS","globChars","EXTGLOB_CHARS","extglobChars","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","dot","nodot","qmarkNoDot","star","bash","noext","noextglob","state","start","consumed","prefix","backtrack","negated","brackets","braces","parens","quotes","removePrefix","extglobs","stack","prev","eos","peek","n","advance","remaining","consume","num","append","token","negate","count","increment","decrement","pop","tok","isBrace","isExtglob","extglob","inner","extglobOpen","conditions","startIndex","tokensIndex","open","extglobClose","literal","analysis","undefined","suffix","close","rest","extglobStar","includes","expression","fastpaths","negatedExtglob","backslashes","m","esc","first","unescape","contains","wrapOutput","next","exec","slashes","posix","idx","lastIndexOf","pre","indexOf","keepQuotes","strictBrackets","nobracket","prevValue","literalBrackets","hasRegexChars","nobrace","outputIndex","brace","dots","arr","range","unshift","comma","out","toks","t","isGroup","supportsLookbehinds","Error","nonegate","regex","noglobstar","prior","before","isStart","afterStar","after","strictSlashes","escapeLast","NO_DOTS","slashDot","create","str","exports","module","path","require","scan","parse","utils","constants","isObject","val","Array","isArray","picomatch","glob","options","returnState","fns","map","input","arrayMatcher","str","isMatch","state","isState","tokens","TypeError","opts","posix","isWindows","regex","compileRe","makeRe","isIgnored","ignore","ignoreOpts","onMatch","onResult","matcher","returnObject","match","output","test","result","onIgnore","format","toPosixSlashes","capture","matchBase","basename","exec","Boolean","RegExp","patterns","pattern","p","fastpaths","returnOutput","prepend","contains","append","source","negated","toRegex","parsed","flags","nocase","err","debug","require_picomatch","exports","module","require","exports","module","util","require","braces","picomatch","utils","isEmptyString","v","hasBraces","index","indexOf","micromatch","list","patterns","options","concat","omit","Set","keep","items","negatives","onResult","state","add","output","i","length","isMatch","String","negated","negatedExtglob","item","matched","match","delete","result","matches","filter","has","failglob","Error","join","nonull","nullglob","unescape","map","p","replace","matcher","pattern","str","any","not","push","contains","TypeError","inspect","Array","isArray","some","includes","startsWith","slice","matchKeys","obj","isObject","keys","Object","res","key","every","all","capture","glob","input","posix","isWindows","regex","makeRe","exec","toPosixSlashes","args","scan","parse","nobrace","braceExpand","expand","exports","Object","defineProperty","value","isAbsolute","partitionAbsoluteAndRelative","removeDuplicateSlashes","matchAny","convertPatternsToRe","makeRe","getPatternParts","expandBraceExpansion","expandPatternsWithBraceExpansion","isAffectDepthOfReadingPattern","endsWithSlashGlobStar","hasGlobStar","getBaseDirectory","isPatternRelatedToParentDirectory","getPatternsOutsideCurrentDirectory","getPatternsInsideCurrentDirectory","getPositivePatterns","getNegativePatterns","isPositivePattern","isNegativePattern","convertToNegativePattern","convertToPositivePattern","isDynamicPattern","isStaticPattern","path","require","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","pattern","options","caseSensitiveMatch","includes","test","extglob","braceExpansion","hasBraceExpansion","openingBraceIndex","indexOf","closingBraceIndex","braceContent","slice","startsWith","patterns","filter","flipBackslashes","endsWith","basename","reduce","collection","concat","braces","expand","nodupes","keepEscaping","sort","a","b","length","parts","scan","assign","unshift","map","entry","patternsRe","some","patternRe","replace","absolute","relative","push","exports","module","Stream","require","PassThrough","slice","Array","prototype","merge2","streamsQueue","args","call","arguments","merging","options","length","isArray","pipe","pop","doEnd","end","doPipeError","pipeError","objectMode","highWaterMark","mergedStream","addStream","i","len","push","pauseStreams","mergeStream","streams","shift","process","nextTick","endStream","pipesCount","next","stream","onend","removeListener","onerror","err","emit","_readableState","endEmitted","on","resume","setMaxListeners","add","apply","pause","Error","exports","Object","defineProperty","value","merge","merge2","require","streams","mergedStream","forEach","stream","once","error","emit","propagateCloseEventToSources","exports","Object","defineProperty","value","isEmpty","isString","input","require_utils","exports","Object","defineProperty","value","string","stream","pattern","path","fs","errno","array","require","exports","Object","defineProperty","value","convertPatternGroupToTask","convertPatternGroupsToTasks","groupPatternsByBaseDirectory","getNegativePatternsAsPositive","getPositivePatterns","convertPatternsToTasks","generate","utils","require","input","settings","patterns","processPatterns","ignore","positivePatterns","negativePatterns","staticPatterns","filter","pattern","isStaticPattern","dynamicPatterns","isDynamicPattern","staticTasks","dynamicTasks","concat","braceExpansion","expandPatternsWithBraceExpansion","baseNameMatch","map","includes","removeDuplicateSlashes","positive","negative","dynamic","tasks","patternsOutsideCurrentDirectory","getPatternsOutsideCurrentDirectory","patternsInsideCurrentDirectory","getPatternsInsideCurrentDirectory","outsideCurrentDirectoryGroup","insideCurrentDirectoryGroup","push","getNegativePatterns","convertToPositivePattern","group","reduce","collection","base","getBaseDirectory","keys","convertToNegativePattern","exports","Object","defineProperty","value","read","path","settings","callback","fs","lstat","lstatError","callFailureCallback","isSymbolicLink","followSymbolicLink","callSuccessCallback","stat","statError","throwErrorOnBrokenSymbolicLink","markSymbolicLink","error","result","exports","Object","defineProperty","value","read","path","settings","lstat","fs","lstatSync","isSymbolicLink","followSymbolicLink","stat","statSync","markSymbolicLink","error","throwErrorOnBrokenSymbolicLink","require_fs","exports","Object","defineProperty","value","createFileSystemAdapter","FILE_SYSTEM_ADAPTER","fs","require","lstat","stat","lstatSync","statSync","fsMethods","undefined","assign","exports","Object","defineProperty","value","fs","require","Settings","_options","followSymbolicLink","_getValue","createFileSystemAdapter","markSymbolicLink","throwErrorOnBrokenSymbolicLink","option","default","exports","Object","defineProperty","value","statSync","stat","Settings","async","require","sync","settings_1","default","path","optionsOrSettingsOrCallback","callback","read","getSettings","optionsOrSettings","settings","settingsOrOptions","exports","module","promise","queueMicrotask","bind","window","global","cb","Promise","resolve","then","catch","err","setTimeout","exports","module","runParallel","queueMicrotask","require","tasks","cb","results","pending","keys","isSync","Array","isArray","length","Object","done","err","end","each","i","result","forEach","key","task","require_constants","exports","Object","defineProperty","value","IS_SUPPORT_READDIR_WITH_FILE_TYPES","NODE_PROCESS_VERSION_PARTS","process","versions","node","split","undefined","Error","MAJOR_VERSION","Number","parseInt","MINOR_VERSION","SUPPORTED_MAJOR_VERSION","SUPPORTED_MINOR_VERSION","IS_MATCHED_BY_MAJOR","IS_MATCHED_BY_MAJOR_AND_MINOR","require_fs","exports","Object","defineProperty","value","createDirentFromStats","DirentFromStats","name","stats","isBlockDevice","bind","isCharacterDevice","isDirectory","isFIFO","isFile","isSocket","isSymbolicLink","require_utils","exports","Object","defineProperty","value","fs","require","exports","Object","defineProperty","value","joinPathSegments","a","b","separator","endsWith","require_async","exports","Object","defineProperty","value","readdir","readdirWithFileTypes","read","fsStat","require","rpl","constants_1","utils","common","directory","settings","callback","stats","IS_SUPPORT_READDIR_WITH_FILE_TYPES","fs","withFileTypes","readdirError","dirents","callFailureCallback","entries","map","dirent","name","path","joinPathSegments","pathSegmentSeparator","followSymbolicLinks","callSuccessCallback","tasks","entry","makeRplTaskEntry","rplError","rplEntries","done","isSymbolicLink","stat","statError","throwErrorOnBrokenSymbolicLink","createDirentFromStats","names","fsStatSettings","error","result","require_sync","exports","Object","defineProperty","value","readdir","readdirWithFileTypes","read","fsStat","require","constants_1","utils","common","directory","settings","stats","IS_SUPPORT_READDIR_WITH_FILE_TYPES","dirents","fs","readdirSync","withFileTypes","map","dirent","entry","name","path","joinPathSegments","pathSegmentSeparator","isSymbolicLink","followSymbolicLinks","statSync","createDirentFromStats","error","throwErrorOnBrokenSymbolicLink","names","entryPath","fsStatSettings","require_fs","exports","Object","defineProperty","value","createFileSystemAdapter","FILE_SYSTEM_ADAPTER","fs","require","lstat","stat","lstatSync","statSync","readdir","readdirSync","fsMethods","undefined","assign","require_settings","exports","Object","defineProperty","value","path","require","fsStat","fs","Settings","_options","followSymbolicLinks","_getValue","createFileSystemAdapter","pathSegmentSeparator","sep","stats","throwErrorOnBrokenSymbolicLink","fsStatSettings","followSymbolicLink","option","default","require_out","exports","Object","defineProperty","value","Settings","scandirSync","scandir","async","require","sync","settings_1","default","path","optionsOrSettingsOrCallback","callback","read","getSettings","optionsOrSettings","settings","settingsOrOptions","exports","module","reusify","Constructor","head","tail","get","current","next","release","obj","exports","module","reusify","require","fastqueue","context","worker","_concurrency","Error","cache","Task","queueHead","queueTail","_running","errorHandler","self","push","drain","noop","saturated","pause","paused","concurrency","value","release","running","resume","idle","length","getQueue","unshift","empty","kill","killAndDrain","error","abort","current","counter","next","tasks","done","get","callback","call","worked","holder","val","handler","err","result","queueAsPromised","asyncWrapper","arg","cb","then","res","queue","pushCb","unshiftCb","drained","p","Promise","resolve","reject","catch","process","nextTick","previousDrain","promise","require_common","exports","Object","defineProperty","value","joinPathSegments","replacePathSegmentSeparator","isAppliedFilter","isFatalError","settings","error","errorFilter","filter","filepath","separator","split","join","a","b","endsWith","exports","Object","defineProperty","value","common","require","Reader","_root","_settings","replacePathSegmentSeparator","pathSegmentSeparator","default","require_async","exports","Object","defineProperty","value","events_1","require","fsScandir","fastq","common","reader_1","AsyncReader","default","_root","_settings","_scandir","scandir","_emitter","EventEmitter","_queue","_worker","bind","concurrency","_isFatalError","_isDestroyed","drain","emit","read","setImmediate","_pushToQueue","basePath","isDestroyed","destroy","Error","killAndDrain","onEntry","callback","on","onError","once","onEnd","directory","base","queueItem","push","error","_handleError","item","done","fsScandirSettings","entries","undefined","entry","_handleEntry","isFatalError","fullpath","path","joinPathSegments","name","pathSegmentSeparator","isAppliedFilter","entryFilter","_emitEntry","dirent","isDirectory","deepFilter","require_async","exports","Object","defineProperty","value","async_1","require","AsyncProvider","_root","_settings","_reader","default","_storage","read","callback","onError","error","callFailureCallback","onEntry","entry","push","onEnd","callSuccessCallback","entries","require_stream","exports","Object","defineProperty","value","stream_1","require","async_1","StreamProvider","_root","_settings","_reader","default","_stream","Readable","objectMode","read","destroy","isDestroyed","onError","error","emit","onEntry","entry","push","onEnd","require_sync","exports","Object","defineProperty","value","fsScandir","require","common","reader_1","SyncReader","default","arguments","_scandir","scandirSync","_storage","_queue","Set","read","_pushToQueue","_root","_settings","basePath","_handleQueue","directory","base","add","item","values","_handleDirectory","entries","fsScandirSettings","entry","_handleEntry","error","_handleError","isFatalError","fullpath","path","undefined","joinPathSegments","name","pathSegmentSeparator","isAppliedFilter","entryFilter","_pushToStorage","dirent","isDirectory","deepFilter","push","require_sync","exports","Object","defineProperty","value","sync_1","require","SyncProvider","_root","_settings","_reader","default","read","require_settings","exports","Object","defineProperty","value","path","require","fsScandir","Settings","_options","basePath","_getValue","undefined","concurrency","Number","POSITIVE_INFINITY","deepFilter","entryFilter","errorFilter","pathSegmentSeparator","sep","fsScandirSettings","followSymbolicLinks","fs","stats","throwErrorOnBrokenSymbolicLink","option","default","require_out","exports","Object","defineProperty","value","Settings","walkStream","walkSync","walk","async_1","require","stream_1","sync_1","settings_1","default","directory","optionsOrSettingsOrCallback","callback","getSettings","read","optionsOrSettings","settings","provider","settingsOrOptions","require_reader","exports","Object","defineProperty","value","path","require","fsStat","utils","Reader","_settings","_fsStatSettings","Settings","followSymbolicLink","followSymbolicLinks","fs","throwErrorOnBrokenSymbolicLink","_getFullEntryPath","filepath","resolve","cwd","_makeEntry","stats","pattern","entry","name","dirent","createDirentFromStats","_isFatalError","error","errno","isEnoentCodeError","suppressErrors","default","require_stream","exports","Object","defineProperty","value","stream_1","require","fsStat","fsWalk","reader_1","ReaderStream","default","arguments","_walkStream","walkStream","_stat","stat","dynamic","root","options","static","patterns","filepaths","map","_getFullEntryPath","stream","PassThrough","objectMode","_write","index","_enc","done","_getEntry","then","entry","entryFilter","push","length","end","catch","i","write","filepath","pattern","_getStat","stats","_makeEntry","error","errorFilter","Promise","resolve","reject","_fsStatSettings","require_async","exports","Object","defineProperty","value","fsWalk","require","reader_1","stream_1","ReaderAsync","default","arguments","_walkAsync","walk","_readerStream","_settings","dynamic","root","options","Promise","resolve","reject","error","entries","static","patterns","stream","once","on","entry","push","exports","Object","defineProperty","value","utils","require","Matcher","_patterns","_settings","_micromatchOptions","_storage","_fillStorage","pattern","segments","_getPatternSegments","sections","_splitSegmentsIntoSections","push","complete","length","parts","getPatternParts","map","part","dynamic","isDynamicPattern","patternRe","makeRe","array","splitWhen","segment","hasGlobStar","default","exports","Object","defineProperty","value","matcher_1","require","PartialMatcher","default","match","filepath","parts","split","levels","length","patterns","_storage","filter","info","complete","segments","pattern","section","sections","every","part","index","segment","dynamic","patternRe","test","exports","Object","defineProperty","value","utils","require","partial_1","DeepFilter","_settings","_micromatchOptions","getFilter","basePath","positive","negative","matcher","_getMatcher","negativeRe","_getNegativePatternsRe","entry","_filter","patterns","default","affectDepthOfReadingPatterns","filter","pattern","isAffectDepthOfReadingPattern","convertPatternsToRe","_isSkippedByDeep","path","_isSkippedSymbolicLink","filepath","removeLeadingDotSegment","_isSkippedByPositivePatterns","_isSkippedByNegativePatterns","entryPath","deep","Infinity","_getEntryLevel","entryPathDepth","split","length","basePathDepth","followSymbolicLinks","dirent","isSymbolicLink","baseNameMatch","match","patternsRe","matchAny","exports","Object","defineProperty","value","utils","require","EntryFilter","_settings","_micromatchOptions","index","Map","getFilter","positive","negative","absoluteNegative","relativeNegative","pattern","partitionAbsoluteAndRelative","patterns","all","convertPatternsToRe","absolute","assign","dot","relative","entry","_filter","filepath","path","removeLeadingDotSegment","unique","_isDuplicateEntry","_onlyFileFilter","_onlyDirectoryFilter","isMatched","_isMatchToPatternsSet","dirent","isDirectory","_createIndexRecord","has","set","undefined","onlyFiles","isFile","onlyDirectories","_isMatchToPatterns","isMatchedByRelativeNegative","isMatchedByAbsoluteNegative","_isMatchToAbsoluteNegative","patternsRe","length","fullpath","makeAbsolute","cwd","matchAny","default","exports","Object","defineProperty","value","utils","require","ErrorFilter","_settings","getFilter","error","_isNonFatalError","errno","isEnoentCodeError","suppressErrors","default","require_entry","exports","Object","defineProperty","value","utils","require","EntryTransformer","_settings","getTransformer","entry","_transform","filepath","path","absolute","makeAbsolute","cwd","unixify","markDirectories","dirent","isDirectory","objectMode","assign","default","exports","Object","defineProperty","value","path","require","deep_1","entry_1","error_1","entry_2","Provider","_settings","errorFilter","default","entryFilter","_getMicromatchOptions","deepFilter","entryTransformer","_getRootDirectory","task","resolve","cwd","base","_getReaderOptions","basePath","pathSegmentSeparator","concurrency","getFilter","positive","negative","followSymbolicLinks","fs","stats","throwErrorOnBrokenSymbolicLink","transform","getTransformer","dot","matchBase","baseNameMatch","nobrace","braceExpansion","nocase","caseSensitiveMatch","noext","extglob","noglobstar","globstar","posix","strictSlashes","require_async","exports","Object","defineProperty","value","async_1","require","provider_1","ProviderAsync","default","arguments","_reader","_settings","read","task","root","_getRootDirectory","options","_getReaderOptions","entries","api","map","entry","transform","dynamic","static","patterns","require_stream","exports","Object","defineProperty","value","stream_1","require","stream_2","provider_1","ProviderStream","default","arguments","_reader","_settings","read","task","root","_getRootDirectory","options","_getReaderOptions","source","api","destination","Readable","objectMode","once","error","emit","on","entry","transform","destroy","dynamic","static","patterns","require_sync","exports","Object","defineProperty","value","fsStat","require","fsWalk","reader_1","ReaderSync","default","arguments","_walkSync","walkSync","_statSync","statSync","dynamic","root","options","static","patterns","entries","pattern","filepath","_getFullEntryPath","entry","_getEntry","entryFilter","push","stats","_getStat","_makeEntry","error","errorFilter","_fsStatSettings","require_sync","exports","Object","defineProperty","value","sync_1","require","provider_1","ProviderSync","default","arguments","_reader","_settings","read","task","root","_getRootDirectory","options","_getReaderOptions","entries","api","map","transform","dynamic","static","patterns","require_settings","exports","Object","defineProperty","value","DEFAULT_FILE_SYSTEM_ADAPTER","fs","require","os","CPU_COUNT","Math","max","cpus","length","lstat","lstatSync","stat","statSync","readdir","readdirSync","Settings","_options","absolute","_getValue","baseNameMatch","braceExpansion","caseSensitiveMatch","concurrency","cwd","process","deep","Infinity","dot","extglob","followSymbolicLinks","_getFileSystemMethods","globstar","ignore","markDirectories","objectMode","onlyDirectories","onlyFiles","stats","suppressErrors","throwErrorOnBrokenSymbolicLink","unique","concat","option","undefined","methods","assign","default","require_out","exports","module","taskManager","require","async_1","stream_1","sync_1","settings_1","utils","FastGlob","source","options","assertPatternsInput","works","getWorks","default","result","Promise","all","array","flatten","glob","globSync","sync","globStream","stream","async","merge","generateTasks","patterns","concat","settings","generate","isDynamicPattern","pattern","escapePath","path","escape","convertPathToPattern","posix","escapePosixPath","convertPosixPathToPattern","win32","escapeWindowsPath","convertWindowsPathToPattern","_Provider","tasks","provider","map","read","input","isValidSource","every","item","string","isString","isEmpty","TypeError","import_zod_to_openapi","ROUTES","Symbol","for","ROOM","Symbol","for","RETURN_BUFFER","Symbol","for","THROWS_BUFFER","carrierOf","target","ctor","getRoutes","ctor","carrier","carrierOf","routes","ROUTES","returnBuffer","RETURN_BUFFER","route","buffered","fnName","returnSchema","undefined","throwsBuffer","THROWS_BUFFER","throws","map","r","params","slice","getRoom","ctor","carrier","carrierOf","Object","prototype","hasOwnProperty","call","ROOM","undefined","import_zod","import_zod_to_openapi","import_zod","SQLSTATE","Object","freeze","serializationFailure","deadlockDetected","queryCancelled","commandGuardFailed","HTTP_ERROR_BRAND","Symbol","for","HttpError","Error","status","error","errorDescription","data","HTTP_ERROR_BRAND","name","undefined","toJSON","requestId","result","error_description","request_id","extendZodWithOpenApi","z","ERROR_REGISTRY","Symbol","for","BUILTIN_DATA_SCHEMAS","bad_request","object","fields","array","field","string","message","too_many_requests","retryAfter","number","int","getErrorRegistry","g","globalThis","m","Map","code","status","className","dataSchema","set","builtin","dataDigest","digestOf","digestOf","code","dataSchema","TMP_REF","tmpRegistry","OpenAPIRegistry","register","z","object","data","openapi","generated","OpenApiGeneratorV31","definitions","generateComponents","out","components","schemas","digest","JSON","stringify","includes","Error","isAuthEffectivelyRequired","auth","required","CONTROLLER_META","Symbol","for","APP_DEFAULT_AUTH","Symbol","for","appAuthSlot","globalThis","getDefaultAuth","appAuthSlot","APP_DEFAULT_AUTH","resolveEffectiveAuth","routeAuth","controllerAuth","getDefaultAuth","isController","value","carrier","__palbase","CONTROLLER_META","undefined","resolveController","ctor","TypeError","meta","capitalizeSegment","s","length","charAt","toUpperCase","slice","deriveControllerName","className","name","endsWith","toLowerCase","deriveControllerOperationId","method","fullPath","trimmed","replace","parts","split","result","part","paramMatch","exec","joinControllerPath","basePath","subpath","combined","CONTROLLER_GLOB","DEFAULT_IGNORE","flattenController","controller","getRoom","undefined","isController","meta","resolveController","controllerName","deriveControllerName","name","routes","getRoutes","kindsByMethod","Map","route","seen","get","fnName","sse","upload","options","sseConfig","uploadConfig","set","Error","out","fullPath","joinControllerPath","basePath","subpath","effectiveAuth","resolveEffectiveAuth","auth","defaultAuth","inputSchemas","pathParams","p","params","kind","schema","body","query","headers","push","Set","throws","map","t","code","allThrows","method","returnSchema","rateLimit","length","operationIdFor","deriveControllerOperationId","discoverControllerFiles","projectRoot","matches","fastGlob","cwd","ignore","absolute","onlyFiles","dot","collator","Intl","Collator","numeric","sensitivity","sort","compare","ControllerLoadError","relativePath","message","cause","loadControllers","absolutePaths","timeoutMs","absolutePath","path","relative","split","sep","join","mod","withTimeout","pathToFileURL","href","default","fn","ms","Promise","resolve","reject","setTimeout","then","v","clearTimeout","catch","err","extendZodWithOpenApi","z","ERROR_ENVELOPE_REF","BEARER_SCHEME","registerErrorEnvelope","registry","envelope","object","error","string","describe","error_description","status","number","int","request_id","openapi","description","register","registerControllerRoute","route","registerOperation","method","path","fullPath","operationId","operationIdFor","body","inputSchemas","query","headers","pathParams","returnSchema","effectiveAuth","throws","uploadConfig","undefined","sseConfig","op","endpointPath","toLowerCase","refined","isRefinedSchema","requestBody","required","content","schema","paramsSchema","length","Object","fromEntries","map","n","request","params","resolvedThrows","resolveThrows","returnKind","_def","typeName","noContent","successResponse","frame","unknown","responses","errorResponse","typedErrorResponses","security","isAuthEffectivelyRequired","registerPath","tags","summary","keys","errorExtension","bucket","pathTemplate","getErrorRegistry","seen","Set","out","t","has","code","entry","get","add","push","name","dataSchema","resolved","lowerCamel","hasData","charAt","slice","byStatus","Map","group","set","sort","a","b","schemas","envelopeSchemaObject","oneOf","String","join","literal","data","obj","toSchemaObject","properties","type","const","TMP_REF","tmpRegistry","OpenAPIRegistry","generated","OpenApiGeneratorV31","definitions","generateComponents","components","Error","$ref","firstUntypedField","shape","field","sub","entries","kind","assertRoomFieldsTyped","pattern","room","event","events","message","meta","messages","roomExtension","graceMs","extendZodWithOpenApi","z","aggregateOpenAPI","projectRoot","options","loadedControllers","loadControllers","discoverControllerFiles","timeoutMs","controllerRoutes","flatMap","lc","flattenController","controller","allOperationIds","map","r","operationIdFor","detectDuplicateOperationIds","registry","OpenAPIRegistry","registerErrorEnvelope","registerComponent","BEARER_SCHEME","type","scheme","description","route","registerControllerRoute","roomExt","room","getRoom","undefined","assertRoomFieldsTyped","pattern","slug","replace","roomExtension","name","schema","componentName","register","generator","OpenApiGeneratorV31","definitions","document","generateDocument","openapi","info","title","version","Object","keys","length","endpointCount","operationIds","seen","Set","id","has","Error","add"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/errno.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/fs.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/path.js","../../../node_modules/.pnpm/is-extglob@2.1.1/node_modules/is-extglob/index.js","../../../node_modules/.pnpm/is-glob@4.0.3/node_modules/is-glob/index.js","../../../node_modules/.pnpm/glob-parent@5.1.2/node_modules/glob-parent/index.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/utils.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/stringify.js","../../../node_modules/.pnpm/is-number@7.0.0/node_modules/is-number/index.js","../../../node_modules/.pnpm/to-regex-range@5.0.1/node_modules/to-regex-range/index.js","../../../node_modules/.pnpm/fill-range@7.1.1/node_modules/fill-range/index.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/compile.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/expand.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/constants.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/lib/parse.js","../../../node_modules/.pnpm/braces@3.0.3/node_modules/braces/index.js","../../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/constants.js","../../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/utils.js","../../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/scan.js","../../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/parse.js","../../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/picomatch.js","../../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/index.js","../../../node_modules/.pnpm/micromatch@4.0.8/node_modules/micromatch/index.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/pattern.js","../../../node_modules/.pnpm/merge2@1.4.1/node_modules/merge2/index.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/stream.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/string.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/index.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/managers/tasks.js","../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/providers/async.js","../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/providers/sync.js","../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/adapters/fs.js","../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/settings.js","../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/index.js","../../../node_modules/.pnpm/queue-microtask@1.2.3/node_modules/queue-microtask/index.js","../../../node_modules/.pnpm/run-parallel@1.2.0/node_modules/run-parallel/index.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/constants.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/utils/fs.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/utils/index.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/common.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/async.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/sync.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/adapters/fs.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/settings.js","../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/index.js","../../../node_modules/.pnpm/reusify@1.1.0/node_modules/reusify/reusify.js","../../../node_modules/.pnpm/fastq@1.20.1/node_modules/fastq/queue.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/common.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/reader.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/async.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/async.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/stream.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/sync.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/sync.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/settings.js","../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/index.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/reader.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/stream.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/async.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/matchers/matcher.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/matchers/partial.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/filters/deep.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/filters/entry.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/filters/error.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/transformers/entry.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/provider.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/async.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/stream.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/readers/sync.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/providers/sync.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/settings.js","../../../node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/index.js","../../src/openapi/index.ts","../../src/openapi/aggregate.ts","../../src/decorators/registry.ts","../../src/openapi/convert.ts","../../src/error-registry.ts","../../src/db/sqlstate.ts","../../src/errors.ts","../../src/openapi/auth.ts","../../src/openapi/controllers.ts","../../src/decorators/controller.ts","../../src/openapi/discover.ts"],"sourcesContent":["\"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 const 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\n const flat = arr => {\n for (let i = 0; i < arr.length; i++) {\n const ele = arr[i];\n\n if (Array.isArray(ele)) {\n flat(ele);\n continue;\n }\n\n if (ele !== undefined) {\n result.push(ele);\n }\n }\n return result;\n };\n\n flat(args);\n return result;\n};\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n const stringify = (node, parent = {}) => {\n const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n const 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 (const 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, maxLen) => {\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.map(v => toMaxLen(String(v), maxLen)).join('|');\n }\n\n if (parts.negatives.length) {\n negatives = `-(${prefix}${parts.negatives.map(v => toMaxLen(String(v), maxLen)).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, maxLen)\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 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 const walk = (node, parent = {}) => {\n const invalidBlock = utils.isInvalidBrace(parent);\n const invalidNode = node.invalid === true && options.escapeInvalid === true;\n const invalid = invalidBlock === true || invalidNode === true;\n const prefix = options.escapeInvalid === true ? '\\\\' : '';\n let output = '';\n\n if (node.isOpen === true) {\n return prefix + node.value;\n }\n\n if (node.isClose === true) {\n console.log('node.isClose', prefix, node.value);\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 const args = utils.reduce(node.nodes);\n const range = fill(...args, { ...options, wrap: false, toRegex: true, strictZeros: 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 (const child of node.nodes) {\n output += walk(child, node);\n }\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 const 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 (const item of queue) {\n if (Array.isArray(item)) {\n for (const 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 const rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit;\n\n const 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 const 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 const 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 const 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: 10000,\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 const opts = options || {};\n const 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 const ast = { type: 'root', input, nodes: [] };\n const stack = [ast];\n let block = ast;\n let prev = ast;\n let brackets = 0;\n const length = input.length;\n let index = 0;\n let depth = 0;\n let value;\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 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 const 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 const dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n const 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 const 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 const 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 const 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 const 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 const parent = stack[stack.length - 1];\n const 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 (const pattern of input) {\n const 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\nconst DEFAULT_MAX_EXTGLOB_RECURSION = 0;\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 __proto__: null,\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 DEFAULT_MAX_EXTGLOB_RECURSION,\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 __proto__: null,\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\nconst splitTopLevel = input => {\n const parts = [];\n let bracket = 0;\n let paren = 0;\n let quote = 0;\n let value = '';\n let escaped = false;\n\n for (const ch of input) {\n if (escaped === true) {\n value += ch;\n escaped = false;\n continue;\n }\n\n if (ch === '\\\\') {\n value += ch;\n escaped = true;\n continue;\n }\n\n if (ch === '\"') {\n quote = quote === 1 ? 0 : 1;\n value += ch;\n continue;\n }\n\n if (quote === 0) {\n if (ch === '[') {\n bracket++;\n } else if (ch === ']' && bracket > 0) {\n bracket--;\n } else if (bracket === 0) {\n if (ch === '(') {\n paren++;\n } else if (ch === ')' && paren > 0) {\n paren--;\n } else if (ch === '|' && paren === 0) {\n parts.push(value);\n value = '';\n continue;\n }\n }\n }\n\n value += ch;\n }\n\n parts.push(value);\n return parts;\n};\n\nconst isPlainBranch = branch => {\n let escaped = false;\n\n for (const ch of branch) {\n if (escaped === true) {\n escaped = false;\n continue;\n }\n\n if (ch === '\\\\') {\n escaped = true;\n continue;\n }\n\n if (/[?*+@!()[\\]{}]/.test(ch)) {\n return false;\n }\n }\n\n return true;\n};\n\nconst normalizeSimpleBranch = branch => {\n let value = branch.trim();\n let changed = true;\n\n while (changed === true) {\n changed = false;\n\n if (/^@\\([^\\\\()[\\]{}|]+\\)$/.test(value)) {\n value = value.slice(2, -1);\n changed = true;\n }\n }\n\n if (!isPlainBranch(value)) {\n return;\n }\n\n return value.replace(/\\\\(.)/g, '$1');\n};\n\nconst hasRepeatedCharPrefixOverlap = branches => {\n const values = branches.map(normalizeSimpleBranch).filter(Boolean);\n\n for (let i = 0; i < values.length; i++) {\n for (let j = i + 1; j < values.length; j++) {\n const a = values[i];\n const b = values[j];\n const char = a[0];\n\n if (!char || a !== char.repeat(a.length) || b !== char.repeat(b.length)) {\n continue;\n }\n\n if (a === b || a.startsWith(b) || b.startsWith(a)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst parseRepeatedExtglob = (pattern, requireEnd = true) => {\n if ((pattern[0] !== '+' && pattern[0] !== '*') || pattern[1] !== '(') {\n return;\n }\n\n let bracket = 0;\n let paren = 0;\n let quote = 0;\n let escaped = false;\n\n for (let i = 1; i < pattern.length; i++) {\n const ch = pattern[i];\n\n if (escaped === true) {\n escaped = false;\n continue;\n }\n\n if (ch === '\\\\') {\n escaped = true;\n continue;\n }\n\n if (ch === '\"') {\n quote = quote === 1 ? 0 : 1;\n continue;\n }\n\n if (quote === 1) {\n continue;\n }\n\n if (ch === '[') {\n bracket++;\n continue;\n }\n\n if (ch === ']' && bracket > 0) {\n bracket--;\n continue;\n }\n\n if (bracket > 0) {\n continue;\n }\n\n if (ch === '(') {\n paren++;\n continue;\n }\n\n if (ch === ')') {\n paren--;\n\n if (paren === 0) {\n if (requireEnd === true && i !== pattern.length - 1) {\n return;\n }\n\n return {\n type: pattern[0],\n body: pattern.slice(2, i),\n end: i\n };\n }\n }\n }\n};\n\nconst getStarExtglobSequenceOutput = pattern => {\n let index = 0;\n const chars = [];\n\n while (index < pattern.length) {\n const match = parseRepeatedExtglob(pattern.slice(index), false);\n\n if (!match || match.type !== '*') {\n return;\n }\n\n const branches = splitTopLevel(match.body).map(branch => branch.trim());\n if (branches.length !== 1) {\n return;\n }\n\n const branch = normalizeSimpleBranch(branches[0]);\n if (!branch || branch.length !== 1) {\n return;\n }\n\n chars.push(branch);\n index += match.end + 1;\n }\n\n if (chars.length < 1) {\n return;\n }\n\n const source = chars.length === 1\n ? utils.escapeRegex(chars[0])\n : `[${chars.map(ch => utils.escapeRegex(ch)).join('')}]`;\n\n return `${source}*`;\n};\n\nconst repeatedExtglobRecursion = pattern => {\n let depth = 0;\n let value = pattern.trim();\n let match = parseRepeatedExtglob(value);\n\n while (match) {\n depth++;\n value = match.body.trim();\n match = parseRepeatedExtglob(value);\n }\n\n return depth;\n};\n\nconst analyzeRepeatedExtglob = (body, options) => {\n if (options.maxExtglobRecursion === false) {\n return { risky: false };\n }\n\n const max =\n typeof options.maxExtglobRecursion === 'number'\n ? options.maxExtglobRecursion\n : constants.DEFAULT_MAX_EXTGLOB_RECURSION;\n\n const branches = splitTopLevel(body).map(branch => branch.trim());\n\n if (branches.length > 1) {\n if (\n branches.some(branch => branch === '') ||\n branches.some(branch => /^[*?]+$/.test(branch)) ||\n hasRepeatedCharPrefixOverlap(branches)\n ) {\n return { risky: true };\n }\n }\n\n for (const branch of branches) {\n const safeOutput = getStarExtglobSequenceOutput(branch);\n if (safeOutput) {\n return { risky: true, safeOutput };\n }\n\n if (repeatedExtglobRecursion(branch) > max) {\n return { risky: true };\n }\n }\n\n return { risky: false };\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 token.startIndex = state.index;\n token.tokensIndex = tokens.length;\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 const literal = input.slice(token.startIndex, state.index + 1);\n const body = input.slice(token.startIndex + 2, state.index);\n const analysis = analyzeRepeatedExtglob(body, opts);\n\n if ((token.type === 'plus' || token.type === 'star') && analysis.risky) {\n const safeOutput = analysis.safeOutput\n ? (token.output ? '' : ONE_CHAR) + (opts.capture ? `(${analysis.safeOutput})` : analysis.safeOutput)\n : undefined;\n const open = tokens[token.tokensIndex];\n\n open.type = 'text';\n open.value = literal;\n open.output = safeOutput || utils.escapeRegex(literal);\n\n for (let i = token.tokensIndex + 1; i < tokens.length; i++) {\n tokens[i].value = '';\n tokens[i].output = '';\n delete tokens[i].suffix;\n }\n\n state.output = token.output + open.output;\n state.backtrack = true;\n\n push({ type: 'paren', extglob: true, value, output: '' });\n decrement('parens');\n return;\n }\n\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');\n\nconst isEmptyString = v => v === '' || v === './';\nconst hasBraces = v => {\n const index = v.indexOf('{');\n return index > -1 && v.indexOf('}', index) > -1;\n};\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) || !hasBraces(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\n// exposed for tests\nmicromatch.hasBraces = hasBraces;\nmodule.exports = micromatch;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAbsolute = exports.partitionAbsoluteAndRelative = exports.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, keepEscaping: 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;\nfunction partitionAbsoluteAndRelative(patterns) {\n const absolute = [];\n const relative = [];\n for (const pattern of patterns) {\n if (isAbsolute(pattern)) {\n absolute.push(pattern);\n }\n else {\n relative.push(pattern);\n }\n }\n return [absolute, relative];\n}\nexports.partitionAbsoluteAndRelative = partitionAbsoluteAndRelative;\nfunction isAbsolute(pattern) {\n return path.isAbsolute(pattern);\n}\nexports.isAbsolute = isAbsolute;\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.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 equal to or 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\n get concurrency () {\n return _concurrency\n },\n set concurrency (value) {\n if (!(value >= 1)) {\n throw new Error('fastqueue concurrency must be equal to or greater than 1')\n }\n _concurrency = value\n\n if (self.paused) return\n for (; queueHead && _running < _concurrency;) {\n _running++\n release()\n }\n },\n\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 abort: abort\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 if (queueHead === null) {\n _running++\n release()\n return\n }\n for (; queueHead && _running < _concurrency;) {\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 >= _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 current.errorHandler = errorHandler\n\n if (_running >= _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 && _running <= _concurrency) {\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 abort () {\n var current = queueHead\n queueHead = null\n queueTail = null\n\n while (current) {\n var next = current.next\n var callback = current.callback\n var errorHandler = current.errorHandler\n var val = current.value\n var context = current.context\n\n // Reset the task state\n current.value = null\n current.callback = noop\n current.errorHandler = null\n\n // Call error handler if present\n if (errorHandler) {\n errorHandler(new Error('abort'), val)\n }\n\n // Call callback with error\n callback.call(context, new Error('abort'))\n\n // Release the task back to the pool\n current.release(current)\n\n current = next\n }\n\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 p = new Promise(function (resolve) {\n process.nextTick(function () {\n if (queue.idle()) {\n resolve()\n } else {\n var previousDrain = queue.drain\n queue.drain = function () {\n if (typeof previousDrain === 'function') previousDrain()\n resolve()\n queue.drain = previousDrain\n }\n }\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 [absoluteNegative, relativeNegative] = utils.pattern.partitionAbsoluteAndRelative(negative);\n const patterns = {\n positive: {\n all: utils.pattern.convertPatternsToRe(positive, this._micromatchOptions)\n },\n negative: {\n absolute: utils.pattern.convertPatternsToRe(absoluteNegative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })),\n relative: utils.pattern.convertPatternsToRe(relativeNegative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true }))\n }\n };\n return (entry) => this._filter(entry, patterns);\n }\n _filter(entry, patterns) {\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 const isMatched = this._isMatchToPatternsSet(filepath, patterns, entry.dirent.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 _isMatchToPatternsSet(filepath, patterns, isDirectory) {\n const isMatched = this._isMatchToPatterns(filepath, patterns.positive.all, isDirectory);\n if (!isMatched) {\n return false;\n }\n const isMatchedByRelativeNegative = this._isMatchToPatterns(filepath, patterns.negative.relative, isDirectory);\n if (isMatchedByRelativeNegative) {\n return false;\n }\n const isMatchedByAbsoluteNegative = this._isMatchToAbsoluteNegative(filepath, patterns.negative.absolute, isDirectory);\n if (isMatchedByAbsoluteNegative) {\n return false;\n }\n return true;\n }\n _isMatchToAbsoluteNegative(filepath, patternsRe, isDirectory) {\n if (patternsRe.length === 0) {\n return false;\n }\n const fullpath = utils.path.makeAbsolute(this._settings.cwd, filepath);\n return this._isMatchToPatterns(fullpath, patternsRe, isDirectory);\n }\n _isMatchToPatterns(filepath, patternsRe, isDirectory) {\n if (patternsRe.length === 0) {\n return false;\n }\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","// OpenAPI generator — internal pipeline used by `palbase backend deploy`\n// and `palbase backend dev`. Not part of the public @palbase/backend\n// surface; the CLI imports this directly via deep-path so we don't expose\n// the discovery + load helpers to user code.\nexport { aggregateOpenAPI } from \"./aggregate.js\";\nexport type { AggregateOptions, AggregateResult } from \"./aggregate.js\";\nexport {\n deriveControllerName,\n deriveControllerOperationId,\n joinControllerPath,\n} from \"./discover.js\";\nexport {\n discoverControllerFiles,\n loadControllers,\n flattenController,\n operationIdFor,\n ControllerLoadError,\n} from \"./controllers.js\";\nexport type {\n LoadedController,\n FlatRoute,\n RouteInputSchemas,\n ControllerClass,\n} from \"./controllers.js\";\nexport { ERROR_ENVELOPE_REF, BEARER_SCHEME } from \"./convert.js\";\nexport { isAuthEffectivelyRequired } from \"./auth.js\";\n","// Aggregate every discovered controller route into a single OpenAPI 3.2\n// document. The runtime's HTTP dispatcher (modules/backend) reads the same\n// artifact to validate inbound requests, so this is the single source of truth.\n//\n// Public function: `aggregateOpenAPI(projectRoot, options) → document`.\n// CLI calls this from a tsx-loaded script; the result is JSON-serialised\n// to dist/openapi.json and shipped with the deploy bundle.\nimport {\n OpenApiGeneratorV31,\n OpenAPIRegistry,\n extendZodWithOpenApi,\n} from \"@asteasolutions/zod-to-openapi\";\nimport { getRoom } from \"../decorators/registry.js\";\nimport { z } from \"zod\";\n\nimport {\n registerControllerRoute,\n registerErrorEnvelope,\n BEARER_SCHEME,\n assertRoomFieldsTyped,\n roomExtension,\n} from \"./convert.js\";\nimport {\n discoverControllerFiles,\n loadControllers,\n flattenController,\n operationIdFor,\n type LoadedController,\n type FlatRoute,\n} from \"./controllers.js\";\n\n// Patch z with .openapi(...) so callers can attach metadata if they want\n// — this is idempotent and safe to call from inside a CLI process.\nextendZodWithOpenApi(z);\n\nexport interface AggregateOptions {\n /** Pre-loaded controllers (test-only — bypass dynamic import). When\n * provided, controller discovery is skipped. */\n loadedControllers?: LoadedController[];\n /** Document version stamped onto the spec. Defaults to `0.0.0`. */\n version?: string;\n /** OpenAPI `info.title`. Defaults to `Palbase Backend`. */\n title?: string;\n /** Per-controller import timeout. */\n timeoutMs?: number;\n}\n\nexport interface AggregateResult {\n /** Final OpenAPI 3.2 document, ready to JSON.stringify. */\n document: ReturnType<OpenApiGeneratorV31[\"generateDocument\"]>;\n /** Number of routes registered. */\n endpointCount: number;\n /** Set of operationIds (handy for collision-detection tests). */\n operationIds: string[];\n}\n\n/**\n * Run the full pipeline: discover controllers → load → flatten → convert →\n * emit.\n *\n * Throws a ControllerLoadError on a single bad file. Throws a plain Error if\n * two routes derive the same operationId — collisions are caught after sort()\n * so the error message is deterministic.\n */\nexport async function aggregateOpenAPI(\n projectRoot: string,\n options: AggregateOptions = {},\n): Promise<AggregateResult> {\n // controllers/ + handlers/ path. When tests pass `loadedControllers` we skip\n // discovery; otherwise discover from disk.\n const loadedControllers =\n options.loadedControllers ??\n (await loadControllers(\n await discoverControllerFiles(projectRoot),\n projectRoot,\n { timeoutMs: options.timeoutMs },\n ));\n const controllerRoutes: FlatRoute[] = loadedControllers.flatMap((lc) =>\n flattenController(lc.controller),\n );\n\n const allOperationIds = controllerRoutes.map((r) => operationIdFor(r));\n detectDuplicateOperationIds(allOperationIds);\n\n const registry = new OpenAPIRegistry();\n registerErrorEnvelope(registry);\n registry.registerComponent(\"securitySchemes\", BEARER_SCHEME, {\n type: \"http\",\n scheme: \"bearer\",\n description: \"Palbase user bearer token (sent on authed routes).\",\n });\n for (const route of controllerRoutes) {\n registerControllerRoute(registry, route);\n }\n\n // Rooms: server code with no HTTP surface, so their schemas are registered as\n // components here and referenced from a DOCUMENT-level extension. A room has\n // no verb and no path, so unlike x-palbase-sse it cannot ride an operation.\n const roomExt: Record<string, unknown> = {};\n for (const lc of loadedControllers) {\n const room = getRoom(lc.controller as object);\n if (room === undefined) continue;\n assertRoomFieldsTyped(room.pattern, room);\n const slug = room.pattern.replace(/[^A-Za-z0-9]+/g, \"_\").replace(/^_|_$/g, \"\");\n roomExt[room.pattern] = roomExtension(room, (name, schema) => {\n const componentName = `Room_${slug}_${name}`;\n registry.register(componentName, schema);\n return `#/components/schemas/${componentName}`;\n });\n }\n\n // BUILT HERE, AFTER the room schemas above are registered. The generator\n // takes a SNAPSHOT of `registry.definitions`, so a schema registered\n // afterwards never reaches `components` and the extension's `$ref`s point at\n // nothing. Measured on the fixture: `x-palbase-room` carried\n // `#/components/schemas/Room_probe_sessionId_tick` with ZERO Room_ entries in\n // components. Nothing throws — a dangling $ref is valid JSON — and both\n // generators degrade SILENTLY: swiftgen's resolver returns nil, falls back to\n // the $ref wrapper, and the payload type comes out as `any` with no fields.\n // A typed client that is quietly untyped is worse than no client.\n const generator = new OpenApiGeneratorV31(registry.definitions);\n // 3.2 — the first OAS version where QUERY (RFC 10008) is a first-class\n // path-item verb.\n const document = generator.generateDocument({\n openapi: \"3.2.0\",\n info: {\n title: options.title ?? \"Palbase Backend\",\n version: options.version ?? \"0.0.0\",\n description:\n \"Auto-generated from class controllers (@Controller/@Get/@Post + @Body/@QueryParams/@Param) Zod schemas + method return types at deploy time. Do not edit by hand.\",\n },\n });\n\n if (Object.keys(roomExt).length > 0) {\n // Only when there ARE rooms: a project that never heard of them must produce\n // the document it produced before (NFR-004), and an empty extension key is\n // not \"nothing\". OpenAPIObject declares `[x-${string}]: any`, so the\n // extension key assigns without a cast.\n document[\"x-palbase-room\"] = roomExt;\n }\n\n return {\n document,\n endpointCount: controllerRoutes.length,\n operationIds: allOperationIds,\n };\n}\n\n/** Throw on any duplicate operationId across the route set. */\nfunction detectDuplicateOperationIds(operationIds: string[]): void {\n const seen = new Set<string>();\n for (const id of operationIds) {\n if (seen.has(id)) {\n throw new Error(\n `operationId collision for \"${id}\": two routes derive the same operationId. ` +\n `Rename the controller class or method so the derived operationId is unique.`,\n );\n }\n seen.add(id);\n }\n}\n","// The decorator registry — the single plain-data store the method + parameter\n// decorators write into, and the deploy/dispatch pipeline reads back. No\n// `reflect-metadata`, no `emitDecoratorMetadata`: the registry is built from the\n// decorator arguments + the parameter INDEX that esbuild/tsc preserve for legacy\n// parameter decorators (verified — see the design spec §0/§4.1).\n//\n// A controller class carries its route metadata on a symbol-keyed static\n// property (`ROUTES`). `@Get`/`@Post`/… append a {@link RouteMeta} entry;\n// `@Body`/`@User`/… append a {@link ParamMeta} entry onto the route for the\n// method they decorate. Because parameter decorators run BEFORE the method\n// decorator for the same member (TS evaluates innermost-first, params before the\n// method), the route entry may not exist yet when a param decorator fires — so\n// param metadata is buffered per method name and merged when the method\n// decorator creates the route entry.\nimport type { AuthSpec, RateLimitConfig } from \"../endpoint.js\";\nimport type { UploadConfig } from \"./upload.js\";\nimport type { SseConfig } from \"./sse.js\";\nimport type { ZodTypeAny } from \"zod\";\n\n/** The HTTP verbs a route may declare, upper-cased (the runtime router +\n * OpenAPI lower-case on their own). */\nexport type HttpMethodUpper = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\" | \"QUERY\";\n\n/** Route-level options accepted by the method decorators (`@Get`/`@Post`/…). */\nexport interface RouteOptions {\n /** Enforced before statements and COMMIT; include retries and service queries. */\n databaseBudget?: import(\"../db/diagnostics.js\").DatabaseBudget;\n /** OVERRIDES the controller-level default auth for this one route. */\n auth?: AuthSpec;\n /** Per-route rate limit. */\n rateLimit?: RateLimitConfig;\n /** Direct-storage upload config — present ONLY on `@Upload` routes (the\n * `@Get`/`@Post`/… decorators never set it). Its presence is what MARKS a\n * route as an upload route through the whole pipeline (registry → flatten →\n * openapi → codegen). The bytes go client→storage directly; the method body\n * runs as the completion handler. See {@link UploadConfig} (decorators/upload.ts). */\n uploadConfig?: UploadConfig;\n /** Streaming config — present ONLY on `@Sse` routes (the `@Get`/`@Post`/…\n * decorators never set it). Its presence is what MARKS a route as a streaming\n * route through the whole pipeline (registry → flatten → openapi → codegen),\n * exactly as `uploadConfig` does for uploads — never a special HTTP verb. An\n * `@Sse` route registers POST like any input-bearing route, so the verb cannot\n * carry the distinction. See {@link SseConfig} (decorators/sse.ts). */\n sseConfig?: SseConfig;\n}\n\n/** The kind of value a parameter decorator injects. Drives both dispatch\n * (which request slice to inject) and codegen (which OpenAPI parameter source a\n * schema-bearing kind maps to). */\nexport type ParamKind =\n | \"body\"\n | \"query\"\n | \"param\"\n | \"headers\"\n | \"user\"\n | \"optionalUser\"\n | \"client\"\n | \"requestId\"\n | \"traceId\"\n | \"req\"\n // `@UploadedObject()` — injects the uploaded object (completion input) on an\n // `@Upload` route. No schema (the shape is the fixed UploadedObject type).\n | \"uploadedObject\"\n // `@SseOut()` — injects the frame writer on an `@Sse` route. No schema (the\n // shape is the fixed SseWriter type).\n | \"sseOut\"\n // `@Signal()` — injects the request's AbortSignal, which aborts when the\n // client disconnects. No schema. NOT derivable from `@Req()`: PBRequest\n // carries only request-scoped data and has no signal (endpoint.ts:358-363).\n | \"signal\";\n\n/** One parameter decorator's recorded metadata. `index` is the parameter\n * position esbuild/tsc preserve; `schema` is present for the schema-bearing\n * kinds (`body`/`query`/`headers`); `name` is the path-param name for `param`. */\nexport interface ParamMeta {\n index: number;\n kind: ParamKind;\n /** Zod schema for `body`/`query`/`headers` (validation + codegen source). */\n schema?: ZodTypeAny;\n /** Path-param name for `@Param(\"id\")`. */\n name?: string;\n}\n\n/** One inferred throw site: the error CLASS name (e.g. \"TodoLocked\") and its\n * wire code (e.g. \"todo_locked\"). `status`, `hasData`, and the data JSON schema\n * are NOT carried here — they resolve from the error registry by `code` at\n * extract/openapi time (single source of truth). */\nexport interface ThrowDescriptor {\n name: string;\n code: string;\n}\n\n/** One route's recorded metadata: the verb + subpath + method name + options,\n * the ordered parameter metas, and the resolved return schema (injected by the\n * codegen step — see `returnSchema`). */\nexport interface RouteMeta {\n method: HttpMethodUpper;\n subpath: string;\n fnName: string;\n options: RouteOptions;\n params: ParamMeta[];\n /** Response schema for the route, if any. Derived from the method's RETURN\n * TYPE by codegen and written here via `recordReturn` (a generated top-level\n * IIFE injected per controller), not by an author-written decorator. */\n returnSchema?: ZodTypeAny;\n /** Error classes this route can throw, if inferred. Derived from the method\n * body + service call graph by the deploy stager's throw analysis and written\n * here via `recordThrows` (a generated top-level IIFE injected per controller,\n * the `recordReturn` twin), not by an author-written decorator. */\n throws?: ThrowDescriptor[];\n}\n\n/** Symbol the route metadata list is stored under on a controller class. Using\n * a symbol (not a string key) keeps it off the public structural surface and\n * avoids any chance of an authored property collision. */\nexport const ROUTES: unique symbol = Symbol.for(\"palbase.backend.routes\");\n\n/** Symbol the per-method buffered parameter metas are stored under while a class\n * is being decorated. Parameter decorators fire before the method decorator, so\n * they buffer here keyed by method name; the method decorator drains the buffer\n * into the route entry it creates. */\nconst PARAM_BUFFER: unique symbol = Symbol.for(\"palbase.backend.paramBuffer\");\n\n/** A room's own slots. Rooms are NOT routes — no verb, no path, no params — so\n * they get their own carrier slots instead of being squeezed into RouteMeta. */\nconst ROOM: unique symbol = Symbol.for(\"palbase.backend.room\");\nconst ROOM_HOOKS: unique symbol = Symbol.for(\"palbase.backend.roomHooks\");\n\n/** Symbol the per-method buffered return-type schemas are stored under while a\n * class's registry is being populated. The codegen-injected `recordReturn` call\n * can fire before OR after the method decorator; it buffers here keyed by method\n * name and `recordRoute` drains it into the route entry (and `recordReturn`\n * writes through if the route already exists). Buffering on BOTH sides means a\n * fully-formed route entry always carries its return schema — a raw-symbol\n * reader (the runtime) never has to re-merge. */\nconst RETURN_BUFFER: unique symbol = Symbol.for(\"palbase.backend.returnBuffer\");\n\n/** Symbol the per-method buffered throw descriptors are stored under while a\n * class's registry is being populated. The stager-injected `recordThrows` call\n * can fire before OR after the method decorator; it buffers here keyed by method\n * name and `recordRoute` drains it into the route entry (and `recordThrows`\n * writes through if the route already exists). Buffering on BOTH sides means a\n * fully-formed route entry always carries its throw descriptors — a raw-symbol\n * reader (the runtime) never has to re-merge. */\nconst THROWS_BUFFER: unique symbol = Symbol.for(\"palbase.backend.throwsBuffer\");\n\n/** A class constructor carrying the symbol-keyed registry slots. We type the\n * registry-bearing class as this so the decorators can read/write the slots\n * without `any` — a plain `Function` does not carry index signatures. */\ninterface RegistryCarrier {\n [ROUTES]?: RouteMeta[];\n [PARAM_BUFFER]?: Record<string, ParamMeta[]>;\n [ROOM]?: RoomMeta;\n [ROOM_HOOKS]?: RoomBuffer;\n [RETURN_BUFFER]?: Record<string, ZodTypeAny>;\n [THROWS_BUFFER]?: Record<string, ThrowDescriptor[]>;\n}\n\n/** Coerce a decorated target (class constructor or its prototype) into the\n * registry carrier that owns the slots. Method/param decorators receive the\n * PROTOTYPE as their target; the class decorator receives the constructor. We\n * always anchor the registry on the CONSTRUCTOR so `getRoutes(ctor)` finds it. */\nfunction carrierOf(target: object): RegistryCarrier {\n // For instance-member decorators, `target` is the prototype; its `.constructor`\n // is the class. For a static member or the class decorator, `target` is the\n // constructor already. Resolve to the constructor either way.\n const ctor =\n typeof target === \"function\"\n ? (target as unknown as RegistryCarrier)\n : (((target as { constructor?: unknown }).constructor ??\n target) as unknown as RegistryCarrier);\n return ctor;\n}\n\n/** Get (creating if absent) the own route list for a class constructor. Own —\n * not inherited — so a subclass does not mutate its base's routes. */\nfunction ownRoutes(carrier: RegistryCarrier): RouteMeta[] {\n if (!Object.prototype.hasOwnProperty.call(carrier, ROUTES)) {\n carrier[ROUTES] = [];\n }\n return carrier[ROUTES] as RouteMeta[];\n}\n\n/** Get (creating if absent) the own per-method param buffer for a class. */\nfunction ownParamBuffer(carrier: RegistryCarrier): Record<string, ParamMeta[]> {\n if (!Object.prototype.hasOwnProperty.call(carrier, PARAM_BUFFER)) {\n carrier[PARAM_BUFFER] = {};\n }\n return carrier[PARAM_BUFFER] as Record<string, ParamMeta[]>;\n}\n\n/** Record a route (called by the method decorators). Drains any parameter\n * metas already buffered for `fnName` into the new route entry, then sorts them\n * by parameter index so dispatch can inject positionally. */\nexport function recordRoute(\n target: object,\n fnName: string,\n method: HttpMethodUpper,\n subpath: string,\n options: RouteOptions,\n): void {\n const carrier = carrierOf(target);\n const routes = ownRoutes(carrier);\n const buffer = ownParamBuffer(carrier);\n const params = (buffer[fnName] ?? []).slice().sort((a, b) => a.index - b.index);\n const route: RouteMeta = { method, subpath, fnName, options, params };\n // Drain a buffered return schema (the recordReturn-ran-first ordering) so the\n // route entry is complete the moment it's created — a raw-symbol consumer\n // (the runtime extractor/worker) sees the return schema without re-merging.\n const returnBuffer = carrier[RETURN_BUFFER];\n if (returnBuffer && returnBuffer[fnName] !== undefined) {\n route.returnSchema = returnBuffer[fnName];\n }\n // Same drain for buffered throw descriptors (the recordThrows-ran-first\n // ordering) — the route entry is complete the moment it's created.\n const throwsBuffer = carrier[THROWS_BUFFER];\n if (throwsBuffer && throwsBuffer[fnName] !== undefined) {\n route.throws = throwsBuffer[fnName];\n }\n routes.push(route);\n}\n\n/** Record one parameter decorator (called by `@Body`/`@User`/…). Buffers per\n * method name; the method decorator merges the buffer into the route entry. If\n * the route already exists (method decorator ran first — TS does evaluate the\n * method decorator AFTER its parameter decorators, but we stay order-robust),\n * the meta is also appended directly so neither ordering loses it. */\nexport function recordParam(target: object, fnName: string, meta: ParamMeta): void {\n const carrier = carrierOf(target);\n const buffer = ownParamBuffer(carrier);\n (buffer[fnName] ??= []).push(meta);\n\n // Order-robust: if the route already exists, merge in place + keep sorted.\n const routes = carrier[ROUTES];\n if (routes) {\n const route = routes.find((r) => r.fnName === fnName);\n if (route) {\n route.params.push(meta);\n route.params.sort((a, b) => a.index - b.index);\n }\n }\n}\n\n/** Attach a return schema to the route for `fnName` (called by the codegen\n * injection that reads the method's return type). If the route does not exist\n * yet, the schema is buffered (RETURN_BUFFER) and drained into the route by\n * `recordRoute` when the method decorator runs. */\nexport function recordReturn(target: object, fnName: string, schema: ZodTypeAny): void {\n const carrier = carrierOf(target);\n const routes = carrier[ROUTES];\n const route = routes?.find((r) => r.fnName === fnName);\n if (route) {\n route.returnSchema = schema;\n return;\n }\n if (!Object.prototype.hasOwnProperty.call(carrier, RETURN_BUFFER)) {\n carrier[RETURN_BUFFER] = {};\n }\n const returnBuffer = carrier[RETURN_BUFFER];\n if (returnBuffer) returnBuffer[fnName] = schema;\n}\n\n/** Attach the inferred throw descriptors to the route for `fnName` (called by\n * the stager-injected IIFE that carries the throw analysis result — the\n * `recordReturn` twin). If the route does not exist yet, the descriptors are\n * buffered (THROWS_BUFFER) and drained into the route by `recordRoute` when the\n * method decorator runs. */\nexport function recordThrows(target: object, fnName: string, throws: ThrowDescriptor[]): void {\n const carrier = carrierOf(target);\n const routes = carrier[ROUTES];\n const route = routes?.find((r) => r.fnName === fnName);\n if (route) {\n route.throws = throws;\n return;\n }\n if (!Object.prototype.hasOwnProperty.call(carrier, THROWS_BUFFER)) {\n carrier[THROWS_BUFFER] = {};\n }\n const throwsBuffer = carrier[THROWS_BUFFER];\n if (throwsBuffer) throwsBuffer[fnName] = throws;\n}\n\n/** Read the route metadata for a controller class (the deploy/dispatch entry\n * point). Applies any buffered return schemas + throw descriptors (for the\n * recordReturn/recordThrows-runs-before orderings) and returns a defensive copy\n * so callers cannot mutate the registry.\n */\nexport function getRoutes(ctor: object): RouteMeta[] {\n const carrier = carrierOf(ctor);\n const routes = carrier[ROUTES] ?? [];\n const returnBuffer = carrier[RETURN_BUFFER];\n if (returnBuffer) {\n for (const route of routes) {\n const buffered = returnBuffer[route.fnName];\n if (buffered && route.returnSchema === undefined) {\n route.returnSchema = buffered;\n }\n }\n }\n const throwsBuffer = carrier[THROWS_BUFFER];\n if (throwsBuffer) {\n for (const route of routes) {\n const buffered = throwsBuffer[route.fnName];\n if (buffered && route.throws === undefined) {\n route.throws = buffered;\n }\n }\n }\n return routes.map((r) => ({\n ...r,\n params: r.params.slice(),\n ...(r.throws !== undefined ? { throws: r.throws.slice() } : {}),\n }));\n}\n\n// ── rooms ───────────────────────────────────────────────────────────────────\n\n/** Which lifecycle hook a method is bound to. */\nexport type RoomHook = \"authorize\" | \"first\" | \"join\" | \"leave\" | \"empty\";\n\nexport interface RoomMessageMeta {\n fnName: string;\n schema: ZodTypeAny;\n}\n\nexport interface RoomMeta {\n pattern: string;\n events: Record<string, ZodTypeAny>;\n graceMs: number;\n /** hook → the method name that implements it. */\n hooks: Partial<Record<RoomHook, string>>;\n /** inbound message name → its method and payload schema. */\n messages: Record<string, RoomMessageMeta>;\n}\n\ninterface RoomBuffer {\n hooks: Partial<Record<RoomHook, string>>;\n messages: Record<string, RoomMessageMeta>;\n}\n\n/** Get (creating if absent) the own hook buffer. Own — not inherited — so a\n * subclass never mutates its base's hooks. Member decorators fill this BEFORE\n * the class decorator runs; controller.ts:203 depends on the same ordering. */\nfunction ownRoomBuffer(carrier: RegistryCarrier): RoomBuffer {\n if (!Object.prototype.hasOwnProperty.call(carrier, ROOM_HOOKS)) {\n carrier[ROOM_HOOKS] = { hooks: {}, messages: {} };\n }\n return carrier[ROOM_HOOKS] as RoomBuffer;\n}\n\n/** Record a lifecycle hook. A second method for the same hook is refused: two\n * answers to \"who handles this\" cannot be resolved at dispatch, and silently\n * keeping one is how a hook stops running without anyone being told. */\nexport function recordRoomHook(target: object, hook: RoomHook, fnName: string): void {\n const buffer = ownRoomBuffer(carrierOf(target));\n const existing = buffer.hooks[hook];\n if (existing !== undefined && existing !== fnName) {\n const label = `On${hook.charAt(0).toUpperCase()}${hook.slice(1)}`;\n throw new Error(\n `@${label} is declared twice in one room (${existing} and ${fnName}). ` +\n `A room has one of each hook.`,\n );\n }\n buffer.hooks[hook] = fnName;\n}\n\n/** Record an inbound message handler. */\nexport function recordRoomMessage(\n target: object,\n name: string,\n fnName: string,\n schema: ZodTypeAny,\n): void {\n const buffer = ownRoomBuffer(carrierOf(target));\n const existing = buffer.messages[name];\n if (existing !== undefined && existing.fnName !== fnName) {\n throw new Error(\n `@OnMessage(\"${name}\") is declared twice in one room (${existing.fnName} and ${fnName}).`,\n );\n }\n buffer.messages[name] = { fnName, schema };\n}\n\n/** Record the room itself (called by the class decorator), draining the buffer\n * the member decorators already filled. */\nexport function recordRoom(\n ctor: object,\n meta: Omit<RoomMeta, \"hooks\" | \"messages\">,\n): void {\n const carrier = carrierOf(ctor);\n const buffer = ownRoomBuffer(carrier);\n carrier[ROOM] = { ...meta, hooks: buffer.hooks, messages: buffer.messages };\n // AND into the shared class registry, the same slot @Controller pushes to.\n //\n // Without this line a room compiles, bundles and deploys, and is never called:\n // the bundler's entry exports `SDK.getRegisteredControllers()` and the runtime\n // reads its rooms out of THAT list (server.ts's `collectRooms`). A room that\n // only marks its own constructor is a room nobody can find — measured, on the\n // fixture, at the last gate before it would have worked.\n //\n // Rooms and controllers share one list because they are one thing to the\n // loader: classes a bundle declared. What each IS is decided by the marker it\n // carries, never by which list it arrived in.\n const g = globalThis as unknown as Record<symbol, unknown[] | undefined>;\n const REGISTRY = Symbol.for(\"palbase.backend.allControllers\");\n const all = (g[REGISTRY] ??= []);\n if (!all.includes(ctor)) all.push(ctor);\n}\n\n/** The room a class declares, or undefined. A class with no `@Room` is not a\n * room — the marker is the CONFIG's presence, never a name or a base class\n * (the rule upload.ts:13-16 states for uploads). */\nexport function getRoom(ctor: object): RoomMeta | undefined {\n const carrier = carrierOf(ctor);\n if (!Object.prototype.hasOwnProperty.call(carrier, ROOM)) return undefined;\n return carrier[ROOM] as RoomMeta;\n}\n","// Convert one controller route (a FlatRoute) into an OpenAPI PathItem slice via\n// the shared builder (`registerOperation`). The class-controller model splits\n// the request sources by parameter decorator:\n// - `@Body(schema)` → requestBody\n// - `@QueryParams(schema)` → query parameters\n// - `@Param(\"id\")` → path parameters\n// - `@Headers(schema)` → header parameters\n// - method return type → JSON 200 or bodyless 204\n// - effective auth → security\n// The operationId is DOTTED (`<controllerName>.<methodName>`), with the flat\n// verb+path form as the fallback for routes carrying no controller metadata —\n// both derived in discover.ts.\n//\n// Refinements (`.refine`, `.transform`) collapse to base types — the runtime\n// still validates server-side, the spec just describes a looser envelope. We\n// emit `x-palbase-refined: true` when a refinement is detected so tooling can\n// surface a hint.\nimport {\n OpenAPIRegistry,\n OpenApiGeneratorV31,\n extendZodWithOpenApi,\n type ResponseConfig,\n type RouteConfig,\n} from \"@asteasolutions/zod-to-openapi\";\nimport type { ReferenceObject, SchemaObject } from \"openapi3-ts/oas31\";\nimport type { ZodTypeAny } from \"zod\";\nimport { z } from \"zod\";\n\nimport type { AuthSpec } from \"../endpoint.js\";\nimport type { ThrowDescriptor, RoomMeta } from \"../decorators/registry.js\";\nimport type { UploadConfig } from \"../decorators/upload.js\";\nimport type { SseConfig } from \"../decorators/sse.js\";\nimport { getErrorRegistry } from \"../error-registry.js\";\nimport { isAuthEffectivelyRequired } from \"./auth.js\";\nimport { operationIdFor, type FlatRoute } from \"./controllers.js\";\n\n// The envelope conversion below registers ad-hoc zod schemas; make sure the\n// `.openapi` extension is installed even when this module is loaded without\n// aggregate.ts (idempotent).\nextendZodWithOpenApi(z);\n\nexport const ERROR_ENVELOPE_REF = \"PalbaseErrorEnvelope\";\ntype OpenApiHttpMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\" | \"query\";\n\n/** OpenAPI security-scheme name for the bearer token every authed route uses. */\nexport const BEARER_SCHEME = \"PalbaseBearer\";\n\n/** The zod object type the library's `request.params`/`query`/`headers` accept. */\ntype RequestParam = RouteConfig[\"request\"] extends infer R\n ? R extends { params?: infer P }\n ? P\n : never\n : never;\n\n/**\n * Register the shared error envelope component once per document. Every\n * non-2xx response on every endpoint $refs this — keeps the document compact\n * and the contract uniform with what the runtime emits.\n */\nexport function registerErrorEnvelope(registry: OpenAPIRegistry): void {\n const envelope = z\n .object({\n error: z.string().describe(\"Stable machine-readable error code\"),\n error_description: z.string().describe(\"Human-readable error description\"),\n status: z.number().int().describe(\"HTTP status code\"),\n request_id: z.string().describe(\"Correlation id for tracing\"),\n })\n .openapi(ERROR_ENVELOPE_REF, {\n description:\n \"Shared Palbase error envelope. Every non-2xx response from a backend RPC call uses this shape.\",\n });\n registry.register(ERROR_ENVELOPE_REF, envelope);\n}\n\n/**\n * Register one controller route's path item with the OpenAPI registry. The verb\n * + full path are on the {@link FlatRoute}; the operationId is derived by\n * {@link operationIdFor} (dotted `<controllerName>.<methodName>`, flat verb+path\n * only as a fallback); the request sources + response come from the route's\n * split schemas.\n */\nexport function registerControllerRoute(registry: OpenAPIRegistry, route: FlatRoute): void {\n registerOperation(registry, {\n method: route.method,\n path: route.fullPath,\n operationId: operationIdFor(route),\n body: route.inputSchemas.body,\n query: route.inputSchemas.query,\n headers: route.inputSchemas.headers,\n pathParams: route.pathParams,\n returnSchema: route.returnSchema,\n effectiveAuth: route.effectiveAuth,\n throws: route.throws,\n ...(route.uploadConfig !== undefined ? { uploadConfig: route.uploadConfig } : {}),\n ...(route.sseConfig !== undefined ? { sseConfig: route.sseConfig } : {}),\n });\n}\n\n/** Everything an OpenAPI operation needs, sourced from a FlatRoute's split. */\ninterface OperationInput {\n method: string;\n path: string;\n operationId: string;\n body?: ZodTypeAny;\n query?: ZodTypeAny;\n headers?: ZodTypeAny;\n pathParams: string[];\n returnSchema?: ZodTypeAny;\n effectiveAuth: AuthSpec;\n throws?: ThrowDescriptor[];\n /** Present ONLY on `@Upload` routes — see the extension emitted below. */\n uploadConfig?: UploadConfig;\n /** Present ONLY on `@Sse` routes — see the extension emitted below. */\n sseConfig?: SseConfig;\n}\n\n/**\n * Register one operation (verb + path + split request sources + response +\n * security) on the registry. Path/query/header parameters ride the library's\n * native `request.{params,query,headers}` zod expansion; the body + 200\n * response carry their zod schemas verbatim.\n */\nfunction registerOperation(registry: OpenAPIRegistry, op: OperationInput): void {\n const endpointPath = op.path;\n const method = op.method.toLowerCase() as OpenApiHttpMethod;\n const refined =\n isRefinedSchema(op.body) || isRefinedSchema(op.query) || isRefinedSchema(op.returnSchema);\n\n const requestBody =\n op.body !== undefined\n ? { required: true, content: { \"application/json\": { schema: op.body } } }\n : undefined;\n\n // Path params (@Param(\"id\")) → a zod object of required strings the library\n // expands into `in: path` parameters.\n const paramsSchema =\n op.pathParams.length > 0\n ? z.object(Object.fromEntries(op.pathParams.map((n) => [n, z.string()])))\n : undefined;\n\n const request: RouteConfig[\"request\"] = {\n ...(requestBody ? { body: requestBody } : {}),\n ...(paramsSchema ? { params: paramsSchema as RequestParam } : {}),\n ...(op.query ? { query: op.query as RequestParam } : {}),\n ...(op.headers ? { headers: op.headers as RequestParam } : {}),\n };\n\n // Declared error contracts: resolve RouteMeta.throws against the error\n // registry, then emit the typed per-status responses ON TOP of the static\n // envelope responses (a typed 429 is more specific than the generic one).\n const resolvedThrows = resolveThrows(op.throws);\n\n const returnKind = (op.returnSchema as { _def?: { typeName?: string } } | undefined)?._def?.typeName;\n // Only an explicit no-body schema means 204. Missing/unknown schemas still\n // describe JSON; treating every permissive schema as void hides decode bugs.\n // SSE uses its frame schema even though the handler itself returns void.\n const noContent =\n op.sseConfig === undefined && (returnKind === \"ZodVoid\" || returnKind === \"ZodUndefined\");\n const successResponse: ResponseConfig = noContent\n ? { description: \"No Content\" }\n : {\n description: \"Success\",\n content: {\n \"application/json\": {\n // SSE's schema describes one frame, not the void handler return.\n schema: op.sseConfig?.frame ?? op.returnSchema ?? z.unknown(),\n },\n },\n };\n const responses: { [statusCode: string]: ResponseConfig | ReferenceObject } = {\n [noContent ? 204 : 200]: successResponse,\n 400: errorResponse(\"Validation error\"),\n 401: errorResponse(\"Unauthorized\"),\n 403: errorResponse(\"Forbidden\"),\n 429: errorResponse(\"Rate limit exceeded\"),\n 500: errorResponse(\"Internal error\"),\n ...typedErrorResponses(resolvedThrows),\n };\n\n // Authed routes carry the bearer security requirement; public routes do not.\n const security = isAuthEffectivelyRequired(op.effectiveAuth)\n ? [{ [BEARER_SCHEME]: [] }]\n : undefined;\n\n registry.registerPath({\n // zod-to-openapi@7.3.4's `Method` union predates RFC 10008 and lacks\n // \"query\"; the union is type-only (the lib never validates the method at\n // runtime — it just keys the path item), so bridge the one missing verb\n // by asserting to the overlap of the two unions.\n method: method as OpenApiHttpMethod & RouteConfig[\"method\"],\n path: endpointPath,\n operationId: op.operationId,\n tags: [\"backend\"],\n summary: `Invoke the ${op.operationId} backend endpoint.`,\n description: `Runtime path: ${endpointPath}`,\n ...(Object.keys(request).length > 0 ? { request } : {}),\n ...(security ? { security } : {}),\n responses,\n ...(refined ? { \"x-palbase-refined\": true } : {}),\n ...(resolvedThrows.length > 0 ? { \"x-palbase-errors\": errorExtension(resolvedThrows) } : {}),\n // WHAT MAKES AN UPLOAD ROUTE AN UPLOAD ROUTE, to every generator.\n //\n // An `@Upload` route's bytes never pass through the backend: the client\n // PUTs them straight at a signed URL the authorize pre-flight mints, and\n // the decorated method is the completion handler. Nothing about that is\n // visible in the request body — the pre-flight body is ordinary JSON — so a\n // document without this extension describes an upload route as a plain\n // POST, and every client generated from it has NO WAY TO SEND A FILE.\n //\n // Measured 2026-08-24 against centauri: the Swift generator reads\n // `x-palbase-upload` (palbase-swiftgen Parse.swift) and, finding none,\n // emitted `PBEndpoint` instead of `PBUploadEndpoint` — `uploadImage` lost\n // its `file:` parameter and the app stopped compiling. Photo upload and\n // identity verification, both gone, from an absent extension.\n ...(op.uploadConfig !== undefined\n ? {\n \"x-palbase-upload\": {\n bucket: op.uploadConfig.bucket,\n pathTemplate: op.uploadConfig.pathTemplate,\n },\n }\n : {}),\n // Without this extension the document describes a streaming route as a\n // plain POST, and every client generated from it reads the body ONCE\n // instead of iterating frames — a generated client that compiles, runs and\n // is simply wrong. Same failure class as the upload extension above.\n ...(op.sseConfig !== undefined ? { \"x-palbase-sse\": {} } : {}),\n });\n}\n\n/** One throw descriptor joined with its registry entry. */\ninterface ResolvedThrow {\n name: string;\n code: string;\n status: number;\n dataSchema?: ZodTypeAny;\n}\n\n/**\n * Resolve route throw descriptors against the project-global error registry\n * (`status`/`hasData`/data schema live there — the descriptor only carries\n * `{name, code}`). Unknown codes are SKIPPED silently — an unresolvable throw\n * site degrades to the client's `.other` case, never breaks emission. Dedupes\n * by code (first descriptor wins).\n */\nfunction resolveThrows(throws: ThrowDescriptor[] | undefined): ResolvedThrow[] {\n if (!throws || throws.length === 0) return [];\n const registry = getErrorRegistry();\n const seen = new Set<string>();\n const out: ResolvedThrow[] = [];\n for (const t of throws) {\n if (seen.has(t.code)) continue;\n const entry = registry.get(t.code);\n if (!entry) continue;\n seen.add(t.code);\n out.push({\n name: t.name,\n code: t.code,\n status: entry.status,\n ...(entry.dataSchema ? { dataSchema: entry.dataSchema } : {}),\n });\n }\n return out;\n}\n\n/** One `x-palbase-errors` entry — UNCHANGED v1 wire format (swiftgen parses\n * this shape today). */\ninterface PalbaseErrorExtensionEntry {\n status: number;\n code: string;\n hasData: boolean;\n description: string;\n}\n\n/** Build the `x-palbase-errors` extension object: key = lowerCamel(className). */\nfunction errorExtension(resolved: ResolvedThrow[]): Record<string, PalbaseErrorExtensionEntry> {\n const out: Record<string, PalbaseErrorExtensionEntry> = {};\n for (const t of resolved) {\n out[lowerCamel(t.name)] = {\n status: t.status,\n code: t.code,\n hasData: t.dataSchema !== undefined,\n description: \"\",\n };\n }\n return out;\n}\n\n/** \"TodoLocked\" → \"todoLocked\" (the v1 extension key derivation). */\nfunction lowerCamel(name: string): string {\n return name.charAt(0).toLowerCase() + name.slice(1);\n}\n\n/**\n * Build the typed per-status error responses. Each declared error's response\n * schema is the FULL envelope `{error: {const}, error_description, status,\n * request_id, data?}` — `data` carries the registered zod schema's JSON form.\n * Statuses shared by several errors collapse to a `oneOf` of their envelopes.\n * Statuses are emitted in ascending order so the document is deterministic.\n */\nfunction typedErrorResponses(resolved: ResolvedThrow[]): { [statusCode: string]: ResponseConfig } {\n const byStatus = new Map<number, ResolvedThrow[]>();\n for (const t of resolved) {\n const group = byStatus.get(t.status);\n if (group) group.push(t);\n else byStatus.set(t.status, [t]);\n }\n const out: { [statusCode: string]: ResponseConfig } = {};\n for (const status of [...byStatus.keys()].sort((a, b) => a - b)) {\n const group = byStatus.get(status) ?? [];\n const schemas = group.map((t) => envelopeSchemaObject(t));\n const schema: SchemaObject = schemas.length === 1 && schemas[0] ? schemas[0] : { oneOf: schemas };\n out[String(status)] = {\n description: group.map((t) => t.code).join(\" | \"),\n content: { \"application/json\": { schema } },\n };\n }\n return out;\n}\n\n/**\n * Convert one declared error to its envelope SchemaObject, using the SAME\n * zod→JSON-schema converter the response schemas ride (the asteasolutions\n * generator). The `error` property is then pinned to the v1 `const` form (the\n * library lowers literals to single-value enums).\n */\nfunction envelopeSchemaObject(t: ResolvedThrow): SchemaObject {\n const envelope = z.object({\n error: z.literal(t.code),\n error_description: z.string(),\n status: z.number().int(),\n request_id: z.string(),\n ...(t.dataSchema ? { data: t.dataSchema } : {}),\n });\n const obj = toSchemaObject(envelope);\n if (obj.properties) {\n obj.properties[\"error\"] = { type: \"string\", const: t.code };\n }\n return obj;\n}\n\n/** Run one zod schema through the document converter and return the plain\n * SchemaObject (inline — no component registration leaks into the document). */\nfunction toSchemaObject(schema: ZodTypeAny): SchemaObject {\n const TMP_REF = \"__PalbaseTypedErrorEnvelope\";\n const tmpRegistry = new OpenAPIRegistry();\n tmpRegistry.register(TMP_REF, schema.openapi(TMP_REF));\n const generated = new OpenApiGeneratorV31(tmpRegistry.definitions).generateComponents();\n const out = generated.components?.schemas?.[TMP_REF];\n if (!out || typeof out !== \"object\" || \"$ref\" in out) {\n throw new Error(\"typed-error envelope schema conversion produced no schema object\");\n }\n return out;\n}\n\n/** A non-2xx envelope-only response that $refs the shared error envelope. */\nfunction errorResponse(description: string): ResponseConfig {\n return {\n description,\n content: {\n \"application/json\": { schema: { $ref: `#/components/schemas/${ERROR_ENVELOPE_REF}` } },\n },\n };\n}\n\n/**\n * Cheap heuristic: detect Zod schemas that include `.refine`, `.transform`, or\n * `.preprocess` — those are dropped by the OpenAPI converter so the generated\n * spec is looser than the runtime contract. Surfacing a hint lets developers\n * know they shouldn't rely on the spec for input shaping.\n */\nfunction isRefinedSchema(schema: ZodTypeAny | undefined): boolean {\n if (!schema) return false;\n const typeName = (schema as { _def?: { typeName?: string } })._def?.typeName;\n if (!typeName) return false;\n return typeName === \"ZodEffects\" || typeName === \"ZodPreprocess\" || typeName === \"ZodTransform\";\n}\n\n// ── rooms ───────────────────────────────────────────────────────────────────\n\n/** Walk a zod object's fields and name the first untyped one, or undefined. */\nfunction firstUntypedField(schema: unknown): string | undefined {\n const shape = (schema as { shape?: Record<string, { _def?: { typeName?: string } }> })?.shape;\n if (!shape) return undefined;\n for (const [field, sub] of Object.entries(shape)) {\n const kind = sub?._def?.typeName;\n if (kind === \"ZodUnknown\" || kind === \"ZodAny\") return field;\n }\n return undefined;\n}\n\n/**\n * Refuse a room whose wire shape carries an untyped field.\n *\n * An untyped payload produces an OPAQUE generated client: it compiles, it runs,\n * and the value the app receives is a bag nobody can read. The `@Sse` contract\n * gate exists for the same reason and caught a real one on its first day\n * (`VSearchSearchRequest.roomIn`). Inbound messages are refused too, and there\n * the argument is stronger: that direction reaches the SERVER, so an untyped\n * field is one nothing downstream can validate.\n */\nexport function assertRoomFieldsTyped(pattern: string, room: RoomMeta): void {\n for (const [event, schema] of Object.entries(room.events)) {\n const field = firstUntypedField(schema);\n if (field !== undefined) {\n throw new Error(\n `@Room(\"${pattern}\") event \"${event}\" has an untyped field \"${field}\". ` +\n `An untyped payload makes every generated client opaque — declare its shape.`,\n );\n }\n }\n for (const [message, meta] of Object.entries(room.messages)) {\n const field = firstUntypedField(meta.schema);\n if (field !== undefined) {\n throw new Error(\n `@Room(\"${pattern}\") message \"${message}\" has an untyped field \"${field}\". ` +\n `Inbound payloads reach the server — declare the shape so it can be validated.`,\n );\n }\n }\n}\n\n/** The document-level extension for one room.\n *\n * Rooms carry no verb and no path, so unlike `x-palbase-sse` this cannot hang\n * off an operation — it lives on the document. Schemas are REGISTERED as\n * components and referenced, which is the shape both generators already read\n * for request and response bodies; inlining them would be a second schema\n * dialect for them to learn. */\nexport function roomExtension(\n room: RoomMeta,\n register: (name: string, schema: ZodTypeAny) => string,\n): {\n events: Record<string, { $ref: string }>;\n messages: Record<string, { $ref: string }>;\n graceMs: number;\n} {\n const events: Record<string, { $ref: string }> = {};\n for (const [name, schema] of Object.entries(room.events)) {\n events[name] = { $ref: register(name, schema) };\n }\n const messages: Record<string, { $ref: string }> = {};\n for (const [name, meta] of Object.entries(room.messages)) {\n messages[name] = { $ref: register(name, meta.schema) };\n }\n return { events, messages, graceMs: room.graceMs };\n}\n","// defineError — project-defined typed error classes + the module-global error\n// registry the OpenAPI spec twins join against.\n//\n// `defineError(code, status, dataSchema?)` returns an `HttpError` subclass whose\n// constructor is typed by the zod schema (`new TodoLocked({ retryAfter: 30 })`).\n// Each call self-registers `{ code, status, className, dataSchema }` in a\n// registry anchored on `globalThis` under `Symbol.for(...)` — mirroring the\n// ROUTES pattern — so the deploy bundle's registrations land on the single SDK\n// instance the extractor `require()`s. The registry is pre-seeded with the named\n// built-in classes (`NotFound`, `Conflict`, …) so throw inference can resolve\n// ad-hoc `throw new NotFound(...)` sites by their canonical wire codes.\n//\n// Duplicate code with a DIFFERENT shape (status OR converted data schema) is a\n// hard error at registration time (deploy fails loudly — error codes are\n// project-unique); structurally-identical re-registration is idempotent (each\n// controller BUNDLE carries its own copy of a shared models/errors.ts, so the\n// same defineError line legitimately runs once per bundle in one process).\nimport {\n OpenAPIRegistry,\n OpenApiGeneratorV31,\n extendZodWithOpenApi,\n} from \"@asteasolutions/zod-to-openapi\";\nimport { z, type ZodTypeAny } from \"zod\";\nimport { HttpError } from \"./errors.js\";\n\nextendZodWithOpenApi(z);\n\n/** One registered error: the wire code, HTTP status, the class name the\n * analyzer sees, the optional data payload schema, and whether it is one of the\n * pre-seeded built-in named classes. */\nexport interface RegisteredError {\n code: string;\n status: number;\n className: string;\n dataSchema?: ZodTypeAny;\n /** JSON.stringify of the converted JSON schema — equal digest ⇔ the spec\n * twins would emit an identical `data` schema for this error. */\n dataDigest?: string;\n builtin: boolean;\n}\n\n/** The cross-module-instance registry anchor (the pinned contract symbol). */\nconst ERROR_REGISTRY: unique symbol = Symbol.for(\"palbase.backend.errorRegistry\");\n\ninterface RegistryCarrier {\n [ERROR_REGISTRY]?: Map<string, RegisteredError>;\n}\n\n/** Get (creating + pre-seeding if absent) the project-global error registry,\n * keyed by wire code. Anchored on `globalThis` so every copy of the SDK in a\n * process shares the one registry. */\n/** The fixed data schemas the built-in named errors ship. Declared HERE (not in\n * errors.ts, which stays zod-free) because this is where the registry converts\n * them to JSON-schema for the spec — keying codegen's typed `error.data`. Only\n * the errors that semantically carry a payload have a schema; the rest are\n * data-less. `.int()` is preserved so the wire/codegen sees an integer. */\nconst BUILTIN_DATA_SCHEMAS: Record<string, ZodTypeAny> = {\n bad_request: z.object({\n fields: z.array(z.object({ field: z.string(), message: z.string() })),\n }),\n too_many_requests: z.object({ retryAfter: z.number().int() }),\n};\n\nexport function getErrorRegistry(): Map<string, RegisteredError> {\n const g = globalThis as RegistryCarrier;\n if (!g[ERROR_REGISTRY]) {\n const m = new Map<string, RegisteredError>();\n for (const [code, status, className] of [\n [\"bad_request\", 400, \"BadRequest\"],\n [\"unauthorized\", 401, \"Unauthorized\"],\n [\"forbidden\", 403, \"Forbidden\"],\n [\"not_found\", 404, \"NotFound\"],\n [\"conflict\", 409, \"Conflict\"],\n // The engine's own 23505 conversion (engine/db.ts) throws this, and an\n // author may too. Registered like every other built-in so the spec\n // emitter resolves it — an unregistered code is SKIPPED silently there\n // (openapi/convert.ts) and would degrade to the client's `.other` case.\n [\"unique_violation\", 409, \"UniqueViolation\"],\n [\"too_many_requests\", 429, \"TooManyRequests\"],\n ] as const) {\n const dataSchema = BUILTIN_DATA_SCHEMAS[code];\n m.set(code, {\n code,\n status,\n className,\n builtin: true,\n ...(dataSchema ? { dataSchema, dataDigest: digestOf(code, dataSchema) } : {}),\n });\n }\n g[ERROR_REGISTRY] = m;\n }\n return g[ERROR_REGISTRY];\n}\n\n/** Class returned for schema-bearing errors: ctor(data, message?). */\nexport interface DefinedErrorWithData<S extends ZodTypeAny> {\n new (data: z.input<S>, message?: string): HttpError;\n readonly code: string;\n readonly status: number;\n}\n\n/** Class returned for schema-less errors: ctor(message?). */\nexport interface DefinedError {\n new (message?: string): HttpError;\n readonly code: string;\n readonly status: number;\n}\n\n/**\n * Define a project error class. MUST be called with literal args (string\n * literal `code`, numeric literal `status`) at module top level — the deploy\n * stager's static analyzer reads those literals to resolve throw sites.\n *\n * @example\n * // models/todos/errors.ts\n * export const TodoLocked = defineError(\"todo_locked\", 409, z.object({ retryAfter: z.number() }));\n * // services/todo.service.ts\n * throw new TodoLocked({ retryAfter: 30 });\n */\nexport function defineError<S extends ZodTypeAny>(\n code: string,\n status: number,\n dataSchema: S,\n): DefinedErrorWithData<S>;\nexport function defineError(code: string, status: number): DefinedError;\nexport function defineError(code: string, status: number, dataSchema?: ZodTypeAny): unknown {\n if (!Number.isInteger(status) || status < 400 || status > 599) {\n throw new Error(\n `defineError: status for \"${code}\" must be a 4xx/5xx integer, got ${status} — ` +\n `error responses must not clobber success responses in the project spec.`,\n );\n }\n const registry = getErrorRegistry();\n const existing = registry.get(code);\n const className = defaultClassName(code);\n const dataDigest = dataSchema ? digestOf(code, dataSchema) : undefined;\n if (existing) {\n const sameShape =\n existing.status === status && !existing.builtin && existing.dataDigest === dataDigest;\n if (!sameShape) {\n throw new Error(\n `defineError: duplicate error code \"${code}\" with a different shape ` +\n `(existing: status ${existing.status}${existing.builtin ? \", built-in\" : \"\"}` +\n `${existing.status === status && !existing.builtin ? \", different data schema\" : \"\"}). ` +\n `Error codes are project-unique.`,\n );\n }\n }\n // Local factories so the class-constructor closures capture a NON-optional\n // schema binding (narrowing does not flow into closures created in a branch).\n const makeWithData = (schema: ZodTypeAny) =>\n class extends HttpError {\n static readonly code = code;\n static readonly status = status;\n constructor(data: unknown, message?: string) {\n super(status, code, message ?? humanize(code), schema.parse(data));\n this.name = className;\n }\n };\n const makeWithoutData = () =>\n class extends HttpError {\n static readonly code = code;\n static readonly status = status;\n constructor(message?: string) {\n super(status, code, message ?? humanize(code));\n this.name = className;\n }\n };\n const cls = dataSchema ? makeWithData(dataSchema) : makeWithoutData();\n Object.defineProperty(cls, \"name\", { value: className });\n registry.set(code, {\n code,\n status,\n className,\n builtin: false,\n ...(dataSchema ? { dataSchema } : {}),\n ...(dataDigest !== undefined ? { dataDigest } : {}),\n });\n return cls;\n}\n\n/** Convert a data schema through the SAME library the spec twins use and\n * return its JSON-schema digest (the duplicate-shape comparison key). Doubles\n * as the self-containment guard: a schema carrying `.openapi(refId)` metadata\n * (top-level or nested) converts to `$ref` pointers into components the\n * project spec never emits — a dangling ref every spec consumer would choke\n * on — so it is rejected here, at the definition site, with a fixable message. */\nfunction digestOf(code: string, dataSchema: ZodTypeAny): string {\n const TMP_REF = \"__PalbaseErrorDataDigest\";\n const tmpRegistry = new OpenAPIRegistry();\n // Wrap the schema as a property — exactly how the envelope embeds it — so a\n // TOP-LEVEL .openapi(refId) is not masked by the registration refId and\n // surfaces as the same $ref the real emission would produce.\n tmpRegistry.register(TMP_REF, z.object({ data: dataSchema }).openapi(TMP_REF));\n const generated = new OpenApiGeneratorV31(tmpRegistry.definitions).generateComponents();\n const out = generated.components?.schemas?.[TMP_REF];\n const digest = JSON.stringify(out ?? null);\n if (digest.includes('\"$ref\"')) {\n throw new Error(\n `defineError: dataSchema for \"${code}\" carries .openapi(refId) metadata — ` +\n `it would emit dangling $ref pointers in the project spec. ` +\n `Use a plain zod schema (z.object({...})) without .openapi(...).`,\n );\n }\n return digest;\n}\n\n/** \"todo_locked\" → \"TodoLocked\" (used as Error.name; the source class NAME the\n * analyzer sees is whatever the user assigned the const to — they should match\n * by convention, and the descriptor carries the analyzed const name anyway). */\nfunction defaultClassName(code: string): string {\n return code\n .split(\"_\")\n .map((p) => p.charAt(0).toUpperCase() + p.slice(1))\n .join(\"\");\n}\n\n/** \"todo_locked\" → \"Todo locked\" — the default human-readable message. */\nfunction humanize(code: string): string {\n const s = code.replace(/_/g, \" \");\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n","/** PostgreSQL protocol identifiers, shared by error mapping and retry policy. */\nexport const SQLSTATE = Object.freeze({\n serializationFailure: \"40001\",\n deadlockDetected: \"40P01\",\n queryCancelled: \"57014\",\n commandGuardFailed: \"PBC01\",\n} as const);\n\n/** These errors confirm that PostgreSQL aborted the transaction. A connection\n * failure does not: the COMMIT may already have succeeded. */\nexport function isTransactionRollbackState(state: unknown): boolean {\n return state === SQLSTATE.serializationFailure || state === SQLSTATE.deadlockDetected;\n}\n","import { SQLSTATE, isTransactionRollbackState } from \"./db/sqlstate.js\";\n\n/**\n * The brand that identifies an HttpError ACROSS SDK instances.\n *\n * A process legitimately holds more than one copy of this SDK — the runtime\n * loads the engine from its own node_modules while the tenant's bundle carries\n * an inlined copy, which is why the controller registry and the error registry\n * are both anchored on `Symbol.for`. The one place that did not follow the\n * pattern was the engine's catch: `err instanceof HttpError` compares CLASS\n * IDENTITY, so a `throw new NotFound()` from the bundle's copy did not match\n * the engine's copy and every typed error in every deployed backend degraded to\n * `500 internal_error`. Measured through the edge on a real deploy: a route\n * throwing `NotFound` answered 500 while the runtime's own log printed the\n * error object with `status: 404` right beside it.\n *\n * `Symbol.for` puts this in the cross-realm registry, so every copy of the SDK\n * agrees on it by VALUE rather than by identity.\n */\nexport const HTTP_ERROR_BRAND: unique symbol = Symbol.for(\"palbase.backend.httpError\");\n\n/**\n * Set on an `HttpError` the ENGINE built out of a driver failure, as opposed to\n * one the author constructed to ANSWER a request.\n *\n * The distinction cannot be read off the status, and 409 is why. The scaffold\n * teaches `throw new Conflict(\"title already taken\")` as the way to answer\n * (template/AGENTS.md), and the engine raises `UniqueViolation` — also a 409 —\n * when a write hits a unique index. Logging by status therefore either loses the\n * engine's event or writes an \"unhandled\" line every time an author takes the\n * documented path. Measured: it did the second.\n *\n * `Symbol.for` so the mark survives the bundle/runtime SDK split, the same way\n * {@link HTTP_ERROR_BRAND} does.\n */\nexport const ENGINE_RAISED: unique symbol = Symbol.for(\"palbase.backend.engineRaised\") as never;\n\n/** Mark `e` as engine-raised and return it, so a conversion site reads as one expression. */\nexport function markEngineRaised<E extends object>(e: E): E {\n (e as Record<symbol, unknown>)[ENGINE_RAISED] = true;\n return e;\n}\n\n/** Whether the engine built this error, rather than the author throwing it to answer. */\nexport function isEngineRaised(e: unknown): boolean {\n return typeof e === \"object\" && e !== null && (e as Record<symbol, unknown>)[ENGINE_RAISED] === true;\n}\n\n/**\n * Whether a thrown value is an HttpError from ANY copy of this SDK.\n *\n * The shape is checked as well as the brand: the brand says \"this claims to be\n * one of ours\", the fields say the envelope can actually be built from it, and\n * a half-formed object must fall through to the 500 path rather than produce a\n * malformed response.\n */\nexport function isHttpError(err: unknown): err is HttpError {\n if (typeof err !== \"object\" || err === null) return false;\n const e = err as Record<PropertyKey, unknown>;\n return (\n e[HTTP_ERROR_BRAND] === true &&\n typeof e.status === \"number\" &&\n typeof e.error === \"string\" &&\n typeof e.errorDescription === \"string\"\n );\n}\n\n/** HTTP error with structured error response format.\n *\n * The base class for the throwable error classes (`PalError`, `Conflict`,\n * `NotFound`, …). Construct one directly with `throw new HttpError(404,\n * \"todo_not_found\", \"No such todo\")`, or throw a named subclass\n * (`throw new NotFound(\"todo not found\")`). The runtime catches any `HttpError`\n * and emits the standard envelope; on the wire (and to iOS) it surfaces as\n * `BackendError.server(code, status, message, requestId)`.\n *\n * The optional `data` field carries a structured payload alongside the\n * standard envelope — for errors that need to ship extra context\n * (e.g. `new Conflict(\"locked\", \"title_locked\", { retryAfter: 30 })`). It rides\n * through to the iOS typed enum's associated value.\n */\nexport class HttpError extends Error {\n public readonly status: number;\n public readonly error: string;\n public readonly errorDescription: string;\n public readonly data?: unknown;\n /** See {@link HTTP_ERROR_BRAND} — how the engine recognises this across SDK copies. */\n public readonly [HTTP_ERROR_BRAND] = true;\n\n constructor(status: number, error: string, errorDescription: string, data?: unknown) {\n super(errorDescription);\n this.name = \"HttpError\";\n this.status = status;\n this.error = error;\n this.errorDescription = errorDescription;\n if (data !== undefined) {\n this.data = data;\n }\n }\n\n /**\n * Serialize to the standard Palbase error response format.\n * The `requestId` is injected by the runtime layer from the request context.\n * When called without arguments (e.g. JSON.stringify), request_id is omitted.\n * When `data` is set, it is appended as a strict-superset field.\n */\n toJSON(requestId?: string): {\n error: string;\n error_description: string;\n status: number;\n request_id?: string;\n data?: unknown;\n } {\n const result: {\n error: string;\n error_description: string;\n status: number;\n request_id?: string;\n data?: unknown;\n } = {\n error: this.error,\n error_description: this.errorDescription,\n status: this.status,\n };\n if (requestId) {\n result.request_id = requestId;\n }\n if (this.data !== undefined) {\n result.data = this.data;\n }\n return result;\n }\n}\n\n/**\n * Throw with a custom HTTP status + wire code. The general-purpose escape hatch\n * when none of the named classes (`Conflict`/`NotFound`/…) fits.\n *\n * @example\n * throw new PalError(418, \"teapot\", \"I'm a teapot\");\n */\nexport class PalError extends HttpError {\n constructor(status: number, code: string, description: string, data?: unknown) {\n super(status, code, description, data);\n this.name = \"PalError\";\n }\n}\n\n/** Base for the named status classes. Each subclass fixes its HTTP status; the\n * `code` defaults to the class's canonical wire code (overridable), and the\n * `message` defaults to a human-readable label (overridable). */\nabstract class NamedHttpError extends HttpError {\n protected constructor(\n status: number,\n defaultCode: string,\n name: string,\n message?: string,\n code?: string,\n data?: unknown,\n ) {\n super(status, code ?? defaultCode, message ?? defaultMessage(name), data);\n this.name = name;\n }\n}\n\n/** Derive a default human-readable message from a class name\n * (\"NotFound\" → \"Not found\", \"TooManyRequests\" → \"Too many requests\"). */\nfunction defaultMessage(name: string): string {\n const spaced = name.replace(/([a-z0-9])([A-Z])/g, \"$1 $2\");\n return spaced.charAt(0).toUpperCase() + spaced.slice(1).toLowerCase();\n}\n\n/**\n * 400 — the request was malformed or failed validation. Carries a fixed typed\n * payload: `new BadRequest({ fields: [{ field: \"email\", message: \"invalid\" }] })`.\n * The shape is declared once in the SDK so codegen surfaces `error.data.fields`\n * typed on the client.\n */\nexport class BadRequest extends NamedHttpError {\n public declare readonly data: BadRequestData;\n constructor(data: BadRequestData, message?: string) {\n super(400, \"bad_request\", \"BadRequest\", message, undefined, data);\n }\n}\n\n/** 401 — the caller is not authenticated. */\nexport class Unauthorized extends NamedHttpError {\n constructor(message?: string, code?: string, data?: unknown) {\n super(401, \"unauthorized\", \"Unauthorized\", message, code, data);\n }\n}\n\n/** 403 — the caller is authenticated but not allowed. */\nexport class Forbidden extends NamedHttpError {\n constructor(message?: string, code?: string, data?: unknown) {\n super(403, \"forbidden\", \"Forbidden\", message, code, data);\n }\n}\n\n/** 404 — the requested resource does not exist. */\nexport class NotFound extends NamedHttpError {\n constructor(message?: string, code?: string, data?: unknown) {\n super(404, \"not_found\", \"NotFound\", message, code, data);\n }\n}\n\n/** 409 — the request conflicts with the current state. */\nexport class Conflict extends NamedHttpError {\n constructor(message?: string, code?: string, data?: unknown) {\n super(409, \"conflict\", \"Conflict\", message, code, data);\n }\n}\n\n/**\n * 409 — a write was refused because it would duplicate an existing row.\n * Carries the NAME of the unique constraint Postgres named (`users_email_key`).\n *\n * The engine produces it: a statement rejected with SQLSTATE `23505` is\n * converted here rather than surfacing as an opaque driver error (see\n * `engine/db.ts`, `diagnosingDriver`). What that removes is the string match —\n * before this, the only way to act on a duplicate was to test the driver\n * message for \"duplicate key value violates unique constraint\", a contract\n * nobody signed that breaks on a Postgres upgrade, a locale, or a constraint\n * rename, silently and in production.\n *\n * THE NAME IS A FIELD AND STAYS OUT OF THE DEFAULT MESSAGE. The two are not\n * the same audience. `constraint` is read by the code that catches this — the\n * developer, who already knows the schema. `errorDescription` is the HTTP\n * response body, and an UNCAUGHT duplicate puts it in front of the\n * application's end user: `users_email_key` there discloses how the schema is\n * built to whoever sent the request. The platform's own data API took the same\n * decision one surface over and wrote down why —\n * `v2/internal/modules/database/internal/handler/pgerror.go:83-87` collapses\n * every 23xxx to a generic conflict, \"never disclose the constraint/column\n * name\". A thrower who WANTS the name on the wire passes it deliberately\n * (`new UniqueViolation(c, \\`\\${c} already exists\\`)`, or through `data`).\n *\n * @example\n * try {\n * await Database.public.users.insert({ email });\n * } catch (e) {\n * if (UniqueViolation.is(e) && e.constraint === \"users_email_key\") {\n * throw new Conflict(\"That email is taken\", \"email_taken\");\n * }\n * throw e;\n * }\n */\nexport class UniqueViolation extends Conflict {\n /**\n * Whether `e` is a unique violation — REGARDLESS of which copy of this SDK\n * constructed it.\n *\n * Use this instead of `instanceof`. Measured on a live stack: a controller\n * bundle INLINES its own copy of `@palbase/backend`, and the engine that\n * raises this error is the runtime's copy. Two copies, two class identities,\n * and `e instanceof UniqueViolation` is false in the one place a caller\n * writes it — a check that reads as correct and silently never matches.\n */\n static is(e: unknown): e is UniqueViolation {\n return (\n typeof e === \"object\" &&\n e !== null &&\n (e as { name?: unknown }).name === \"UniqueViolation\" &&\n typeof (e as { constraint?: unknown }).constraint === \"string\"\n );\n }\n\n /** The unique constraint the statement violated, as Postgres named it.\n * `\"\"` when the driver did not say which — see `engine/db.ts`. */\n public readonly constraint: string;\n\n constructor(constraint: string, message?: string, code?: string, data?: unknown) {\n super(message ?? \"Unique constraint violated\", code ?? \"unique_violation\", data);\n this.name = \"UniqueViolation\";\n this.constraint = constraint;\n }\n}\n\n/**\n * Eşzamanlılık yüzünden BAŞARISIZ OLAN, ama TEKRAR DENENİRSE başarılı olabilecek\n * hataların ortak yüzeyi (FR-036).\n *\n * `retryable: true` bir tahmin değil, Postgres'in söylediği şey: `40001` ve\n * `40P01` \"bu işlemi baştan çalıştır\" anlamına gelir. Kümenin DAR tutulması\n * kasıtlı — `23505` buraya girseydi, tekrar denemek aynı cevabı verir ve\n * döngü sonsuza kadar dönerdi.\n */\nexport interface RetryableError extends Error {\n readonly retryable: true;\n /** Beş karakterlik SQLSTATE — hangi eşzamanlılık hatası olduğunu SÖYLER. */\n readonly sqlstate: string;\n}\n\n/**\n * `e` tekrar denenebilir mi?\n *\n * `instanceof` DEĞİL şekil kontrolü — ve sebebi ÖLÇÜLMÜŞ (bkz. {@link\n * UniqueViolation.is}): bir controller bundle'ı kendi `@palbase/backend`\n * kopyasını inline'lıyor, hatayı fırlatan motor ise runtime'ın kopyası. İki\n * sınıf kimliği, ve `e instanceof SerializationFailure` yazan tek yerde\n * sessizce hiç eşleşmiyor.\n */\nexport function isRetryable(e: unknown): e is RetryableError {\n return (\n typeof e === \"object\" &&\n e !== null &&\n (e as { retryable?: unknown }).retryable === true &&\n isTransactionRollbackState((e as { sqlstate?: unknown }).sqlstate)\n );\n}\n\n/**\n * `40001 serialization_failure` — SERIALIZABLE ya da REPEATABLE READ altında\n * eşzamanlı bir işlem bu işlemi geçersiz kıldı.\n *\n * D-016: bu hata BLOKLANMIYOR, FIRLATILIYOR. Retry'sız bir izolasyon\n * yükseltmesi sunmak defect'tir — kullanıcıya çalışmayan bir düğme vermektir:\n * SERIALIZABLE'a çıkıp `40001`'i yakalamayan kod, önceden çalışan işlemleri\n * rastgele kaybetmeye başlar.\n */\nexport class SerializationFailure extends Conflict implements RetryableError {\n public readonly retryable = true as const;\n public readonly sqlstate: string;\n\n static is(e: unknown): e is SerializationFailure {\n return (\n typeof e === \"object\" && e !== null &&\n (e as { name?: unknown }).name === \"SerializationFailure\"\n );\n }\n\n constructor(sqlstate: string = SQLSTATE.serializationFailure, message?: string, data?: unknown) {\n super(\n message ??\n \"işlem eşzamanlı bir işlemle serileştirilemedi — aynı işlemi baştan çalıştırın \" +\n \"(karar okumaları ve yazmaları $atomic içine alıp { retry: n } verin)\",\n \"serialization_failure\",\n data,\n );\n this.name = \"SerializationFailure\";\n this.sqlstate = sqlstate;\n }\n}\n\n/**\n * `40P01 deadlock_detected` — iki işlem birbirinin kilidini bekliyordu;\n * Postgres birini seçip iptal etti.\n *\n * Bu hatayı GÖRMEK bir tasarım sinyali: kilit sırası deterministik değilse\n * tekrar denemek yalnız maliyeti öteler. Sırayı sabitleyen üç şey var ve\n * hangisinin geçerli olduğunu ELİNDEKİ belirler: satırların id'leri elindeyse\n * `Database.$lockRows(tablo, id'ler)`, elinde bir FİLTRE varsa\n * `Database.$lockRowsWhere(tablo, filtre)` (FR-037 — birincil anahtara göre\n * sıralayarak kilitler, yani `updateMany` ile aynı sırayı paylaşır), ya da çok\n * satırlı yazmanın CTE'si (FR-015).\n */\nexport class DeadlockDetected extends Conflict implements RetryableError {\n public readonly retryable = true as const;\n public readonly sqlstate: string;\n\n static is(e: unknown): e is DeadlockDetected {\n return (\n typeof e === \"object\" && e !== null &&\n (e as { name?: unknown }).name === \"DeadlockDetected\"\n );\n }\n\n constructor(sqlstate: string = SQLSTATE.deadlockDetected, message?: string, data?: unknown) {\n super(\n message ??\n \"deadlock: iki işlem birbirinin kilidini bekledi ve bu işlem iptal edildi — \" +\n \"kilit sırasını sabitleyin: id'ler elinizdeyse Database.$lockRows(tablo, id'ler), \" +\n \"elinizde bir filtre varsa Database.$lockRowsWhere(tablo, filtre) kullanın\",\n \"deadlock_detected\",\n data,\n );\n this.name = \"DeadlockDetected\";\n this.sqlstate = sqlstate;\n }\n}\n\n/** A single field-level validation failure carried by {@link BadRequest}. */\nexport interface FieldError {\n /** The offending field's name (dotted path for nested fields). */\n field: string;\n /** Human-readable reason the field failed. */\n message: string;\n}\n\n/** The fixed, typed payload {@link BadRequest} ships. */\nexport interface BadRequestData {\n /** The fields that failed validation. */\n fields: FieldError[];\n}\n\n/** The fixed, typed payload {@link TooManyRequests} ships. */\nexport interface TooManyRequestsData {\n /** Seconds the caller should wait before retrying. */\n retryAfter: number;\n}\n\n/**\n * 429 — the caller has exceeded the rate limit. Carries a fixed typed payload:\n * `new TooManyRequests({ retryAfter: 30 })`. The shape is declared once in the\n * SDK (error-registry pre-seed) so codegen surfaces `error.data.retryAfter`\n * typed on the client — no per-project definition needed.\n */\nexport class TooManyRequests extends NamedHttpError {\n public declare readonly data: TooManyRequestsData;\n constructor(data: TooManyRequestsData, message?: string) {\n super(429, \"too_many_requests\", \"TooManyRequests\", message, undefined, data);\n }\n}\n","// Resolve, at VALUE level, whether an `AuthSpec` requires authentication —\n// the runtime counterpart of the type-level `IsAuthed<TAuth>` (endpoint.ts).\n// Mirrors the runtime enforcement table (loader.go DefaultAuthConfig +\n// pipeline/auth.go): secure-by-default — auth is required UNLESS explicitly\n// disabled (`false` / `{ required: false }`).\nimport type { AuthSpec } from \"../endpoint.js\";\n\n/**\n * True when the effective auth requires a token. The cascade is resolved by the\n * caller (route ?? controller default ?? true) into a single `AuthSpec`; this\n * collapses it to a boolean.\n *\n * | AuthSpec | required |\n * |------------------------|----------|\n * | `true` | true |\n * | `false` | false |\n * | `{ required: true }` | true |\n * | `{ required: false }` | false |\n * | `{ role: \"admin\" }` | true |\n * | `{}` | true |\n */\nexport function isAuthEffectivelyRequired(auth: AuthSpec): boolean {\n if (typeof auth === \"boolean\") return auth;\n // Object form: only `required: false` opts out; everything else is secure.\n return auth.required !== false;\n}\n","// Discover + load controller files (`controllers/*.controller.ts` layout) and\n// flatten each `@Controller` CLASS into route entries the OpenAPI registry\n// consumes.\n//\n// A controller is now a CLASS decorated with `@Controller`/`@Get`/`@Post`/…\n// (see src/decorators/). `flattenController` reads the controller metadata via\n// `resolveController(class)` and the route metadata via `getRoutes(class)`, then\n// derives each route's full path + dotted operationId namespace (from the\n// class name) + effective auth + the per-source zod schemas\n// (body/query/params/headers) + the return schema.\nimport fastGlob from \"fast-glob\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { ZodTypeAny } from \"zod\";\n\nimport type { AuthSpec, RateLimitConfig } from \"../endpoint.js\";\nimport {\n resolveController,\n isController,\n resolveEffectiveAuth,\n type ControllerMeta,\n} from \"../decorators/controller.js\";\nimport { getRoutes, type ParamMeta, type ThrowDescriptor , getRoom } from \"../decorators/registry.js\";\nimport type { UploadConfig } from \"../decorators/upload.js\";\nimport type { SseConfig } from \"../decorators/sse.js\";\nimport {\n deriveControllerName,\n deriveControllerOperationId,\n joinControllerPath,\n} from \"./discover.js\";\n\nconst CONTROLLER_GLOB = \"controllers/**/*.ts\";\nconst DEFAULT_IGNORE = [\n \"**/*.test.ts\",\n \"**/*.spec.ts\",\n \"**/__tests__/**\",\n \"**/node_modules/**\",\n];\n\n/** A controller class (constructor). Kept loose — the only contract is that it\n * is a `@Controller`-decorated class, asserted via {@link isController}. */\nexport type ControllerClass = abstract new (...args: never[]) => object;\n\n/** A controller module loaded from a `controllers/*.controller.ts` file. */\nexport interface LoadedController {\n /** Path relative to projectRoot, posix-normalised. */\n relativePath: string;\n /** The default-exported `@Controller` class. */\n controller: ControllerClass;\n}\n\n/** The zod schemas one route declares, split by request source. Each is present\n * only when the matching parameter decorator (`@Body`/`@QueryParams`/`@Headers`) is. */\nexport interface RouteInputSchemas {\n body?: ZodTypeAny;\n query?: ZodTypeAny;\n /** A single `params` schema, when one is declared (currently only via\n * individual `@Param(\"id\")` decorators — collected into `pathParams`). */\n params?: ZodTypeAny;\n headers?: ZodTypeAny;\n}\n\n/** One flattened route: the HTTP verb, the FULL path (basePath + subpath), the\n * dotted operationId inputs (controllerName + fnName), the resolved effective\n * auth, the per-source input schemas, the named path params, the return\n * schema, and the rate limit. */\nexport interface FlatRoute {\n method: string;\n /** basePath + subpath, collapsed (the full route path). */\n fullPath: string;\n /** The controller method name — the method-name half of the dotted\n * operationId `<controllerName>.<fnName>`; also the worker dispatch key. */\n fnName: string;\n /** The dotted-operationId namespace derived from the controller CLASS name\n * (MembersController → \"members\"). \"\" when the derivation is empty — the\n * operationId then falls back to the flat verb-prefixed form. */\n controllerName: string;\n /** Resolved auth: route option ?? controller default ?? application default\n * ?? true (secure) — the cascade lives in `resolveEffectiveAuth`. */\n effectiveAuth: AuthSpec;\n /** All parameter metas for this route (ordered by index). */\n params: ParamMeta[];\n /** zod schemas split by request source (body/query/params/headers). */\n inputSchemas: RouteInputSchemas;\n /** Named path params (`@Param(\"id\")` → `\"id\"`), in declaration order. */\n pathParams: string[];\n /** The response zod schema (named by the method's return type), if any. */\n returnSchema?: ZodTypeAny;\n /** Per-route rate limit, if declared. */\n rateLimit?: RateLimitConfig;\n /** Inferred throw descriptors (recordThrows — the stager's throw analysis),\n * if any. Resolved against the error registry at emission time. */\n throws?: ThrowDescriptor[];\n /** Direct-storage upload config — present ONLY on `@Upload` routes. Its\n * presence MARKS this as an upload route through openapi + codegen (the bytes\n * go client→storage; the method body is the completion handler). */\n uploadConfig?: UploadConfig;\n /** Present ONLY on `@Sse` routes — the marker the converter turns into\n * `x-palbase-sse`. */\n sseConfig?: SseConfig;\n}\n\n/**\n * Flatten a `@Controller` class into its route entries. The full path is\n * `basePath + subpath`; the operationId is the DOTTED\n * `<controllerName>.<fnName>` id (PlacesController.importNearby →\n * places.importNearby) — matching the Go runtime (extract_meta.js derives the\n * namespace from the class name; generator.go joins). Effective auth resolves\n * the cascade (route ?? controller default ?? application default ??\n * secure-by-default) through the one resolver the route table asks too.\n */\nexport function flattenController(controller: ControllerClass): FlatRoute[] {\n // A room is server code that declares no HTTP surface: no verb, no path, no\n // params. It is loaded from the same directory as controllers because that is\n // where a project's server code lives, so this has to let it through rather\n // than refuse it as \"not a @Controller\". It contributes no routes.\n if (getRoom(controller) !== undefined && !isController(controller)) {\n return [];\n }\n\n const meta: ControllerMeta = resolveController(controller);\n const controllerName = deriveControllerName(controller.name);\n const routes = getRoutes(controller);\n\n // `@Sse` and `@Upload` on ONE method describe one handler twice.\n //\n // `recordRoute` PUSHES, so both decorators record their own route: one POST\n // that streams and one POST that is an upload authorize pre-flight, each\n // claiming the same body. Whichever the pipeline reads second wins, silently\n // — and the method body cannot be both a completion handler and a stream.\n //\n // Refused HERE rather than at deploy because the deploy gate receives only\n // route path strings (`RouteReporter.DeclaredRoutes() []string`) and cannot\n // see per-route markers; and because failing the BUILD puts the message in\n // front of the developer who wrote the pair, not in front of whoever\n // happened to run the next deploy.\n const kindsByMethod = new Map<string, { sse: boolean; upload: boolean }>();\n for (const route of routes) {\n const seen = kindsByMethod.get(route.fnName) ?? { sse: false, upload: false };\n if (route.options.sseConfig !== undefined) seen.sse = true;\n if (route.options.uploadConfig !== undefined) seen.upload = true;\n kindsByMethod.set(route.fnName, seen);\n }\n for (const [fnName, seen] of kindsByMethod) {\n if (seen.sse && seen.upload) {\n throw new Error(\n `${controller.name}.${fnName} declares BOTH @Sse and @Upload. ` +\n `One method cannot be both a streaming response and an upload completion ` +\n `handler — the two describe the same handler twice and the second one read ` +\n `silently wins. Split them into two methods.`,\n );\n }\n }\n\n const out: FlatRoute[] = [];\n for (const route of routes) {\n const fullPath = joinControllerPath(meta.basePath, route.subpath);\n const effectiveAuth = resolveEffectiveAuth(route.options.auth, meta.defaultAuth);\n const inputSchemas: RouteInputSchemas = {};\n const pathParams: string[] = [];\n for (const p of route.params) {\n switch (p.kind) {\n case \"body\":\n if (p.schema) inputSchemas.body = p.schema;\n break;\n case \"query\":\n if (p.schema) inputSchemas.query = p.schema;\n break;\n case \"headers\":\n if (p.schema) inputSchemas.headers = p.schema;\n break;\n case \"param\":\n if (p.name) pathParams.push(p.name);\n break;\n default:\n // user/optionalUser/client/requestId/traceId/req/uploadedObject — no\n // schema source. `uploadedObject` is the @Upload completion input; its\n // shape is the fixed UploadedObject type, not an author schema.\n break;\n }\n }\n // The decorators throw 403/429 without any `throw` in the method body, so\n // the stager's throw analysis cannot see them. Merge them in, deduped by\n // code (an explicitly analysed throw wins — it is the more specific fact).\n const seen = new Set((route.throws ?? []).map((t) => t.code));\n const allThrows = [\n ...(route.throws ?? []),\n ];\n\n out.push({\n method: route.method,\n fullPath,\n fnName: route.fnName,\n controllerName,\n effectiveAuth,\n params: route.params,\n inputSchemas,\n pathParams,\n ...(route.returnSchema !== undefined ? { returnSchema: route.returnSchema } : {}),\n ...(route.options.rateLimit !== undefined ? { rateLimit: route.options.rateLimit } : {}),\n ...(allThrows.length > 0 ? { throws: allThrows } : {}),\n ...(route.options.uploadConfig !== undefined ? { uploadConfig: route.options.uploadConfig } : {}),\n ...(route.options.sseConfig !== undefined ? { sseConfig: route.options.sseConfig } : {}),\n });\n }\n return out;\n}\n\n/** The operationId for a route — exposed so callers (convert/aggregate)\n * derive it consistently. Dotted `<controllerName>.<fnName>` (members.getUser)\n * when the namespace is derivable; flat verb-prefixed fallback otherwise —\n * byte-for-byte identical to the Go runtime's operationID() in\n * `internal/openapi/generator.go`. */\nexport function operationIdFor(route: FlatRoute): string {\n if (route.controllerName !== \"\" && route.fnName !== \"\") {\n return `${route.controllerName}.${route.fnName}`;\n }\n return deriveControllerOperationId(route.method, route.fullPath);\n}\n\n/** Discover controller files under projectRoot (sorted, deterministic). */\nexport async function discoverControllerFiles(projectRoot: string): Promise<string[]> {\n const matches = await fastGlob(CONTROLLER_GLOB, {\n cwd: projectRoot,\n ignore: DEFAULT_IGNORE,\n absolute: true,\n onlyFiles: true,\n dot: false,\n });\n const collator = new Intl.Collator(\"en\", { numeric: true, sensitivity: \"base\" });\n matches.sort(collator.compare);\n return matches;\n}\n\n/** Error thrown when a controller module fails to import or does not\n * default-export a `@Controller` class. */\nexport class ControllerLoadError extends Error {\n constructor(\n public readonly relativePath: string,\n message: string,\n public readonly cause?: unknown,\n ) {\n super(`${message} (file: ${relativePath})`);\n this.name = \"ControllerLoadError\";\n }\n}\n\n/** Load every discovered controller module, returning its `@Controller` class. */\nexport async function loadControllers(\n absolutePaths: string[],\n projectRoot: string,\n options: { timeoutMs?: number } = {},\n): Promise<LoadedController[]> {\n const timeoutMs = options.timeoutMs ?? 5_000;\n const out: LoadedController[] = [];\n for (const absolutePath of absolutePaths) {\n const relativePath = path.relative(projectRoot, absolutePath).split(path.sep).join(\"/\");\n let mod: { default?: unknown };\n try {\n mod = await withTimeout(\n () => import(pathToFileURL(absolutePath).href),\n timeoutMs,\n `import timed out after ${timeoutMs}ms`,\n );\n } catch (cause) {\n throw new ControllerLoadError(relativePath, \"failed to import controller module\", cause);\n }\n if (!isController(mod.default)) {\n throw new ControllerLoadError(\n relativePath,\n \"module has no default-exported @Controller class — every controller file must `export default` a @Controller-decorated class\",\n );\n }\n out.push({ relativePath, controller: mod.default as ControllerClass });\n }\n return out;\n}\n\nfunction withTimeout<T>(fn: () => Promise<T>, ms: number, message: string): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const t = setTimeout(() => reject(new Error(message)), ms);\n fn()\n .then((v) => {\n clearTimeout(t);\n resolve(v);\n })\n .catch((err) => {\n clearTimeout(t);\n reject(err);\n });\n });\n}\n","// `@Controller(basePath, options?)` — the class decorator that marks a class as\n// a Palbase backend controller. It stamps a non-enumerable `__palbase`\n// discriminant + the resolved controller metadata onto the class so the\n// deploy/dispatch pipeline (and `isController`/`resolveController`) can detect\n// and read it without `reflect-metadata`.\nimport type { AuthSpec } from \"../endpoint.js\";\nimport { getRoutes } from \"./registry.js\";\n\n/** The controller metadata stamped onto a `@Controller`-decorated class. The\n * default export of a `controllers/*.controller.ts` file resolves to this via\n * {@link resolveController}. */\nexport interface ControllerMeta {\n /** Discriminant the runtime + tooling read. */\n readonly __palbase: \"controller\";\n /** The base path every route in this controller mounts under (e.g. \"/todos\"). */\n basePath: string;\n /** Controller-level default auth, applied to routes that don't set their own\n * (`@Get(\"/x\", { auth })` overrides this). `undefined` ⇒ the application\n * default ({@link defineDefaultAuth}), and secure-by-default below that —\n * see {@link resolveEffectiveAuth} for the whole cascade. */\n defaultAuth?: AuthSpec;\n}\n\n/** Options accepted by `@Controller`. */\nexport interface ControllerOptions {\n /** Default auth for ALL routes in this controller (route-level overrides;\n * omitting it falls through to the application default declared with\n * {@link defineDefaultAuth}). */\n auth?: AuthSpec;\n}\n\n/** Symbol the controller metadata is stamped under. Symbol-keyed (not a string\n * property) so it never collides with an authored member and stays off the\n * structural surface. */\nexport const CONTROLLER_META: unique symbol = Symbol.for(\"palbase.backend.controllerMeta\");\n\n/**\n * Every class `@Controller` has decorated, in decoration order.\n *\n * This is what lets a controller file need no export at all: importing the file\n * runs the decorator, the decorator records the class here, and the runtime\n * reads the list. Without it the only handle on a class is its export name, so\n * every controller had to be exported AND named in a generated entry — the\n * ceremony NestJS still charges (`export class` PLUS\n * `@Module({controllers:[…]})`).\n *\n * Keyed on a well-known Symbol against globalThis rather than held in a module\n * variable, because a deployed bundle inlines its own copy of this package: two\n * copies would keep two lists, and the runtime would read the empty one. The\n * same hazard `runtimeHooks` exists for, closed the same way — one shared slot.\n */\nconst REGISTRY: unique symbol = Symbol.for(\"palbase.backend.allControllers\") as never;\n\nfunction registry(): unknown[] {\n const g = globalThis as unknown as Record<symbol, unknown[] | undefined>;\n const existing = g[REGISTRY];\n if (existing) return existing;\n const fresh: unknown[] = [];\n g[REGISTRY] = fresh;\n return fresh;\n}\n\n/**\n * The controller classes this process has loaded, in decoration order.\n *\n * Decoration order is import order, which the bundler fixes by sorting the\n * files it emits imports for — so two builds of one tree produce the same\n * route table, and route precedence is not a function of module-resolution\n * accidents.\n */\nexport function getRegisteredControllers(): readonly unknown[] {\n return registry().slice();\n}\n\n/** Empty the registry. For tests, which load controllers repeatedly. */\nexport function __resetRegisteredControllers(): void {\n registry().length = 0;\n}\n\n/**\n * The APPLICATION-level default auth.\n *\n * Held on globalThis under a well-known Symbol for exactly the reason\n * {@link REGISTRY} is: a deployed bundle inlines its own copy of this package,\n * and two copies keeping two defaults is how a security setting silently\n * becomes two different settings.\n */\nconst APP_DEFAULT_AUTH: unique symbol = Symbol.for(\"palbase.backend.appDefaultAuth\") as never;\n\nfunction appAuthSlot(): Record<symbol, AuthSpec | undefined> {\n return globalThis as unknown as Record<symbol, AuthSpec | undefined>;\n}\n\n/**\n * Declare the default auth for EVERY route in the application — the ring the\n * cascade consults when neither the route nor its controller says anything.\n *\n * The measured problem it removes: `auth: { verifiedEmail: true }` repeated by\n * hand on ten `@Controller`s. A security setting that must be repeated is a\n * security setting that will be forgotten — the eleventh controller opens the\n * door and nothing says so.\n *\n * Call it at MODULE SCOPE in a file the application imports (the controllers'\n * own barrel, or a module a controller imports). The cascade reads this slot\n * when the route table is built and when the spec is emitted — both of which\n * run after module loading — so declaration order does not matter, but being\n * imported at all does.\n *\n * @example\n * defineDefaultAuth({ verifiedEmail: true }); // every route, unless it says otherwise\n */\nexport function defineDefaultAuth(auth: AuthSpec): void {\n appAuthSlot()[APP_DEFAULT_AUTH] = auth;\n}\n\n/** The declared application default, or `undefined` when none was declared. */\nexport function getDefaultAuth(): AuthSpec | undefined {\n return appAuthSlot()[APP_DEFAULT_AUTH];\n}\n\n/** Clear the application default. For tests, which declare it repeatedly. */\nexport function __resetDefaultAuth(): void {\n delete appAuthSlot()[APP_DEFAULT_AUTH];\n}\n\n/**\n * THE auth cascade: route → controller → application → `true`.\n *\n * One function, every caller — the route table (`engine/router.ts`) and the\n * spec emitter (`openapi/controllers.ts`) ASK for the answer instead of\n * spelling the chain themselves. Two hand-written copies of a cascade is how\n * the build-time answer and the runtime answer come to disagree about who may\n * call an endpoint, and the disagreement shows up as an open door.\n *\n * The terminal `true` is secure-by-default and is load-bearing: a route that\n * declared nothing, under a controller that declared nothing, in an\n * application that declared nothing, is CLOSED.\n */\nexport function resolveEffectiveAuth(\n routeAuth: AuthSpec | undefined,\n controllerAuth: AuthSpec | undefined,\n): AuthSpec {\n return routeAuth ?? controllerAuth ?? getDefaultAuth() ?? true;\n}\n\n/** A class carrying the stamped controller metadata + discriminant. */\ninterface ControllerCarrier {\n __palbase?: \"controller\";\n [CONTROLLER_META]?: ControllerMeta;\n}\n\n/** The one path segment the platform owns. The isolate matches\n * `^/webhooks/([^/]+)$` on the raw request path BEFORE controller dispatch, so\n * anything a controller resolves to under it answers `404 webhook_not_found`\n * and never runs. */\nconst RESERVED_FIRST_SEGMENT = \"webhooks\";\n\n/**\n * Throw if `path` resolves under the reserved segment. Segments are compared the\n * way the isolate compares them — `split(\"/\").filter(Boolean)` — NOT by string\n * prefix, because empty segments collapse there: `@Controller(\"/\")` +\n * `@Post(\"/webhooks/x\")` composes to `//webhooks/x`, which the isolate serves as\n * `/webhooks/x`. A prefix check reads that as safe; the segment check does not.\n * `/webhooksy` stays allowed for the same reason — it is a different segment.\n *\n * Every verb is refused, not just the POST the isolate currently intercepts: the\n * reservation is of the URL namespace, so a `@Get(\"/webhooks/x\")` that happens\n * to work today would be silently shadowed the moment the isolate's method gate\n * widens. Refusing at build is recoverable; discovering it as a 404 is not.\n */\nfunction assertNotReserved(path: string, subject: string): void {\n const [first] = path.split(\"/\").filter(Boolean);\n if (first === RESERVED_FIRST_SEGMENT) {\n throw new Error(\n `${subject} resolves under the reserved /${RESERVED_FIRST_SEGMENT} path — ` +\n \"inbound webhooks are served there and would shadow this route\",\n );\n }\n}\n\n/**\n * Mark a class as a Palbase backend controller. `basePath` is the mount path\n * for every route the class declares; `options.auth` sets the controller-level\n * default auth (a route's own `auth` overrides it; absent ⇒ secure-by-default).\n *\n * @example\n * \\@Controller(\"/todos\", { auth: false })\n * export class TodosController {\n * \\@Get(\"\") list(\\@QueryParams(ListTodosQuery) q: ListTodosQuery): TodoSchema[] { … }\n * }\n */\nexport function Controller(basePath: string, options: ControllerOptions = {}) {\n return function <T extends abstract new (...args: never[]) => object>(ctor: T): T {\n // /webhooks/* belongs to the platform: the isolate matches the inbound\n // webhook route before controller dispatch, so a controller mounted here\n // would never receive a request. Silent shadowing is the failure mode this\n // whole change exists to remove, so refuse it at build.\n //\n // The COMPOSED path is what gets shadowed, not the base path. `@Controller(\"\")`\n // and `@Controller(\"/\")` both pass a base-path-only check while a\n // `@Post(\"/webhooks/stripe\")` inside them resolves to exactly the path the\n // isolate intercepts. Method decorators run BEFORE the class decorator (TS\n // evaluates members first), so every route this class declares is already in\n // the registry here — which is why the composed check can live at this one\n // seam instead of on the dispatch read path. The `@Controller(\"\") +\n // @Post(\"/webhooks/stripe\")` test is the lock on that ordering: if it ever\n // stopped holding, that test goes red.\n assertNotReserved(basePath, `@Controller(\"${basePath}\")`);\n for (const route of getRoutes(ctor)) {\n assertNotReserved(\n `${basePath}${route.subpath}`,\n `@${route.method}(\"${route.subpath}\") in @Controller(\"${basePath}\")`,\n );\n }\n\n const carrier = ctor as unknown as ControllerCarrier;\n const meta: ControllerMeta = {\n __palbase: \"controller\",\n basePath,\n ...(options.auth !== undefined ? { defaultAuth: options.auth } : {}),\n };\n // Non-enumerable so it doesn't leak onto instances / structural checks.\n Object.defineProperty(carrier, CONTROLLER_META, {\n value: meta,\n enumerable: false,\n configurable: true,\n writable: false,\n });\n // The bare `__palbase` discriminant is the cheap detection marker the\n // runtime/extractor checks; keep it readable but non-enumerable.\n Object.defineProperty(carrier, \"__palbase\", {\n value: \"controller\",\n enumerable: false,\n configurable: true,\n writable: false,\n });\n // Record it, so importing the file is enough and exporting is optional.\n // Guarded against a double-decoration re-entering the same class twice.\n const all = registry();\n if (!all.includes(ctor)) all.push(ctor);\n return ctor;\n };\n}\n\n/** True when `value` is a `@Controller`-decorated class (cheap discriminant\n * check). Accepts the class constructor (the default export of a controller\n * file). */\nexport function isController(value: unknown): boolean {\n if (typeof value !== \"function\" && (typeof value !== \"object\" || value === null)) {\n return false;\n }\n const carrier = value as ControllerCarrier;\n return carrier.__palbase === \"controller\" && carrier[CONTROLLER_META] !== undefined;\n}\n\n/** Read the resolved controller metadata off a `@Controller`-decorated class.\n * Throws if the class was not decorated — callers should gate with\n * {@link isController} first (the loader does). */\nexport function resolveController(ctor: unknown): ControllerMeta {\n if (typeof ctor !== \"function\" && (typeof ctor !== \"object\" || ctor === null)) {\n throw new TypeError(\"resolveController: value is not a class\");\n }\n const meta = (ctor as ControllerCarrier)[CONTROLLER_META];\n if (!meta) {\n throw new TypeError(\n \"resolveController: class is not a @Controller — decorate it with `@Controller(path)` and list it in a module's `controllers`\",\n );\n }\n return meta;\n}\n\n/**\n * A class the runtime constructs takes NO constructor parameters.\n *\n * ONE writer, four callers (controller, hook, job, webhook) and the build's own\n * check. Four hand-written copies of this message is how the four come to\n * disagree about what is refused — and the disagreement is silent, because a\n * class that slips past one of them still ends up with `undefined` fields.\n *\n * Why it is refused rather than injected: there is no container. The parameter\n * would arrive `undefined`, the code would compile, deploy, and fail at the\n * first request that touches the field — the most expensive place to learn it.\n */\nexport function assertZeroArgConstructor(Ctrl: unknown, kind: string): void {\n const arity = (Ctrl as { length?: number }).length ?? 0;\n if (arity === 0) return;\n\n // This function's NAME is a promise: whatever reaches it will be constructed\n // with a zero-argument constructor. Letting a class with parameters through\n // would make the name a lie — worse than the rename FR-029 guards against.\n //\n // An earlier design made it \"declaration-aware\": pass when metadata matches\n // arity. Measured, that re-opens the exact silence this exists to close.\n // ANY decorator triggers metadata emission, not just `@Injectable`:\n //\n // @Job(...) class J { constructor(repo: unknown) {} }\n // → design:paramtypes = [Object] ← matches arity\n //\n // so J would pass, then be built with `new J()`, and `repo` would be\n // `undefined` at the first scheduled run. Four tests in this repo asserted\n // that refusal and all four went red; the tests were right.\n //\n // What changed instead is the MESSAGE, and who calls this. Callers holding a\n // container resolve from it and never come here (router.ts, job/hook/webhook);\n // this stays the guard for the container-less path, and keeps its promise.\n const name = (Ctrl as { name?: string }).name ?? \"<anonymous>\";\n throw new Error(\n `${kind} ${name} declares a constructor with ${arity} parameter(s), and this path ` +\n `builds it with a zero-argument constructor — every parameter would arrive as ` +\n `undefined. If you meant to inject them, add @Injectable() to ${name} and list it ` +\n `in a module's providers, so the container builds it instead.`,\n );\n}\n","// Derive controller route metadata (dotted-operationId namespace +\n// flat-fallback operationId + full path) for the OpenAPI generator. Mirrors\n// the Go runtime (extract_meta.js + generator.go) byte-for-byte so the\n// codegen gate holds. Controller-file DISCOVERY (the fast-glob walk + import)\n// lives in controllers.ts; this module is pure derivation helpers.\n\n/** Capitalize the first character (ASCII), leaving the rest untouched. Mirrors\n * the Go runtime's `capitalize` in generator.go EXACTLY. */\nfunction capitalizeSegment(s: string): string {\n if (s.length === 0) return s;\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n/**\n * Derive the dotted-operationId NAMESPACE from a controller CLASS name: strip\n * ONE trailing \"Controller\" suffix (case-sensitive), then lower-case the first\n * letter. MembersController → \"members\", UserProfileController →\n * \"userProfile\", Members → \"members\". Returns \"\" when the derivation is empty\n * (a class named exactly \"Controller\", or an anonymous class) — callers then\n * fall back to the flat verb-prefixed id. Byte-for-byte identical to\n * `deriveControllerName` in the Go runtime's extract_meta.js.\n */\nexport function deriveControllerName(className: string): string {\n let name = className;\n if (name.endsWith(\"Controller\")) name = name.slice(0, -\"Controller\".length);\n if (name === \"\") return \"\";\n return name.charAt(0).toLowerCase() + name.slice(1);\n}\n\n/**\n * Derive the FLAT, verb-prefixed FALLBACK operationId for a route from its\n * HTTP method + FULL path — used only when the dotted\n * `<controllerName>.<fnName>` id cannot be derived (empty controllerName).\n * Byte-for-byte identical to the Go runtime's `flatOperationID(method, path)`\n * in `internal/openapi/generator.go`:\n *\n * lower(method) + Capitalize(seg) for each path segment,\n * with `{param}` → `ByParam`.\n *\n * Examples: (POST, /places/import) → \"postPlacesImport\";\n * (GET, /todos/{id}) → \"getTodosById\".\n */\nexport function deriveControllerOperationId(method: string, fullPath: string): string {\n const trimmed = fullPath.replace(/^\\//, \"\");\n const parts = trimmed.split(\"/\");\n let result = method.toLowerCase();\n for (const part of parts) {\n if (part === \"\") continue;\n const paramMatch = /^\\{(.+)\\}$/.exec(part);\n if (paramMatch) {\n result += \"By\" + capitalizeSegment(paramMatch[1]!);\n } else {\n result += capitalizeSegment(part);\n }\n }\n return result;\n}\n\n/**\n * Join a controller `basePath` with a route `subpath` into the full route path.\n * Collapses duplicate slashes and a trailing `/` so `(\"/places\", \"/\")` →\n * `/places` and `(\"/\", \"/\")` → `/`.\n */\nexport function joinControllerPath(basePath: string, subpath: string): string {\n const combined = `${basePath}/${subpath}`.replace(/\\/{2,}/g, \"/\");\n if (combined.length > 1 && combined.endsWith(\"/\")) {\n return combined.slice(0, -1);\n }\n return combined;\n}\n"],"mappings":"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","names":["exports","Object","defineProperty","value","splitWhen","flatten","items","reduce","collection","item","concat","predicate","result","groupIndex","push","exports","Object","defineProperty","value","isEnoentCodeError","error","code","exports","Object","defineProperty","value","createDirentFromStats","DirentFromStats","name","stats","isBlockDevice","bind","isCharacterDevice","isDirectory","isFIFO","isFile","isSocket","isSymbolicLink","exports","Object","defineProperty","value","convertPosixPathToPattern","convertWindowsPathToPattern","convertPathToPattern","escapePosixPath","escapeWindowsPath","escape","removeLeadingDotSegment","makeAbsolute","unixify","os","require","path","IS_WINDOWS_PLATFORM","platform","LEADING_DOT_SEGMENT_CHARACTERS_COUNT","POSIX_UNESCAPED_GLOB_SYMBOLS_RE","WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE","DOS_DEVICE_PATH_RE","WINDOWS_BACKSLASHES_RE","filepath","replace","cwd","resolve","entry","charAt","secondCharactery","slice","pattern","exports","module","isExtglob","str","match","exec","slice","index","length","exports","module","isExtglob","require","chars","strictCheck","str","index","pipeIndex","closeSquareIndex","closeCurlyIndex","closeParenIndex","backSlashIndex","length","test","indexOf","open","close","n","relaxedCheck","isGlob","options","check","strict","exports","module","isGlob","require","pathPosixDirname","posix","dirname","isWin32","platform","slash","backslash","enclosure","globby","escaped","globParent","str","opts","options","Object","assign","flipBackslashes","indexOf","replace","test","exports","isInteger","num","Number","trim","find","node","type","nodes","exceedsLimit","min","max","step","limit","escapeNode","block","n","escaped","value","encloseBrace","commas","ranges","invalid","isInvalidBrace","dollar","open","close","isOpenOrClose","reduce","acc","push","flatten","args","result","flat","arr","i","length","ele","Array","isArray","undefined","exports","module","utils","require","ast","options","stringify","node","parent","invalidBlock","escapeInvalid","isInvalidBrace","invalidNode","invalid","output","value","isOpenOrClose","nodes","child","exports","module","num","trim","Number","isFinite","exports","module","isNumber","require","toRegexRange","min","max","options","TypeError","String","opts","relaxZeros","strictZeros","relax","shorthand","capture","wrap","cacheKey","cache","hasOwnProperty","result","a","Math","b","abs","isPadded","hasPadding","state","positives","negatives","maxLen","length","newMin","splitToPatterns","collatePatterns","neg","pos","onlyNegative","filterPatterns","onlyPositive","intersected","subpatterns","concat","join","splitToRanges","nines","zeros","stop","countNines","stops","Set","add","countZeros","sort","compare","rangeToPattern","start","pattern","count","digits","zipped","zip","i","startDigit","stopDigit","toCharacterClass","tok","ranges","tokens","prev","obj","pop","push","string","toQuantifier","padZeros","arr","comparison","prefix","intersection","ele","contains","key","val","some","len","Number","slice","repeat","integer","pow","str","test","value","diff","clearCache","exports","module","util","require","toRegexRange","isObject","val","Array","isArray","transform","toNumber","value","Number","String","isValidValue","isNumber","num","isInteger","zeros","input","index","slice","stringify","start","end","options","pad","maxLength","dash","padStart","toMaxLen","negative","length","toSequence","parts","maxLen","negatives","sort","a","b","positives","prefix","capture","result","map","v","join","wrap","toRange","isNumbers","fromCharCode","stop","toRegex","rangeError","args","RangeError","inspect","invalidRange","strictRanges","invalidStep","step","TypeError","fillNumbers","descending","startString","endString","stepString","Math","max","abs","padded","format","push","range","fillLetters","charCodeAt","min","fill","opts","exports","module","fill","require","utils","compile","ast","options","walk","node","parent","invalidBlock","isInvalidBrace","invalidNode","invalid","escapeInvalid","prefix","output","isOpen","value","isClose","console","log","type","prev","nodes","ranges","args","reduce","range","wrap","toRegex","strictZeros","length","child","exports","module","fill","require","stringify","utils","append","queue","stash","enclose","result","concat","length","flatten","map","ele","item","Array","isArray","value","push","expand","ast","options","rangeLimit","undefined","walk","node","parent","p","q","type","invalid","dollar","pop","nodes","ranges","args","reduce","exceedsLimit","step","RangeError","range","encloseBrace","block","i","child","exports","module","MAX_LENGTH","CHAR_0","CHAR_9","CHAR_UPPERCASE_A","CHAR_LOWERCASE_A","CHAR_UPPERCASE_Z","CHAR_LOWERCASE_Z","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_ASTERISK","CHAR_AMPERSAND","CHAR_AT","CHAR_BACKSLASH","CHAR_BACKTICK","CHAR_CARRIAGE_RETURN","CHAR_CIRCUMFLEX_ACCENT","CHAR_COLON","CHAR_COMMA","CHAR_DOLLAR","CHAR_DOT","CHAR_DOUBLE_QUOTE","CHAR_EQUAL","CHAR_EXCLAMATION_MARK","CHAR_FORM_FEED","CHAR_FORWARD_SLASH","CHAR_HASH","CHAR_HYPHEN_MINUS","CHAR_LEFT_ANGLE_BRACKET","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_LINE_FEED","CHAR_NO_BREAK_SPACE","CHAR_PERCENT","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_ANGLE_BRACKET","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_SQUARE_BRACKET","CHAR_SEMICOLON","CHAR_SINGLE_QUOTE","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_VERTICAL_LINE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","exports","module","stringify","require","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","TypeError","opts","max","maxLength","Math","min","length","SyntaxError","ast","type","nodes","stack","block","prev","brackets","index","depth","value","advance","push","node","parent","keepEscaping","next","pop","open","keepQuotes","dollar","slice","brace","close","commas","ranges","shift","siblings","range","invalid","args","before","forEach","isOpen","isClose","indexOf","splice","exports","module","stringify","require","compile","expand","parse","braces","input","options","output","Array","isArray","pattern","result","create","push","concat","nodupes","Set","noempty","filter","Boolean","length","require_constants","exports","module","path","require","WIN_SLASH","WIN_NO_SLASH","DEFAULT_MAX_EXTGLOB_RECURSION","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","__proto__","alnum","alpha","ascii","blank","cntrl","digit","graph","lower","print","punct","space","upper","word","xdigit","MAX_LENGTH","REGEX_BACKSLASH","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REGEX_SPECIAL_CHARS_GLOBAL","REGEX_REMOVE_BACKSLASH","REPLACEMENTS","CHAR_0","CHAR_9","CHAR_UPPERCASE_A","CHAR_LOWERCASE_A","CHAR_UPPERCASE_Z","CHAR_LOWERCASE_Z","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_ASTERISK","CHAR_AMPERSAND","CHAR_AT","CHAR_BACKWARD_SLASH","CHAR_CARRIAGE_RETURN","CHAR_CIRCUMFLEX_ACCENT","CHAR_COLON","CHAR_COMMA","CHAR_DOT","CHAR_DOUBLE_QUOTE","CHAR_EQUAL","CHAR_EXCLAMATION_MARK","CHAR_FORM_FEED","CHAR_FORWARD_SLASH","CHAR_GRAVE_ACCENT","CHAR_HASH","CHAR_HYPHEN_MINUS","CHAR_LEFT_ANGLE_BRACKET","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_LINE_FEED","CHAR_NO_BREAK_SPACE","CHAR_PERCENT","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_ANGLE_BRACKET","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_SQUARE_BRACKET","CHAR_SEMICOLON","CHAR_SINGLE_QUOTE","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_VERTICAL_LINE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","SEP","sep","extglobChars","chars","type","open","close","globChars","win32","require_utils","exports","path","require","win32","process","platform","REGEX_BACKSLASH","REGEX_REMOVE_BACKSLASH","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_GLOBAL","isObject","val","Array","isArray","hasRegexChars","str","test","isRegexChar","length","escapeRegex","replace","toPosixSlashes","removeBackslashes","match","supportsLookbehinds","segs","version","slice","split","map","Number","isWindows","options","windows","sep","escapeLast","input","char","lastIdx","idx","lastIndexOf","removePrefix","state","output","startsWith","prefix","wrapOutput","prepend","contains","append","negated","exports","module","utils","require","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","isPrefix","isGlobstar","Infinity","scan","input","options","opts","length","scanToEnd","parts","slashes","tokens","str","index","start","lastIndex","isBrace","isBracket","isGlob","isExtglob","braceEscaped","backslashes","negated","negatedExtglob","finished","braces","prev","value","eos","peek","charCodeAt","advance","next","push","noext","isExtglobChar","nonegate","noparen","base","prefix","glob","slice","unescape","removeBackslashes","state","maxDepth","prevIndex","idx","n","i","require_parse","exports","module","constants","require","utils","MAX_LENGTH","POSIX_REGEX_SOURCE","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REPLACEMENTS","expandRange","args","options","sort","value","join","RegExp","ex","map","v","escapeRegex","syntaxError","type","char","splitTopLevel","input","parts","bracket","paren","quote","escaped","ch","push","isPlainBranch","branch","test","normalizeSimpleBranch","trim","changed","slice","replace","hasRepeatedCharPrefixOverlap","branches","values","filter","Boolean","i","length","j","a","b","repeat","startsWith","parseRepeatedExtglob","pattern","requireEnd","body","end","getStarExtglobSequenceOutput","index","chars","match","source","repeatedExtglobRecursion","depth","analyzeRepeatedExtglob","maxExtglobRecursion","risky","max","DEFAULT_MAX_EXTGLOB_RECURSION","some","safeOutput","parse","TypeError","opts","maxLength","Math","min","len","SyntaxError","bos","output","prepend","tokens","capture","win32","isWindows","PLATFORM_CHARS","globChars","EXTGLOB_CHARS","extglobChars","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","dot","nodot","qmarkNoDot","star","bash","noext","noextglob","state","start","consumed","prefix","backtrack","negated","brackets","braces","parens","quotes","removePrefix","extglobs","stack","prev","eos","peek","n","advance","remaining","consume","num","append","token","negate","count","increment","decrement","pop","tok","isBrace","isExtglob","extglob","inner","extglobOpen","conditions","startIndex","tokensIndex","open","extglobClose","literal","analysis","undefined","suffix","close","rest","extglobStar","includes","expression","fastpaths","negatedExtglob","backslashes","m","esc","first","unescape","contains","wrapOutput","next","exec","slashes","posix","idx","lastIndexOf","pre","indexOf","keepQuotes","strictBrackets","nobracket","prevValue","literalBrackets","hasRegexChars","nobrace","outputIndex","brace","dots","arr","range","unshift","comma","out","toks","t","isGroup","supportsLookbehinds","Error","nonegate","regex","noglobstar","prior","before","isStart","afterStar","after","strictSlashes","escapeLast","NO_DOTS","slashDot","create","str","exports","module","path","require","scan","parse","utils","constants","isObject","val","Array","isArray","picomatch","glob","options","returnState","fns","map","input","arrayMatcher","str","isMatch","state","isState","tokens","TypeError","opts","posix","isWindows","regex","compileRe","makeRe","isIgnored","ignore","ignoreOpts","onMatch","onResult","matcher","returnObject","match","output","test","result","onIgnore","format","toPosixSlashes","capture","matchBase","basename","exec","Boolean","RegExp","patterns","pattern","p","fastpaths","returnOutput","prepend","contains","append","source","negated","toRegex","parsed","flags","nocase","err","debug","require_picomatch","exports","module","require","exports","module","util","require","braces","picomatch","utils","isEmptyString","v","hasBraces","index","indexOf","micromatch","list","patterns","options","concat","omit","Set","keep","items","negatives","onResult","state","add","output","i","length","isMatch","String","negated","negatedExtglob","item","matched","match","delete","result","matches","filter","has","failglob","Error","join","nonull","nullglob","unescape","map","p","replace","matcher","pattern","str","any","not","push","contains","TypeError","inspect","Array","isArray","some","includes","startsWith","slice","matchKeys","obj","isObject","keys","Object","res","key","every","all","capture","glob","input","posix","isWindows","regex","makeRe","exec","toPosixSlashes","args","scan","parse","nobrace","braceExpand","expand","exports","Object","defineProperty","value","isAbsolute","partitionAbsoluteAndRelative","removeDuplicateSlashes","matchAny","convertPatternsToRe","makeRe","getPatternParts","expandBraceExpansion","expandPatternsWithBraceExpansion","isAffectDepthOfReadingPattern","endsWithSlashGlobStar","hasGlobStar","getBaseDirectory","isPatternRelatedToParentDirectory","getPatternsOutsideCurrentDirectory","getPatternsInsideCurrentDirectory","getPositivePatterns","getNegativePatterns","isPositivePattern","isNegativePattern","convertToNegativePattern","convertToPositivePattern","isDynamicPattern","isStaticPattern","path","require","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","pattern","options","caseSensitiveMatch","includes","test","extglob","braceExpansion","hasBraceExpansion","openingBraceIndex","indexOf","closingBraceIndex","braceContent","slice","startsWith","patterns","filter","flipBackslashes","endsWith","basename","reduce","collection","concat","braces","expand","nodupes","keepEscaping","sort","a","b","length","parts","scan","assign","unshift","map","entry","patternsRe","some","patternRe","replace","absolute","relative","push","exports","module","Stream","require","PassThrough","slice","Array","prototype","merge2","streamsQueue","args","call","arguments","merging","options","length","isArray","pipe","pop","doEnd","end","doPipeError","pipeError","objectMode","highWaterMark","mergedStream","addStream","i","len","push","pauseStreams","mergeStream","streams","shift","process","nextTick","endStream","pipesCount","next","stream","onend","removeListener","onerror","err","emit","_readableState","endEmitted","on","resume","setMaxListeners","add","apply","pause","Error","exports","Object","defineProperty","value","merge","merge2","require","streams","mergedStream","forEach","stream","once","error","emit","propagateCloseEventToSources","exports","Object","defineProperty","value","isEmpty","isString","input","require_utils","exports","Object","defineProperty","value","string","stream","pattern","path","fs","errno","array","require","exports","Object","defineProperty","value","convertPatternGroupToTask","convertPatternGroupsToTasks","groupPatternsByBaseDirectory","getNegativePatternsAsPositive","getPositivePatterns","convertPatternsToTasks","generate","utils","require","input","settings","patterns","processPatterns","ignore","positivePatterns","negativePatterns","staticPatterns","filter","pattern","isStaticPattern","dynamicPatterns","isDynamicPattern","staticTasks","dynamicTasks","concat","braceExpansion","expandPatternsWithBraceExpansion","baseNameMatch","map","includes","removeDuplicateSlashes","positive","negative","dynamic","tasks","patternsOutsideCurrentDirectory","getPatternsOutsideCurrentDirectory","patternsInsideCurrentDirectory","getPatternsInsideCurrentDirectory","outsideCurrentDirectoryGroup","insideCurrentDirectoryGroup","push","getNegativePatterns","convertToPositivePattern","group","reduce","collection","base","getBaseDirectory","keys","convertToNegativePattern","exports","Object","defineProperty","value","read","path","settings","callback","fs","lstat","lstatError","callFailureCallback","isSymbolicLink","followSymbolicLink","callSuccessCallback","stat","statError","throwErrorOnBrokenSymbolicLink","markSymbolicLink","error","result","exports","Object","defineProperty","value","read","path","settings","lstat","fs","lstatSync","isSymbolicLink","followSymbolicLink","stat","statSync","markSymbolicLink","error","throwErrorOnBrokenSymbolicLink","require_fs","exports","Object","defineProperty","value","createFileSystemAdapter","FILE_SYSTEM_ADAPTER","fs","require","lstat","stat","lstatSync","statSync","fsMethods","undefined","assign","exports","Object","defineProperty","value","fs","require","Settings","_options","followSymbolicLink","_getValue","createFileSystemAdapter","markSymbolicLink","throwErrorOnBrokenSymbolicLink","option","default","exports","Object","defineProperty","value","statSync","stat","Settings","async","require","sync","settings_1","default","path","optionsOrSettingsOrCallback","callback","read","getSettings","optionsOrSettings","settings","settingsOrOptions","exports","module","promise","queueMicrotask","bind","window","global","cb","Promise","resolve","then","catch","err","setTimeout","exports","module","runParallel","queueMicrotask","require","tasks","cb","results","pending","keys","isSync","Array","isArray","length","Object","done","err","end","each","i","result","forEach","key","task","require_constants","exports","Object","defineProperty","value","IS_SUPPORT_READDIR_WITH_FILE_TYPES","NODE_PROCESS_VERSION_PARTS","process","versions","node","split","undefined","Error","MAJOR_VERSION","Number","parseInt","MINOR_VERSION","SUPPORTED_MAJOR_VERSION","SUPPORTED_MINOR_VERSION","IS_MATCHED_BY_MAJOR","IS_MATCHED_BY_MAJOR_AND_MINOR","require_fs","exports","Object","defineProperty","value","createDirentFromStats","DirentFromStats","name","stats","isBlockDevice","bind","isCharacterDevice","isDirectory","isFIFO","isFile","isSocket","isSymbolicLink","require_utils","exports","Object","defineProperty","value","fs","require","exports","Object","defineProperty","value","joinPathSegments","a","b","separator","endsWith","require_async","exports","Object","defineProperty","value","readdir","readdirWithFileTypes","read","fsStat","require","rpl","constants_1","utils","common","directory","settings","callback","stats","IS_SUPPORT_READDIR_WITH_FILE_TYPES","fs","withFileTypes","readdirError","dirents","callFailureCallback","entries","map","dirent","name","path","joinPathSegments","pathSegmentSeparator","followSymbolicLinks","callSuccessCallback","tasks","entry","makeRplTaskEntry","rplError","rplEntries","done","isSymbolicLink","stat","statError","throwErrorOnBrokenSymbolicLink","createDirentFromStats","names","fsStatSettings","error","result","require_sync","exports","Object","defineProperty","value","readdir","readdirWithFileTypes","read","fsStat","require","constants_1","utils","common","directory","settings","stats","IS_SUPPORT_READDIR_WITH_FILE_TYPES","dirents","fs","readdirSync","withFileTypes","map","dirent","entry","name","path","joinPathSegments","pathSegmentSeparator","isSymbolicLink","followSymbolicLinks","statSync","createDirentFromStats","error","throwErrorOnBrokenSymbolicLink","names","entryPath","fsStatSettings","require_fs","exports","Object","defineProperty","value","createFileSystemAdapter","FILE_SYSTEM_ADAPTER","fs","require","lstat","stat","lstatSync","statSync","readdir","readdirSync","fsMethods","undefined","assign","require_settings","exports","Object","defineProperty","value","path","require","fsStat","fs","Settings","_options","followSymbolicLinks","_getValue","createFileSystemAdapter","pathSegmentSeparator","sep","stats","throwErrorOnBrokenSymbolicLink","fsStatSettings","followSymbolicLink","option","default","require_out","exports","Object","defineProperty","value","Settings","scandirSync","scandir","async","require","sync","settings_1","default","path","optionsOrSettingsOrCallback","callback","read","getSettings","optionsOrSettings","settings","settingsOrOptions","exports","module","reusify","Constructor","head","tail","get","current","next","release","obj","exports","module","reusify","require","fastqueue","context","worker","_concurrency","Error","cache","Task","queueHead","queueTail","_running","errorHandler","self","push","drain","noop","saturated","pause","paused","concurrency","value","release","running","resume","idle","length","getQueue","unshift","empty","kill","killAndDrain","error","abort","current","counter","next","tasks","done","get","callback","call","worked","holder","val","handler","err","result","queueAsPromised","asyncWrapper","arg","cb","then","res","queue","pushCb","unshiftCb","drained","p","Promise","resolve","reject","catch","process","nextTick","previousDrain","promise","require_common","exports","Object","defineProperty","value","joinPathSegments","replacePathSegmentSeparator","isAppliedFilter","isFatalError","settings","error","errorFilter","filter","filepath","separator","split","join","a","b","endsWith","exports","Object","defineProperty","value","common","require","Reader","_root","_settings","replacePathSegmentSeparator","pathSegmentSeparator","default","require_async","exports","Object","defineProperty","value","events_1","require","fsScandir","fastq","common","reader_1","AsyncReader","default","_root","_settings","_scandir","scandir","_emitter","EventEmitter","_queue","_worker","bind","concurrency","_isFatalError","_isDestroyed","drain","emit","read","setImmediate","_pushToQueue","basePath","isDestroyed","destroy","Error","killAndDrain","onEntry","callback","on","onError","once","onEnd","directory","base","queueItem","push","error","_handleError","item","done","fsScandirSettings","entries","undefined","entry","_handleEntry","isFatalError","fullpath","path","joinPathSegments","name","pathSegmentSeparator","isAppliedFilter","entryFilter","_emitEntry","dirent","isDirectory","deepFilter","require_async","exports","Object","defineProperty","value","async_1","require","AsyncProvider","_root","_settings","_reader","default","_storage","read","callback","onError","error","callFailureCallback","onEntry","entry","push","onEnd","callSuccessCallback","entries","require_stream","exports","Object","defineProperty","value","stream_1","require","async_1","StreamProvider","_root","_settings","_reader","default","_stream","Readable","objectMode","read","destroy","isDestroyed","onError","error","emit","onEntry","entry","push","onEnd","require_sync","exports","Object","defineProperty","value","fsScandir","require","common","reader_1","SyncReader","default","arguments","_scandir","scandirSync","_storage","_queue","Set","read","_pushToQueue","_root","_settings","basePath","_handleQueue","directory","base","add","item","values","_handleDirectory","entries","fsScandirSettings","entry","_handleEntry","error","_handleError","isFatalError","fullpath","path","undefined","joinPathSegments","name","pathSegmentSeparator","isAppliedFilter","entryFilter","_pushToStorage","dirent","isDirectory","deepFilter","push","require_sync","exports","Object","defineProperty","value","sync_1","require","SyncProvider","_root","_settings","_reader","default","read","require_settings","exports","Object","defineProperty","value","path","require","fsScandir","Settings","_options","basePath","_getValue","undefined","concurrency","Number","POSITIVE_INFINITY","deepFilter","entryFilter","errorFilter","pathSegmentSeparator","sep","fsScandirSettings","followSymbolicLinks","fs","stats","throwErrorOnBrokenSymbolicLink","option","default","require_out","exports","Object","defineProperty","value","Settings","walkStream","walkSync","walk","async_1","require","stream_1","sync_1","settings_1","default","directory","optionsOrSettingsOrCallback","callback","getSettings","read","optionsOrSettings","settings","provider","settingsOrOptions","require_reader","exports","Object","defineProperty","value","path","require","fsStat","utils","Reader","_settings","_fsStatSettings","Settings","followSymbolicLink","followSymbolicLinks","fs","throwErrorOnBrokenSymbolicLink","_getFullEntryPath","filepath","resolve","cwd","_makeEntry","stats","pattern","entry","name","dirent","createDirentFromStats","_isFatalError","error","errno","isEnoentCodeError","suppressErrors","default","require_stream","exports","Object","defineProperty","value","stream_1","require","fsStat","fsWalk","reader_1","ReaderStream","default","arguments","_walkStream","walkStream","_stat","stat","dynamic","root","options","static","patterns","filepaths","map","_getFullEntryPath","stream","PassThrough","objectMode","_write","index","_enc","done","_getEntry","then","entry","entryFilter","push","length","end","catch","i","write","filepath","pattern","_getStat","stats","_makeEntry","error","errorFilter","Promise","resolve","reject","_fsStatSettings","require_async","exports","Object","defineProperty","value","fsWalk","require","reader_1","stream_1","ReaderAsync","default","arguments","_walkAsync","walk","_readerStream","_settings","dynamic","root","options","Promise","resolve","reject","error","entries","static","patterns","stream","once","on","entry","push","exports","Object","defineProperty","value","utils","require","Matcher","_patterns","_settings","_micromatchOptions","_storage","_fillStorage","pattern","segments","_getPatternSegments","sections","_splitSegmentsIntoSections","push","complete","length","parts","getPatternParts","map","part","dynamic","isDynamicPattern","patternRe","makeRe","array","splitWhen","segment","hasGlobStar","default","exports","Object","defineProperty","value","matcher_1","require","PartialMatcher","default","match","filepath","parts","split","levels","length","patterns","_storage","filter","info","complete","segments","pattern","section","sections","every","part","index","segment","dynamic","patternRe","test","exports","Object","defineProperty","value","utils","require","partial_1","DeepFilter","_settings","_micromatchOptions","getFilter","basePath","positive","negative","matcher","_getMatcher","negativeRe","_getNegativePatternsRe","entry","_filter","patterns","default","affectDepthOfReadingPatterns","filter","pattern","isAffectDepthOfReadingPattern","convertPatternsToRe","_isSkippedByDeep","path","_isSkippedSymbolicLink","filepath","removeLeadingDotSegment","_isSkippedByPositivePatterns","_isSkippedByNegativePatterns","entryPath","deep","Infinity","_getEntryLevel","entryPathDepth","split","length","basePathDepth","followSymbolicLinks","dirent","isSymbolicLink","baseNameMatch","match","patternsRe","matchAny","exports","Object","defineProperty","value","utils","require","EntryFilter","_settings","_micromatchOptions","index","Map","getFilter","positive","negative","absoluteNegative","relativeNegative","pattern","partitionAbsoluteAndRelative","patterns","all","convertPatternsToRe","absolute","assign","dot","relative","entry","_filter","filepath","path","removeLeadingDotSegment","unique","_isDuplicateEntry","_onlyFileFilter","_onlyDirectoryFilter","isMatched","_isMatchToPatternsSet","dirent","isDirectory","_createIndexRecord","has","set","undefined","onlyFiles","isFile","onlyDirectories","_isMatchToPatterns","isMatchedByRelativeNegative","isMatchedByAbsoluteNegative","_isMatchToAbsoluteNegative","patternsRe","length","fullpath","makeAbsolute","cwd","matchAny","default","exports","Object","defineProperty","value","utils","require","ErrorFilter","_settings","getFilter","error","_isNonFatalError","errno","isEnoentCodeError","suppressErrors","default","require_entry","exports","Object","defineProperty","value","utils","require","EntryTransformer","_settings","getTransformer","entry","_transform","filepath","path","absolute","makeAbsolute","cwd","unixify","markDirectories","dirent","isDirectory","objectMode","assign","default","exports","Object","defineProperty","value","path","require","deep_1","entry_1","error_1","entry_2","Provider","_settings","errorFilter","default","entryFilter","_getMicromatchOptions","deepFilter","entryTransformer","_getRootDirectory","task","resolve","cwd","base","_getReaderOptions","basePath","pathSegmentSeparator","concurrency","getFilter","positive","negative","followSymbolicLinks","fs","stats","throwErrorOnBrokenSymbolicLink","transform","getTransformer","dot","matchBase","baseNameMatch","nobrace","braceExpansion","nocase","caseSensitiveMatch","noext","extglob","noglobstar","globstar","posix","strictSlashes","require_async","exports","Object","defineProperty","value","async_1","require","provider_1","ProviderAsync","default","arguments","_reader","_settings","read","task","root","_getRootDirectory","options","_getReaderOptions","entries","api","map","entry","transform","dynamic","static","patterns","require_stream","exports","Object","defineProperty","value","stream_1","require","stream_2","provider_1","ProviderStream","default","arguments","_reader","_settings","read","task","root","_getRootDirectory","options","_getReaderOptions","source","api","destination","Readable","objectMode","once","error","emit","on","entry","transform","destroy","dynamic","static","patterns","require_sync","exports","Object","defineProperty","value","fsStat","require","fsWalk","reader_1","ReaderSync","default","arguments","_walkSync","walkSync","_statSync","statSync","dynamic","root","options","static","patterns","entries","pattern","filepath","_getFullEntryPath","entry","_getEntry","entryFilter","push","stats","_getStat","_makeEntry","error","errorFilter","_fsStatSettings","require_sync","exports","Object","defineProperty","value","sync_1","require","provider_1","ProviderSync","default","arguments","_reader","_settings","read","task","root","_getRootDirectory","options","_getReaderOptions","entries","api","map","transform","dynamic","static","patterns","require_settings","exports","Object","defineProperty","value","DEFAULT_FILE_SYSTEM_ADAPTER","fs","require","os","CPU_COUNT","Math","max","cpus","length","lstat","lstatSync","stat","statSync","readdir","readdirSync","Settings","_options","absolute","_getValue","baseNameMatch","braceExpansion","caseSensitiveMatch","concurrency","cwd","process","deep","Infinity","dot","extglob","followSymbolicLinks","_getFileSystemMethods","globstar","ignore","markDirectories","objectMode","onlyDirectories","onlyFiles","stats","suppressErrors","throwErrorOnBrokenSymbolicLink","unique","concat","option","undefined","methods","assign","default","require_out","exports","module","taskManager","require","async_1","stream_1","sync_1","settings_1","utils","FastGlob","source","options","assertPatternsInput","works","getWorks","default","result","Promise","all","array","flatten","glob","globSync","sync","globStream","stream","async","merge","generateTasks","patterns","concat","settings","generate","isDynamicPattern","pattern","escapePath","path","escape","convertPathToPattern","posix","escapePosixPath","convertPosixPathToPattern","win32","escapeWindowsPath","convertWindowsPathToPattern","_Provider","tasks","provider","map","read","input","isValidSource","every","item","string","isString","isEmpty","TypeError","import_zod_to_openapi","ROUTES","Symbol","for","ROOM","Symbol","for","RETURN_BUFFER","Symbol","for","THROWS_BUFFER","carrierOf","target","ctor","getRoutes","ctor","carrier","carrierOf","routes","ROUTES","returnBuffer","RETURN_BUFFER","route","buffered","fnName","returnSchema","undefined","throwsBuffer","THROWS_BUFFER","throws","map","r","params","slice","getRoom","ctor","carrier","carrierOf","Object","prototype","hasOwnProperty","call","ROOM","undefined","import_zod","import_zod_to_openapi","import_zod","SQLSTATE","Object","freeze","serializationFailure","deadlockDetected","queryCancelled","commandGuardFailed","HTTP_ERROR_BRAND","Symbol","for","HttpError","Error","status","error","errorDescription","data","HTTP_ERROR_BRAND","name","undefined","toJSON","requestId","result","error_description","request_id","extendZodWithOpenApi","z","ERROR_REGISTRY","Symbol","for","BUILTIN_DATA_SCHEMAS","bad_request","object","fields","array","field","string","message","too_many_requests","retryAfter","number","int","getErrorRegistry","g","globalThis","m","Map","code","status","className","dataSchema","set","builtin","dataDigest","digestOf","digestOf","code","dataSchema","TMP_REF","tmpRegistry","OpenAPIRegistry","register","z","object","data","openapi","generated","OpenApiGeneratorV31","definitions","generateComponents","out","components","schemas","digest","JSON","stringify","includes","Error","isAuthEffectivelyRequired","auth","required","CONTROLLER_META","Symbol","for","APP_DEFAULT_AUTH","Symbol","for","appAuthSlot","globalThis","getDefaultAuth","appAuthSlot","APP_DEFAULT_AUTH","resolveEffectiveAuth","routeAuth","controllerAuth","getDefaultAuth","isController","value","carrier","__palbase","CONTROLLER_META","undefined","resolveController","ctor","TypeError","meta","capitalizeSegment","s","length","charAt","toUpperCase","slice","deriveControllerName","className","name","endsWith","toLowerCase","deriveControllerOperationId","method","fullPath","trimmed","replace","parts","split","result","part","paramMatch","exec","joinControllerPath","basePath","subpath","combined","CONTROLLER_GLOB","DEFAULT_IGNORE","flattenController","controller","getRoom","undefined","isController","meta","resolveController","controllerName","deriveControllerName","name","routes","getRoutes","kindsByMethod","Map","route","seen","get","fnName","sse","upload","options","sseConfig","uploadConfig","set","Error","out","fullPath","joinControllerPath","basePath","subpath","effectiveAuth","resolveEffectiveAuth","auth","defaultAuth","inputSchemas","pathParams","p","params","kind","schema","body","query","headers","push","Set","throws","map","t","code","allThrows","method","returnSchema","rateLimit","length","operationIdFor","deriveControllerOperationId","discoverControllerFiles","projectRoot","matches","fastGlob","cwd","ignore","absolute","onlyFiles","dot","collator","Intl","Collator","numeric","sensitivity","sort","compare","ControllerLoadError","relativePath","message","cause","loadControllers","absolutePaths","timeoutMs","absolutePath","path","relative","split","sep","join","mod","withTimeout","pathToFileURL","href","default","fn","ms","Promise","resolve","reject","setTimeout","then","v","clearTimeout","catch","err","extendZodWithOpenApi","z","ERROR_ENVELOPE_REF","BEARER_SCHEME","registerErrorEnvelope","registry","envelope","object","error","string","describe","error_description","status","number","int","request_id","openapi","description","register","registerControllerRoute","route","registerOperation","method","path","fullPath","operationId","operationIdFor","body","inputSchemas","query","headers","pathParams","returnSchema","effectiveAuth","throws","uploadConfig","undefined","sseConfig","op","endpointPath","toLowerCase","refined","isRefinedSchema","requestBody","required","content","schema","paramsSchema","length","Object","fromEntries","map","n","request","params","resolvedThrows","resolveThrows","returnKind","_def","typeName","noContent","successResponse","frame","unknown","responses","errorResponse","typedErrorResponses","security","isAuthEffectivelyRequired","registerPath","tags","summary","keys","errorExtension","bucket","pathTemplate","getErrorRegistry","seen","Set","out","t","has","code","entry","get","add","push","name","dataSchema","resolved","lowerCamel","hasData","charAt","slice","byStatus","Map","group","set","sort","a","b","schemas","envelopeSchemaObject","oneOf","String","join","literal","data","obj","toSchemaObject","properties","type","const","TMP_REF","tmpRegistry","OpenAPIRegistry","generated","OpenApiGeneratorV31","definitions","generateComponents","components","Error","$ref","firstUntypedField","shape","field","sub","entries","kind","assertRoomFieldsTyped","pattern","room","event","events","message","meta","messages","roomExtension","graceMs","extendZodWithOpenApi","z","aggregateOpenAPI","projectRoot","options","loadedControllers","loadControllers","discoverControllerFiles","timeoutMs","controllerRoutes","flatMap","lc","flattenController","controller","allOperationIds","map","r","operationIdFor","detectDuplicateOperationIds","registry","OpenAPIRegistry","registerErrorEnvelope","registerComponent","BEARER_SCHEME","type","scheme","description","route","registerControllerRoute","roomExt","room","getRoom","undefined","assertRoomFieldsTyped","pattern","slug","replace","roomExtension","name","schema","componentName","register","generator","OpenApiGeneratorV31","definitions","document","generateDocument","openapi","info","title","version","Object","keys","length","endpointCount","operationIds","seen","Set","id","has","Error","add"]}