@next-font/plugin-vite 1.3.0 → 1.3.2

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 (61) hide show
  1. package/dist/{escodegen-DyMV8y05.js → escodegen-Bg18t0PG.js} +1 -1
  2. package/dist/index-67dkpRNt.js +79 -0
  3. package/dist/{index-zBNqiqVh.js → index-zyY5iDP6.js} +1 -1
  4. package/dist/index.js +1 -3
  5. package/package.json +1 -1
  6. package/dist/escodegen-BgZHbZlI.js +0 -5298
  7. package/dist/escodegen-BgZHbZlI.js.map +0 -1
  8. package/dist/escodegen-CE_3K55m.js +0 -5298
  9. package/dist/escodegen-CE_3K55m.js.map +0 -1
  10. package/dist/escodegen-CcjHPeru.js +0 -5298
  11. package/dist/escodegen-CcjHPeru.js.map +0 -1
  12. package/dist/escodegen-CvnByJYb.js +0 -5298
  13. package/dist/escodegen-CvnByJYb.js.map +0 -1
  14. package/dist/escodegen-CyyYl3Ru.js +0 -5298
  15. package/dist/escodegen-CyyYl3Ru.js.map +0 -1
  16. package/dist/escodegen-D-UqarBv.js +0 -5298
  17. package/dist/escodegen-D-UqarBv.js.map +0 -1
  18. package/dist/escodegen-D1ExFsOu.js +0 -5298
  19. package/dist/escodegen-D1ExFsOu.js.map +0 -1
  20. package/dist/escodegen-DhS8gxED.js +0 -5298
  21. package/dist/escodegen-DhS8gxED.js.map +0 -1
  22. package/dist/escodegen-o7sNOZ-d.js +0 -5298
  23. package/dist/escodegen-o7sNOZ-d.js.map +0 -1
  24. package/dist/index-B6M1BKem.js +0 -3852
  25. package/dist/index-B6M1BKem.js.map +0 -1
  26. package/dist/index-BBnr2Ij5.js +0 -6970
  27. package/dist/index-BBnr2Ij5.js.map +0 -1
  28. package/dist/index-BUL3xgiH.js +0 -3851
  29. package/dist/index-BUL3xgiH.js.map +0 -1
  30. package/dist/index-Bgbg2WYx.js +0 -6970
  31. package/dist/index-Bgbg2WYx.js.map +0 -1
  32. package/dist/index-BiSz54YK.js +0 -6970
  33. package/dist/index-BiSz54YK.js.map +0 -1
  34. package/dist/index-BjC6MXVP.js +0 -3851
  35. package/dist/index-BjC6MXVP.js.map +0 -1
  36. package/dist/index-BknOo0Zr.js +0 -6970
  37. package/dist/index-BknOo0Zr.js.map +0 -1
  38. package/dist/index-C-zBTUD_.js +0 -3852
  39. package/dist/index-C-zBTUD_.js.map +0 -1
  40. package/dist/index-C0NlOFro.js +0 -3851
  41. package/dist/index-C0NlOFro.js.map +0 -1
  42. package/dist/index-C7SN2-vF.js +0 -6970
  43. package/dist/index-C7SN2-vF.js.map +0 -1
  44. package/dist/index-CLLYtm7D.js +0 -3853
  45. package/dist/index-CLLYtm7D.js.map +0 -1
  46. package/dist/index-CZZp2BW0.js +0 -79
  47. package/dist/index-CyE6nKxy.js +0 -3856
  48. package/dist/index-CyE6nKxy.js.map +0 -1
  49. package/dist/index-D-QcVmRl.js +0 -3850
  50. package/dist/index-D-QcVmRl.js.map +0 -1
  51. package/dist/index-D15_W2rR.js +0 -6970
  52. package/dist/index-D15_W2rR.js.map +0 -1
  53. package/dist/index-Dgy5wars.js +0 -6970
  54. package/dist/index-Dgy5wars.js.map +0 -1
  55. package/dist/index-Dob7-G92.js +0 -6970
  56. package/dist/index-Dob7-G92.js.map +0 -1
  57. package/dist/index-PLAGUBZD.js +0 -6970
  58. package/dist/index-PLAGUBZD.js.map +0 -1
  59. package/dist/index-y2m5QvKY.js +0 -3851
  60. package/dist/index-y2m5QvKY.js.map +0 -1
  61. package/dist/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CyE6nKxy.js","sources":["../src/manifest.ts","../../../node_modules/.bun/@rollup+pluginutils@5.2.0/node_modules/@rollup/pluginutils/dist/es/index.js","../../../node_modules/.bun/loader-utils@3.3.1/node_modules/loader-utils/lib/isUrlRequest.js","../../../node_modules/.bun/loader-utils@3.3.1/node_modules/loader-utils/lib/urlToRequest.js","../../../node_modules/.bun/loader-utils@3.3.1/node_modules/loader-utils/lib/hash/wasm-hash.js","../../../node_modules/.bun/loader-utils@3.3.1/node_modules/loader-utils/lib/hash/xxhash64.js","../../../node_modules/.bun/loader-utils@3.3.1/node_modules/loader-utils/lib/hash/BatchedHash.js","../../../node_modules/.bun/loader-utils@3.3.1/node_modules/loader-utils/lib/hash/md4.js","../../../node_modules/.bun/loader-utils@3.3.1/node_modules/loader-utils/lib/hash/BulkUpdateDecorator.js","../../../node_modules/.bun/loader-utils@3.3.1/node_modules/loader-utils/lib/getHashDigest.js","../../../node_modules/.bun/loader-utils@3.3.1/node_modules/loader-utils/lib/interpolateName.js","../../../node_modules/.bun/loader-utils@3.3.1/node_modules/loader-utils/lib/index.js","../../../node_modules/.bun/@jridgewell+sourcemap-codec@1.5.4/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs","../../../node_modules/.bun/magic-string@0.30.17/node_modules/magic-string/dist/magic-string.es.mjs","../../../node_modules/.bun/decode-uri-component@0.4.1/node_modules/decode-uri-component/index.js","../../../node_modules/.bun/filter-obj@5.1.0/node_modules/filter-obj/index.js","../../../node_modules/.bun/split-on-first@3.0.0/node_modules/split-on-first/index.js","../../../node_modules/.bun/query-string@9.2.2/node_modules/query-string/base.js","../../../node_modules/next/dist/build/webpack/loaders/next-font-loader/postcss-next-font.js","../src/utils.ts","../src/postcss.ts","../src/plugins/loader.ts","../src/plugins/manifest.ts","../../../node_modules/.bun/estree-walker@3.0.3/node_modules/estree-walker/src/walker.js","../../../node_modules/.bun/estree-walker@3.0.3/node_modules/estree-walker/src/sync.js","../../../node_modules/.bun/estree-walker@3.0.3/node_modules/estree-walker/src/index.js","../src/ast/find-functions-outside-module-scope.ts","../src/ast/font-functions-collector.ts","../../../node_modules/.bun/stable-hash@0.0.6/node_modules/stable-hash/dist/index.mjs","../src/constants.ts","../src/ast/utils.ts","../src/ast/font-imports-generator.ts","../src/ast/transform.ts","../src/plugins/transformer.ts","../src/index.ts"],"sourcesContent":["// From https://github.com/vercel/next.js/blob/a90f0c91d6063d25be513779cb21fb8892ba4201/packages/next/src/build/webpack/plugins/next-font-manifest-plugin.ts\n\n/**\n * When calling font functions with next/font, you can specify if you'd like the font to be preloaded (true by default).\n * e.g.: const inter = Inter({ subsets: ['latin'], preload: true })\n *\n * In that case, next-font-loader will emit the font file as [name].p.[ext] instead of [name].[ext]\n * This function returns those files from an array that can include both preloaded and non-preloaded files.\n */\nexport function getPreloadedFontFiles(fontFiles: string[]) {\n return fontFiles.filter((file: string) => /\\.p\\.(woff|woff2|eot|ttf|otf)$/.test(file))\n}\n\n/**\n * Similarly to getPreloadedFontFiles, but returns true if some of the files includes -s in the name.\n * This means that a font is using size adjust in its fallback font.\n * This was added to enable adding data-size-adjust=\"true\" to the dom, used by the Google Aurora team to collect statistics.\n */\nexport function getPageIsUsingSizeAdjust(fontFiles: string[]) {\n return fontFiles.some((file) => file.includes('-s'))\n}\n","import { extname, win32, posix, isAbsolute, resolve } from 'path';\nimport { walk } from 'estree-walker';\nimport pm from 'picomatch';\n\nconst addExtension = function addExtension(filename, ext = '.js') {\n let result = `${filename}`;\n if (!extname(filename))\n result += ext;\n return result;\n};\n\nconst extractors = {\n ArrayPattern(names, param) {\n for (const element of param.elements) {\n if (element)\n extractors[element.type](names, element);\n }\n },\n AssignmentPattern(names, param) {\n extractors[param.left.type](names, param.left);\n },\n Identifier(names, param) {\n names.push(param.name);\n },\n MemberExpression() { },\n ObjectPattern(names, param) {\n for (const prop of param.properties) {\n // @ts-ignore Typescript reports that this is not a valid type\n if (prop.type === 'RestElement') {\n extractors.RestElement(names, prop);\n }\n else {\n extractors[prop.value.type](names, prop.value);\n }\n }\n },\n RestElement(names, param) {\n extractors[param.argument.type](names, param.argument);\n }\n};\nconst extractAssignedNames = function extractAssignedNames(param) {\n const names = [];\n extractors[param.type](names, param);\n return names;\n};\n\nconst blockDeclarations = {\n const: true,\n let: true\n};\nclass Scope {\n constructor(options = {}) {\n this.parent = options.parent;\n this.isBlockScope = !!options.block;\n this.declarations = Object.create(null);\n if (options.params) {\n options.params.forEach((param) => {\n extractAssignedNames(param).forEach((name) => {\n this.declarations[name] = true;\n });\n });\n }\n }\n addDeclaration(node, isBlockDeclaration, isVar) {\n if (!isBlockDeclaration && this.isBlockScope) {\n // it's a `var` or function node, and this\n // is a block scope, so we need to go up\n this.parent.addDeclaration(node, isBlockDeclaration, isVar);\n }\n else if (node.id) {\n extractAssignedNames(node.id).forEach((name) => {\n this.declarations[name] = true;\n });\n }\n }\n contains(name) {\n return this.declarations[name] || (this.parent ? this.parent.contains(name) : false);\n }\n}\nconst attachScopes = function attachScopes(ast, propertyName = 'scope') {\n let scope = new Scope();\n walk(ast, {\n enter(n, parent) {\n const node = n;\n // function foo () {...}\n // class Foo {...}\n if (/(?:Function|Class)Declaration/.test(node.type)) {\n scope.addDeclaration(node, false, false);\n }\n // var foo = 1\n if (node.type === 'VariableDeclaration') {\n const { kind } = node;\n const isBlockDeclaration = blockDeclarations[kind];\n node.declarations.forEach((declaration) => {\n scope.addDeclaration(declaration, isBlockDeclaration, true);\n });\n }\n let newScope;\n // create new function scope\n if (node.type.includes('Function')) {\n const func = node;\n newScope = new Scope({\n parent: scope,\n block: false,\n params: func.params\n });\n // named function expressions - the name is considered\n // part of the function's scope\n if (func.type === 'FunctionExpression' && func.id) {\n newScope.addDeclaration(func, false, false);\n }\n }\n // create new for scope\n if (/For(?:In|Of)?Statement/.test(node.type)) {\n newScope = new Scope({\n parent: scope,\n block: true\n });\n }\n // create new block scope\n if (node.type === 'BlockStatement' && !parent.type.includes('Function')) {\n newScope = new Scope({\n parent: scope,\n block: true\n });\n }\n // catch clause has its own block scope\n if (node.type === 'CatchClause') {\n newScope = new Scope({\n parent: scope,\n params: node.param ? [node.param] : [],\n block: true\n });\n }\n if (newScope) {\n Object.defineProperty(node, propertyName, {\n value: newScope,\n configurable: true\n });\n scope = newScope;\n }\n },\n leave(n) {\n const node = n;\n if (node[propertyName])\n scope = scope.parent;\n }\n });\n return scope;\n};\n\n// Helper since Typescript can't detect readonly arrays with Array.isArray\nfunction isArray(arg) {\n return Array.isArray(arg);\n}\nfunction ensureArray(thing) {\n if (isArray(thing))\n return thing;\n if (thing == null)\n return [];\n return [thing];\n}\n\nconst normalizePathRegExp = new RegExp(`\\\\${win32.sep}`, 'g');\nconst normalizePath = function normalizePath(filename) {\n return filename.replace(normalizePathRegExp, posix.sep);\n};\n\nfunction getMatcherString(id, resolutionBase) {\n if (resolutionBase === false || isAbsolute(id) || id.startsWith('**')) {\n return normalizePath(id);\n }\n // resolve('') is valid and will default to process.cwd()\n const basePath = normalizePath(resolve(resolutionBase || ''))\n // escape all possible (posix + win) path characters that might interfere with regex\n .replace(/[-^$*+?.()|[\\]{}]/g, '\\\\$&');\n // Note that we use posix.join because:\n // 1. the basePath has been normalized to use /\n // 2. the incoming glob (id) matcher, also uses /\n // otherwise Node will force backslash (\\) on windows\n return posix.join(basePath, normalizePath(id));\n}\nconst createFilter = function createFilter(include, exclude, options) {\n const resolutionBase = options && options.resolve;\n const getMatcher = (id) => id instanceof RegExp\n ? id\n : {\n test: (what) => {\n // this refactor is a tad overly verbose but makes for easy debugging\n const pattern = getMatcherString(id, resolutionBase);\n const fn = pm(pattern, { dot: true });\n const result = fn(what);\n return result;\n }\n };\n const includeMatchers = ensureArray(include).map(getMatcher);\n const excludeMatchers = ensureArray(exclude).map(getMatcher);\n if (!includeMatchers.length && !excludeMatchers.length)\n return (id) => typeof id === 'string' && !id.includes('\\0');\n return function result(id) {\n if (typeof id !== 'string')\n return false;\n if (id.includes('\\0'))\n return false;\n const pathId = normalizePath(id);\n for (let i = 0; i < excludeMatchers.length; ++i) {\n const matcher = excludeMatchers[i];\n if (matcher instanceof RegExp) {\n matcher.lastIndex = 0;\n }\n if (matcher.test(pathId))\n return false;\n }\n for (let i = 0; i < includeMatchers.length; ++i) {\n const matcher = includeMatchers[i];\n if (matcher instanceof RegExp) {\n matcher.lastIndex = 0;\n }\n if (matcher.test(pathId))\n return true;\n }\n return !includeMatchers.length;\n };\n};\n\nconst reservedWords = 'break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public';\nconst builtins = 'arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl';\nconst forbiddenIdentifiers = new Set(`${reservedWords} ${builtins}`.split(' '));\nforbiddenIdentifiers.add('');\nconst makeLegalIdentifier = function makeLegalIdentifier(str) {\n let identifier = str\n .replace(/-(\\w)/g, (_, letter) => letter.toUpperCase())\n .replace(/[^$_a-zA-Z0-9]/g, '_');\n if (/\\d/.test(identifier[0]) || forbiddenIdentifiers.has(identifier)) {\n identifier = `_${identifier}`;\n }\n return identifier || '_';\n};\n\nfunction stringify(obj) {\n return (JSON.stringify(obj) || 'undefined').replace(/[\\u2028\\u2029]/g, (char) => `\\\\u${`000${char.charCodeAt(0).toString(16)}`.slice(-4)}`);\n}\nfunction serializeArray(arr, indent, baseIndent) {\n let output = '[';\n const separator = indent ? `\\n${baseIndent}${indent}` : '';\n for (let i = 0; i < arr.length; i++) {\n const key = arr[i];\n output += `${i > 0 ? ',' : ''}${separator}${serialize(key, indent, baseIndent + indent)}`;\n }\n return `${output}${indent ? `\\n${baseIndent}` : ''}]`;\n}\nfunction serializeObject(obj, indent, baseIndent) {\n let output = '{';\n const separator = indent ? `\\n${baseIndent}${indent}` : '';\n const entries = Object.entries(obj);\n for (let i = 0; i < entries.length; i++) {\n const [key, value] = entries[i];\n const stringKey = makeLegalIdentifier(key) === key ? key : stringify(key);\n output += `${i > 0 ? ',' : ''}${separator}${stringKey}:${indent ? ' ' : ''}${serialize(value, indent, baseIndent + indent)}`;\n }\n return `${output}${indent ? `\\n${baseIndent}` : ''}}`;\n}\nfunction serialize(obj, indent, baseIndent) {\n if (typeof obj === 'object' && obj !== null) {\n if (Array.isArray(obj))\n return serializeArray(obj, indent, baseIndent);\n if (obj instanceof Date)\n return `new Date(${obj.getTime()})`;\n if (obj instanceof RegExp)\n return obj.toString();\n return serializeObject(obj, indent, baseIndent);\n }\n if (typeof obj === 'number') {\n if (obj === Infinity)\n return 'Infinity';\n if (obj === -Infinity)\n return '-Infinity';\n if (obj === 0)\n return 1 / obj === Infinity ? '0' : '-0';\n if (obj !== obj)\n return 'NaN'; // eslint-disable-line no-self-compare\n }\n if (typeof obj === 'symbol') {\n const key = Symbol.keyFor(obj);\n // eslint-disable-next-line no-undefined\n if (key !== undefined)\n return `Symbol.for(${stringify(key)})`;\n }\n if (typeof obj === 'bigint')\n return `${obj}n`;\n return stringify(obj);\n}\n// isWellFormed exists from Node.js 20\nconst hasStringIsWellFormed = 'isWellFormed' in String.prototype;\nfunction isWellFormedString(input) {\n // @ts-expect-error String::isWellFormed exists from ES2024. tsconfig lib is set to ES6\n if (hasStringIsWellFormed)\n return input.isWellFormed();\n // https://github.com/tc39/proposal-is-usv-string/blob/main/README.md#algorithm\n return !/\\p{Surrogate}/u.test(input);\n}\nconst dataToEsm = function dataToEsm(data, options = {}) {\n var _a, _b;\n const t = options.compact ? '' : 'indent' in options ? options.indent : '\\t';\n const _ = options.compact ? '' : ' ';\n const n = options.compact ? '' : '\\n';\n const declarationType = options.preferConst ? 'const' : 'var';\n if (options.namedExports === false ||\n typeof data !== 'object' ||\n Array.isArray(data) ||\n data instanceof Date ||\n data instanceof RegExp ||\n data === null) {\n const code = serialize(data, options.compact ? null : t, '');\n const magic = _ || (/^[{[\\-\\/]/.test(code) ? '' : ' '); // eslint-disable-line no-useless-escape\n return `export default${magic}${code};`;\n }\n let maxUnderbarPrefixLength = 0;\n for (const key of Object.keys(data)) {\n const underbarPrefixLength = (_b = (_a = /^(_+)/.exec(key)) === null || _a === void 0 ? void 0 : _a[0].length) !== null && _b !== void 0 ? _b : 0;\n if (underbarPrefixLength > maxUnderbarPrefixLength) {\n maxUnderbarPrefixLength = underbarPrefixLength;\n }\n }\n const arbitraryNamePrefix = `${'_'.repeat(maxUnderbarPrefixLength + 1)}arbitrary`;\n let namedExportCode = '';\n const defaultExportRows = [];\n const arbitraryNameExportRows = [];\n for (const [key, value] of Object.entries(data)) {\n if (key === makeLegalIdentifier(key)) {\n if (options.objectShorthand)\n defaultExportRows.push(key);\n else\n defaultExportRows.push(`${key}:${_}${key}`);\n namedExportCode += `export ${declarationType} ${key}${_}=${_}${serialize(value, options.compact ? null : t, '')};${n}`;\n }\n else {\n defaultExportRows.push(`${stringify(key)}:${_}${serialize(value, options.compact ? null : t, '')}`);\n if (options.includeArbitraryNames && isWellFormedString(key)) {\n const variableName = `${arbitraryNamePrefix}${arbitraryNameExportRows.length}`;\n namedExportCode += `${declarationType} ${variableName}${_}=${_}${serialize(value, options.compact ? null : t, '')};${n}`;\n arbitraryNameExportRows.push(`${variableName} as ${JSON.stringify(key)}`);\n }\n }\n }\n const arbitraryExportCode = arbitraryNameExportRows.length > 0\n ? `export${_}{${n}${t}${arbitraryNameExportRows.join(`,${n}${t}`)}${n}};${n}`\n : '';\n const defaultExportCode = `export default${_}{${n}${t}${defaultExportRows.join(`,${n}${t}`)}${n}};${n}`;\n return `${namedExportCode}${arbitraryExportCode}${defaultExportCode}`;\n};\n\nfunction exactRegex(str, flags) {\n return new RegExp(`^${escapeRegex(str)}$`, flags);\n}\nfunction prefixRegex(str, flags) {\n return new RegExp(`^${escapeRegex(str)}`, flags);\n}\nconst escapeRegexRE = /[-/\\\\^$*+?.()|[\\]{}]/g;\nfunction escapeRegex(str) {\n return str.replace(escapeRegexRE, '\\\\$&');\n}\n\n// TODO: remove this in next major\nvar index = {\n addExtension,\n attachScopes,\n createFilter,\n dataToEsm,\n exactRegex,\n extractAssignedNames,\n makeLegalIdentifier,\n normalizePath,\n prefixRegex\n};\n\nexport { addExtension, attachScopes, createFilter, dataToEsm, index as default, exactRegex, extractAssignedNames, makeLegalIdentifier, normalizePath, prefixRegex };\n//# sourceMappingURL=index.js.map\n","\"use strict\";\n\nconst path = require(\"path\");\n\nfunction isUrlRequest(url) {\n // An URL is not an request if\n\n // 1. Allow `data URI`\n if (/^data:/i.test(url)) {\n return true;\n }\n\n // 2. It's an absolute url and it is not `windows` path like `C:\\dir\\file`\n if (/^[a-z][a-z0-9+.-]*:/i.test(url) && !path.win32.isAbsolute(url)) {\n return false;\n }\n\n // 3. It's a protocol-relative\n if (/^\\/\\//.test(url)) {\n return false;\n }\n\n // 4. It's some kind of url for a template\n if (/^#/.test(url)) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = isUrlRequest;\n","\"use strict\";\n\n// we can't use path.win32.isAbsolute because it also matches paths starting with a forward slash\nconst matchNativeWin32Path = /^[A-Z]:[/\\\\]|^\\\\\\\\/i;\n\nfunction urlToRequest(url, root) {\n // Do not rewrite an empty url\n if (url === \"\") {\n return \"\";\n }\n\n const moduleRequestRegex = /^[^?]*~/;\n let request;\n\n if (matchNativeWin32Path.test(url)) {\n // absolute windows path, keep it\n request = url;\n } else if (root !== undefined && root !== false && /^\\//.test(url)) {\n // if root is set and the url is root-relative\n switch (typeof root) {\n // 1. root is a string: root is prefixed to the url\n case \"string\":\n // special case: `~` roots convert to module request\n if (moduleRequestRegex.test(root)) {\n request = root.replace(/([^~/])$/, \"$1/\") + url.slice(1);\n } else {\n request = root + url;\n }\n break;\n // 2. root is `true`: absolute paths are allowed\n // *nix only, windows-style absolute paths are always allowed as they doesn't start with a `/`\n case \"boolean\":\n request = url;\n break;\n default:\n throw new Error(\n \"Unexpected parameters to loader-utils 'urlToRequest': url = \" +\n url +\n \", root = \" +\n root +\n \".\"\n );\n }\n } else if (/^\\.\\.?\\//.test(url)) {\n // A relative url stays\n request = url;\n } else {\n // every other url is threaded like a relative url\n request = \"./\" + url;\n }\n\n // A `~` makes the url an module\n if (moduleRequestRegex.test(request)) {\n request = request.replace(moduleRequestRegex, \"\");\n }\n\n return request;\n}\n\nmodule.exports = urlToRequest;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n// 65536 is the size of a wasm memory page\n// 64 is the maximum chunk size for every possible wasm hash implementation\n// 4 is the maximum number of bytes per char for string encoding (max is utf-8)\n// ~3 makes sure that it's always a block of 4 chars, so avoid partially encoded bytes for base64\nconst MAX_SHORT_STRING = Math.floor((65536 - 64) / 4) & ~3;\n\nclass WasmHash {\n /**\n * @param {WebAssembly.Instance} instance wasm instance\n * @param {WebAssembly.Instance[]} instancesPool pool of instances\n * @param {number} chunkSize size of data chunks passed to wasm\n * @param {number} digestSize size of digest returned by wasm\n */\n constructor(instance, instancesPool, chunkSize, digestSize) {\n const exports = /** @type {any} */ (instance.exports);\n\n exports.init();\n\n this.exports = exports;\n this.mem = Buffer.from(exports.memory.buffer, 0, 65536);\n this.buffered = 0;\n this.instancesPool = instancesPool;\n this.chunkSize = chunkSize;\n this.digestSize = digestSize;\n }\n\n reset() {\n this.buffered = 0;\n this.exports.init();\n }\n\n /**\n * @param {Buffer | string} data data\n * @param {BufferEncoding=} encoding encoding\n * @returns {this} itself\n */\n update(data, encoding) {\n if (typeof data === \"string\") {\n while (data.length > MAX_SHORT_STRING) {\n this._updateWithShortString(data.slice(0, MAX_SHORT_STRING), encoding);\n data = data.slice(MAX_SHORT_STRING);\n }\n\n this._updateWithShortString(data, encoding);\n\n return this;\n }\n\n this._updateWithBuffer(data);\n\n return this;\n }\n\n /**\n * @param {string} data data\n * @param {BufferEncoding=} encoding encoding\n * @returns {void}\n */\n _updateWithShortString(data, encoding) {\n const { exports, buffered, mem, chunkSize } = this;\n\n let endPos;\n\n if (data.length < 70) {\n if (!encoding || encoding === \"utf-8\" || encoding === \"utf8\") {\n endPos = buffered;\n for (let i = 0; i < data.length; i++) {\n const cc = data.charCodeAt(i);\n\n if (cc < 0x80) {\n mem[endPos++] = cc;\n } else if (cc < 0x800) {\n mem[endPos] = (cc >> 6) | 0xc0;\n mem[endPos + 1] = (cc & 0x3f) | 0x80;\n endPos += 2;\n } else {\n // bail-out for weird chars\n endPos += mem.write(data.slice(i), endPos, encoding);\n break;\n }\n }\n } else if (encoding === \"latin1\") {\n endPos = buffered;\n\n for (let i = 0; i < data.length; i++) {\n const cc = data.charCodeAt(i);\n\n mem[endPos++] = cc;\n }\n } else {\n endPos = buffered + mem.write(data, buffered, encoding);\n }\n } else {\n endPos = buffered + mem.write(data, buffered, encoding);\n }\n\n if (endPos < chunkSize) {\n this.buffered = endPos;\n } else {\n const l = endPos & ~(this.chunkSize - 1);\n\n exports.update(l);\n\n const newBuffered = endPos - l;\n\n this.buffered = newBuffered;\n\n if (newBuffered > 0) {\n mem.copyWithin(0, l, endPos);\n }\n }\n }\n\n /**\n * @param {Buffer} data data\n * @returns {void}\n */\n _updateWithBuffer(data) {\n const { exports, buffered, mem } = this;\n const length = data.length;\n\n if (buffered + length < this.chunkSize) {\n data.copy(mem, buffered, 0, length);\n\n this.buffered += length;\n } else {\n const l = (buffered + length) & ~(this.chunkSize - 1);\n\n if (l > 65536) {\n let i = 65536 - buffered;\n\n data.copy(mem, buffered, 0, i);\n exports.update(65536);\n\n const stop = l - buffered - 65536;\n\n while (i < stop) {\n data.copy(mem, 0, i, i + 65536);\n exports.update(65536);\n i += 65536;\n }\n\n data.copy(mem, 0, i, l - buffered);\n\n exports.update(l - buffered - i);\n } else {\n data.copy(mem, buffered, 0, l - buffered);\n\n exports.update(l);\n }\n\n const newBuffered = length + buffered - l;\n\n this.buffered = newBuffered;\n\n if (newBuffered > 0) {\n data.copy(mem, 0, length - newBuffered, length);\n }\n }\n }\n\n digest(type) {\n const { exports, buffered, mem, digestSize } = this;\n\n exports.final(buffered);\n\n this.instancesPool.push(this);\n\n const hex = mem.toString(\"latin1\", 0, digestSize);\n\n if (type === \"hex\") {\n return hex;\n }\n\n if (type === \"binary\" || !type) {\n return Buffer.from(hex, \"hex\");\n }\n\n return Buffer.from(hex, \"hex\").toString(type);\n }\n}\n\nconst create = (wasmModule, instancesPool, chunkSize, digestSize) => {\n if (instancesPool.length > 0) {\n const old = instancesPool.pop();\n\n old.reset();\n\n return old;\n } else {\n return new WasmHash(\n new WebAssembly.Instance(wasmModule),\n instancesPool,\n chunkSize,\n digestSize\n );\n }\n};\n\nmodule.exports = create;\nmodule.exports.MAX_SHORT_STRING = MAX_SHORT_STRING;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst create = require(\"./wasm-hash\");\n\n//#region wasm code: xxhash64 (../../../assembly/hash/xxhash64.asm.ts) --initialMemory 1\nconst xxhash64 = new WebAssembly.Module(\n Buffer.from(\n // 1173 bytes\n \"AGFzbQEAAAABCAJgAX8AYAAAAwQDAQAABQMBAAEGGgV+AUIAC34BQgALfgFCAAt+AUIAC34BQgALByIEBGluaXQAAAZ1cGRhdGUAAQVmaW5hbAACBm1lbW9yeQIACrUIAzAAQtbrgu7q/Yn14AAkAELP1tO+0ser2UIkAUIAJAJC+erQ0OfJoeThACQDQgAkBAvUAQIBfwR+IABFBEAPCyMEIACtfCQEIwAhAiMBIQMjAiEEIwMhBQNAIAIgASkDAELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiECIAMgASkDCELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEDIAQgASkDEELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEEIAUgASkDGELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEFIAAgAUEgaiIBSw0ACyACJAAgAyQBIAQkAiAFJAMLqwYCAX8EfiMEQgBSBH4jACICQgGJIwEiA0IHiXwjAiIEQgyJfCMDIgVCEol8IAJCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0gA0LP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+hUKHla+vmLbem55/fkKdo7Xqg7GNivoAfSAEQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IAVCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0FQsXP2bLx5brqJwsjBCAArXx8IQIDQCABQQhqIABNBEAgAiABKQMAQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQhuJQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IQIgAUEIaiEBDAELCyABQQRqIABNBEACfyACIAE1AgBCh5Wvr5i23puef36FQheJQs/W077Sx6vZQn5C+fPd8Zn2masWfCECIAFBBGoLIQELA0AgACABRwRAIAIgATEAAELFz9my8eW66id+hUILiUKHla+vmLbem55/fiECIAFBAWohAQwBCwtBACACIAJCIYiFQs/W077Sx6vZQn4iAiACQh2IhUL5893xmfaZqxZ+IgIgAkIgiIUiAkIgiCIDQv//A4NCIIYgA0KAgPz/D4NCEIiEIgNC/4GAgPAfg0IQhiADQoD+g4CA4D+DQgiIhCIDQo+AvIDwgcAHg0IIhiADQvCBwIeAnoD4AINCBIiEIgNChoyYsODAgYMGfEIEiEKBgoSIkKDAgAGDQid+IANCsODAgYOGjJgwhHw3AwBBCCACQv////8PgyICQv//A4NCIIYgAkKAgPz/D4NCEIiEIgJC/4GAgPAfg0IQhiACQoD+g4CA4D+DQgiIhCICQo+AvIDwgcAHg0IIhiACQvCBwIeAnoD4AINCBIiEIgJChoyYsODAgYMGfEIEiEKBgoSIkKDAgAGDQid+IAJCsODAgYOGjJgwhHw3AwAL\",\n \"base64\"\n )\n);\n//#endregion\n\nmodule.exports = create.bind(null, xxhash64, [], 32, 16);\n","const MAX_SHORT_STRING = require(\"./wasm-hash\").MAX_SHORT_STRING;\n\nclass BatchedHash {\n constructor(hash) {\n this.string = undefined;\n this.encoding = undefined;\n this.hash = hash;\n }\n\n /**\n * Update hash {@link https://nodejs.org/api/crypto.html#crypto_hash_update_data_inputencoding}\n * @param {string|Buffer} data data\n * @param {string=} inputEncoding data encoding\n * @returns {this} updated hash\n */\n update(data, inputEncoding) {\n if (this.string !== undefined) {\n if (\n typeof data === \"string\" &&\n inputEncoding === this.encoding &&\n this.string.length + data.length < MAX_SHORT_STRING\n ) {\n this.string += data;\n\n return this;\n }\n\n this.hash.update(this.string, this.encoding);\n this.string = undefined;\n }\n\n if (typeof data === \"string\") {\n if (\n data.length < MAX_SHORT_STRING &&\n // base64 encoding is not valid since it may contain padding chars\n (!inputEncoding || !inputEncoding.startsWith(\"ba\"))\n ) {\n this.string = data;\n this.encoding = inputEncoding;\n } else {\n this.hash.update(data, inputEncoding);\n }\n } else {\n this.hash.update(data);\n }\n\n return this;\n }\n\n /**\n * Calculates the digest {@link https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding}\n * @param {string=} encoding encoding of the return value\n * @returns {string|Buffer} digest\n */\n digest(encoding) {\n if (this.string !== undefined) {\n this.hash.update(this.string, this.encoding);\n }\n\n return this.hash.digest(encoding);\n }\n}\n\nmodule.exports = BatchedHash;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst create = require(\"./wasm-hash\");\n\n//#region wasm code: md4 (../../../assembly/hash/md4.asm.ts) --initialMemory 1\nconst md4 = new WebAssembly.Module(\n Buffer.from(\n // 2150 bytes\n \"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\",\n \"base64\"\n )\n);\n//#endregion\n\nmodule.exports = create.bind(null, md4, [], 64, 32);\n","const BULK_SIZE = 2000;\n\n// We are using an object instead of a Map as this will stay static during the runtime\n// so access to it can be optimized by v8\nconst digestCaches = {};\n\nclass BulkUpdateDecorator {\n /**\n * @param {Hash | function(): Hash} hashOrFactory function to create a hash\n * @param {string=} hashKey key for caching\n */\n constructor(hashOrFactory, hashKey) {\n this.hashKey = hashKey;\n\n if (typeof hashOrFactory === \"function\") {\n this.hashFactory = hashOrFactory;\n this.hash = undefined;\n } else {\n this.hashFactory = undefined;\n this.hash = hashOrFactory;\n }\n\n this.buffer = \"\";\n }\n\n /**\n * Update hash {@link https://nodejs.org/api/crypto.html#crypto_hash_update_data_inputencoding}\n * @param {string|Buffer} data data\n * @param {string=} inputEncoding data encoding\n * @returns {this} updated hash\n */\n update(data, inputEncoding) {\n if (\n inputEncoding !== undefined ||\n typeof data !== \"string\" ||\n data.length > BULK_SIZE\n ) {\n if (this.hash === undefined) {\n this.hash = this.hashFactory();\n }\n\n if (this.buffer.length > 0) {\n this.hash.update(this.buffer);\n this.buffer = \"\";\n }\n\n this.hash.update(data, inputEncoding);\n } else {\n this.buffer += data;\n\n if (this.buffer.length > BULK_SIZE) {\n if (this.hash === undefined) {\n this.hash = this.hashFactory();\n }\n\n this.hash.update(this.buffer);\n this.buffer = \"\";\n }\n }\n\n return this;\n }\n\n /**\n * Calculates the digest {@link https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding}\n * @param {string=} encoding encoding of the return value\n * @returns {string|Buffer} digest\n */\n digest(encoding) {\n let digestCache;\n\n const buffer = this.buffer;\n\n if (this.hash === undefined) {\n // short data for hash, we can use caching\n const cacheKey = `${this.hashKey}-${encoding}`;\n\n digestCache = digestCaches[cacheKey];\n\n if (digestCache === undefined) {\n digestCache = digestCaches[cacheKey] = new Map();\n }\n\n const cacheEntry = digestCache.get(buffer);\n\n if (cacheEntry !== undefined) {\n return cacheEntry;\n }\n\n this.hash = this.hashFactory();\n }\n\n if (buffer.length > 0) {\n this.hash.update(buffer);\n }\n\n const digestResult = this.hash.digest(encoding);\n\n if (digestCache !== undefined) {\n digestCache.set(buffer, digestResult);\n }\n\n return digestResult;\n }\n}\n\nmodule.exports = BulkUpdateDecorator;\n","\"use strict\";\n\nconst baseEncodeTables = {\n 26: \"abcdefghijklmnopqrstuvwxyz\",\n 32: \"123456789abcdefghjkmnpqrstuvwxyz\", // no 0lio\n 36: \"0123456789abcdefghijklmnopqrstuvwxyz\",\n 49: \"abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ\", // no lIO\n 52: \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n 58: \"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ\", // no 0lIO\n 62: \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n 64: \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_\",\n};\n\n/**\n * @param {Uint32Array} uint32Array Treated as a long base-0x100000000 number, little endian\n * @param {number} divisor The divisor\n * @return {number} Modulo (remainder) of the division\n */\nfunction divmod32(uint32Array, divisor) {\n let carry = 0;\n for (let i = uint32Array.length - 1; i >= 0; i--) {\n const value = carry * 0x100000000 + uint32Array[i];\n carry = value % divisor;\n uint32Array[i] = Math.floor(value / divisor);\n }\n return carry;\n}\n\nfunction encodeBufferToBase(buffer, base, length) {\n const encodeTable = baseEncodeTables[base];\n\n if (!encodeTable) {\n throw new Error(\"Unknown encoding base\" + base);\n }\n\n // Input bits are only enough to generate this many characters\n const limit = Math.ceil((buffer.length * 8) / Math.log2(base));\n length = Math.min(length, limit);\n\n // Most of the crypto digests (if not all) has length a multiple of 4 bytes.\n // Fewer numbers in the array means faster math.\n const uint32Array = new Uint32Array(Math.ceil(buffer.length / 4));\n\n // Make sure the input buffer data is copied and is not mutated by reference.\n // divmod32() would corrupt the BulkUpdateDecorator cache otherwise.\n buffer.copy(Buffer.from(uint32Array.buffer));\n\n let output = \"\";\n\n for (let i = 0; i < length; i++) {\n output = encodeTable[divmod32(uint32Array, base)] + output;\n }\n\n return output;\n}\n\nlet crypto = undefined;\nlet createXXHash64 = undefined;\nlet createMd4 = undefined;\nlet BatchedHash = undefined;\nlet BulkUpdateDecorator = undefined;\n\nfunction getHashDigest(buffer, algorithm, digestType, maxLength) {\n algorithm = algorithm || \"xxhash64\";\n maxLength = maxLength || 9999;\n\n let hash;\n\n if (algorithm === \"xxhash64\") {\n if (createXXHash64 === undefined) {\n createXXHash64 = require(\"./hash/xxhash64\");\n\n if (BatchedHash === undefined) {\n BatchedHash = require(\"./hash/BatchedHash\");\n }\n }\n\n hash = new BatchedHash(createXXHash64());\n } else if (algorithm === \"md4\") {\n if (createMd4 === undefined) {\n createMd4 = require(\"./hash/md4\");\n\n if (BatchedHash === undefined) {\n BatchedHash = require(\"./hash/BatchedHash\");\n }\n }\n\n hash = new BatchedHash(createMd4());\n } else if (algorithm === \"native-md4\") {\n if (typeof crypto === \"undefined\") {\n crypto = require(\"crypto\");\n\n if (BulkUpdateDecorator === undefined) {\n BulkUpdateDecorator = require(\"./hash/BulkUpdateDecorator\");\n }\n }\n\n hash = new BulkUpdateDecorator(() => crypto.createHash(\"md4\"), \"md4\");\n } else {\n if (typeof crypto === \"undefined\") {\n crypto = require(\"crypto\");\n\n if (BulkUpdateDecorator === undefined) {\n BulkUpdateDecorator = require(\"./hash/BulkUpdateDecorator\");\n }\n }\n\n hash = new BulkUpdateDecorator(\n () => crypto.createHash(algorithm),\n algorithm\n );\n }\n\n hash.update(buffer);\n\n if (\n digestType === \"base26\" ||\n digestType === \"base32\" ||\n digestType === \"base36\" ||\n digestType === \"base49\" ||\n digestType === \"base52\" ||\n digestType === \"base58\" ||\n digestType === \"base62\" ||\n digestType === \"base64safe\"\n ) {\n return encodeBufferToBase(\n hash.digest(),\n digestType === \"base64safe\" ? 64 : digestType.substr(4),\n maxLength\n );\n }\n\n return hash.digest(digestType || \"hex\").substr(0, maxLength);\n}\n\nmodule.exports = getHashDigest;\n","\"use strict\";\n\nconst path = require(\"path\");\nconst getHashDigest = require(\"./getHashDigest\");\n\nfunction interpolateName(loaderContext, name, options = {}) {\n let filename;\n\n const hasQuery =\n loaderContext.resourceQuery && loaderContext.resourceQuery.length > 1;\n\n if (typeof name === \"function\") {\n filename = name(\n loaderContext.resourcePath,\n hasQuery ? loaderContext.resourceQuery : undefined\n );\n } else {\n filename = name || \"[hash].[ext]\";\n }\n\n const context = options.context;\n const content = options.content;\n const regExp = options.regExp;\n\n let ext = \"bin\";\n let basename = \"file\";\n let directory = \"\";\n let folder = \"\";\n let query = \"\";\n\n if (loaderContext.resourcePath) {\n const parsed = path.parse(loaderContext.resourcePath);\n let resourcePath = loaderContext.resourcePath;\n\n if (parsed.ext) {\n ext = parsed.ext.substr(1);\n }\n\n if (parsed.dir) {\n basename = parsed.name;\n resourcePath = parsed.dir + path.sep;\n }\n\n if (typeof context !== \"undefined\") {\n directory = path\n .relative(context, resourcePath + \"_\")\n .replace(/\\\\/g, \"/\")\n .replace(/\\.\\.(\\/)?/g, \"_$1\");\n directory = directory.substr(0, directory.length - 1);\n } else {\n directory = resourcePath.replace(/\\\\/g, \"/\").replace(/\\.\\.(\\/)?/g, \"_$1\");\n }\n\n if (directory.length <= 1) {\n directory = \"\";\n } else {\n // directory.length > 1\n folder = path.basename(directory);\n }\n }\n\n if (loaderContext.resourceQuery && loaderContext.resourceQuery.length > 1) {\n query = loaderContext.resourceQuery;\n\n const hashIdx = query.indexOf(\"#\");\n\n if (hashIdx >= 0) {\n query = query.substr(0, hashIdx);\n }\n }\n\n let url = filename;\n\n if (content) {\n // Match hash template\n url = url\n // `hash` and `contenthash` are same in `loader-utils` context\n // let's keep `hash` for backward compatibility\n .replace(\n /\\[(?:([^[:\\]]+):)?(?:hash|contenthash)(?::([a-z]+\\d*(?:safe)?))?(?::(\\d+))?\\]/gi,\n (all, hashType, digestType, maxLength) =>\n getHashDigest(content, hashType, digestType, parseInt(maxLength, 10))\n );\n }\n\n url = url\n .replace(/\\[ext\\]/gi, () => ext)\n .replace(/\\[name\\]/gi, () => basename)\n .replace(/\\[path\\]/gi, () => directory)\n .replace(/\\[folder\\]/gi, () => folder)\n .replace(/\\[query\\]/gi, () => query);\n\n if (regExp && loaderContext.resourcePath) {\n const match = loaderContext.resourcePath.match(new RegExp(regExp));\n\n match &&\n match.forEach((matched, i) => {\n url = url.replace(new RegExp(\"\\\\[\" + i + \"\\\\]\", \"ig\"), matched);\n });\n }\n\n if (\n typeof loaderContext.options === \"object\" &&\n typeof loaderContext.options.customInterpolateName === \"function\"\n ) {\n url = loaderContext.options.customInterpolateName.call(\n loaderContext,\n url,\n name,\n options\n );\n }\n\n return url;\n}\n\nmodule.exports = interpolateName;\n","\"use strict\";\n\nconst isUrlRequest = require(\"./isUrlRequest\");\nconst urlToRequest = require(\"./urlToRequest\");\nconst getHashDigest = require(\"./getHashDigest\");\nconst interpolateName = require(\"./interpolateName\");\n\nexports.urlToRequest = urlToRequest;\nexports.getHashDigest = getHashDigest;\nexports.interpolateName = interpolateName;\nexports.isUrlRequest = isUrlRequest;\n","// src/vlq.ts\nvar comma = \",\".charCodeAt(0);\nvar semicolon = \";\".charCodeAt(0);\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar intToChar = new Uint8Array(64);\nvar charToInt = new Uint8Array(128);\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\nfunction decodeInteger(reader, relative) {\n let value = 0;\n let shift = 0;\n let integer = 0;\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n const shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = -2147483648 | -value;\n }\n return relative + value;\n}\nfunction encodeInteger(builder, num, relative) {\n let delta = num - relative;\n delta = delta < 0 ? -delta << 1 | 1 : delta << 1;\n do {\n let clamped = delta & 31;\n delta >>>= 5;\n if (delta > 0) clamped |= 32;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n return num;\n}\nfunction hasMoreVlq(reader, max) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n\n// src/strings.ts\nvar bufLength = 1024 * 16;\nvar td = typeof TextDecoder !== \"undefined\" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== \"undefined\" ? {\n decode(buf) {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n }\n} : {\n decode(buf) {\n let out = \"\";\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n }\n};\nvar StringWriter = class {\n constructor() {\n this.pos = 0;\n this.out = \"\";\n this.buffer = new Uint8Array(bufLength);\n }\n write(v) {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n flush() {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n};\nvar StringReader = class {\n constructor(buffer) {\n this.pos = 0;\n this.buffer = buffer;\n }\n next() {\n return this.buffer.charCodeAt(this.pos++);\n }\n peek() {\n return this.buffer.charCodeAt(this.pos);\n }\n indexOf(char) {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n};\n\n// src/scopes.ts\nvar EMPTY = [];\nfunction decodeOriginalScopes(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes = [];\n const stack = [];\n let line = 0;\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop();\n last[2] = line;\n last[3] = column;\n continue;\n }\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 1;\n const scope = hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind];\n let vars = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n scopes.push(scope);\n stack.push(scope);\n }\n return scopes;\n}\nfunction encodeOriginalScopes(scopes) {\n const writer = new StringWriter();\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n return writer.flush();\n}\nfunction _encodeOriginalScopes(scopes, index, writer, state) {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n if (index > 0) writer.write(comma);\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n const fields = scope.length === 6 ? 1 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6) encodeInteger(writer, scope[5], 0);\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || l === endLine && c >= endColumn) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n return index;\n}\nfunction decodeGeneratedRanges(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges = [];\n const stack = [];\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n do {\n const semi = reader.indexOf(\";\");\n let genColumn = 0;\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop();\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 1;\n const hasCallsite = fields & 2;\n const hasScope = fields & 4;\n let callsite = null;\n let bindings = EMPTY;\n let range;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(\n reader,\n definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0\n );\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex];\n } else {\n range = [genLine, genColumn, 0, 0];\n }\n range.isScope = !!hasScope;\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(\n reader,\n sameSource && prevLine === callsiteLine ? callsiteColumn : 0\n );\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges;\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n ranges.push(range);\n stack.push(range);\n }\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n return ranges;\n}\nfunction encodeGeneratedRanges(ranges) {\n if (ranges.length === 0) return \"\";\n const writer = new StringWriter();\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n return writer.flush();\n}\nfunction _encodeGeneratedRanges(ranges, index, writer, state) {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings\n } = range;\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, range[1], state[1]);\n const fields = (range.length === 6 ? 1 : 0) | (callsite ? 2 : 0) | (isScope ? 4 : 0);\n encodeInteger(writer, fields, 0);\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn);\n encodeInteger(writer, expRange[0], 0);\n }\n }\n }\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || l === endLine && c >= endColumn) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n return index;\n}\nfunction catchupLine(writer, lastLine, line) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n\n// src/sourcemap-codec.ts\nfunction decode(mappings) {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n do {\n const semi = reader.indexOf(\";\");\n const line = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n while (reader.pos < semi) {\n let seg;\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n line.push(seg);\n reader.pos++;\n }\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n return decoded;\n}\nfunction sort(line) {\n line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[0] - b[0];\n}\nfunction encode(decoded) {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n let genColumn = 0;\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n genColumn = encodeInteger(writer, segment[0], genColumn);\n if (segment.length === 1) continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n if (segment.length === 4) continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n return writer.flush();\n}\nexport {\n decode,\n decodeGeneratedRanges,\n decodeOriginalScopes,\n encode,\n encodeGeneratedRanges,\n encodeOriginalScopes\n};\n//# sourceMappingURL=sourcemap-codec.mjs.map\n","import { encode } from '@jridgewell/sourcemap-codec';\n\nclass BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & (1 << (n & 31)));\n\t}\n}\n\nclass Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\n\t\t{\n\t\t\tthis.previous = null;\n\t\t\tthis.next = null;\n\t\t}\n\t}\n\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t}\n\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\n\teachNext(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\n\teachPrevious(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = '';\n\t\t\tthis.outro = '';\n\t\t}\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t}\n\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\n\treset() {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\n\t\tthis.original = originalBefore;\n\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif (this.edited) {\n\t\t\t// after split we should save the edit content record into the correct chunk\n\t\t\t// to make sure sourcemap correct\n\t\t\t// For example:\n\t\t\t// ' test'.trim()\n\t\t\t// split -> ' ' + 'test'\n\t\t\t// ✔️ edit -> '' + 'test'\n\t\t\t// ✖️ edit -> 'test' + ''\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit('', false);\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t}\n\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tthis.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tconst newChunk = this.split(this.end - trimmed.length);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tnewChunk.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t\tthis.edit('', undefined, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.outro = this.outro.replace(rx, '');\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n}\n\nfunction getBtoa() {\n\tif (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {\n\t\treturn (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\t} else if (typeof Buffer === 'function') {\n\t\treturn (str) => Buffer.from(str, 'utf-8').toString('base64');\n\t} else {\n\t\treturn () => {\n\t\t\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n\t\t};\n\t}\n}\n\nconst btoa = /*#__PURE__*/ getBtoa();\n\nclass SourceMap {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== 'undefined') {\n\t\t\tthis.x_google_ignoreList = properties.x_google_ignoreList;\n\t\t}\n\t\tif (typeof properties.debugId !== 'undefined') {\n\t\t\tthis.debugId = properties.debugId;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\n\ttoUrl() {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t}\n}\n\nfunction guessIndent(code) {\n\tconst lines = code.split('\\n');\n\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n\nfunction getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n\nconst toString = Object.prototype.toString;\n\nfunction isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n\nfunction getLocator(source) {\n\tconst originalLines = source.split('\\n');\n\tconst lineOffsets = [];\n\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tconst line = i - 1;\n\t\tconst column = index - lineOffsets[line];\n\t\treturn { line, column };\n\t};\n}\n\nconst wordRegex = /\\w/;\n\nclass Mappings {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf('\\n', 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\t// Loop through each line in the content and add a segment, but stop if the last line is empty,\n\t\t\t// else code afterwards would fill one line too many\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\t\tif (nameIndex >= 0) {\n\t\t\t\t\tsegment.push(nameIndex);\n\t\t\t\t}\n\t\t\t\tthis.rawSegments.push(segment);\n\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf('\\n', contentLineEnd + 1);\n\t\t\t}\n\n\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\tif (nameIndex >= 0) {\n\t\t\t\tsegment.push(nameIndex);\n\t\t\t}\n\t\t\tthis.rawSegments.push(segment);\n\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\t// when iterating each char, check if it's in a word boundary\n\t\tlet charInHiresBoundary = false;\n\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t\tcharInHiresBoundary = false;\n\t\t\t} else {\n\t\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n\t\t\t\t\tif (this.hires === 'boundary') {\n\t\t\t\t\t\t// in hires \"boundary\", group segments per word boundary than per char\n\t\t\t\t\t\tif (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\t\t// for first char in the boundary found, start the boundary by pushing a segment\n\t\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// for non-word char, end the boundary by pushing a segment\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\tadvance(str) {\n\t\tif (!str) return;\n\n\t\tconst lines = str.split('\\n');\n\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n}\n\nconst n = '\\n';\n\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false,\n};\n\nclass MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: { writable: true, value: string },\n\t\t\toutro: { writable: true, value: '' },\n\t\t\tintro: { writable: true, value: '' },\n\t\t\tfirstChunk: { writable: true, value: chunk },\n\t\t\tlastChunk: { writable: true, value: chunk },\n\t\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\t\tbyStart: { writable: true, value: {} },\n\t\t\tbyEnd: { writable: true, value: {} },\n\t\t\tfilename: { writable: true, value: options.filename },\n\t\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\t\tsourcemapLocations: { writable: true, value: new BitSet() },\n\t\t\tstoredNames: { writable: true, value: {} },\n\t\t\tindentStr: { writable: true, value: undefined },\n\t\t\tignoreList: { writable: true, value: options.ignoreList },\n\t\t\toffset: { writable: true, value: options.offset || 0 },\n\t\t});\n\n\t\tthis.byStart[0] = chunk;\n\t\tthis.byEnd[string.length] = chunk;\n\t}\n\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\n\tappend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\n\tappendLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendLeft(content);\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\t\treturn this;\n\t}\n\n\tappendRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendRight(content);\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });\n\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif (this.indentExclusionRanges) {\n\t\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\t}\n\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\n\t\treturn cloned;\n\t}\n\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tconst locate = getLocator(this.original);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tmappings.addEdit(\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tchunk.content,\n\t\t\t\t\tloc,\n\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: [\n\t\t\t\toptions.source ? getRelativePath(options.file || '', options.source) : options.file || '',\n\t\t\t],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : undefined,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\t_ensureindentStr() {\n\t\tif (this.indentStr === undefined) {\n\t\t\tthis.indentStr = guessIndent(this.original);\n\t\t}\n\t}\n\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t}\n\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tif (indentStr === undefined) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || '\\t';\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tconst isExcluded = {};\n\n\t\tif (options.exclude) {\n\t\t\tconst exclusions =\n\t\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\t\texclusions.forEach((exclusion) => {\n\t\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original[charIndex];\n\n\t\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\n\t\treturn this;\n\t}\n\n\tinsert() {\n\t\tthrow new Error(\n\t\t\t'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',\n\t\t);\n\t}\n\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',\n\t\t\t);\n\t\t\twarned.insertLeft = true;\n\t\t}\n\n\t\treturn this.appendLeft(index, content);\n\t}\n\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',\n\t\t\t);\n\t\t\twarned.insertRight = true;\n\t\t}\n\n\t\treturn this.prependRight(index, content);\n\t}\n\n\tmove(start, end, index) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tindex = index + this.offset;\n\n\t\tif (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\n\t\tconst newRight = this.byStart[index];\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\t\treturn this;\n\t}\n\n\toverwrite(start, end, content, options) {\n\t\toptions = options || {};\n\t\treturn this.update(start, end, content, { ...options, overwrite: !options.contentOnly });\n\t}\n\n\tupdate(start, end, content, options) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('replacement content must be a string');\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (end > this.original.length) throw new Error('end is out of bounds');\n\t\tif (start === end)\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',\n\t\t\t);\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',\n\t\t\t\t);\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst storeName = options !== undefined ? options.storeName : false;\n\t\tconst overwrite = options !== undefined ? options.overwrite : false;\n\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart[chunk.end]) {\n\t\t\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t\t\t}\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit('', false);\n\t\t\t}\n\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\t// must be inserting at the end\n\t\t\tconst newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\t\treturn this;\n\t}\n\n\tprepend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\n\tprependLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependLeft(content);\n\t\t} else {\n\t\t\tthis.intro = content + this.intro;\n\t\t}\n\t\treturn this;\n\t}\n\n\tprependRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependRight(content);\n\t\t} else {\n\t\t\tthis.outro = content + this.outro;\n\t\t}\n\t\treturn this;\n\t}\n\n\tremove(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.intro = '';\n\t\t\tchunk.outro = '';\n\t\t\tchunk.edit('');\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\t\treturn this;\n\t}\n\n\treset(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\t\treturn this;\n\t}\n\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t} while ((chunk = chunk.previous));\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn '';\n\t}\n\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t} while ((chunk = chunk.previous));\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\n\tslice(start = 0, end = this.original.length - this.offset) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tlet result = '';\n\n\t\t// find start chunk\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\t// found end chunk before start\n\t\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t\tthrow new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t\tthrow new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif (containsEnd) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// TODO deprecate this? not really very useful\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\n\t\treturn clone;\n\t}\n\n\t_split(index) {\n\t\tif (this.byStart[index] || this.byEnd[index]) return;\n\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tconst searchForward = index > chunk.end;\n\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\n\t\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\t\t}\n\t}\n\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`,\n\t\t\t);\n\t\t}\n\n\t\tconst newChunk = chunk.split(index);\n\n\t\tthis.byEnd[index] = chunk;\n\t\tthis.byStart[index] = newChunk;\n\t\tthis.byEnd[newChunk.end] = newChunk;\n\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\treturn true;\n\t}\n\n\ttoString() {\n\t\tlet str = this.intro;\n\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t}\n\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tif (\n\t\t\t\t(chunk.intro.length && chunk.intro.trim()) ||\n\t\t\t\t(chunk.content.length && chunk.content.trim()) ||\n\t\t\t\t(chunk.outro.length && chunk.outro.trim())\n\t\t\t)\n\t\t\t\treturn false;\n\t\t} while ((chunk = chunk.next));\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\tdo {\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\t} while ((chunk = chunk.next));\n\t\treturn length;\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tlet chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\n\t\t\tif (chunk.end !== end) {\n\t\t\t\t// special case...\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\n\thasChanged() {\n\t\treturn this.original !== this.toString();\n\t}\n\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === 'string') {\n\t\t\t\treturn replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter\n\t\t\t\t\tif (i === '$') return '$';\n\t\t\t\t\tif (i === '&') return match[0];\n\t\t\t\t\tconst num = +i;\n\t\t\t\t\tif (num < match.length) return match[+i];\n\t\t\t\t\treturn `$${i}`;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn replacement(...match, match.index, str, match.groups);\n\t\t\t}\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tlet match;\n\t\t\tconst matches = [];\n\t\t\twhile ((match = re.exec(str))) {\n\t\t\t\tmatches.push(match);\n\t\t\t}\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) {\n\t\t\tconst matches = matchAll(searchValue, this.original);\n\t\t\tmatches.forEach((match) => {\n\t\t\t\tif (match.index != null) {\n\t\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\n\t\tif (index !== -1) {\n\t\t\tthis.overwrite(index, index + string.length, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceString(searchValue, replacement);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (\n\t\t\tlet index = original.indexOf(string);\n\t\t\tindex !== -1;\n\t\t\tindex = original.indexOf(string, index + stringLength)\n\t\t) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tif (previous !== replacement) this.overwrite(index, index + stringLength, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceAllString(searchValue, replacement);\n\t\t}\n\n\t\tif (!searchValue.global) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'MagicString.prototype.replaceAll called with a non-global RegExp argument',\n\t\t\t);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n}\n\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nclass Bundle {\n\tconstructor(options = {}) {\n\t\tthis.intro = options.intro || '';\n\t\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\t\tthis.sources = [];\n\t\tthis.uniqueSources = [];\n\t\tthis.uniqueSourceIndexByFilename = {};\n\t}\n\n\taddSource(source) {\n\t\tif (source instanceof MagicString) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator,\n\t\t\t});\n\t\t}\n\n\t\tif (!isObject(source) || !source.content) {\n\t\t\tthrow new Error(\n\t\t\t\t'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`',\n\t\t\t);\n\t\t}\n\n\t\t['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {\n\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t});\n\n\t\tif (source.separator === undefined) {\n\t\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif (source.filename) {\n\t\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tconst uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\t\tthrow new Error(`Illegal source: same filename (${source.filename}), different contents`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push(source);\n\t\treturn this;\n\t}\n\n\tappend(str, options) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString(str),\n\t\t\tseparator: (options && options.separator) || '',\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator,\n\t\t});\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator,\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t}\n\n\tgenerateDecodedMap(options = {}) {\n\t\tconst names = [];\n\t\tlet x_google_ignoreList = undefined;\n\t\tthis.sources.forEach((source) => {\n\t\t\tObject.keys(source.content.storedNames).forEach((name) => {\n\t\t\t\tif (!~names.indexOf(name)) names.push(name);\n\t\t\t});\n\t\t});\n\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tmappings.advance(this.separator);\n\t\t\t}\n\n\t\t\tconst sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\t\tconst magicString = source.content;\n\t\t\tconst locate = getLocator(magicString.original);\n\n\t\t\tif (magicString.intro) {\n\t\t\t\tmappings.advance(magicString.intro);\n\t\t\t}\n\n\t\t\tmagicString.firstChunk.eachNext((chunk) => {\n\t\t\t\tconst loc = locate(chunk.start);\n\n\t\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\t\tif (source.filename) {\n\t\t\t\t\tif (chunk.edited) {\n\t\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk,\n\t\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmagicString.sourcemapLocations,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmappings.advance(chunk.content);\n\t\t\t\t}\n\n\t\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t\t});\n\n\t\t\tif (magicString.outro) {\n\t\t\t\tmappings.advance(magicString.outro);\n\t\t\t}\n\n\t\t\tif (source.ignoreList && sourceIndex !== -1) {\n\t\t\t\tif (x_google_ignoreList === undefined) {\n\t\t\t\t\tx_google_ignoreList = [];\n\t\t\t\t}\n\t\t\t\tx_google_ignoreList.push(sourceIndex);\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\tgetIndentString() {\n\t\tconst indentStringCounts = {};\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tconst indentStr = source.content._getRawIndentString();\n\n\t\t\tif (indentStr === null) return;\n\n\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\tindentStringCounts[indentStr] += 1;\n\t\t});\n\n\t\treturn (\n\t\t\tObject.keys(indentStringCounts).sort((a, b) => {\n\t\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t\t})[0] || '\\t'\n\t\t);\n\t}\n\n\tindent(indentStr) {\n\t\tif (!arguments.length) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\tlet trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\t\tsource.content.indent(indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart, //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t\t});\n\n\t\tif (this.intro) {\n\t\t\tthis.intro =\n\t\t\t\tindentStr +\n\t\t\t\tthis.intro.replace(/^[^\\n]/gm, (match, index) => {\n\t\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprepend(str) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\tconst body = this.sources\n\t\t\t.map((source, i) => {\n\t\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\t\tconst str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\t\treturn str;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn this.intro + body;\n\t}\n\n\tisEmpty() {\n\t\tif (this.intro.length && this.intro.trim()) return false;\n\t\tif (this.sources.some((source) => !source.content.isEmpty())) return false;\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\treturn this.sources.reduce(\n\t\t\t(length, source) => length + source.content.length(),\n\t\t\tthis.intro.length,\n\t\t);\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimStart(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\t\tthis.intro = this.intro.replace(rx, '');\n\n\t\tif (!this.intro) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i++];\n\t\t\t\tif (!source) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} while (!source.content.trimStartAborted(charType));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttrimEnd(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this.sources[i--];\n\t\t\tif (!source) {\n\t\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimEndAborted(charType));\n\n\t\treturn this;\n\t}\n}\n\nexport { Bundle, SourceMap, MagicString as default };\n//# sourceMappingURL=magic-string.es.mjs.map\n","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","import decodeComponent from 'decode-uri-component';\nimport {includeKeys} from 'filter-obj';\nimport splitOnFirst from 'split-on-first';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSeparator, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: decode(value, options).split(options.arrayFormatSeparator);\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options, type) {\n\tif (type === 'string' && typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof type === 'function' && typeof value === 'string') {\n\t\treturn type(value);\n\t}\n\n\tif (type === 'boolean' && value === null) {\n\t\treturn true;\n\t}\n\n\tif (type === 'boolean' && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (type === 'boolean' && value !== null && (value.toLowerCase() === '1' || value.toLowerCase() === '0')) {\n\t\treturn value.toLowerCase() === '1';\n\t}\n\n\tif (type === 'string[]' && options.arrayFormat !== 'none' && typeof value === 'string') {\n\t\treturn [value];\n\t}\n\n\tif (type === 'number[]' && options.arrayFormat !== 'none' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn [Number(value)];\n\t}\n\n\tif (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\tif (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\ttypes: Object.create(null),\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null && options.types[key] !== 'string') {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tconst type = options.types[key] ? options.types[key].replace('[]', '') : undefined;\n\t\t\t\tvalue[key2] = parseValue(value2, options, type);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && options.types[key] === 'string') {\n\t\t\treturnValue[key] = Object.values(value).join(options.arrayFormatSeparator);\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options, options.types[key]);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false, ...options}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _postcss = /*#__PURE__*/ _interop_require_default(require(\"postcss\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n/**\n * The next/font postcss plugin receives the @font-face declarations returned from the next/font loaders.\n *\n * It hashes the font-family name to make it unguessable, it shouldn't be globally accessible.\n * If it were global, we wouldn't be able to tell which pages are using which fonts when generating preload tags.\n *\n * If the font loader returned fallback metrics, generate a fallback @font-face.\n *\n * If the font loader returned a variable name, add a CSS class that declares a variable containing the font and fallback fonts.\n *\n * Lastly, it adds the font-family to the exports object.\n * This enables you to access the actual font-family name, not just through the CSS class.\n * e.g:\n * const inter = Inter({ subsets: ['latin'] })\n * inter.style.fontFamily // => '__Inter_123456'\n */ const postcssNextFontPlugin = ({ exports: exports1, fallbackFonts = [], adjustFontFallback, variable, weight, style })=>{\n return {\n postcssPlugin: 'postcss-next-font',\n Once (root) {\n let fontFamily;\n const normalizeFamily = (family)=>{\n return family.replace(/['\"]/g, '');\n };\n const formatFamily = (family)=>{\n return `'${family}'`;\n };\n // Hash font-family names\n for (const node of root.nodes){\n if (node.type === 'atrule' && node.name === 'font-face') {\n const familyNode = node.nodes.find((decl)=>decl.prop === 'font-family');\n if (!familyNode) {\n continue;\n }\n if (!fontFamily) {\n fontFamily = normalizeFamily(familyNode.value);\n }\n familyNode.value = formatFamily(fontFamily);\n }\n }\n if (!fontFamily) {\n throw Object.defineProperty(new Error(\"Font loaders must return one or more @font-face's\"), \"__NEXT_ERROR_CODE\", {\n value: \"E428\",\n enumerable: false,\n configurable: true\n });\n }\n // Add fallback @font-face with the provided override values\n let adjustFontFallbackFamily;\n if (adjustFontFallback) {\n adjustFontFallbackFamily = formatFamily(`${fontFamily} Fallback`);\n const fallbackFontFace = _postcss.default.atRule({\n name: 'font-face'\n });\n const { fallbackFont, ascentOverride, descentOverride, lineGapOverride, sizeAdjust } = adjustFontFallback;\n fallbackFontFace.nodes = [\n new _postcss.default.Declaration({\n prop: 'font-family',\n value: adjustFontFallbackFamily\n }),\n new _postcss.default.Declaration({\n prop: 'src',\n value: `local(\"${fallbackFont}\")`\n }),\n ...ascentOverride ? [\n new _postcss.default.Declaration({\n prop: 'ascent-override',\n value: ascentOverride\n })\n ] : [],\n ...descentOverride ? [\n new _postcss.default.Declaration({\n prop: 'descent-override',\n value: descentOverride\n })\n ] : [],\n ...lineGapOverride ? [\n new _postcss.default.Declaration({\n prop: 'line-gap-override',\n value: lineGapOverride\n })\n ] : [],\n ...sizeAdjust ? [\n new _postcss.default.Declaration({\n prop: 'size-adjust',\n value: sizeAdjust\n })\n ] : []\n ];\n root.nodes.push(fallbackFontFace);\n }\n // Variable fonts can define ranges of values\n const isRange = (value)=>value.trim().includes(' ');\n // Format the font families to be used in the CSS\n const formattedFontFamilies = [\n formatFamily(fontFamily),\n ...adjustFontFallbackFamily ? [\n adjustFontFallbackFamily\n ] : [],\n ...fallbackFonts\n ].join(', ');\n // Add class with family, weight and style\n const classRule = new _postcss.default.Rule({\n selector: '.className'\n });\n classRule.nodes = [\n new _postcss.default.Declaration({\n prop: 'font-family',\n value: formattedFontFamilies\n }),\n // If the font only has one weight or style, we can set it on the class\n ...weight && !isRange(weight) ? [\n new _postcss.default.Declaration({\n prop: 'font-weight',\n value: weight\n })\n ] : [],\n ...style && !isRange(style) ? [\n new _postcss.default.Declaration({\n prop: 'font-style',\n value: style\n })\n ] : []\n ];\n root.nodes.push(classRule);\n // Add CSS class that defines a variable with the font families\n if (variable) {\n const varialbeRule = new _postcss.default.Rule({\n selector: '.variable'\n });\n varialbeRule.nodes = [\n new _postcss.default.Declaration({\n prop: variable,\n value: formattedFontFamilies\n })\n ];\n root.nodes.push(varialbeRule);\n }\n // Export @font-face values as is\n exports1.push({\n name: 'style',\n value: {\n fontFamily: formattedFontFamilies,\n fontWeight: !Number.isNaN(Number(weight)) ? Number(weight) : undefined,\n fontStyle: style && !isRange(style) ? style : undefined\n }\n });\n }\n };\n};\npostcssNextFontPlugin.postcss = true;\nconst _default = postcssNextFontPlugin;\n\n//# sourceMappingURL=postcss-next-font.js.map","import queryString from 'query-string'\n\nexport const getQuerySuffix = (id: string) => {\n const queryStart = id.indexOf('?')\n if (queryStart === -1) {\n return ''\n }\n return id.slice(queryStart)\n}\n\nexport const removeQuerySuffix = (id: string) => {\n const queryStart = id.indexOf('?')\n if (queryStart === -1) {\n return id\n }\n return id.slice(0, queryStart)\n}\n\nexport const createCachedImport = <T>(imp: () => Promise<T>): (() => T | Promise<T>) => {\n let cached: T | Promise<T>\n return () => {\n if (!cached) {\n cached = imp().then((module) => {\n cached = module\n return module\n })\n }\n return cached\n }\n}\n\n// Types for the result object with discriminated union\ntype Success<T> = {\n data: T\n error: null\n}\n\ntype Failure<E> = {\n data: null\n error: E\n}\n\ntype Result<T, E = Error> = Success<T> | Failure<E>\n\n// Main wrapper function\nexport const tryCatch = async <T, E = Error>(promise: Promise<T>): Promise<Result<T, E>> => {\n try {\n const data = await promise\n return { data, error: null }\n } catch (error) {\n return { data: null, error: error as E }\n }\n}\n\nexport const importResolve = async (id: string) => import.meta.resolve(removeQuerySuffix(id))\n\n/**\n * Encodes the URI path portion (ignores part after ? or #)\n */\nexport function encodeURIPath(uri: string): string {\n if (uri.startsWith('data:')) return uri\n const filePath = cleanUrl(uri)\n const postfix = filePath !== uri ? uri.slice(filePath.length) : ''\n return encodeURI(filePath) + postfix\n}\n\nconst postfixRE = /[?#].*$/\nfunction cleanUrl(url: string): string {\n return url.replace(postfixRE, '')\n}\n\nexport const fontNameToUrl = (fontName: string) => {\n return [''].concat(['_next', fontName].filter(Boolean) as string[]).join('/')\n}\n\nexport const normalizeTargetCssId = (id: string) => {\n return queryString.stringifyUrl({\n url: removeQuerySuffix(id),\n query: pickKeys(queryString.parse(getQuerySuffix(id)), [\n 'arguments',\n 'path',\n 'import',\n 'variableName',\n ]),\n })\n}\n\nconst pickKeys = <K extends string, V>(obj: Record<string, V>, keys: K[]) => {\n return Object.fromEntries(Object.entries(obj).filter(([key]) => keys.includes(key as K)))\n}\n","import loaderUtils from 'loader-utils'\nimport postcssNextFontPlugin from 'next/dist/build/webpack/loaders/next-font-loader/postcss-next-font.js'\nimport type { FontLoader } from 'next-font'\nimport type PostCSS from 'postcss'\nimport { createCachedImport } from './utils'\n\nconst importPostcssModules = createCachedImport(() => import('postcss-modules'))\nconst importPostcss = createCachedImport(() => import('postcss'))\n\nexport const nextFontPostcss = async (\n relativePathFromRoot: string,\n {\n css,\n fallbackFonts,\n weight,\n style,\n adjustFontFallback,\n variable,\n }: Awaited<ReturnType<FontLoader>>\n) => {\n // Exports will be exported as is from css-loader instead of a CSS module export\n // const exports: { name: any; value: any }[] = [];\n\n // Generate a hash from the CSS content. Used to generate classnames\n const fontFamilyHash = loaderUtils.getHashDigest(Buffer.from(css), 'sha1', 'hex', 6)\n\n let modules: Record<string, string> | undefined\n\n // biome-ignore lint/suspicious/noExplicitAny: unknown put from nextjs function\n const exports: { name: any; value: any }[] = []\n\n const result = await runPostCss({\n postcssPlugins: [\n (\n (postcssNextFontPlugin as unknown as Record<'default', typeof postcssNextFontPlugin>)\n .default || postcssNextFontPlugin\n )({\n exports,\n fallbackFonts,\n weight,\n style,\n adjustFontFallback,\n variable,\n }),\n (await importPostcssModules()).default({\n generateScopedName: (originalClassName: string) => {\n // hash from next-font-loader\n return `__${originalClassName}_${fontFamilyHash}`\n },\n getJSON(_cssFileName: string, _modules: Record<string, string>, _outputFileName: string) {\n modules = _modules\n },\n }),\n ],\n postcssOptions: {\n from: relativePathFromRoot,\n },\n code: css,\n })\n\n return {\n exports,\n ...result,\n modules,\n }\n}\n\nconst runPostCss = async ({\n postcssPlugins = [],\n postcssOptions = {},\n code,\n}: {\n postcssPlugins?: PostCSS.AcceptedPlugin[]\n code: string\n postcssOptions?: PostCSS.ProcessOptions\n}) => {\n let postcssResult: PostCSS.Result\n try {\n const postcss = await importPostcss()\n\n // postcss is an unbundled dep and should be lazy imported\n postcssResult = await postcss.default(postcssPlugins).process(code, postcssOptions)\n } catch (e: unknown) {\n if (\n typeof e === 'object' &&\n e !== null &&\n 'message' in e &&\n 'file' in e &&\n 'line' in e &&\n 'column' in e &&\n typeof e.column === 'number'\n ) {\n throw Object.assign(\n {},\n {\n message: `[postcss] ${e.message}`,\n code,\n loc: {\n file: e.file,\n line: e.line,\n column: e.column - 1, // 1-based\n },\n }\n )\n }\n }\n\n return {\n code: postcssResult!.css,\n map: { mappings: '' as const },\n }\n}\n","import path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { dataToEsm, normalizePath } from '@rollup/pluginutils'\nimport loaderUtils from 'loader-utils'\nimport MagicString from 'magic-string'\nimport type { FontLoader } from 'next-font'\nimport type { NextFontManifest } from 'next-font/manifest'\nimport queryString from 'query-string'\nimport { isCSSRequest, type PluginOption, type ResolvedConfig } from 'vite'\nimport type { FontImportDataQuery } from '@/ast/transform'\nimport type { Mutable, TargetCss } from '@/declarations'\nimport { nextFontPostcss } from '@/postcss'\nimport {\n createCachedImport,\n encodeURIPath,\n fontNameToUrl,\n getQuerySuffix,\n importResolve,\n normalizeTargetCssId,\n removeQuerySuffix,\n tryCatch,\n} from '@/utils'\n\nconst googleLoader = createCachedImport<FontLoader>(() =>\n import('next-font/google/loader').then((mod) => mod.default)\n)\nconst localLoader = createCachedImport<FontLoader>(() =>\n import('next-font/local/loader').then((mod) => mod.default)\n)\n\nexport type OnFinished = (fileToFontNames: Map<string, Record<string, string[]>>) => Promise<void>\n\nexport const nextFontLoaderPlugin = ({\n nextFontManifest,\n fontImports,\n onFinished,\n}: {\n nextFontManifest: Mutable<NextFontManifest>\n fontImports: Record<string, TargetCss[]>\n onFinished: OnFinished\n}) => {\n let config: ResolvedConfig | null = null\n\n const fileToFontNames = new Map<string, Record<string, string[]>>()\n\n const loaderCache = {\n google: {\n css: new Map<string, string | null>(),\n font: new Map<string, string | null>(),\n },\n local: {\n css: new Map<string, string | null>(),\n font: new Map<string, string | null>(),\n },\n }\n const fontLoaders: [\n string,\n Promise<FontLoader> | FontLoader,\n (typeof loaderCache)[keyof typeof loaderCache],\n ][] = [\n ['next-font/google/target.css', googleLoader(), loaderCache.google],\n ['next-font/local/target.css', localLoader(), loaderCache.local],\n ] as const\n\n const targetCssMap = new Map<string, Awaited<ReturnType<typeof nextFontPostcss>>>()\n const removeTargetCss = (id: string) => {\n targetCssMap.delete(id)\n\n const { path: relativePathFromRoot } = queryString.parse(\n getQuerySuffix(id)\n ) as unknown as FontImportDataQuery\n const absPath = path.join(config!.root, relativePathFromRoot)\n\n const fontNames = fileToFontNames.get(absPath)?.[id]\n if (fontNames) {\n if (nextFontManifest[absPath]) {\n nextFontManifest[absPath] = nextFontManifest[absPath].filter(\n (font) => !fontNames.includes(font)\n )\n }\n\n for (const fontName of fontNames) {\n fontFileMap.set(\n fontNameToUrl(fontName),\n Object.assign({}, fontFileMap.get(fontNameToUrl(fontName)), {\n serve: false,\n })\n )\n }\n }\n }\n\n const fontFileMap = new Map<\n string,\n {\n content: Buffer\n serve: boolean\n }\n >()\n\n let lastEnv: string | null = null\n\n let calledFinished = false\n const resetCalledFinished = () => {\n calledFinished = false\n }\n\n return [\n { resetCalledFinished, removeTargetCss },\n [\n {\n name: 'next-font:loader:scan',\n enforce: 'pre',\n async configResolved(resolvedConfig) {\n config = resolvedConfig\n },\n configureServer(server) {\n return () => {\n server.middlewares.use((req, res, next) => {\n if (!req.originalUrl) return next()\n\n const font = fontFileMap.get(req.originalUrl)\n if (font?.serve) {\n res.end(font.content)\n } else next()\n })\n }\n },\n },\n {\n name: 'next-font:loader',\n load: {\n order: 'pre',\n async handler(id, opts) {\n if (!/\\.css(?:$|\\?)/.test(id)) return null\n\n const { data: resolvedId, error } = await tryCatch(importResolve(removeQuerySuffix(id)))\n if (error) return null\n const pair = fontLoaders.find((id) => import.meta.resolve(id[0]) === resolvedId)\n if (!pair) return null\n\n const [, fontLoader, cache] = pair\n\n const normalizedId = normalizeTargetCssId(id)\n const isDev = config?.command === 'serve'\n\n if (\n // unnecessary to load the same file in dev mode\n isDev &&\n targetCssMap.has(normalizedId) &&\n lastEnv === this.environment.name\n )\n return\n lastEnv = this.environment.name\n\n const {\n path: relativePathFromRoot,\n import: functionName,\n arguments: stringifiedArguments,\n variableName,\n } = queryString.parse(getQuerySuffix(id)) as unknown as FontImportDataQuery & {\n arguments: string\n }\n\n const data = JSON.parse(stringifiedArguments)\n\n const fontNames: string[] = []\n\n const emitFontFile: Parameters<FontLoader>[0]['emitFontFile'] = (\n content: Buffer,\n ext: string,\n preload: boolean,\n isUsingSizeAdjust?: boolean\n ) => {\n const name = loaderUtils.interpolateName(\n // @ts-expect-error\n {},\n `static/media/[hash]${isUsingSizeAdjust ? '-s' : ''}${preload ? '.p' : ''}.${ext}`,\n {\n content,\n }\n )\n\n fontNames.push(name)\n\n const outputPath = fontNameToUrl(name)\n\n if (!isDev) {\n this.emitFile({\n type: 'asset',\n fileName: outputPath.slice(1),\n source: content,\n })\n }\n\n fontFileMap.set(outputPath, { content, serve: isDev })\n\n return outputPath\n }\n\n const absPath = path.join(config!.root, relativePathFromRoot)\n\n const fontData = await (await fontLoader)({\n functionName,\n variableName,\n data,\n emitFontFile,\n loaderContext: this,\n cache,\n isDev,\n isServer: opts?.ssr ?? false,\n resolve: (src) => {\n return path.join(path.dirname(absPath), src.startsWith('.') ? src : `./${src}`)\n },\n })\n\n const normalizedAbsPath = normalizePath(absPath)\n\n fileToFontNames.set(normalizedAbsPath, {\n ...fileToFontNames.get(normalizedAbsPath),\n [normalizedId]: Array.from(\n new Set(\n (fileToFontNames.get(normalizedAbsPath)?.[normalizedId] || []).concat(fontNames)\n )\n ),\n })\n\n const targetCss = await nextFontPostcss(relativePathFromRoot, fontData)\n\n if (fontImports[normalizedAbsPath]) {\n for (const fontImport of fontImports[normalizedAbsPath]) {\n if (\n fileURLToPath(import.meta.resolve(removeQuerySuffix(fontImport.id))).concat(\n getQuerySuffix(fontImport.id)\n ) === encodeURIPath(id)\n ) {\n fontImport.css = targetCss.code\n }\n }\n\n if (\n !calledFinished &&\n !Object.values(fontImports)\n .flat()\n .filter((i) => !i.css).length\n ) {\n await onFinished(fileToFontNames).finally(() => {\n calledFinished = true\n })\n }\n }\n\n targetCssMap.set(normalizedId, targetCss)\n },\n },\n transform: {\n order: 'post',\n async handler(_code, id, opts) {\n if (!/\\.css(?:$|\\?)/.test(id)) return null\n\n const normalizedId = normalizeTargetCssId(id)\n\n const targetCss = targetCssMap.get(normalizedId)\n if (!targetCss) return null\n const { modules, code: css, exports } = targetCss\n\n const modulesCode = dataToEsm(\n Object.assign({}, modules, Object.fromEntries(exports.map((e) => [e.name, e.value]))),\n {\n namedExports: true,\n preferConst: true,\n }\n )\n\n const map = config?.css.devSourcemap\n ? new MagicString(css).generateMap({ hires: true })\n : undefined\n if (config?.command === 'serve' && !opts?.ssr) {\n const code = [\n `import { updateStyle as __vite__updateStyle, removeStyle as __vite__removeStyle } from ${JSON.stringify(\n path.posix.join(config.base, '/@vite/client')\n )}`,\n `const __vite__id = ${JSON.stringify(id)}`,\n `const __vite__css = ${JSON.stringify(css)}`,\n `__vite__updateStyle(__vite__id, __vite__css)`,\n modulesCode,\n `if (import.meta.hot) {\n import.meta.hot.accept()\n import.meta.hot.prune(() => __vite__removeStyle(__vite__id))\n }`,\n ].join('\\n')\n return {\n code,\n map,\n }\n }\n\n return {\n code: modulesCode,\n map,\n moduleSideEffects: false,\n }\n },\n },\n },\n {\n name: 'next-font:build',\n apply: 'build',\n renderChunk: {\n order: 'post',\n async handler(_code, chunk) {\n const resolvedModuleIds = (\n await Promise.all(\n chunk.moduleIds.map(async (moduleId) =>\n this.resolve(moduleId).then((resolved) => resolved?.id)\n )\n )\n ).filter(Boolean) as string[]\n\n if (resolvedModuleIds.length) {\n const targetCss = resolvedModuleIds\n .map(\n (id) =>\n Object.assign({}, targetCssMap.get(normalizeTargetCssId(id)) ?? {}, { id }) as {\n id: string\n code?: string\n }\n )\n .filter((t) => t != null && 'code' in t && typeof t.code === 'string')\n const chunkCSS = targetCss.map((t) => t.code).join()\n\n function ensureFileExt(name: string, ext: string) {\n return normalizePath(path.format({ ...path.parse(name), base: undefined, ext }))\n }\n\n if (chunkCSS) {\n const cssFullAssetName = ensureFileExt(chunk.name, '.css')\n // if facadeModuleId doesn't exist or doesn't have a CSS extension,\n // that means a JS entry file imports a CSS file.\n // in this case, only use the filename for the CSS chunk name like JS chunks.\n const cssAssetName =\n chunk.isEntry && (!chunk.facadeModuleId || !isCSSRequest(chunk.facadeModuleId))\n ? path.basename(cssFullAssetName)\n : cssFullAssetName\n\n // emit corresponding css file\n const referenceId = this.emitFile({\n type: 'asset',\n name: cssAssetName,\n source: chunkCSS,\n })\n chunk.viteMetadata!.importedCss.add(this.getFileName(referenceId))\n }\n }\n\n return null\n },\n },\n },\n ] as const satisfies PluginOption[],\n ] as const\n}\n","import { dataToEsm } from '@rollup/pluginutils'\nimport type { NextFontManifest } from 'next-font/manifest'\nimport type { PluginOption, ResolvedConfig } from 'vite'\nimport { importResolve, tryCatch } from '@/utils'\n\nexport const nextFontManifestPlugin = ({\n nextFontManifest,\n}: {\n nextFontManifest: NextFontManifest\n}): PluginOption[] => {\n let config: ResolvedConfig | null = null\n\n return [\n {\n name: 'next-font:manifest',\n configResolved(resolvedConfig) {\n config = resolvedConfig\n },\n transform: {\n order: 'post',\n async handler(_code, id) {\n const { data: resolvedId, error } = await tryCatch(importResolve(id))\n if (error != null || resolvedId == null) return\n\n if (resolvedId === import.meta.resolve('next-font/manifest')) {\n return [\n `function encodeURIPath(file) {\n return file\n .split('/')\n .map((p) => encodeURIComponent(p))\n .join('/')\n }`,\n `const injectedFontPreloadTags = new Set();`,\n `const __NEXT_FONT_MANIFEST__ = ${JSON.stringify(nextFontManifest, null, 2)};`,\n dataToEsm(\n {\n manifest: undefined,\n getPreloadableFonts: undefined,\n getFontMetadata: undefined,\n },\n {\n preferConst: true,\n namedExports: true,\n }\n )\n .replace(\n 'export const manifest = undefined;',\n `export const manifest = Object.freeze(__NEXT_FONT_MANIFEST__);`\n )\n .replace(\n 'export const getPreloadableFonts = undefined;',\n `export const getPreloadableFonts = (filePath) => {\n if (!manifest || !filePath) return null;\n const fontFiles = new Set();\n let foundFontUsage = false;\n const preloadedFontFiles = manifest[filePath];\n if (preloadedFontFiles) {\n foundFontUsage = true;\n for (let fontFile of preloadedFontFiles) {\n fontFile = \\`/${config!.build.assetsDir}/_next/\\${fontFile}\\`;\n fontFiles.add(fontFile);\n injectedFontPreloadTags.add(fontFile);\n }\n }\n if (fontFiles.size) {\n return [...fontFiles].sort();\n } else if (foundFontUsage && injectedFontPreloadTags.size === 0) {\n return [];\n } else {\n return null;\n }\n }`\n )\n .replace(\n 'export const getFontMetadata = undefined;',\n `export const getFontMetadata = (filePath) => {\n const metadata = {\n preload: [],\n preconnect: []\n };\n const preloadedFontFiles = filePath\n ? getPreloadableFonts(filePath)\n : null;\n if (preloadedFontFiles) {\n if (preloadedFontFiles.length) {\n for (let i = 0; i < preloadedFontFiles.length; i++) {\n const fontFilename = preloadedFontFiles[i];\n const ext = /.(woff|woff2|eot|ttf|otf)$/.exec(fontFilename)[1];\n const type = \\`font/\\${ext}\\`;\n const href = encodeURIPath(fontFilename);\n\n metadata.preload.push({\n href,\n type,\n crossOrigin: undefined,\n nonce: undefined\n });\n }\n } else {\n try {\n let url = new URL('/' + '${config!.build.assetsDir}');\n metadata.preconnect.push({\n href: url.origin,\n crossOrigin: undefined,\n nonce: undefined\n });\n } catch (error) {\n // assetPrefix must not be a fully qualified domain name. We assume\n // we should preconnect to same origin instead\n metadata.preconnect.push({\n href: '/',\n crossOrigin: '',\n nonce: null\n });\n }\n }\n }\n\n return metadata;\n }`\n ),\n `if (import.meta.hot) import.meta.hot.accept(${JSON.stringify(id)}, () => {\n manifest = __NEXT_FONT_MANIFEST__;\n })`,\n ].join('\\n')\n }\n },\n },\n },\n ]\n}\n","/**\n * @typedef { import('estree').Node} Node\n * @typedef {{\n * skip: () => void;\n * remove: () => void;\n * replace: (node: Node) => void;\n * }} WalkerContext\n */\n\nexport class WalkerBase {\n\tconstructor() {\n\t\t/** @type {boolean} */\n\t\tthis.should_skip = false;\n\n\t\t/** @type {boolean} */\n\t\tthis.should_remove = false;\n\n\t\t/** @type {Node | null} */\n\t\tthis.replacement = null;\n\n\t\t/** @type {WalkerContext} */\n\t\tthis.context = {\n\t\t\tskip: () => (this.should_skip = true),\n\t\t\tremove: () => (this.should_remove = true),\n\t\t\treplace: (node) => (this.replacement = node)\n\t\t};\n\t}\n\n\t/**\n\t * @template {Node} Parent\n\t * @param {Parent | null | undefined} parent\n\t * @param {keyof Parent | null | undefined} prop\n\t * @param {number | null | undefined} index\n\t * @param {Node} node\n\t */\n\treplace(parent, prop, index, node) {\n\t\tif (parent && prop) {\n\t\t\tif (index != null) {\n\t\t\t\t/** @type {Array<Node>} */ (parent[prop])[index] = node;\n\t\t\t} else {\n\t\t\t\t/** @type {Node} */ (parent[prop]) = node;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @template {Node} Parent\n\t * @param {Parent | null | undefined} parent\n\t * @param {keyof Parent | null | undefined} prop\n\t * @param {number | null | undefined} index\n\t */\n\tremove(parent, prop, index) {\n\t\tif (parent && prop) {\n\t\t\tif (index !== null && index !== undefined) {\n\t\t\t\t/** @type {Array<Node>} */ (parent[prop]).splice(index, 1);\n\t\t\t} else {\n\t\t\t\tdelete parent[prop];\n\t\t\t}\n\t\t}\n\t}\n}\n","import { WalkerBase } from './walker.js';\n\n/**\n * @typedef { import('estree').Node} Node\n * @typedef { import('./walker.js').WalkerContext} WalkerContext\n * @typedef {(\n * this: WalkerContext,\n * node: Node,\n * parent: Node | null,\n * key: string | number | symbol | null | undefined,\n * index: number | null | undefined\n * ) => void} SyncHandler\n */\n\nexport class SyncWalker extends WalkerBase {\n\t/**\n\t *\n\t * @param {SyncHandler} [enter]\n\t * @param {SyncHandler} [leave]\n\t */\n\tconstructor(enter, leave) {\n\t\tsuper();\n\n\t\t/** @type {boolean} */\n\t\tthis.should_skip = false;\n\n\t\t/** @type {boolean} */\n\t\tthis.should_remove = false;\n\n\t\t/** @type {Node | null} */\n\t\tthis.replacement = null;\n\n\t\t/** @type {WalkerContext} */\n\t\tthis.context = {\n\t\t\tskip: () => (this.should_skip = true),\n\t\t\tremove: () => (this.should_remove = true),\n\t\t\treplace: (node) => (this.replacement = node)\n\t\t};\n\n\t\t/** @type {SyncHandler | undefined} */\n\t\tthis.enter = enter;\n\n\t\t/** @type {SyncHandler | undefined} */\n\t\tthis.leave = leave;\n\t}\n\n\t/**\n\t * @template {Node} Parent\n\t * @param {Node} node\n\t * @param {Parent | null} parent\n\t * @param {keyof Parent} [prop]\n\t * @param {number | null} [index]\n\t * @returns {Node | null}\n\t */\n\tvisit(node, parent, prop, index) {\n\t\tif (node) {\n\t\t\tif (this.enter) {\n\t\t\t\tconst _should_skip = this.should_skip;\n\t\t\t\tconst _should_remove = this.should_remove;\n\t\t\t\tconst _replacement = this.replacement;\n\t\t\t\tthis.should_skip = false;\n\t\t\t\tthis.should_remove = false;\n\t\t\t\tthis.replacement = null;\n\n\t\t\t\tthis.enter.call(this.context, node, parent, prop, index);\n\n\t\t\t\tif (this.replacement) {\n\t\t\t\t\tnode = this.replacement;\n\t\t\t\t\tthis.replace(parent, prop, index, node);\n\t\t\t\t}\n\n\t\t\t\tif (this.should_remove) {\n\t\t\t\t\tthis.remove(parent, prop, index);\n\t\t\t\t}\n\n\t\t\t\tconst skipped = this.should_skip;\n\t\t\t\tconst removed = this.should_remove;\n\n\t\t\t\tthis.should_skip = _should_skip;\n\t\t\t\tthis.should_remove = _should_remove;\n\t\t\t\tthis.replacement = _replacement;\n\n\t\t\t\tif (skipped) return node;\n\t\t\t\tif (removed) return null;\n\t\t\t}\n\n\t\t\t/** @type {keyof Node} */\n\t\t\tlet key;\n\n\t\t\tfor (key in node) {\n\t\t\t\t/** @type {unknown} */\n\t\t\t\tconst value = node[key];\n\n\t\t\t\tif (value && typeof value === 'object') {\n\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\tconst nodes = /** @type {Array<unknown>} */ (value);\n\t\t\t\t\t\tfor (let i = 0; i < nodes.length; i += 1) {\n\t\t\t\t\t\t\tconst item = nodes[i];\n\t\t\t\t\t\t\tif (isNode(item)) {\n\t\t\t\t\t\t\t\tif (!this.visit(item, node, key, i)) {\n\t\t\t\t\t\t\t\t\t// removed\n\t\t\t\t\t\t\t\t\ti--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (isNode(value)) {\n\t\t\t\t\t\tthis.visit(value, node, key, null);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.leave) {\n\t\t\t\tconst _replacement = this.replacement;\n\t\t\t\tconst _should_remove = this.should_remove;\n\t\t\t\tthis.replacement = null;\n\t\t\t\tthis.should_remove = false;\n\n\t\t\t\tthis.leave.call(this.context, node, parent, prop, index);\n\n\t\t\t\tif (this.replacement) {\n\t\t\t\t\tnode = this.replacement;\n\t\t\t\t\tthis.replace(parent, prop, index, node);\n\t\t\t\t}\n\n\t\t\t\tif (this.should_remove) {\n\t\t\t\t\tthis.remove(parent, prop, index);\n\t\t\t\t}\n\n\t\t\t\tconst removed = this.should_remove;\n\n\t\t\t\tthis.replacement = _replacement;\n\t\t\t\tthis.should_remove = _should_remove;\n\n\t\t\t\tif (removed) return null;\n\t\t\t}\n\t\t}\n\n\t\treturn node;\n\t}\n}\n\n/**\n * Ducktype a node.\n *\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction isNode(value) {\n\treturn (\n\t\tvalue !== null && typeof value === 'object' && 'type' in value && typeof value.type === 'string'\n\t);\n}\n","import { SyncWalker } from './sync.js';\nimport { AsyncWalker } from './async.js';\n\n/**\n * @typedef {import('estree').Node} Node\n * @typedef {import('./sync.js').SyncHandler} SyncHandler\n * @typedef {import('./async.js').AsyncHandler} AsyncHandler\n */\n\n/**\n * @param {Node} ast\n * @param {{\n * enter?: SyncHandler\n * leave?: SyncHandler\n * }} walker\n * @returns {Node | null}\n */\nexport function walk(ast, { enter, leave }) {\n\tconst instance = new SyncWalker(enter, leave);\n\treturn instance.visit(ast, null);\n}\n\n/**\n * @param {Node} ast\n * @param {{\n * enter?: AsyncHandler\n * leave?: AsyncHandler\n * }} walker\n * @returns {Promise<Node | null>}\n */\nexport async function asyncWalk(ast, { enter, leave }) {\n\tconst instance = new AsyncWalker(enter, leave);\n\treturn await instance.visit(ast, null);\n}\n","import type * as acorn from 'acorn'\nimport { walk } from 'estree-walker'\nimport type { ProgramNode, State } from './transform'\n\nexport class FindFunctionsOutsideModuleScope {\n state: State\n\n constructor({ state }: { state: State }) {\n this.state = state\n }\n\n visit(ast: ProgramNode) {\n walk(ast, {\n enter: (node) => {\n if (node.type === 'Identifier') {\n this.visitIdent(node as acorn.Identifier)\n }\n },\n })\n }\n\n visitIdent(ident: acorn.Identifier) {\n if (\n ident.name in this.state.fontFunctions &&\n !this.state.fontFunctionsInAllowedScope.includes(ident.start)\n ) {\n throw new Error('Font loaders must be called and assigned to a const in the module scope')\n }\n }\n}\n","import type * as acorn from 'acorn'\nimport { walk } from 'estree-walker'\nimport { removeQuerySuffix } from '../utils'\nimport type { ProgramNode, State } from './transform'\n\nexport class FontFunctionsCollector {\n state: State\n fontLoaders: string[]\n remapImports: Record<string, string | undefined>\n\n constructor({\n state,\n fontLoaders,\n remapImports,\n }: {\n state: State\n fontLoaders: string[]\n remapImports: Record<string, string | undefined>\n }) {\n this.state = state\n this.fontLoaders = fontLoaders\n this.remapImports = remapImports\n }\n\n visit(ast: ProgramNode) {\n walk(ast, {\n enter: (node) => {\n if (node.type === 'ImportDeclaration') {\n this.visitImportDecl(node as acorn.ImportDeclaration)\n }\n },\n })\n }\n\n visitImportDecl(importDecl: acorn.ImportDeclaration) {\n if (typeof importDecl.source.value !== 'string') return\n\n let resolvedId: string | null = null\n\n try {\n resolvedId = import.meta.resolve(\n removeQuerySuffix(this.remapImports[importDecl.source.value] || importDecl.source.value)\n )\n } catch {}\n\n if (\n resolvedId != null &&\n this.fontLoaders.map((fontLoader) => import.meta.resolve(fontLoader)).includes(resolvedId)\n ) {\n this.state.removeableModuleItems.push(importDecl.start)\n\n for (const specifier of importDecl.specifiers) {\n const { local, functionName } = (() => {\n switch (specifier.type) {\n case 'ImportSpecifier': {\n const { local, imported } = specifier as acorn.ImportSpecifier\n const functionName = imported.type === 'Identifier' ? imported.name : local.name\n return {\n local,\n functionName,\n }\n }\n case 'ImportDefaultSpecifier': {\n const { local } = specifier as acorn.ImportDefaultSpecifier\n return {\n local,\n }\n }\n case 'ImportNamespaceSpecifier': {\n throw new Error(\"Font loaders can't have namespace imports\")\n }\n }\n })()\n\n this.state.fontFunctionsInAllowedScope.push(local.start)\n this.state.fontFunctions[local.name] = {\n functionName,\n loader: importDecl.source.value,\n }\n }\n }\n }\n}\n","const o=new WeakMap;let u=0;export function stableHash(t){const i=typeof t,s=t&&t.constructor,c=s===Date;if(Object(t)===t&&!c&&s!=RegExp){let e=o.get(t);if(e)return e;e=++u+\"~\",o.set(t,e);let n;if(s===Array){for(e=\"@\",n=0;n<t.length;n++)e+=stableHash(t[n])+\",\";o.set(t,e)}else if(s===Object){e=\"#\";const f=Object.keys(t).sort();for(;(n=f.pop())!==void 0;)t[n]!==void 0&&(e+=n+\":\"+stableHash(t[n])+\",\");o.set(t,e)}return e}return c?t.toJSON():i===\"symbol\"?t.toString():i===\"string\"?JSON.stringify(t):\"\"+t}export default stableHash;\n","export const DUMMY_SP = {\n start: 0,\n end: 0,\n}\n","import type * as acorn from 'acorn'\n\nexport const exprToJson = (expr: acorn.Expression): any => {\n switch (expr.type) {\n case 'Literal':\n return expr.value\n case 'ObjectExpression':\n return objectLitToJson(expr)\n case 'ArrayExpression': {\n const elements = expr.elements.map((e) => {\n if (e) {\n if (e.type === 'SpreadElement') throw new Error('Unexpected spread')\n return exprToJson(e)\n } else {\n throw new Error('Unexpected empty value in array')\n }\n })\n\n return elements\n }\n default:\n throw new Error('Font loader values must be explicitly written literals.')\n }\n}\n\nconst objectLitToJson = (objectLit: acorn.ObjectExpression): any => {\n const values: Record<string, any> = {}\n\n for (const prop of objectLit.properties) {\n if (prop.type === 'SpreadElement') throw new Error('Unexpected spread')\n\n if (prop.kind !== 'init') throw new Error('Unexpected key')\n\n if (prop.key.type !== 'Identifier') throw new Error('Unexpected object key type')\n\n values[prop.key.name] = exprToJson(prop.value)\n }\n\n return values\n}\n","import path from 'node:path'\nimport type * as acorn from 'acorn'\nimport { walk } from 'estree-walker'\nimport queryString from 'query-string'\nimport stableHash from 'stable-hash'\nimport { DUMMY_SP } from '../constants'\nimport type { FontImportDataQuery, ProgramNode, State } from './transform'\nimport { exprToJson } from './utils'\n\nexport class FontImportsGenerator {\n state: State\n id: string\n remapImports: Record<string, string | undefined>\n\n constructor({\n state,\n id,\n remapImports,\n }: {\n state: typeof FontImportsGenerator.prototype.state\n id: typeof FontImportsGenerator.prototype.id\n remapImports: typeof FontImportsGenerator.prototype.remapImports\n }) {\n this.state = state\n this.id = id\n this.remapImports = remapImports\n }\n\n visit(ast: ProgramNode) {\n walk(ast, {\n enter: (node) => {\n if (node.type === 'VariableDeclaration') {\n this.checkVarDecl(node as acorn.VariableDeclaration)\n }\n if (node.type === 'VariableDeclaration') {\n if (this.checkVarDecl(node as acorn.VariableDeclaration) != null)\n this.state.removeableModuleItems.push((node as acorn.VariableDeclaration).start)\n }\n if (node.type === 'ExportNamedDeclaration' || node.type === 'ExportDefaultDeclaration') {\n const exportDecl = node as acorn.ExportNamedDeclaration | acorn.ExportDefaultDeclaration\n\n if (exportDecl.declaration?.type === 'VariableDeclaration') {\n const varDecl = exportDecl.declaration as acorn.VariableDeclaration\n const ident = this.checkVarDecl(varDecl)\n if (ident) {\n this.state.removeableModuleItems.push(exportDecl.start)\n\n this.state.fontExports.push({\n type: 'ExportNamedDeclaration',\n specifiers: [\n {\n type: 'ExportSpecifier',\n local: ident,\n exported: {\n name: ident.name,\n type: 'Identifier',\n ...DUMMY_SP,\n },\n ...DUMMY_SP,\n },\n ],\n attributes: [],\n ...DUMMY_SP,\n } satisfies acorn.ExportNamedDeclaration)\n }\n }\n }\n },\n })\n }\n\n checkVarDecl(varDecl: acorn.VariableDeclaration) {\n const decl = varDecl.declarations[0]\n const ident = decl?.id as acorn.Identifier | undefined\n const expr = decl?.init\n\n if (expr?.type === 'CallExpression') {\n const callExpr = expr as acorn.CallExpression\n const importDecl = this.checkCallExpr(callExpr, ident)\n\n if (importDecl) {\n if (varDecl.kind !== 'const')\n throw new Error('Font loader calls must be assigned to a const')\n if (!ident) throw new Error('Font loader calls must be assigned to an identifier')\n\n importDecl.specifiers = [\n {\n type: 'ImportDefaultSpecifier',\n local: ident,\n ...DUMMY_SP,\n } satisfies acorn.ImportDefaultSpecifier,\n ]\n\n if (!this.state.fontImports.map(stableHash).includes(stableHash(importDecl))) {\n // @ts-expect-error\n this.state.fontImports.push(importDecl)\n }\n\n return ident\n }\n }\n }\n\n checkCallExpr(callExpr: acorn.CallExpression, variableName?: acorn.Identifier) {\n if (callExpr.callee.type === 'Identifier') {\n const ident = callExpr.callee as acorn.Identifier\n const fontFunction = this.state.fontFunctions[ident.name]\n\n if (fontFunction) {\n this.state.fontFunctionsInAllowedScope.push(ident.start)\n const json = callExpr.arguments.map((expr_or_spread) => {\n if (expr_or_spread.type === 'SpreadElement')\n throw new Error(\"Font loaders don't accept spreads\")\n\n return exprToJson(expr_or_spread)\n })\n\n const functionName = fontFunction.functionName ?? ''\n const queryJson = {\n path: this.id,\n import: functionName,\n arguments: json,\n variableName: variableName?.name ?? '',\n } satisfies FontImportDataQuery\n\n return {\n type: 'ImportDeclaration',\n source: {\n type: 'Literal',\n value: queryString.stringifyUrl({\n url: path.posix.join(\n this.remapImports[fontFunction.loader] || fontFunction.loader,\n 'target.css'\n ),\n query: Object.assign({}, queryJson, {\n arguments: JSON.stringify(queryJson.arguments),\n }),\n }),\n ...DUMMY_SP,\n },\n specifiers: [],\n attributes: [],\n ...DUMMY_SP,\n } as acorn.ImportDeclaration\n }\n }\n }\n}\n","import type estree from 'estree'\nimport { walk } from 'estree-walker'\nimport type { parseAst } from 'vite'\nimport { FindFunctionsOutsideModuleScope } from './find-functions-outside-module-scope'\nimport { FontFunctionsCollector } from './font-functions-collector'\nimport { FontImportsGenerator } from './font-imports-generator'\n\nexport interface FontImportDataQuery {\n path: string\n import: string\n arguments: any[]\n variableName: string\n}\n\nexport interface State {\n removeableModuleItems: number[]\n fontFunctionsInAllowedScope: number[]\n fontFunctions: Record<\n string,\n {\n loader: string\n functionName?: string\n imported?: true\n }\n >\n fontImports: estree.ModuleDeclaration[]\n fontExports: estree.ModuleDeclaration[]\n}\n\nexport type ProgramNode = ReturnType<typeof parseAst>\nexport const visit = ({\n ast,\n fontLoaders,\n id,\n remapImports,\n}: {\n ast: ReturnType<typeof parseAst>\n fontLoaders: string[]\n remapImports: Record<string, string | undefined>\n id: string\n}) => {\n const state = new Proxy(\n {\n removeableModuleItems: [],\n fontFunctionsInAllowedScope: [],\n fontFunctions: {},\n fontImports: [],\n fontExports: [],\n } as State,\n {\n set(target, prop, value) {\n target[prop as keyof State] = value\n return true\n },\n get(target, prop) {\n return target[prop as keyof State]\n },\n }\n )\n const functionsCollector = new FontFunctionsCollector({\n state,\n fontLoaders,\n remapImports,\n })\n functionsCollector.visit(ast)\n\n if (state.removeableModuleItems.length > 0) {\n const importGenerator = new FontImportsGenerator({\n state,\n id,\n remapImports,\n })\n importGenerator.visit(ast)\n\n const wrongScope = new FindFunctionsOutsideModuleScope({ state })\n wrongScope.visit(ast)\n\n const isRemovable = <T extends { start: number }>(node: T) => {\n return state.removeableModuleItems.includes(node.start)\n }\n\n // @ts-expect-error\n const firstRemovableIndex = ast.body.findIndex(isRemovable)\n\n // Remove marked module items\n walk(ast as import('estree-walker').Node, {\n enter(node) {\n // @ts-expect-error\n if (isRemovable(node)) this.remove()\n },\n })\n\n // Add font imports and exports\n ast.body.splice(firstRemovableIndex, 0, ...state.fontImports)\n ast.body.push(...state.fontExports)\n\n return {\n changed: true,\n state,\n }\n }\n\n return {\n changed: false,\n state,\n }\n}\n","import path from 'node:path'\nimport MagicString from 'magic-string'\nimport type { PluginOption, ResolvedConfig } from 'vite'\nimport { visit } from '@/ast/transform'\nimport type { TargetCss } from '@/declarations'\nimport { createCachedImport, tryCatch } from '@/utils'\n\nconst importEscodegen = createCachedImport(\n () =>\n // @ts-expect-error\n import('escodegen-wallaby') as unknown as Promise<typeof import('escodegen')>\n)\n\ntype OnFontImportsChanged = (\n id: string,\n newValue: string[],\n previousValue: string[]\n) => void | Promise<void>\n\nexport const nextFontTransformerPlugin = ({\n fontImports,\n onFontImportsChanged,\n}: {\n fontImports: Record<string, TargetCss[]>\n onFontImportsChanged: OnFontImportsChanged\n}): PluginOption[] => {\n let config: ResolvedConfig | null = null\n\n const rewriteNextFontImport = {\n '@next/font/google': 'next-font/google',\n '@next/font/local': 'next-font/local',\n 'next/font/google': 'next-font/google',\n 'next/font/local': 'next-font/local',\n }\n const importedLoaders = ['next-font/google', 'next-font/local']\n\n return [\n {\n name: 'next-font:transform',\n async configResolved(resolvedConfig) {\n config = resolvedConfig\n },\n async transform(code, id) {\n if (!/\\.(?:j|t)sx?$|\\.mjs$/.test(id)) return null\n\n const parse = async () =>\n this.parse(code, {\n jsx: true,\n })\n\n const { data: ast, error } = await tryCatch(parse())\n if (error) {\n this.error(error)\n }\n if (!ast) return\n\n const { changed, state } = visit({\n ast,\n fontLoaders: importedLoaders,\n id: path.relative(config!.root, id),\n remapImports: rewriteNextFontImport,\n })\n\n if (!changed) return\n\n const nextFontImports = state.fontImports.map(\n (i) => (i as import('estree').ImportDeclaration).source.value as string\n )\n\n const previousFontImports = fontImports[id]\n if (previousFontImports) {\n const importsChanged = nextFontImports.some(\n (i) => !previousFontImports.some((p) => p.id === i)\n )\n if (importsChanged) {\n onFontImportsChanged(\n id,\n nextFontImports,\n previousFontImports.map((i) => i.id)\n )\n }\n }\n\n fontImports[id] = nextFontImports.map((i) => ({\n id: i,\n }))\n\n const escodegen = await importEscodegen()\n\n const s = new MagicString('')\n\n for (const node of ast.body) {\n s.append(escodegen.generate(node))\n s.append('\\n')\n }\n\n return {\n code: s.toString(),\n }\n },\n },\n ]\n}\n","import { fileURLToPath } from 'node:url'\nimport type { NextFontManifest } from 'next-font/manifest'\nimport type { PluginOption, ViteDevServer } from 'vite'\nimport type { Mutable, TargetCss } from './declarations'\nimport { getPageIsUsingSizeAdjust, getPreloadedFontFiles } from './manifest'\nimport {\n nextFontLoaderPlugin,\n nextFontManifestPlugin,\n nextFontTransformerPlugin,\n type OnFinished,\n} from './plugins'\nimport { getQuerySuffix, normalizeTargetCssId, removeQuerySuffix } from './utils'\n\nconst nextFont = (): PluginOption[] => {\n const servers: ViteDevServer[] = []\n\n const fontImports = new Proxy<Record<string, TargetCss[]>>(\n {},\n {\n get(t, p, r) {\n return Reflect.get(t, p, r)\n },\n set(t, p, v, r) {\n return Reflect.set(t, p, v, r)\n },\n }\n )\n\n const nextFontManifest = {\n isUsingSizeAdjust: false,\n } as Mutable<NextFontManifest>\n\n const reloadManifest = () => {\n for (const server of servers) {\n const manifestId = fileURLToPath(import.meta.resolve('next-font/manifest'))\n const manifestMod = server.moduleGraph.getModuleById(manifestId)\n if (manifestMod) {\n server.reloadModule(manifestMod)\n server.moduleGraph.invalidateModule(manifestMod)\n server.moduleGraph.onFileChange(manifestId)\n server.ws.send({\n type: 'full-reload',\n path: manifestId,\n })\n }\n }\n }\n\n const onFinished: OnFinished = async (fileToFontNames) => {\n for (const [id, targetCss] of fileToFontNames) {\n for (const fontFiles of Object.values(targetCss)) {\n // Look if size-adjust fallback font is being used\n if (!nextFontManifest.isUsingSizeAdjust) {\n nextFontManifest.isUsingSizeAdjust = getPageIsUsingSizeAdjust(fontFiles)\n }\n\n const preloadedFontFiles = getPreloadedFontFiles(fontFiles)\n\n // Add an entry of the module's font files in the manifest.\n // We'll add an entry even if no files should preload.\n // When an entry is present but empty, instead of preloading the font files, a preconnect tag is added.\n if (fontFiles.length > 0) {\n nextFontManifest[id] ||= []\n nextFontManifest[id] = Array.from(\n new Set(nextFontManifest[id].concat(preloadedFontFiles))\n )\n }\n }\n }\n\n reloadManifest()\n }\n\n const [{ resetCalledFinished, removeTargetCss }, loaderPlugin] = nextFontLoaderPlugin({\n nextFontManifest,\n fontImports,\n onFinished,\n })\n\n return [\n {\n name: 'next-font:scan',\n configureServer(server) {\n servers.push(server)\n },\n },\n nextFontTransformerPlugin({\n fontImports,\n onFontImportsChanged: async (_id, newValue, previousValue) => {\n resetCalledFinished()\n\n const removed = previousValue.filter((p) => !newValue.includes(p))\n\n for (const server of servers) {\n for (const id of removed) {\n const resolvedId =\n fileURLToPath(import.meta.resolve(removeQuerySuffix(id))) + getQuerySuffix(id)\n\n removeTargetCss(normalizeTargetCssId(resolvedId))\n\n const module = server.moduleGraph.getModuleById(resolvedId)\n if (module) {\n server.moduleGraph.onFileDelete(resolvedId)\n server.ws.send({\n type: 'prune',\n paths: [resolvedId],\n })\n server.ws.send({\n type: 'update',\n updates: [\n {\n type: 'css-update',\n path: resolvedId,\n acceptedPath: resolvedId,\n timestamp: Date.now(),\n },\n {\n type: 'css-update',\n path: id,\n acceptedPath: id,\n timestamp: Date.now(),\n },\n ],\n })\n // server.moduleGraph.invalidateModule(module)\n server.reloadModule(module)\n\n server.ws.send({\n type: 'full-reload',\n path: resolvedId,\n })\n }\n }\n\n reloadManifest()\n }\n },\n }),\n loaderPlugin,\n nextFontManifestPlugin({\n nextFontManifest,\n }),\n ] as PluginOption[]\n}\n\nexport default nextFont\n"],"names":["getPreloadedFontFiles","fontFiles","filter","file","test","getPageIsUsingSizeAdjust","some","includes","normalizePathRegExp","RegExp","win32","sep","normalizePath","filename","replace","posix","reservedWords","builtins","forbiddenIdentifiers","Set","split","add","makeLegalIdentifier","str","identifier","_","letter","toUpperCase","has","stringify","obj","JSON","char","charCodeAt","toString","slice","serializeArray","arr","indent","baseIndent","output","separator","i","length","key","serialize","serializeObject","entries","Object","value","stringKey","Array","isArray","Date","getTime","Infinity","Symbol","keyFor","undefined","hasStringIsWellFormed","String","prototype","isWellFormedString","input","isWellFormed","dataToEsm","data","options","_a","_b","t","compact","n","declarationType","preferConst","namedExports","code","magic","maxUnderbarPrefixLength","keys","underbarPrefixLength","exec","arbitraryNamePrefix","repeat","namedExportCode","defaultExportRows","arbitraryNameExportRows","objectShorthand","push","includeArbitraryNames","variableName","arbitraryExportCode","join","defaultExportCode","path","require","isUrlRequest","url","isAbsolute","module","matchNativeWin32Path","urlToRequest","root","moduleRequestRegex","request","Error","MAX_SHORT_STRING","Math","floor","WasmHash","instance","instancesPool","chunkSize","digestSize","exports","init","mem","Buffer","from","memory","buffer","buffered","reset","update","encoding","_updateWithShortString","_updateWithBuffer","endPos","cc","write","l","newBuffered","copyWithin","copy","stop","digest","type","final","hex","create","wasmModule","old","pop","WebAssembly","Instance","xxhash64","Module","bind","BatchedHash","hash","string","inputEncoding","startsWith","md4","BULK_SIZE","digestCaches","BulkUpdateDecorator","hashOrFactory","hashKey","hashFactory","digestCache","cacheKey","Map","cacheEntry","get","digestResult","set","baseEncodeTables","divmod32","uint32Array","divisor","carry","encodeBufferToBase","base","encodeTable","limit","ceil","log2","min","Uint32Array","crypto","createXXHash64","createMd4","getHashDigest","algorithm","digestType","maxLength","createHash","substr","interpolateName","loaderContext","name","hasQuery","resourceQuery","resourcePath","context","content","regExp","ext","basename","directory","folder","query","parsed","parse","dir","relative","hashIdx","indexOf","all","hashType","parseInt","match","forEach","matched","customInterpolateName","call","token","singleMatcher","multiMatcher","decodeComponents","components","decodeURIComponent","left","right","concat","decode","tokens","customDecodeURIComponent","replaceMap","result","decodeUriComponent","encodedURI","TypeError","includeKeys","object","predicate","descriptor","getOwnPropertyDescriptor","enumerable","defineProperty","Reflect","ownKeys","splitOnFirst","separatorIndex","isNullOrUndefined","strictUriEncode","encodeURIComponent","replaceAll","x","encodeFragmentIdentifier","encoderForArrayFormat","arrayFormat","index","skipNull","skipEmptyString","encode","keyValueSeparator","arrayFormatSeparator","parserForArrayFormat","accumulator","isEncodedArray","newValue","map","item","arrayValue","flat","validateArrayFormatSeparator","strict","decodeComponent","keysSorter","sort","a","b","Number","removeHash","hashStart","getHash","parseValue","toLowerCase","isNaN","trim","parseBooleans","parseNumbers","extract","queryStart","types","formatter","returnValue","parameter","parameter_","key2","value2","values","reduce","Boolean","shouldFilter","objectCopy","parseUrl","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","queryString","urlObjectForFragmentEncode","URL","pick","exclude","exclusionFilter","require$$0","postcssNextFontPlugin","fallbackFonts","adjustFontFallback","variable","weight","style","postcssPlugin","Once","fontFamily","normalizeFamily","family","formatFamily","node","nodes","familyNode","find","decl","prop","adjustFontFallbackFamily","fallbackFontFace","postcss","atRule","fallbackFont","ascentOverride","descentOverride","lineGapOverride","sizeAdjust","Declaration","isRange","formattedFontFamilies","classRule","Rule","selector","varialbeRule","fontWeight","fontStyle","getQuerySuffix","id","removeQuerySuffix","createCachedImport","imp","cached","then","tryCatch","promise","error","importResolve","resolve","encodeURIPath","uri","filePath","cleanUrl","postfix","encodeURI","postfixRE","fontNameToUrl","fontName","normalizeTargetCssId","pickKeys","fromEntries","importPostcssModules","importPostcss","nextFontPostcss","relativePathFromRoot","css","fontFamilyHash","loaderUtils","modules","runPostCss","postcssPlugins","default","generateScopedName","originalClassName","getJSON","_cssFileName","_modules","_outputFileName","postcssOptions","postcssResult","process","e","column","assign","message","loc","line","mappings","googleLoader","mod","localLoader","nextFontLoaderPlugin","nextFontManifest","fontImports","onFinished","config","fileToFontNames","loaderCache","google","font","local","fontLoaders","targetCssMap","removeTargetCss","delete","absPath","fontNames","fontFileMap","serve","lastEnv","calledFinished","resetCalledFinished","enforce","configResolved","resolvedConfig","configureServer","server","middlewares","use","req","res","next","originalUrl","end","load","order","handler","opts","resolvedId","pair","fontLoader","cache","normalizedId","isDev","command","environment","import","functionName","arguments","stringifiedArguments","emitFontFile","preload","isUsingSizeAdjust","outputPath","emitFile","fileName","source","fontData","isServer","ssr","src","dirname","normalizedAbsPath","targetCss","fontImport","fileURLToPath","finally","transform","_code","modulesCode","devSourcemap","MagicString","generateMap","hires","moduleSideEffects","apply","renderChunk","chunk","resolvedModuleIds","Promise","moduleIds","moduleId","resolved","chunkCSS","ensureFileExt","format","cssFullAssetName","cssAssetName","isEntry","facadeModuleId","isCSSRequest","referenceId","viteMetadata","importedCss","getFileName","nextFontManifestPlugin","manifest","getPreloadableFonts","getFontMetadata","build","assetsDir","WalkerBase","should_skip","should_remove","replacement","skip","remove","parent","splice","SyncWalker","enter","leave","visit","_should_skip","_should_remove","_replacement","skipped","removed","isNode","walk","ast","FindFunctionsOutsideModuleScope","state","visitIdent","ident","fontFunctions","fontFunctionsInAllowedScope","start","FontFunctionsCollector","remapImports","visitImportDecl","importDecl","removeableModuleItems","specifier","specifiers","imported","loader","o","WeakMap","u","stableHash","s","c","f","toJSON","DUMMY_SP","exprToJson","expr","objectLitToJson","elements","objectLit","properties","kind","FontImportsGenerator","checkVarDecl","exportDecl","declaration","varDecl","fontExports","exported","attributes","declarations","callExpr","checkCallExpr","callee","fontFunction","json","expr_or_spread","queryJson","Proxy","target","functionsCollector","importGenerator","wrongScope","isRemovable","firstRemovableIndex","body","findIndex","changed","importEscodegen","nextFontTransformerPlugin","onFontImportsChanged","rewriteNextFontImport","importedLoaders","jsx","nextFontImports","previousFontImports","importsChanged","p","escodegen","append","generate","nextFont","servers","r","v","reloadManifest","manifestId","manifestMod","moduleGraph","getModuleById","reloadModule","invalidateModule","onFileChange","ws","send","preloadedFontFiles","loaderPlugin","_id","previousValue","onFileDelete","paths","updates","acceptedPath","timestamp","now"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,23,24,25,28]}