From 7f3f1540b0cbc7d861c6925c17c17887deaf3374 Mon Sep 17 00:00:00 2001 From: UmamiAppearance Date: Tue, 20 Dec 2022 07:18:49 +0100 Subject: [PATCH] v0.1.6 --- cjs/import-manager.cjs | 2 +- cjs/import-manager.cjs.map | 2 +- package-lock.json | 58 +++++++++++++++++++------------------- package.json | 6 ++-- src/core.js | 2 +- 5 files changed, 35 insertions(+), 35 deletions(-) diff --git a/cjs/import-manager.cjs b/cjs/import-manager.cjs index 16a54b2..098fd04 100644 --- a/cjs/import-manager.cjs +++ b/cjs/import-manager.cjs @@ -370,7 +370,7 @@ class ImportManagerUnitMethods { * It handles code analysis, creates units from import * statements, attaches methods to the units and more. * - * @version 0.1.5 + * @version 0.1.6 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT * @see https://github.com/UmamiAppearance/rollup-plugin-import-manager diff --git a/cjs/import-manager.cjs.map b/cjs/import-manager.cjs.map index fa22781..f6d9a89 100644 --- a/cjs/import-manager.cjs.map +++ b/cjs/import-manager.cjs.map @@ -1 +1 @@ -{"version":3,"file":"import-manager.cjs","sources":["../src/errors.js","../src/unit-methods.js","../src/core.js"],"sourcesContent":["/**\n * Custom error to tell the user, that it is\n * not possible to select a specific unit.\n */\nclass MatchError extends Error {\n constructor(message) {\n super(message);\n this.name = \"MatchError\";\n }\n}\n\n/**\n * Custom error to abort the building process\n * for retrieving information.\n */\nclass DebuggingError extends Error {\n constructor(message) {\n super(JSON.stringify(message, null, 4));\n this.name = \"DebuggingError\";\n }\n}\n\nexport { DebuggingError, MatchError };\n","import { DebuggingError, MatchError } from \"./errors.js\";\n\n/**\n * Creates methods for unit manipulation to\n * be attached to a requested unit.\n */\nexport default class ImportManagerUnitMethods {\n\n /**\n * Stores the handed over unit and creates\n * an update method.\n * @param {Object} unit - The unit a user requests \n * @param {*} es6NodeToUnit - Method to analyze a \n */\n constructor(unit, es6NodeToUnit) {\n this.unit = unit;\n\n // After a change in the code of a es6 unit is made\n // it gets analyzed again, which is very verbose,\n // but prevents errors. The \"MagicString\" does not\n // contain multiple changes at a time. The analysis\n // function is the same as for the initial file\n // analyses and gets handed over by the main class.\n\n this.updateUnit = () => {\n\n const unit = es6NodeToUnit(\n this.unit.code.toString(),\n this.unit.start,\n this.unit.end\n );\n\n Object.assign(this.unit, unit);\n\n };\n }\n\n\n /**\n * Makes sure, that the processed unit is of type 'es6'. \n */\n #ES6only() {\n if (this.unit.type !== \"es6\") {\n throw new Error(\"This method is only available for ES6 imports.\");\n }\n }\n\n\n /**\n * Changes the module part of a import statement.\n * @param {string} name - The new module part/path.\n * @param {*} modType - Module type (literal|raw).\n */\n renameModule(name, modType) {\n if (modType === \"string\") {\n if (!this.unit.module.quotes) {\n this.unit.module.quotes = \"\\\"\";\n }\n const q = this.unit.module.quotes;\n name = q + name + q;\n } else if (modType !== \"raw\") {\n throw new TypeError(`Unknown modType '${modType}'. Valid types are 'string' and 'raw'.`);\n }\n \n this.unit.code.overwrite(this.unit.module.start, this.unit.module.end, name);\n\n if (this.unit.type === \"es6\") {\n this.updateUnit();\n }\n }\n\n\n /**\n * Adds default members to the import statement.\n * @param {string[]} names - A list of default members to add.\n */\n addDefaultMembers(names) {\n this.#ES6only();\n\n let start; \n let defStr;\n let memberPart = null;\n\n // handle the case if default members already exist\n if (this.unit.defaultMembers.count > 0) {\n start = this.unit.defaultMembers.entities.at(-1).absEnd;\n defStr = this.unit.defaultMembers.separator \n + names.join(this.unit.defaultMembers.separator);\n this.unit.code.appendRight(start, defStr);\n }\n\n // handle the case if default members do not exist, \n // and also no non default members (the addition\n // needs to be appended left, otherwise is\n // interferes with the module part)\n else if (this.unit.members.count === 0) {\n start = this.unit.module.start;\n defStr = names.join(this.unit.members.separator);\n memberPart = defStr;\n defStr += \" from \";\n this.unit.code.appendLeft(start, defStr);\n }\n\n // handle the case if default members do not exist, \n // but non default members\n else {\n start = this.unit.members.start;\n defStr = names.join(this.unit.defaultMembers.separator)\n + this.unit.members.separator;\n this.unit.code.appendRight(start, defStr);\n }\n \n this.updateUnit(memberPart);\n }\n\n\n /**\n * Adds non default members to the import statement.\n * @param {string[]} names - A list of members to add. \n */\n addMembers(names) {\n this.#ES6only();\n\n let start; \n let memStr;\n let memberPart = null;\n \n // handle the case if members already exist\n if (this.unit.members.count > 0) {\n start = this.unit.members.entities.at(-1).absEnd;\n memStr = this.unit.members.separator \n + names.join(this.unit.members.separator);\n this.unit.code.appendRight(start, memStr);\n }\n\n // handle the case if members do not exist, \n // and also no default members (the addition\n // needs to be appended left, otherwise is\n // interferes with the module part)\n else if (this.unit.defaultMembers.count === 0) {\n start = this.unit.module.start;\n memStr = \"{ \"\n + names.join(this.unit.members.separator)\n + \" }\";\n memberPart = memStr;\n memStr += \" from \";\n this.unit.code.appendLeft(start, memStr);\n }\n\n // handle the case if members do not exist, \n // but default members\n else {\n start = this.unit.defaultMembers.end;\n memStr = this.unit.defaultMembers.separator\n + \"{ \"\n + names.join(this.unit.members.separator)\n + \" }\";\n this.unit.code.appendRight(start, memStr);\n }\n\n this.updateUnit(memberPart);\n }\n\n\n /**\n * Internal helper method to get the member type.\n * The user input distinguishes between member/defaultMember\n * and the plural versions of them. To prevent confusion in the\n * process of selecting the different styles in the unit, this\n * methods adds an \"s\" to the given string if missing and selects\n * the requested type.\n * @param {*} memberType \n * @returns \n */\n #getType(memberType) {\n if (memberType.at(-1) !== \"s\") {\n memberType += \"s\";\n }\n return this.unit[memberType];\n }\n\n\n /**\n * Internal helper method to find a specific member\n * or default member.\n * @param {string} memberType - member/defaultMember. \n * @param {string} name - (default) member name. \n * @returns {Object} - (default) member object.\n */\n #findMember(memberType, name) {\n if (!name) {\n throw new Error(`${memberType} name must be set.`);\n }\n const filtered = this.#getType(memberType).entities.filter(m => m.name === name);\n if (filtered.length !== 1) {\n throw new MatchError(`Unable to locate ${memberType} with name '${name}'`);\n }\n return filtered[0];\n }\n\n\n /**\n * Removes a (default) member.\n * @param {string} memberType - member|defaultMember\n * @param {string} name - Name of the (default) member \n */\n removeMember(memberType, name) {\n this.#ES6only();\n\n const member = this.#findMember(memberType, name);\n\n if (this.#getType(memberType).count === 1) {\n this.removeMembers(memberType);\n } \n\n else {\n let start;\n let end;\n \n if (member.next) {\n start = member.start;\n end = member.next;\n } else if (member.last) {\n start = member.last;\n end = member.absEnd;\n } else {\n start = member.start;\n end = member.absEnd;\n }\n\n this.unit.code.remove(start, end); \n this.updateUnit();\n\n }\n }\n\n\n /**\n * Removes an entire group of members or default members.\n * @param {string} membersType - member(s)|defaultMember(s) \n */\n removeMembers(membersType) {\n this.#ES6only();\n\n const isDefault = membersType.indexOf(\"default\") > -1;\n\n const members = this.#getType(membersType);\n const others = this.#getType(isDefault ? \"members\" : \"defaultMembers\");\n\n let memberPart = null;\n if (others.count > 0) {\n \n const start = !isDefault \n ? this.unit.defaultMembers.entities.at(-1).end\n : members.start;\n\n this.unit.code.remove(start, members.end);\n }\n\n else {\n this.unit.code.remove(members.start, this.unit.module.start);\n memberPart = \"\";\n }\n\n this.updateUnit(memberPart);\n }\n\n\n /**\n * Renames a single (default) member. The alias\n * can be kept or overwritten. \n * @param {string} memberType - member|defaultMember \n * @param {string} name - The (default) member to rename.\n * @param {string} newName - The new name of the (default) member.\n * @param {boolean} keepAlias - True if the alias shall be untouched. \n */\n renameMember(memberType, name, newName, keepAlias) {\n this.#ES6only();\n\n const member = this.#findMember(memberType, name);\n let end;\n\n if (keepAlias) {\n end = member.end;\n } else {\n end = member.absEnd;\n }\n \n this.unit.code.overwrite(member.start, end, newName);\n this.updateUnit();\n }\n\n\n /**\n * Changes the alias. Changing can be renaming\n * setting it initially or removing. \n * @param {string} memberType - member|defaultMember\n * @param {string} name - (default) member name\n * @param {string} [set] - A new name or nothing for removal\n */\n setAlias(memberType, name, set) {\n if (memberType === \"defaultMember\") {\n if (name !== \"*\") {\n throw new TypeError(\"The modification of a default member alias is only possible if the module is an asterisk. For other changes use the 'rename' method.\");\n } else if (!set) {\n throw new TypeError(\"Removing the alias of an asterisk is invalid. Use the 'rename' method for other changes.\");\n }\n }\n const aliasStr = set ? `${name} as ${set}` : name;\n this.renameMember(memberType, name, aliasStr, false);\n this.updateUnit();\n }\n\n\n /**\n * Method to call after a unit was completely removed\n * or replaced, to prevent matching it again afterwards.\n */\n makeUntraceable() {\n this.unit.id = `(deleted) ${this.unit.id}`;\n this.unit.hash = `(deleted) ${this.unit.hash}`;\n this.unit.module.name = `(deleted) ${this.unit.module.name}`;\n }\n\n\n /**\n * Debugging method to stop the building process\n * and list this unit properties.\n */\n log() {\n const unit = { ...this.unit };\n delete unit.methods;\n unit.code = [ unit.code.toString() ];\n throw new DebuggingError(unit);\n }\n}\n","/**\n * [ImportManager]{@link https://github.com/UmamiAppearance/ImportManager}\n *\n * The core class for the rollup-plugin-import-manager,\n * which can never the less be used standalone. \n * It handles code analysis, creates units from import\n * statements, attaches methods to the units and more.\n * \n * @version 0.1.5\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n * @see https://github.com/UmamiAppearance/rollup-plugin-import-manager\n */\n\nimport ImportManagerUnitMethods from \"./unit-methods.js\";\nimport { DebuggingError, MatchError } from \"./errors.js\";\nimport { parse } from \"acorn\";\nimport { full as fullWalk } from \"acorn-walk\"; \nimport MagicString from \"magic-string\";\nimport { bold, yellow } from \"colorette\";\n\n\nclass ImportManager {\n\n /**\n * The constructor creates a class import\n * object and kicks of the code analysis.\n * @param {string} source - The unmodified source code.\n * @param {string} filename - The path/name of the input file (used for hash generation). \n * @param {object} [warnSpamProtection] - A Set which contains all previously printed warning hashes.\n * @param {boolean} [warnings=true] - Pass false to suppress warning messages.\n */\n constructor(source, filename, warnSpamProtection=new Set(), warnings=true) {\n\n if (!source) {\n source=\"\";\n }\n\n if (!filename) {\n filename = String(simpleHash(source));\n }\n\n this.scopeMulti = 1000;\n\n this.imports = {\n es6: {\n count: 0,\n idScope: 1 * this.scopeMulti,\n searched: false,\n units: []\n },\n dynamic: {\n count: 0,\n idScope: 2 * this.scopeMulti,\n searched: false,\n units: []\n },\n cjs: {\n count: 0,\n idScope: 3 * this.scopeMulti,\n searched: false,\n units: []\n }\n\n };\n\n // id scope lookup table with the associated type\n this.idTypes = Object.fromEntries(Object.entries(this.imports).map(([k, v]) => [v.idScope, k]));\n\n this.code = new MagicString(source);\n\n this.hashList = {};\n this.filename = filename.split(process.cwd()).at(1);\n this.warnSpamProtection = warnSpamProtection;\n \n this.parsedCode = parse(source, {\n ecmaVersion: \"latest\",\n sourceType: \"module\"\n });\n\n if (!warnings) {\n this.warning = () => {\n return;\n };\n }\n \n this.analyze();\n }\n\n\n /**\n * Analyzes the source and stores all import\n * statements as unit objects in the class \n * variable \"imports\".\n */\n analyze() {\n \n let cjsId = this.imports.cjs.idScope;\n let cjsIndex = 0;\n\n let dynamicId = this.imports.dynamic.idScope;\n let dynamicIndex = 0;\n\n let es6Id = this.imports.es6.idScope;\n let es6Index = 0;\n\n this.parsedCode.body.forEach(node => {\n\n if (node.type === \"ImportDeclaration\") {\n const unit = this.es6NodeToUnit(node);\n unit.id = es6Id ++;\n unit.index = es6Index ++;\n unit.hash = this.#makeHash(unit);\n this.imports.es6.units.push(unit);\n this.imports.es6.count ++;\n }\n \n else if (node.type === \"VariableDeclaration\" ||\n node.type === \"ExpressionStatement\")\n {\n fullWalk(node, part => {\n\n if (part.type === \"ImportExpression\") {\n const unit = this.dynamicNodeToUnit(node, part);\n unit.id = dynamicId ++;\n unit.index = dynamicIndex ++;\n unit.hash = this.#makeHash(unit);\n this.imports.dynamic.units.push(unit);\n this.imports.dynamic.count ++;\n }\n \n else if (part.type === \"Identifier\" && part.name === \"require\") {\n const unit = this.cjsNodeToUnit(node);\n unit.id = cjsId ++;\n unit.index = cjsIndex ++;\n unit.hash = this.#makeHash(unit);\n this.imports.cjs.units.push(unit);\n this.imports.cjs.count ++;\n }\n\n });\n }\n });\n }\n\n /**\n * Helper method to generate a very simple hash\n * from the unit properties.\n * @param {Object} unit - Unit to generate a hash from. \n * @returns {string} - a hash as a string \n */\n #makeHash(unit) {\n\n const makeInput = (unit) => {\n \n const joinProps = list => {\n list.forEach(member => {\n inputStr += member.name;\n if (member.alias) {\n inputStr += member.alias.name;\n }\n });\n }; \n\n let inputStr = unit.module.name\n + unit.type\n + this.filename;\n \n if (unit.members) {\n joinProps(unit.members.entities);\n }\n\n if (unit.defaultMembers) {\n joinProps(unit.defaultMembers.entities);\n }\n\n return inputStr;\n };\n\n const input = makeInput(unit);\n let hash = String(simpleHash(input));\n\n // handle duplicates\n if (hash in this.hashList) {\n \n if (unit.module.name !== \"N/A\") {\n this.warning(`It seems like there are multiple imports of module '${unit.module.name}'. You should examine that.`);\n }\n \n for (let nr=2;; nr++) {\n const nHash = `${hash}#${nr}`;\n if (!(nHash in this.hashList)) {\n hash = nHash;\n break;\n }\n }\n }\n \n this.hashList[hash] = unit.id;\n\n return hash;\n }\n\n\n /**\n * Method to generate a unit object from an acorn\n * node, originated from an ES6 Import Statement. \n * @param {Object|string} node - acorn node or es6 import statement string. \n * @param {number} [oStart] - For updating units the original start index has to be passed. \n * @param {number} [oEnd] - For updating units the original end index has to be passed.\n * @returns \n */\n es6NodeToUnit(node, oStart, oEnd) {\n\n let code;\n if (typeof node === \"string\") {\n code = node;\n try {\n node = parse(node, {\n ecmaVersion: \"latest\",\n sourceType: \"module\"\n }).body.at(0);\n } catch(e) {\n if (e instanceof SyntaxError) {\n let msg = \"\\n\\nGenerated Code Snippet\\n----------------------\\n\";\n let { line, column } = e.loc;\n line --;\n code.toString().split(\"\\n\").forEach((l, i) => {\n msg += l + \"\\n\";\n if (line === i) {\n msg += bold(\" \".repeat(column) + \"^\\n\");\n }\n });\n\n\n throw new SyntaxError(msg);\n }\n throw new Error(e);\n }\n } else {\n code = this.code.slice(node.start, node.end);\n }\n \n const mem = {\n defaultMembers: {\n count: 0,\n entities: []\n },\n members: {\n count: 0,\n entities: []\n }\n };\n\n if (node.specifiers) {\n for (const spec of node.specifiers) {\n \n const memType = spec.type === \"ImportSpecifier\" ? \"members\" : \"defaultMembers\";\n const index = mem[memType].count;\n const hasAlias = spec.local.start !== spec.start;\n\n const start = spec.start - node.start;\n let end;\n if (!hasAlias) {\n end = spec.end - node.start;\n } else {\n end = (memType === \"members\") ? spec.imported.end-node.start : start+1;\n }\n const name = code.slice(start, end);\n \n\n const member = {\n index,\n name,\n start,\n end,\n absEnd: spec.end - node.start\n };\n\n if (hasAlias) {\n member.alias = {\n name: spec.local.name,\n start: spec.local.start - node.start,\n end: spec.local.end - node.start\n };\n }\n\n if (index > 0) {\n member.last = mem[memType].entities[index-1].absEnd;\n mem[memType].entities[index-1].next = member.start;\n }\n \n mem[memType].entities.push(member);\n mem[memType].count ++;\n\n }\n }\n\n if (mem.members.count > 0) {\n const nonDefaultMatch = code.match(/{[\\s\\S]*?}/);\n mem.members.start = nonDefaultMatch.index;\n mem.members.end = mem.members.start + nonDefaultMatch.at(0).length; \n }\n\n if (mem.defaultMembers.count > 0) {\n mem.defaultMembers.start = mem.defaultMembers.entities.at(0).start;\n mem.defaultMembers.end = (mem.members.count > 0)\n ? mem.members.start\n : mem.defaultMembers.entities.at(-1).absEnd; \n }\n\n // store the first separator of the non default\n // and default members for a consistent style\n // if one wants to add members\n mem.defaultMembers.separator = (mem.defaultMembers.count > 1) ? code.slice(mem.defaultMembers.entities[0].absEnd, mem.defaultMembers.entities[0].next) : \", \";\n mem.members.separator = (mem.members.count > 1) ? code.slice(mem.members.entities[0].absEnd, mem.members.entities[0].next) : \", \";\n\n\n const module = {\n name: node.source.value.split(\"/\").at(-1),\n start: node.source.start - node.start,\n end: node.source.end - node.start,\n type: \"string\",\n quotes: node.source.raw.at(0)\n };\n\n \n const unit = {\n code: new MagicString(code),\n defaultMembers: mem.defaultMembers,\n members: mem.members,\n module,\n start: oStart || node.start,\n end: oEnd || node.end,\n type: \"es6\"\n };\n\n return unit;\n }\n\n\n dynamicNodeToUnit(node, importObject) {\n\n const code = this.code.slice(node.start, node.end);\n\n const module = {\n name: importObject.source.value.split(\"/\").at(-1) || \"N/A\",\n start: importObject.source.start - node.start,\n end: importObject.source.end - node.start\n };\n\n if (importObject.source.type === \"Literal\") {\n module.type = \"string\";\n module.quotes = importObject.source.raw.at(0);\n } else {\n module.type = \"raw\";\n }\n\n const unit = {\n code: new MagicString(code),\n module,\n start: node.start,\n end: node.end,\n type: \"dynamic\",\n };\n\n return unit;\n }\n\n cjsNodeToUnit(node) {\n\n const code = this.code.slice(node.start, node.end);\n\n const modulePart = node.declarations.at(0).init.arguments.at(0); // TODO: test if this is robust\n const module = {\n name: modulePart.value.split(\"/\").at(-1) || \"N/A\",\n start: modulePart.start - node.start,\n end: modulePart.end - node.start\n };\n\n if (modulePart.type === \"Literal\") {\n module.type = \"string\";\n module.quotes = modulePart.raw.at(0);\n } else {\n module.type = \"raw\";\n }\n\n const unit = {\n code: new MagicString(code),\n module,\n start: node.start,\n end: node.end,\n type: \"cjs\",\n };\n\n return unit;\n }\n\n // ___________________ //\n // select unit methods //\n\n /**\n * Helper method to list available units\n * in case of a MatchError.\n * @param {Object[]} units - Array of unit objects to list.\n * @returns {string} - Message for logging.\n */\n #listUnits(units) {\n const msgArray = [\"\"];\n \n units.forEach(unit => {\n msgArray.push(\n \"___\",\n `ID: ${unit.id}`,\n `HASH: ${unit.hash}`, \n `NAME: ${unit.module.name}`,\n `STATEMENT:\\n${unit.code.toString()}\\n`\n );\n });\n return msgArray.join(\"\\n\") + \"\\n\";\n }\n\n\n /**\n * Helper method to list all available units.\n * @returns {string} - Message string.\n */\n #listAllUnits() {\n let msg = \"\";\n for (const type in this.imports) {\n msg += this.#listUnits(this.imports[type].units);\n }\n return msg;\n }\n\n \n /**\n * Selects a unit by its module name.\n * @param {string} name - Module Name. \n * @param {string|string[]} [type] - \"cjs\", \"dynamic\", \"es6\" one as a string or multiple as array of strings\n * @returns {Object} - An explicit unit.\n */\n selectModByName(name, type, allowNull) {\n if (!name) {\n throw new TypeError(\"The name must be provided\");\n }\n\n let unitList = [];\n\n // if the type is not specified use all types (cjs|dynamic|es6)\n if (!type) {\n type = Object.keys(this.imports);\n } else if (!Array.isArray(type)) {\n type = [type];\n }\n\n // if an empty array was passed, also use all types\n if (!type.length) {\n type = Object.keys(this.imports);\n }\n\n // test types for validity\n for (const t of type) {\n if (!(t in this.imports)) {\n throw new TypeError(`Invalid type: '${t}' - Should be one or more of: 'cjs', 'dynamic', 'es6'.`);\n }\n\n // push all available imports in one list\n if (this.imports[t].count > 0) {\n unitList.push(...this.imports[t].units);\n }\n }\n\n // filter for unit name\n const units = unitList.filter(unit => {\n const match = unit.module.name.indexOf(name) > -1;\n\n // ignore deleted units\n if (match && unit.module.name.match(/^\\(deleted\\)/)) {\n return false;\n }\n\n return match;\n });\n\n // throw errors if the match is not one\n // (if no filename was set a null match\n // is also valid)\n if (units.length === 0) {\n if (allowNull) {\n return null;\n }\n let msg = this.#listUnits(unitList);\n let typeStr;\n\n if (type.length === 1) {\n typeStr = type + \"-imports\";\n } else if (type.length < Object.keys(this.imports).length) { \n typeStr = type.join(\"-imports or \") + \"-imports\";\n } else {\n typeStr = \"any group\";\n }\n\n msg += `___\\nUnable to locate import statement with name: '${name}' in ${typeStr}`;\n throw new MatchError(msg);\n }\n \n else if (units.length > 1) {\n let msg = this.#listUnits(units);\n msg += `___\\nFound multiple matches for '${name}'. If no other solution is available you may select via hash.`;\n throw new MatchError(msg);\n }\n\n // finally add methods for manipulation to the unit\n const unit = units[0];\n unit.methods = new ImportManagerUnitMethods(unit, this.es6NodeToUnit);\n\n return unit;\n }\n\n\n /**\n * Selects a unit by its id. Should only be used\n * for test purposes.\n * @param {number} id - Unit id. \n * @returns {Object} - An explicit unit.\n */\n selectModById(id, allowNull) {\n if (!id) {\n throw new TypeError(\"The id must be provided\");\n }\n \n // get the type by the id scope\n const type = this.idTypes[ Math.floor(id / this.scopeMulti) * this.scopeMulti ];\n\n // if it is not possible to extract a type by the scope,\n // the id is invalid \n if (!type) {\n // generate an ascending list of valid ids\n const ascIds = Object.keys(this.idTypes).sort();\n throw new TypeError(`Id '${id}' is invalid. Ids range from ${ascIds.at(0)} to ${ascIds.at(-1)}+`);\n }\n\n // filter the units of the given type for the id\n const units = this.imports[type].units.filter(n => n.id == id);\n\n // if null matches are allowed return null \n // if no match was found, otherwise raise\n // a match error\n if (units.length === 0) {\n if (allowNull) {\n return null;\n }\n let msg = this.#listUnits(this.imports[type].units);\n msg += `___\\nUnable to locate import statement with id: '${id}'`;\n throw new MatchError(msg);\n }\n\n // add unit methods\n const unit = units[0];\n unit.methods = new ImportManagerUnitMethods(unit, this.es6NodeToUnit);\n\n return unit;\n }\n\n /**\n * Selects a unit by its hash. The hash will change\n * if the unit changes its properties in the source\n * code (like members, alias, etc.)\n * All hashes for one file are stored in a list, with\n * the corresponding id. The id-match method can there-\n * fore be used, to find the unit.\n * @param {string} hash - The hash string of the unit. \n * @returns {object} - An explicit unit.\n */\n selectModByHash(hash, allowNull) {\n if (!(hash in this.hashList)) {\n if (allowNull) {\n return null;\n }\n let msg = this.#listAllUnits(); \n msg += `___\\nUnable to locate import statement with hash '${hash}'`;\n throw new MatchError(msg);\n }\n\n return this.selectModById(this.hashList[hash]);\n }\n\n // ___________________________________________ //\n // methods for unit creation, replacement, etc. //\n\n /**\n * All manipulation via unit method is made on the\n * code slice of the unit. This methods writes it\n * to the code instance. \n * @param {Object} unit - Unit Object. \n */\n commitChanges(unit) {\n this.code.overwrite(unit.start, unit.end, unit.code.toString());\n }\n\n\n /**\n * Removes a unit from the code instance.\n * The action must not be committed. \n * @param {Object} unit - Unit Object.\n */\n remove(unit) {\n const charAfter = this.code.slice(unit.end, unit.end+1);\n const end = (charAfter === \"\\n\") ? unit.end + 1 : unit.end;\n this.code.remove(unit.start, end);\n unit.methods.makeUntraceable();\n this.imports[unit.type].count --;\n }\n\n /**\n * Helper method to declare a variable.\n * @param {string} declarator - const|let|var|global \n * @param {string} varname - Variable Name. \n * @returns {string} - Declarator + Varname + Equal Sign.\n */\n #genDeclaration(declarator, varname) {\n let declaration;\n if (declarator === \"global\") {\n declaration = varname;\n } else {\n declaration = `${declarator} ${varname}`;\n }\n return declaration;\n }\n\n /**\n * Generates a CJS Import Statement.\n * @param {string} module - Module (path).\n * @returns {string} - CJS Import Statement.\n */\n makeCJSStatement(module, declarator, varname) {\n const declaration = this.#genDeclaration(declarator, varname);\n return `${declaration} = require(\"${module}\");\\n`;\n }\n\n /**\n * Generates a Dynamic Import Statement.\n * @param {string} module - Module (path).\n * @returns {string} - CJS Import Statement.\n */\n makeDynamicStatement(module, declarator, varname) {\n const declaration = this.#genDeclaration(declarator, varname);\n return `${declaration} = await import(\"${module}\");\\n`;\n }\n \n\n /**\n * Generates an ES6 Import Statement.\n * @param {string} module - Module (path).\n * @param {string[]} defaultMembers - Default Member Part.\n * @param {string[]} members - Member Part.\n * @returns {string} - ES6 Import Statement.\n */\n makeES6Statement(module, defaultMembers, members) {\n const memberStrArray = [];\n \n if (defaultMembers.length) {\n memberStrArray.push(\n defaultMembers.join(\", \")\n );\n }\n\n if (members.length) {\n memberStrArray.push(\n \"{ \" + members.join(\", \") + \" }\"\n );\n }\n\n let memberPart = memberStrArray.join(\", \");\n if (memberPart) {\n memberPart += \" from \";\n }\n\n return `import ${memberPart}'${module}';\\n`;\n }\n\n\n /**\n * Inserts an ES6 Import Statement to the top\n * of the file or after the last found import\n * statement.\n * @param {string} statement - ES6 Import Statement.\n * @param {number} pos - 'top' or 'bottom'\n */\n insertStatement(statement, pos, type) {\n\n let index = 0;\n\n if (pos !== \"top\" && this.imports[type].count > 0) {\n index = this.imports[type].units.at(-1).end;\n\n // move the index if the following char is a newline\n // (if the line was removed in an earlier operation\n // this will throw an error, don't do any change in\n // this case\n\n let nextChar;\n try {\n nextChar = this.code.slice(index, index+1);\n } catch {\n nextChar = null;\n }\n\n if (nextChar === \"\\n\") {\n index ++;\n }\n }\n \n else {\n // find the first meaningful (not a comment)\n // code and use the start as insertion point\n \n index = this.parsedCode.body.at(0).start;\n }\n \n this.code.appendRight(index, statement);\n }\n\n\n /**\n * Inserts an ES6 Import Statement before or after\n * a given unit. Also an existing statement can be\n * replaced.\n * @param {Object} unit - Unit Object \n * @param {string} mode - 'append'|'prepend'|'replace' \n * @param {string} statement - ES6 Import Statement. \n */\n insertAtUnit(unit, mode, statement) {\n\n let index;\n if (mode === \"append\") {\n index = unit.end;\n if (this.code.slice(index, index+1) === \"\\n\") {\n index ++;\n }\n this.code.appendRight(index, statement);\n }\n \n else if (mode === \"prepend\") {\n index = unit.start;\n this.code.prependLeft(index, statement);\n }\n\n else if (mode === \"replace\") {\n // remove new line from statement\n statement = statement.slice(0, -1);\n \n this.code.overwrite(unit.start, unit.end, statement);\n unit.methods.makeUntraceable();\n this.imports[unit.type].count --;\n }\n }\n\n\n // ________________________ //\n // global debugging methods //\n\n\n /**\n * Debugging method to stop the building process\n * and list all import units with its id, hash and\n * import statement.\n */\n logUnits() {\n throw new DebuggingError(this.#listAllUnits());\n }\n\n\n /**\n * Debugging method to stop the building process\n * and list the complete import object.\n */\n logUnitObjects() {\n const imports = {...this.imports};\n for (const key in imports) {\n imports[key].units.forEach(unit => {\n unit.code = [ unit.code.toString() ];\n });\n }\n throw new DebuggingError(imports);\n }\n\n\n /**\n * Bold, yellow warning messages in the mould\n * of rollup warnings. With spam protection.\n * @param {string} msg - Warning Message. \n */\n warning(msg) {\n const hash = simpleHash(msg);\n\n if (this.warnSpamProtection.has(hash)) {\n return;\n }\n\n this.warnSpamProtection.add(hash);\n\n console.warn(\n bold(yellow(`(!) (plugin ImportManager) ${msg}`))\n );\n }\n}\n\n\n/**\n * A (simple as it gets) hash from string function.\n * @see https://gist.github.com/iperelivskiy/4110988?permalink_comment_id=2697447#gistcomment-2697447\n * @see https://gist.github.com/badboy/6267743#knuths-multiplicative-method\n * @param {string} input \n * @returns {number} - Hash number.\n */\nconst simpleHash = (input) => {\n let h = 0xdeadbeef;\n for (let i=0; i>> 16) >>> 0;\n};\n\nexport { ImportManager, DebuggingError, MatchError, simpleHash };\n"],"names":["parse","fullWalk","bold","yellow"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA,MAAM,UAAU,SAAS,KAAK,CAAC;AAC/B,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AACjC,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,SAAS,KAAK,CAAC;AACnC,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;AACrC,KAAK;AACL;;AClBA;AACA;AACA;AACA;AACe,MAAM,wBAAwB,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE;AACrC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM;AAChC;AACA,YAAY,MAAM,IAAI,GAAG,aAAa;AACtC,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACzC,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK;AAC/B,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG;AAC7B,aAAa,CAAC;AACd;AACA,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3C;AACA,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AACtC,YAAY,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AAC9E,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE;AAChC,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE;AAClC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAC1C,gBAAgB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;AAC/C,aAAa;AACb,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,YAAY,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AAChC,SAAS,MAAM,IAAI,OAAO,KAAK,KAAK,EAAE;AACtC,YAAY,MAAM,IAAI,SAAS,CAAC,CAAC,iBAAiB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC,CAAC;AACrG,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACrF;AACA,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AACtC,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9B,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxB;AACA,QAAQ,IAAI,KAAK,CAAC;AAClB,QAAQ,IAAI,MAAM,CAAC;AACnB,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC;AAC9B;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,EAAE;AAChD,YAAY,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACpE,YAAY,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS;AACvD,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACpE,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE;AAChD,YAAY,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3C,YAAY,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC7D,YAAY,UAAU,GAAG,MAAM,CAAC;AAChC,YAAY,MAAM,IAAI,QAAQ,CAAC;AAC/B,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,YAAY,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5C,YAAY,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AACnE,qBAAqB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AACjD,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtD,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACpC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxB;AACA,QAAQ,IAAI,KAAK,CAAC;AAClB,QAAQ,IAAI,MAAM,CAAC;AACnB,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC;AAC9B;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;AACzC,YAAY,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7D,YAAY,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS;AAChD,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC7D,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,CAAC,EAAE;AACvD,YAAY,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3C,YAAY,MAAM,GAAG,IAAI;AACzB,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC5D,qBAAqB,IAAI,CAAC;AAC1B,YAAY,UAAU,GAAG,MAAM,CAAC;AAChC,YAAY,MAAM,IAAI,QAAQ,CAAC;AAC/B,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,YAAY,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACjD,YAAY,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS;AACvD,qBAAqB,IAAI;AACzB,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC5D,qBAAqB,IAAI,CAAC;AAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtD,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACpC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,UAAU,EAAE;AACzB,QAAQ,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACvC,YAAY,UAAU,IAAI,GAAG,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE;AAClC,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC/D,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACzF,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,YAAY,MAAM,IAAI,UAAU,CAAC,CAAC,iBAAiB,EAAE,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE;AACnC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxB;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC1D;AACA,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;AACnD,YAAY,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC3C,SAAS;AACT;AACA,aAAa;AACb,YAAY,IAAI,KAAK,CAAC;AACtB,YAAY,IAAI,GAAG,CAAC;AACpB;AACA,YAAY,IAAI,MAAM,CAAC,IAAI,EAAE;AAC7B,gBAAgB,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrC,gBAAgB,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;AAClC,aAAa,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;AACpC,gBAAgB,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;AACpC,gBAAgB,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,aAAa,MAAM;AACnB,gBAAgB,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrC,gBAAgB,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,aAAa;AACb;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9C,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,WAAW,EAAE;AAC/B,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxB;AACA,QAAQ,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D;AACA,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACnD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,CAAC;AAC/E;AACA,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC;AAC9B,QAAQ,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;AAC9B;AACA,YAAY,MAAM,KAAK,GAAG,CAAC,SAAS;AACpC,kBAAkB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9D,kBAAkB,OAAO,CAAC,KAAK,CAAC;AAChC;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACtD,SAAS;AACT;AACA,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzE,YAAY,UAAU,GAAG,EAAE,CAAC;AAC5B,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACpC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE;AACvD,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxB;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC1D,QAAQ,IAAI,GAAG,CAAC;AAChB;AACA,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAC7B,SAAS,MAAM;AACf,YAAY,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AAChC,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE;AACpC,QAAQ,IAAI,UAAU,KAAK,eAAe,EAAE;AAC5C,YAAY,IAAI,IAAI,KAAK,GAAG,EAAE;AAC9B,gBAAgB,MAAM,IAAI,SAAS,CAAC,sIAAsI,CAAC,CAAC;AAC5K,aAAa,MAAM,IAAI,CAAC,GAAG,EAAE;AAC7B,gBAAgB,MAAM,IAAI,SAAS,CAAC,0FAA0F,CAAC,CAAC;AAChI,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC1D,QAAQ,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,GAAG;AACV,QAAQ,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACtC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC7C,QAAQ,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;AACvC,KAAK;AACL;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA,MAAM,aAAa,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE;AAC/E;AACA,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,MAAM,CAAC,EAAE,CAAC;AACtB,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/B;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG;AACvB,YAAY,GAAG,EAAE;AACjB,gBAAgB,KAAK,EAAE,CAAC;AACxB,gBAAgB,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU;AAC5C,gBAAgB,QAAQ,EAAE,KAAK;AAC/B,gBAAgB,KAAK,EAAE,EAAE;AACzB,aAAa;AACb,YAAY,OAAO,EAAE;AACrB,gBAAgB,KAAK,EAAE,CAAC;AACxB,gBAAgB,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU;AAC5C,gBAAgB,QAAQ,EAAE,KAAK;AAC/B,gBAAgB,KAAK,EAAE,EAAE;AACzB,aAAa;AACb,YAAY,GAAG,EAAE;AACjB,gBAAgB,KAAK,EAAE,CAAC;AACxB,gBAAgB,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU;AAC5C,gBAAgB,QAAQ,EAAE,KAAK;AAC/B,gBAAgB,KAAK,EAAE,EAAE;AACzB,aAAa;AACb;AACA,SAAS,CAAC;AACV;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAC5C;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;AACrD;AACA,QAAQ,IAAI,CAAC,UAAU,GAAGA,WAAK,CAAC,MAAM,EAAE;AACxC,YAAY,WAAW,EAAE,QAAQ;AACjC,YAAY,UAAU,EAAE,QAAQ;AAChC,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,IAAI,CAAC,OAAO,GAAG,MAAM;AACjC,gBAAgB,OAAO;AACvB,aAAa,CAAC;AACd,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;AACvB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd;AACA,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7C,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC;AACzB;AACA,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AACrD,QAAQ,IAAI,YAAY,GAAG,CAAC,CAAC;AAC7B;AACA,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7C,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC;AACzB;AACA,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI;AAC7C;AACA,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE;AACnD,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACtD,gBAAgB,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;AACnC,gBAAgB,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,CAAC;AACzC,gBAAgB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACjD,gBAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,gBAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;AAC1C,aAAa;AACb;AACA,iBAAiB,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB;AACxD,qBAAqB,IAAI,CAAC,IAAI,KAAK,qBAAqB;AACxD,YAAY;AACZ,gBAAgBC,cAAQ,CAAC,IAAI,EAAE,IAAI,IAAI;AACvC;AACA,oBAAoB,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE;AAC1D,wBAAwB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxE,wBAAwB,IAAI,CAAC,EAAE,GAAG,SAAS,GAAG,CAAC;AAC/C,wBAAwB,IAAI,CAAC,KAAK,GAAG,YAAY,GAAG,CAAC;AACrD,wBAAwB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzD,wBAAwB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,wBAAwB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;AACtD,qBAAqB;AACrB;AACA,yBAAyB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;AACpF,wBAAwB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9D,wBAAwB,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;AAC3C,wBAAwB,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,CAAC;AACjD,wBAAwB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzD,wBAAwB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,wBAAwB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;AAClD,qBAAqB;AACrB;AACA,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB;AACA,QAAQ,MAAM,SAAS,GAAG,CAAC,IAAI,KAAK;AACpC;AACA,YAAY,MAAM,SAAS,GAAG,IAAI,IAAI;AACtC,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI;AACvC,oBAAoB,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC;AAC5C,oBAAoB,IAAI,MAAM,CAAC,KAAK,EAAE;AACtC,wBAAwB,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACtD,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa,CAAC;AACd;AACA,YAAY,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AAC3C,2BAA2B,IAAI,CAAC,IAAI;AACpC,2BAA2B,IAAI,CAAC,QAAQ,CAAC;AACzC;AACA,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,gBAAgB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjD,aAAa;AACb;AACA,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AACrC,gBAAgB,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACxD,aAAa;AACb;AACA,YAAY,OAAO,QAAQ,CAAC;AAC5B,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACtC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C;AACA;AACA,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnC;AACA,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;AAC5C,gBAAgB,IAAI,CAAC,OAAO,CAAC,CAAC,oDAAoD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;AACnI,aAAa;AACb;AACA,YAAY,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE;AAClC,gBAAgB,MAAM,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,gBAAgB,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC/C,oBAAoB,IAAI,GAAG,KAAK,CAAC;AACjC,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACtC;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;AACtC;AACA,QAAQ,IAAI,IAAI,CAAC;AACjB,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACtC,YAAY,IAAI,GAAG,IAAI,CAAC;AACxB,YAAY,IAAI;AAChB,gBAAgB,IAAI,GAAGD,WAAK,CAAC,IAAI,EAAE;AACnC,oBAAoB,WAAW,EAAE,QAAQ;AACzC,oBAAoB,UAAU,EAAE,QAAQ;AACxC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAa,CAAC,MAAM,CAAC,EAAE;AACvB,gBAAgB,IAAI,CAAC,YAAY,WAAW,EAAE;AAC9C,oBAAoB,IAAI,GAAG,GAAG,sDAAsD,CAAC;AACrF,oBAAoB,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;AACjD,oBAAoB,IAAI,GAAG,CAAC;AAC5B,oBAAoB,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAClE,wBAAwB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACxC,wBAAwB,IAAI,IAAI,KAAK,CAAC,EAAE;AACxC,4BAA4B,GAAG,IAAIE,cAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;AACpE,yBAAyB;AACzB,qBAAqB,CAAC,CAAC;AACvB;AACA;AACA,oBAAoB,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;AAC/C,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,aAAa;AACb,SAAS,MAAM;AACf,YAAY,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACzD,SAAS;AACT;AACA,QAAQ,MAAM,GAAG,GAAG;AACpB,YAAY,cAAc,EAAE;AAC5B,gBAAgB,KAAK,EAAE,CAAC;AACxB,gBAAgB,QAAQ,EAAE,EAAE;AAC5B,aAAa;AACb,YAAY,OAAO,EAAE;AACrB,gBAAgB,KAAK,EAAE,CAAC;AACxB,gBAAgB,QAAQ,EAAE,EAAE;AAC5B,aAAa;AACb,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAY,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AAChD;AACA,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,iBAAiB,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAC/F,gBAAgB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;AACjD,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;AACjE;AACA,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACtD,gBAAgB,IAAI,GAAG,CAAC;AACxB,gBAAgB,IAAI,CAAC,QAAQ,EAAE;AAC/B,oBAAoB,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AAChD,iBAAiB,MAAM;AACvB,oBAAoB,GAAG,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AAC3F,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpD;AACA;AACA,gBAAgB,MAAM,MAAM,GAAG;AAC/B,oBAAoB,KAAK;AACzB,oBAAoB,IAAI;AACxB,oBAAoB,KAAK;AACzB,oBAAoB,GAAG;AACvB,oBAAoB,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK;AACjD,iBAAiB,CAAC;AAClB;AACA,gBAAgB,IAAI,QAAQ,EAAE;AAC9B,oBAAoB,MAAM,CAAC,KAAK,GAAG;AACnC,wBAAwB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;AAC7C,wBAAwB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAC5D,wBAAwB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK;AACxD,qBAAqB,CAAC;AACtB,iBAAiB;AACjB;AACA,gBAAgB,IAAI,KAAK,GAAG,CAAC,EAAE;AAC/B,oBAAoB,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACxE,oBAAoB,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AACvE,iBAAiB;AACjB;AACA,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnD,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC;AACtC;AACA,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;AACnC,YAAY,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7D,YAAY,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;AACtD,YAAY,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/E,SAAS;AACT;AACA,QAAQ,IAAI,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,EAAE;AAC1C,YAAY,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/E,YAAY,GAAG,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;AAC3D,kBAAkB,GAAG,CAAC,OAAO,CAAC,KAAK;AACnC,kBAAkB,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5D,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ,GAAG,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACtK,QAAQ,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC1I;AACA;AACA,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrD,YAAY,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACjD,YAAY,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK;AAC7C,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,SAAS,CAAC;AACV;AACA;AACA,QAAQ,MAAM,IAAI,GAAG;AACrB,YAAY,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC;AACvC,YAAY,cAAc,EAAE,GAAG,CAAC,cAAc;AAC9C,YAAY,OAAO,EAAE,GAAG,CAAC,OAAO;AAChC,YAAY,MAAM;AAClB,YAAY,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,KAAK;AACvC,YAAY,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG;AACjC,YAAY,IAAI,EAAE,KAAK;AACvB,SAAS,CAAC;AACV;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA,IAAI,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE;AAC1C;AACA,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D;AACA,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;AACtE,YAAY,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACzD,YAAY,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK;AACrD,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AACpD,YAAY,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;AACnC,YAAY,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,SAAS,MAAM;AACf,YAAY,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;AAChC,SAAS;AACT;AACA,QAAQ,MAAM,IAAI,GAAG;AACrB,YAAY,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC;AACvC,YAAY,MAAM;AAClB,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK;AAC7B,YAAY,GAAG,EAAE,IAAI,CAAC,GAAG;AACzB,YAAY,IAAI,EAAE,SAAS;AAC3B,SAAS,CAAC;AACV;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,aAAa,CAAC,IAAI,EAAE;AACxB;AACA,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D;AACA,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxE,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;AAC7D,YAAY,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAChD,YAAY,GAAG,EAAE,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK;AAC5C,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;AAC3C,YAAY,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;AACnC,YAAY,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD,SAAS,MAAM;AACf,YAAY,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;AAChC,SAAS;AACT;AACA,QAAQ,MAAM,IAAI,GAAG;AACrB,YAAY,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC;AACvC,YAAY,MAAM;AAClB,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK;AAC7B,YAAY,GAAG,EAAE,IAAI,CAAC,GAAG;AACzB,YAAY,IAAI,EAAE,KAAK;AACvB,SAAS,CAAC;AACV;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,KAAK,EAAE;AACtB,QAAQ,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9B;AACA,QAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI;AAC9B,YAAY,QAAQ,CAAC,IAAI;AACzB,gBAAgB,KAAK;AACrB,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAClC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3C,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;AACvD,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACzC,YAAY,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AAC7D,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;AAC3C,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;AAC7D,SAAS;AACT;AACA,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACzC,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAS;AACT;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,SAAS;AACT;AACA;AACA,QAAQ,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;AAC9B,YAAY,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE;AACtC,gBAAgB,MAAM,IAAI,SAAS,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC;AACjH,aAAa;AACb;AACA;AACA,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;AAC3C,gBAAgB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACxD,aAAa;AACb,SAAS;AACT;AACA;AACA,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI;AAC9C,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D;AACA;AACA,YAAY,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AACjE,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb;AACA,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS,CAAC,CAAC;AACX;AACA;AACA;AACA;AACA,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,OAAO,IAAI,CAAC;AAC5B,aAAa;AACb,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAChD,YAAY,IAAI,OAAO,CAAC;AACxB;AACA,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,gBAAgB,OAAO,GAAG,IAAI,GAAG,UAAU,CAAC;AAC5C,aAAa,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;AACvE,gBAAgB,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC;AACjE,aAAa,MAAM;AACnB,gBAAgB,OAAO,GAAG,WAAW,CAAC;AACtC,aAAa;AACb;AACA,YAAY,GAAG,IAAI,CAAC,mDAAmD,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/F,YAAY,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AACtC,SAAS;AACT;AACA,aAAa,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC7C,YAAY,GAAG,IAAI,CAAC,iCAAiC,EAAE,IAAI,CAAC,6DAA6D,CAAC,CAAC;AAC3H,YAAY,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AACtC,SAAS;AACT;AACA;AACA,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9E;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE;AACjC,QAAQ,IAAI,CAAC,EAAE,EAAE;AACjB,YAAY,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC3D,SAAS;AACT;AACA;AACA,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACxF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB;AACA,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5D,YAAY,MAAM,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,6BAA6B,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9G,SAAS;AACT;AACA;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACvE;AACA;AACA;AACA;AACA,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,OAAO,IAAI,CAAC;AAC5B,aAAa;AACb,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AAChE,YAAY,GAAG,IAAI,CAAC,iDAAiD,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,YAAY,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AACtC,SAAS;AACT;AACA;AACA,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9E;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE;AACrC,QAAQ,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;AACtC,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,OAAO,IAAI,CAAC;AAC5B,aAAa;AACb,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3C,YAAY,GAAG,IAAI,CAAC,kDAAkD,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAChF,YAAY,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AACtC,SAAS;AACT;AACA,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,IAAI,EAAE;AACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChE,QAAQ,MAAM,GAAG,GAAG,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACnE,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE;AACzC,QAAQ,IAAI,WAAW,CAAC;AACxB,QAAQ,IAAI,UAAU,KAAK,QAAQ,EAAE;AACrC,YAAY,WAAW,GAAG,OAAO,CAAC;AAClC,SAAS,MAAM;AACf,YAAY,WAAW,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE;AAClD,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACtE,QAAQ,OAAO,CAAC,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE;AACtD,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACtE,QAAQ,OAAO,CAAC,EAAE,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/D,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;AACtD,QAAQ,MAAM,cAAc,GAAG,EAAE,CAAC;AAClC;AACA,QAAQ,IAAI,cAAc,CAAC,MAAM,EAAE;AACnC,YAAY,cAAc,CAAC,IAAI;AAC/B,gBAAgB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,aAAa,CAAC;AACd,SAAS;AACT;AACA,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;AAC5B,YAAY,cAAc,CAAC,IAAI;AAC/B,gBAAgB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AAChD,aAAa,CAAC;AACd,SAAS;AACT;AACA,QAAQ,IAAI,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,UAAU,IAAI,QAAQ,CAAC;AACnC,SAAS;AACT;AACA,QAAQ,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACpD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE;AAC1C;AACA,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AACtB;AACA,QAAQ,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;AAC3D,YAAY,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,IAAI,QAAQ,CAAC;AACzB,YAAY,IAAI;AAChB,gBAAgB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3D,aAAa,CAAC,MAAM;AACpB,gBAAgB,QAAQ,GAAG,IAAI,CAAC;AAChC,aAAa;AACb;AACA,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE;AACnC,gBAAgB,KAAK,GAAG,CAAC;AACzB,aAAa;AACb,SAAS;AACT;AACA,aAAa;AACb;AACA;AACA;AACA,YAAY,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrD,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;AACxC;AACA,QAAQ,IAAI,KAAK,CAAC;AAClB,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC/B,YAAY,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AAC7B,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC1D,gBAAgB,KAAK,GAAG,CAAC;AACzB,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACpD,SAAS;AACT;AACA,aAAa,IAAI,IAAI,KAAK,SAAS,EAAE;AACrC,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC/B,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACpD,SAAS;AACT;AACA,aAAa,IAAI,IAAI,KAAK,SAAS,EAAE;AACrC;AACA,YAAY,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACjE,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;AAC3C,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC;AAC7C,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AACvD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAQ,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACnC,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI;AAC/C,gBAAgB,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACrD,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,MAAM,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,GAAG,EAAE;AACjB,QAAQ,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AACrC;AACA,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC/C,YAAY,OAAO;AACnB,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,QAAQ,OAAO,CAAC,IAAI;AACpB,YAAYA,cAAI,CAACC,gBAAM,CAAC,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7D,SAAS,CAAC;AACV,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACK,MAAC,UAAU,GAAG,CAAC,KAAK,KAAK;AAC9B,IAAI,IAAI,CAAC,GAAG,UAAU,CAAC;AACvB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChC;;;;;;;"} \ No newline at end of file +{"version":3,"file":"import-manager.cjs","sources":["../src/errors.js","../src/unit-methods.js","../src/core.js"],"sourcesContent":["/**\n * Custom error to tell the user, that it is\n * not possible to select a specific unit.\n */\nclass MatchError extends Error {\n constructor(message) {\n super(message);\n this.name = \"MatchError\";\n }\n}\n\n/**\n * Custom error to abort the building process\n * for retrieving information.\n */\nclass DebuggingError extends Error {\n constructor(message) {\n super(JSON.stringify(message, null, 4));\n this.name = \"DebuggingError\";\n }\n}\n\nexport { DebuggingError, MatchError };\n","import { DebuggingError, MatchError } from \"./errors.js\";\n\n/**\n * Creates methods for unit manipulation to\n * be attached to a requested unit.\n */\nexport default class ImportManagerUnitMethods {\n\n /**\n * Stores the handed over unit and creates\n * an update method.\n * @param {Object} unit - The unit a user requests \n * @param {*} es6NodeToUnit - Method to analyze a \n */\n constructor(unit, es6NodeToUnit) {\n this.unit = unit;\n\n // After a change in the code of a es6 unit is made\n // it gets analyzed again, which is very verbose,\n // but prevents errors. The \"MagicString\" does not\n // contain multiple changes at a time. The analysis\n // function is the same as for the initial file\n // analyses and gets handed over by the main class.\n\n this.updateUnit = () => {\n\n const unit = es6NodeToUnit(\n this.unit.code.toString(),\n this.unit.start,\n this.unit.end\n );\n\n Object.assign(this.unit, unit);\n\n };\n }\n\n\n /**\n * Makes sure, that the processed unit is of type 'es6'. \n */\n #ES6only() {\n if (this.unit.type !== \"es6\") {\n throw new Error(\"This method is only available for ES6 imports.\");\n }\n }\n\n\n /**\n * Changes the module part of a import statement.\n * @param {string} name - The new module part/path.\n * @param {*} modType - Module type (literal|raw).\n */\n renameModule(name, modType) {\n if (modType === \"string\") {\n if (!this.unit.module.quotes) {\n this.unit.module.quotes = \"\\\"\";\n }\n const q = this.unit.module.quotes;\n name = q + name + q;\n } else if (modType !== \"raw\") {\n throw new TypeError(`Unknown modType '${modType}'. Valid types are 'string' and 'raw'.`);\n }\n \n this.unit.code.overwrite(this.unit.module.start, this.unit.module.end, name);\n\n if (this.unit.type === \"es6\") {\n this.updateUnit();\n }\n }\n\n\n /**\n * Adds default members to the import statement.\n * @param {string[]} names - A list of default members to add.\n */\n addDefaultMembers(names) {\n this.#ES6only();\n\n let start; \n let defStr;\n let memberPart = null;\n\n // handle the case if default members already exist\n if (this.unit.defaultMembers.count > 0) {\n start = this.unit.defaultMembers.entities.at(-1).absEnd;\n defStr = this.unit.defaultMembers.separator \n + names.join(this.unit.defaultMembers.separator);\n this.unit.code.appendRight(start, defStr);\n }\n\n // handle the case if default members do not exist, \n // and also no non default members (the addition\n // needs to be appended left, otherwise is\n // interferes with the module part)\n else if (this.unit.members.count === 0) {\n start = this.unit.module.start;\n defStr = names.join(this.unit.members.separator);\n memberPart = defStr;\n defStr += \" from \";\n this.unit.code.appendLeft(start, defStr);\n }\n\n // handle the case if default members do not exist, \n // but non default members\n else {\n start = this.unit.members.start;\n defStr = names.join(this.unit.defaultMembers.separator)\n + this.unit.members.separator;\n this.unit.code.appendRight(start, defStr);\n }\n \n this.updateUnit(memberPart);\n }\n\n\n /**\n * Adds non default members to the import statement.\n * @param {string[]} names - A list of members to add. \n */\n addMembers(names) {\n this.#ES6only();\n\n let start; \n let memStr;\n let memberPart = null;\n \n // handle the case if members already exist\n if (this.unit.members.count > 0) {\n start = this.unit.members.entities.at(-1).absEnd;\n memStr = this.unit.members.separator \n + names.join(this.unit.members.separator);\n this.unit.code.appendRight(start, memStr);\n }\n\n // handle the case if members do not exist, \n // and also no default members (the addition\n // needs to be appended left, otherwise is\n // interferes with the module part)\n else if (this.unit.defaultMembers.count === 0) {\n start = this.unit.module.start;\n memStr = \"{ \"\n + names.join(this.unit.members.separator)\n + \" }\";\n memberPart = memStr;\n memStr += \" from \";\n this.unit.code.appendLeft(start, memStr);\n }\n\n // handle the case if members do not exist, \n // but default members\n else {\n start = this.unit.defaultMembers.end;\n memStr = this.unit.defaultMembers.separator\n + \"{ \"\n + names.join(this.unit.members.separator)\n + \" }\";\n this.unit.code.appendRight(start, memStr);\n }\n\n this.updateUnit(memberPart);\n }\n\n\n /**\n * Internal helper method to get the member type.\n * The user input distinguishes between member/defaultMember\n * and the plural versions of them. To prevent confusion in the\n * process of selecting the different styles in the unit, this\n * methods adds an \"s\" to the given string if missing and selects\n * the requested type.\n * @param {*} memberType \n * @returns \n */\n #getType(memberType) {\n if (memberType.at(-1) !== \"s\") {\n memberType += \"s\";\n }\n return this.unit[memberType];\n }\n\n\n /**\n * Internal helper method to find a specific member\n * or default member.\n * @param {string} memberType - member/defaultMember. \n * @param {string} name - (default) member name. \n * @returns {Object} - (default) member object.\n */\n #findMember(memberType, name) {\n if (!name) {\n throw new Error(`${memberType} name must be set.`);\n }\n const filtered = this.#getType(memberType).entities.filter(m => m.name === name);\n if (filtered.length !== 1) {\n throw new MatchError(`Unable to locate ${memberType} with name '${name}'`);\n }\n return filtered[0];\n }\n\n\n /**\n * Removes a (default) member.\n * @param {string} memberType - member|defaultMember\n * @param {string} name - Name of the (default) member \n */\n removeMember(memberType, name) {\n this.#ES6only();\n\n const member = this.#findMember(memberType, name);\n\n if (this.#getType(memberType).count === 1) {\n this.removeMembers(memberType);\n } \n\n else {\n let start;\n let end;\n \n if (member.next) {\n start = member.start;\n end = member.next;\n } else if (member.last) {\n start = member.last;\n end = member.absEnd;\n } else {\n start = member.start;\n end = member.absEnd;\n }\n\n this.unit.code.remove(start, end); \n this.updateUnit();\n\n }\n }\n\n\n /**\n * Removes an entire group of members or default members.\n * @param {string} membersType - member(s)|defaultMember(s) \n */\n removeMembers(membersType) {\n this.#ES6only();\n\n const isDefault = membersType.indexOf(\"default\") > -1;\n\n const members = this.#getType(membersType);\n const others = this.#getType(isDefault ? \"members\" : \"defaultMembers\");\n\n let memberPart = null;\n if (others.count > 0) {\n \n const start = !isDefault \n ? this.unit.defaultMembers.entities.at(-1).end\n : members.start;\n\n this.unit.code.remove(start, members.end);\n }\n\n else {\n this.unit.code.remove(members.start, this.unit.module.start);\n memberPart = \"\";\n }\n\n this.updateUnit(memberPart);\n }\n\n\n /**\n * Renames a single (default) member. The alias\n * can be kept or overwritten. \n * @param {string} memberType - member|defaultMember \n * @param {string} name - The (default) member to rename.\n * @param {string} newName - The new name of the (default) member.\n * @param {boolean} keepAlias - True if the alias shall be untouched. \n */\n renameMember(memberType, name, newName, keepAlias) {\n this.#ES6only();\n\n const member = this.#findMember(memberType, name);\n let end;\n\n if (keepAlias) {\n end = member.end;\n } else {\n end = member.absEnd;\n }\n \n this.unit.code.overwrite(member.start, end, newName);\n this.updateUnit();\n }\n\n\n /**\n * Changes the alias. Changing can be renaming\n * setting it initially or removing. \n * @param {string} memberType - member|defaultMember\n * @param {string} name - (default) member name\n * @param {string} [set] - A new name or nothing for removal\n */\n setAlias(memberType, name, set) {\n if (memberType === \"defaultMember\") {\n if (name !== \"*\") {\n throw new TypeError(\"The modification of a default member alias is only possible if the module is an asterisk. For other changes use the 'rename' method.\");\n } else if (!set) {\n throw new TypeError(\"Removing the alias of an asterisk is invalid. Use the 'rename' method for other changes.\");\n }\n }\n const aliasStr = set ? `${name} as ${set}` : name;\n this.renameMember(memberType, name, aliasStr, false);\n this.updateUnit();\n }\n\n\n /**\n * Method to call after a unit was completely removed\n * or replaced, to prevent matching it again afterwards.\n */\n makeUntraceable() {\n this.unit.id = `(deleted) ${this.unit.id}`;\n this.unit.hash = `(deleted) ${this.unit.hash}`;\n this.unit.module.name = `(deleted) ${this.unit.module.name}`;\n }\n\n\n /**\n * Debugging method to stop the building process\n * and list this unit properties.\n */\n log() {\n const unit = { ...this.unit };\n delete unit.methods;\n unit.code = [ unit.code.toString() ];\n throw new DebuggingError(unit);\n }\n}\n","/**\n * [ImportManager]{@link https://github.com/UmamiAppearance/ImportManager}\n *\n * The core class for the rollup-plugin-import-manager,\n * which can never the less be used standalone. \n * It handles code analysis, creates units from import\n * statements, attaches methods to the units and more.\n * \n * @version 0.1.6\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n * @see https://github.com/UmamiAppearance/rollup-plugin-import-manager\n */\n\nimport ImportManagerUnitMethods from \"./unit-methods.js\";\nimport { DebuggingError, MatchError } from \"./errors.js\";\nimport { parse } from \"acorn\";\nimport { full as fullWalk } from \"acorn-walk\"; \nimport MagicString from \"magic-string\";\nimport { bold, yellow } from \"colorette\";\n\n\nclass ImportManager {\n\n /**\n * The constructor creates a class import\n * object and kicks of the code analysis.\n * @param {string} source - The unmodified source code.\n * @param {string} filename - The path/name of the input file (used for hash generation). \n * @param {object} [warnSpamProtection] - A Set which contains all previously printed warning hashes.\n * @param {boolean} [warnings=true] - Pass false to suppress warning messages.\n */\n constructor(source, filename, warnSpamProtection=new Set(), warnings=true) {\n\n if (!source) {\n source=\"\";\n }\n\n if (!filename) {\n filename = String(simpleHash(source));\n }\n\n this.scopeMulti = 1000;\n\n this.imports = {\n es6: {\n count: 0,\n idScope: 1 * this.scopeMulti,\n searched: false,\n units: []\n },\n dynamic: {\n count: 0,\n idScope: 2 * this.scopeMulti,\n searched: false,\n units: []\n },\n cjs: {\n count: 0,\n idScope: 3 * this.scopeMulti,\n searched: false,\n units: []\n }\n\n };\n\n // id scope lookup table with the associated type\n this.idTypes = Object.fromEntries(Object.entries(this.imports).map(([k, v]) => [v.idScope, k]));\n\n this.code = new MagicString(source);\n\n this.hashList = {};\n this.filename = filename.split(process.cwd()).at(1);\n this.warnSpamProtection = warnSpamProtection;\n \n this.parsedCode = parse(source, {\n ecmaVersion: \"latest\",\n sourceType: \"module\"\n });\n\n if (!warnings) {\n this.warning = () => {\n return;\n };\n }\n \n this.analyze();\n }\n\n\n /**\n * Analyzes the source and stores all import\n * statements as unit objects in the class \n * variable \"imports\".\n */\n analyze() {\n \n let cjsId = this.imports.cjs.idScope;\n let cjsIndex = 0;\n\n let dynamicId = this.imports.dynamic.idScope;\n let dynamicIndex = 0;\n\n let es6Id = this.imports.es6.idScope;\n let es6Index = 0;\n\n this.parsedCode.body.forEach(node => {\n\n if (node.type === \"ImportDeclaration\") {\n const unit = this.es6NodeToUnit(node);\n unit.id = es6Id ++;\n unit.index = es6Index ++;\n unit.hash = this.#makeHash(unit);\n this.imports.es6.units.push(unit);\n this.imports.es6.count ++;\n }\n \n else if (node.type === \"VariableDeclaration\" ||\n node.type === \"ExpressionStatement\")\n {\n fullWalk(node, part => {\n\n if (part.type === \"ImportExpression\") {\n const unit = this.dynamicNodeToUnit(node, part);\n unit.id = dynamicId ++;\n unit.index = dynamicIndex ++;\n unit.hash = this.#makeHash(unit);\n this.imports.dynamic.units.push(unit);\n this.imports.dynamic.count ++;\n }\n \n else if (part.type === \"Identifier\" && part.name === \"require\") {\n const unit = this.cjsNodeToUnit(node);\n unit.id = cjsId ++;\n unit.index = cjsIndex ++;\n unit.hash = this.#makeHash(unit);\n this.imports.cjs.units.push(unit);\n this.imports.cjs.count ++;\n }\n\n });\n }\n });\n }\n\n /**\n * Helper method to generate a very simple hash\n * from the unit properties.\n * @param {Object} unit - Unit to generate a hash from. \n * @returns {string} - a hash as a string \n */\n #makeHash(unit) {\n\n const makeInput = (unit) => {\n \n const joinProps = list => {\n list.forEach(member => {\n inputStr += member.name;\n if (member.alias) {\n inputStr += member.alias.name;\n }\n });\n }; \n\n let inputStr = unit.module.name\n + unit.type\n + this.filename;\n \n if (unit.members) {\n joinProps(unit.members.entities);\n }\n\n if (unit.defaultMembers) {\n joinProps(unit.defaultMembers.entities);\n }\n\n return inputStr;\n };\n\n const input = makeInput(unit);\n let hash = String(simpleHash(input));\n\n // handle duplicates\n if (hash in this.hashList) {\n \n if (unit.module.name !== \"N/A\") {\n this.warning(`It seems like there are multiple imports of module '${unit.module.name}'. You should examine that.`);\n }\n \n for (let nr=2;; nr++) {\n const nHash = `${hash}#${nr}`;\n if (!(nHash in this.hashList)) {\n hash = nHash;\n break;\n }\n }\n }\n \n this.hashList[hash] = unit.id;\n\n return hash;\n }\n\n\n /**\n * Method to generate a unit object from an acorn\n * node, originated from an ES6 Import Statement. \n * @param {Object|string} node - acorn node or es6 import statement string. \n * @param {number} [oStart] - For updating units the original start index has to be passed. \n * @param {number} [oEnd] - For updating units the original end index has to be passed.\n * @returns \n */\n es6NodeToUnit(node, oStart, oEnd) {\n\n let code;\n if (typeof node === \"string\") {\n code = node;\n try {\n node = parse(node, {\n ecmaVersion: \"latest\",\n sourceType: \"module\"\n }).body.at(0);\n } catch(e) {\n if (e instanceof SyntaxError) {\n let msg = \"\\n\\nGenerated Code Snippet\\n----------------------\\n\";\n let { line, column } = e.loc;\n line --;\n code.toString().split(\"\\n\").forEach((l, i) => {\n msg += l + \"\\n\";\n if (line === i) {\n msg += bold(\" \".repeat(column) + \"^\\n\");\n }\n });\n\n\n throw new SyntaxError(msg);\n }\n throw new Error(e);\n }\n } else {\n code = this.code.slice(node.start, node.end);\n }\n \n const mem = {\n defaultMembers: {\n count: 0,\n entities: []\n },\n members: {\n count: 0,\n entities: []\n }\n };\n\n if (node.specifiers) {\n for (const spec of node.specifiers) {\n \n const memType = spec.type === \"ImportSpecifier\" ? \"members\" : \"defaultMembers\";\n const index = mem[memType].count;\n const hasAlias = spec.local.start !== spec.start;\n\n const start = spec.start - node.start;\n let end;\n if (!hasAlias) {\n end = spec.end - node.start;\n } else {\n end = (memType === \"members\") ? spec.imported.end-node.start : start+1;\n }\n const name = code.slice(start, end);\n \n\n const member = {\n index,\n name,\n start,\n end,\n absEnd: spec.end - node.start\n };\n\n if (hasAlias) {\n member.alias = {\n name: spec.local.name,\n start: spec.local.start - node.start,\n end: spec.local.end - node.start\n };\n }\n\n if (index > 0) {\n member.last = mem[memType].entities[index-1].absEnd;\n mem[memType].entities[index-1].next = member.start;\n }\n \n mem[memType].entities.push(member);\n mem[memType].count ++;\n\n }\n }\n\n if (mem.members.count > 0) {\n const nonDefaultMatch = code.match(/{[\\s\\S]*?}/);\n mem.members.start = nonDefaultMatch.index;\n mem.members.end = mem.members.start + nonDefaultMatch.at(0).length; \n }\n\n if (mem.defaultMembers.count > 0) {\n mem.defaultMembers.start = mem.defaultMembers.entities.at(0).start;\n mem.defaultMembers.end = (mem.members.count > 0)\n ? mem.members.start\n : mem.defaultMembers.entities.at(-1).absEnd; \n }\n\n // store the first separator of the non default\n // and default members for a consistent style\n // if one wants to add members\n mem.defaultMembers.separator = (mem.defaultMembers.count > 1) ? code.slice(mem.defaultMembers.entities[0].absEnd, mem.defaultMembers.entities[0].next) : \", \";\n mem.members.separator = (mem.members.count > 1) ? code.slice(mem.members.entities[0].absEnd, mem.members.entities[0].next) : \", \";\n\n\n const module = {\n name: node.source.value.split(\"/\").at(-1),\n start: node.source.start - node.start,\n end: node.source.end - node.start,\n type: \"string\",\n quotes: node.source.raw.at(0)\n };\n\n \n const unit = {\n code: new MagicString(code),\n defaultMembers: mem.defaultMembers,\n members: mem.members,\n module,\n start: oStart || node.start,\n end: oEnd || node.end,\n type: \"es6\"\n };\n\n return unit;\n }\n\n\n dynamicNodeToUnit(node, importObject) {\n\n const code = this.code.slice(node.start, node.end);\n\n const module = {\n name: importObject.source.value.split(\"/\").at(-1) || \"N/A\",\n start: importObject.source.start - node.start,\n end: importObject.source.end - node.start\n };\n\n if (importObject.source.type === \"Literal\") {\n module.type = \"string\";\n module.quotes = importObject.source.raw.at(0);\n } else {\n module.type = \"raw\";\n }\n\n const unit = {\n code: new MagicString(code),\n module,\n start: node.start,\n end: node.end,\n type: \"dynamic\",\n };\n\n return unit;\n }\n\n cjsNodeToUnit(node) {\n\n const code = this.code.slice(node.start, node.end);\n\n const modulePart = node.declarations.at(0).init.arguments.at(0); // TODO: test if this is robust\n const module = {\n name: modulePart.value.split(\"/\").at(-1) || \"N/A\",\n start: modulePart.start - node.start,\n end: modulePart.end - node.start\n };\n\n if (modulePart.type === \"Literal\") {\n module.type = \"string\";\n module.quotes = modulePart.raw.at(0);\n } else {\n module.type = \"raw\";\n }\n\n const unit = {\n code: new MagicString(code),\n module,\n start: node.start,\n end: node.end,\n type: \"cjs\",\n };\n\n return unit;\n }\n\n // ___________________ //\n // select unit methods //\n\n /**\n * Helper method to list available units\n * in case of a MatchError.\n * @param {Object[]} units - Array of unit objects to list.\n * @returns {string} - Message for logging.\n */\n #listUnits(units) {\n const msgArray = [\"\"];\n \n units.forEach(unit => {\n msgArray.push(\n \"___\",\n `ID: ${unit.id}`,\n `HASH: ${unit.hash}`, \n `NAME: ${unit.module.name}`,\n `STATEMENT:\\n${unit.code.toString()}\\n`\n );\n });\n return msgArray.join(\"\\n\") + \"\\n\";\n }\n\n\n /**\n * Helper method to list all available units.\n * @returns {string} - Message string.\n */\n #listAllUnits() {\n let msg = \"\";\n for (const type in this.imports) {\n msg += this.#listUnits(this.imports[type].units);\n }\n return msg;\n }\n\n \n /**\n * Selects a unit by its module name.\n * @param {string} name - Module Name. \n * @param {string|string[]} [type] - \"cjs\", \"dynamic\", \"es6\" one as a string or multiple as array of strings\n * @returns {Object} - An explicit unit.\n */\n selectModByName(name, type, allowNull) {\n if (!name) {\n throw new TypeError(\"The name must be provided\");\n }\n\n let unitList = [];\n\n // if the type is not specified use all types (cjs|dynamic|es6)\n if (!type) {\n type = Object.keys(this.imports);\n } else if (!Array.isArray(type)) {\n type = [type];\n }\n\n // if an empty array was passed, also use all types\n if (!type.length) {\n type = Object.keys(this.imports);\n }\n\n // test types for validity\n for (const t of type) {\n if (!(t in this.imports)) {\n throw new TypeError(`Invalid type: '${t}' - Should be one or more of: 'cjs', 'dynamic', 'es6'.`);\n }\n\n // push all available imports in one list\n if (this.imports[t].count > 0) {\n unitList.push(...this.imports[t].units);\n }\n }\n\n // filter for unit name\n const units = unitList.filter(unit => {\n const match = unit.module.name.indexOf(name) > -1;\n\n // ignore deleted units\n if (match && unit.module.name.match(/^\\(deleted\\)/)) {\n return false;\n }\n\n return match;\n });\n\n // throw errors if the match is not one\n // (if no filename was set a null match\n // is also valid)\n if (units.length === 0) {\n if (allowNull) {\n return null;\n }\n let msg = this.#listUnits(unitList);\n let typeStr;\n\n if (type.length === 1) {\n typeStr = type + \"-imports\";\n } else if (type.length < Object.keys(this.imports).length) { \n typeStr = type.join(\"-imports or \") + \"-imports\";\n } else {\n typeStr = \"any group\";\n }\n\n msg += `___\\nUnable to locate import statement with name: '${name}' in ${typeStr}`;\n throw new MatchError(msg);\n }\n \n else if (units.length > 1) {\n let msg = this.#listUnits(units);\n msg += `___\\nFound multiple matches for '${name}'. If no other solution is available you may select via hash.`;\n throw new MatchError(msg);\n }\n\n // finally add methods for manipulation to the unit\n const unit = units[0];\n unit.methods = new ImportManagerUnitMethods(unit, this.es6NodeToUnit);\n\n return unit;\n }\n\n\n /**\n * Selects a unit by its id. Should only be used\n * for test purposes.\n * @param {number} id - Unit id. \n * @returns {Object} - An explicit unit.\n */\n selectModById(id, allowNull) {\n if (!id) {\n throw new TypeError(\"The id must be provided\");\n }\n \n // get the type by the id scope\n const type = this.idTypes[ Math.floor(id / this.scopeMulti) * this.scopeMulti ];\n\n // if it is not possible to extract a type by the scope,\n // the id is invalid \n if (!type) {\n // generate an ascending list of valid ids\n const ascIds = Object.keys(this.idTypes).sort();\n throw new TypeError(`Id '${id}' is invalid. Ids range from ${ascIds.at(0)} to ${ascIds.at(-1)}+`);\n }\n\n // filter the units of the given type for the id\n const units = this.imports[type].units.filter(n => n.id == id);\n\n // if null matches are allowed return null \n // if no match was found, otherwise raise\n // a match error\n if (units.length === 0) {\n if (allowNull) {\n return null;\n }\n let msg = this.#listUnits(this.imports[type].units);\n msg += `___\\nUnable to locate import statement with id: '${id}'`;\n throw new MatchError(msg);\n }\n\n // add unit methods\n const unit = units[0];\n unit.methods = new ImportManagerUnitMethods(unit, this.es6NodeToUnit);\n\n return unit;\n }\n\n /**\n * Selects a unit by its hash. The hash will change\n * if the unit changes its properties in the source\n * code (like members, alias, etc.)\n * All hashes for one file are stored in a list, with\n * the corresponding id. The id-match method can there-\n * fore be used, to find the unit.\n * @param {string} hash - The hash string of the unit. \n * @returns {object} - An explicit unit.\n */\n selectModByHash(hash, allowNull) {\n if (!(hash in this.hashList)) {\n if (allowNull) {\n return null;\n }\n let msg = this.#listAllUnits(); \n msg += `___\\nUnable to locate import statement with hash '${hash}'`;\n throw new MatchError(msg);\n }\n\n return this.selectModById(this.hashList[hash]);\n }\n\n // ___________________________________________ //\n // methods for unit creation, replacement, etc. //\n\n /**\n * All manipulation via unit method is made on the\n * code slice of the unit. This methods writes it\n * to the code instance. \n * @param {Object} unit - Unit Object. \n */\n commitChanges(unit) {\n this.code.overwrite(unit.start, unit.end, unit.code.toString());\n }\n\n\n /**\n * Removes a unit from the code instance.\n * The action must not be committed. \n * @param {Object} unit - Unit Object.\n */\n remove(unit) {\n const charAfter = this.code.slice(unit.end, unit.end+1);\n const end = (charAfter === \"\\n\") ? unit.end + 1 : unit.end;\n this.code.remove(unit.start, end);\n unit.methods.makeUntraceable();\n this.imports[unit.type].count --;\n }\n\n /**\n * Helper method to declare a variable.\n * @param {string} declarator - const|let|var|global \n * @param {string} varname - Variable Name. \n * @returns {string} - Declarator + Varname + Equal Sign.\n */\n #genDeclaration(declarator, varname) {\n let declaration;\n if (declarator === \"global\") {\n declaration = varname;\n } else {\n declaration = `${declarator} ${varname}`;\n }\n return declaration;\n }\n\n /**\n * Generates a CJS Import Statement.\n * @param {string} module - Module (path).\n * @returns {string} - CJS Import Statement.\n */\n makeCJSStatement(module, declarator, varname) {\n const declaration = this.#genDeclaration(declarator, varname);\n return `${declaration} = require(\"${module}\");\\n`;\n }\n\n /**\n * Generates a Dynamic Import Statement.\n * @param {string} module - Module (path).\n * @returns {string} - CJS Import Statement.\n */\n makeDynamicStatement(module, declarator, varname) {\n const declaration = this.#genDeclaration(declarator, varname);\n return `${declaration} = await import(\"${module}\");\\n`;\n }\n \n\n /**\n * Generates an ES6 Import Statement.\n * @param {string} module - Module (path).\n * @param {string[]} defaultMembers - Default Member Part.\n * @param {string[]} members - Member Part.\n * @returns {string} - ES6 Import Statement.\n */\n makeES6Statement(module, defaultMembers, members) {\n const memberStrArray = [];\n \n if (defaultMembers.length) {\n memberStrArray.push(\n defaultMembers.join(\", \")\n );\n }\n\n if (members.length) {\n memberStrArray.push(\n \"{ \" + members.join(\", \") + \" }\"\n );\n }\n\n let memberPart = memberStrArray.join(\", \");\n if (memberPart) {\n memberPart += \" from \";\n }\n\n return `import ${memberPart}'${module}';\\n`;\n }\n\n\n /**\n * Inserts an ES6 Import Statement to the top\n * of the file or after the last found import\n * statement.\n * @param {string} statement - ES6 Import Statement.\n * @param {number} pos - 'top' or 'bottom'\n */\n insertStatement(statement, pos, type) {\n\n let index = 0;\n\n if (pos !== \"top\" && this.imports[type].count > 0) {\n index = this.imports[type].units.at(-1).end;\n\n // move the index if the following char is a newline\n // (if the line was removed in an earlier operation\n // this will throw an error, don't do any change in\n // this case\n\n let nextChar;\n try {\n nextChar = this.code.slice(index, index+1);\n } catch {\n nextChar = null;\n }\n\n if (nextChar === \"\\n\") {\n index ++;\n }\n }\n \n else {\n // find the first meaningful (not a comment)\n // code and use the start as insertion point\n \n index = this.parsedCode.body.at(0).start;\n }\n \n this.code.appendRight(index, statement);\n }\n\n\n /**\n * Inserts an ES6 Import Statement before or after\n * a given unit. Also an existing statement can be\n * replaced.\n * @param {Object} unit - Unit Object \n * @param {string} mode - 'append'|'prepend'|'replace' \n * @param {string} statement - ES6 Import Statement. \n */\n insertAtUnit(unit, mode, statement) {\n\n let index;\n if (mode === \"append\") {\n index = unit.end;\n if (this.code.slice(index, index+1) === \"\\n\") {\n index ++;\n }\n this.code.appendRight(index, statement);\n }\n \n else if (mode === \"prepend\") {\n index = unit.start;\n this.code.prependLeft(index, statement);\n }\n\n else if (mode === \"replace\") {\n // remove new line from statement\n statement = statement.slice(0, -1);\n \n this.code.overwrite(unit.start, unit.end, statement);\n unit.methods.makeUntraceable();\n this.imports[unit.type].count --;\n }\n }\n\n\n // ________________________ //\n // global debugging methods //\n\n\n /**\n * Debugging method to stop the building process\n * and list all import units with its id, hash and\n * import statement.\n */\n logUnits() {\n throw new DebuggingError(this.#listAllUnits());\n }\n\n\n /**\n * Debugging method to stop the building process\n * and list the complete import object.\n */\n logUnitObjects() {\n const imports = {...this.imports};\n for (const key in imports) {\n imports[key].units.forEach(unit => {\n unit.code = [ unit.code.toString() ];\n });\n }\n throw new DebuggingError(imports);\n }\n\n\n /**\n * Bold, yellow warning messages in the mould\n * of rollup warnings. With spam protection.\n * @param {string} msg - Warning Message. \n */\n warning(msg) {\n const hash = simpleHash(msg);\n\n if (this.warnSpamProtection.has(hash)) {\n return;\n }\n\n this.warnSpamProtection.add(hash);\n\n console.warn(\n bold(yellow(`(!) (plugin ImportManager) ${msg}`))\n );\n }\n}\n\n\n/**\n * A (simple as it gets) hash from string function.\n * @see https://gist.github.com/iperelivskiy/4110988?permalink_comment_id=2697447#gistcomment-2697447\n * @see https://gist.github.com/badboy/6267743#knuths-multiplicative-method\n * @param {string} input \n * @returns {number} - Hash number.\n */\nconst simpleHash = (input) => {\n let h = 0xdeadbeef;\n for (let i=0; i>> 16) >>> 0;\n};\n\nexport { ImportManager, DebuggingError, MatchError, simpleHash };\n"],"names":["parse","fullWalk","bold","yellow"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a0a5565..f96959a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "import-manager", - "version": "0.1.5", + "version": "0.1.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "import-manager", - "version": "0.1.5", + "version": "0.1.6", "license": "MIT", "dependencies": { "acorn": "^8.8.1", @@ -16,20 +16,20 @@ }, "devDependencies": { "ava": "^5.1.0", - "eslint": "^8.29.0", - "rollup": "^3.7.1" + "eslint": "^8.30.0", + "rollup": "^3.7.5" } }, "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz", + "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -44,9 +44,9 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -805,13 +805,13 @@ } }, "node_modules/eslint": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", - "integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", + "version": "8.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz", + "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint/eslintrc": "^1.4.0", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -830,7 +830,7 @@ "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -1252,9 +1252,9 @@ } }, "node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1267,9 +1267,9 @@ } }, "node_modules/globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, "dependencies": { "dir-glob": "^3.0.1", @@ -1319,9 +1319,9 @@ } }, "node_modules/ignore": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", - "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" @@ -2219,9 +2219,9 @@ } }, "node_modules/rollup": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.7.1.tgz", - "integrity": "sha512-ek6+FORvI79VQTNlIYtXpIrGEPRlYSNZO+5EcmaozKkRL5L6KLvGDUbM5E+bd6jnHW9fgcK0DKTdWjIsEmNb4g==", + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.7.5.tgz", + "integrity": "sha512-z0ZbqHBtS/et2EEUKMrAl2CoSdwN7ZPzL17UMiKN9RjjqHShTlv7F9J6ZJZJNREYjBh3TvBrdfjkFDIXFNeuiQ==", "dev": true, "bin": { "rollup": "dist/bin/rollup" diff --git a/package.json b/package.json index a27aba2..bb3aabe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "import-manager", - "version": "0.1.5", + "version": "0.1.6", "description": "A class to analyze and manipulate JavaScript import statements from source code files.", "main": "./cjs/import-manager.cjs", "module": "./src/core.js", @@ -38,8 +38,8 @@ "homepage": "https://github.com/UmamiAppearance/ImportManager#readme", "devDependencies": { "ava": "^5.1.0", - "eslint": "^8.29.0", - "rollup": "^3.7.1" + "eslint": "^8.30.0", + "rollup": "^3.7.5" }, "dependencies": { "acorn": "^8.8.1", diff --git a/src/core.js b/src/core.js index 7ee4eea..d0006a5 100644 --- a/src/core.js +++ b/src/core.js @@ -6,7 +6,7 @@ * It handles code analysis, creates units from import * statements, attaches methods to the units and more. * - * @version 0.1.5 + * @version 0.1.6 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT * @see https://github.com/UmamiAppearance/rollup-plugin-import-manager