From 552aa03212cb0a20452b178c3f871edb3b695a98 Mon Sep 17 00:00:00 2001 From: UmamiAppearance Date: Fri, 12 May 2023 21:19:52 +0200 Subject: [PATCH] v0.4.1 --- cjs/import-manager.cjs | 66 ++++++++++++++++++++++---------------- cjs/import-manager.cjs.map | 2 +- package-lock.json | 10 +++--- package.json | 2 +- src/core.js | 2 +- 5 files changed, 46 insertions(+), 36 deletions(-) diff --git a/cjs/import-manager.cjs b/cjs/import-manager.cjs index 5699ebc..e0f7689 100644 --- a/cjs/import-manager.cjs +++ b/cjs/import-manager.cjs @@ -74,31 +74,35 @@ class ImportManagerUnitMethods { if (this.unit.type !== "es6") { throw new Error("This method is only available for ES6 imports."); } - } - + } /** * Changes the module part of a import statement. - * @param {string|(moduleSourceRaw: string) => string} name - The new module part/path or a function - * that receives the module's raw source code (including quotes if present) and returns the new module part/path. - * @param {*} modType - Module type (literal|raw). + * @param {string|function} name - The new module part/path or a function that receives the module's full (raw) name/path - including quotes if present - which must return the new module part/path. + * @param {string} modType - Module type (string|raw). */ renameModule(name, modType) { - const isNameAFn = typeof name === "function"; - if (!isNameAFn) { - if (modType === "string") { - if (!this.unit.module.quotes) { - this.unit.module.quotes = "\""; - } - const q = this.unit.module.quotes; - name = q + name + q; - } else if (modType !== "raw") { - throw new TypeError(`Unknown modType '${modType}'. Valid types are 'string' and 'raw'.`); + if (typeof name === "function") { + name = name(this.unit.module.rawName); + if (typeof name !== "string") { + throw new TypeError("If a function is provided the output must be a string."); + } + } + + else if (modType === "string") { + if (!this.unit.module.quotes) { + this.unit.module.quotes = "\""; } + const q = this.unit.module.quotes; + name = q + name + q; } - this.unit.code.overwrite(this.unit.module.start, this.unit.module.end, isNameAFn ? name(this.unit.module.sourceRaw) : name); + else if (modType !== "raw") { + throw new TypeError(`Unknown modType '${modType}'. Valid types are 'string' and 'raw'.`); + } + + this.unit.code.overwrite(this.unit.module.start, this.unit.module.end, name); if (this.unit.type === "es6") { this.updateUnit(); @@ -384,13 +388,14 @@ class ImportManagerUnitMethods { * It handles code analysis, creates units from import * statements, attaches methods to the units and more. * - * @version 0.3.3 + * @version 0.4.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT * @see https://github.com/UmamiAppearance/rollup-plugin-import-manager */ + class ImportManager { /** @@ -706,9 +711,8 @@ class ImportManager { end: node.source.end - node.start, type: "string", quotes: node.source.raw.at(0), - sourceRaw: node.source.raw + rawName: node.source.raw }; - const unit = { code: new MagicString(code), @@ -739,7 +743,7 @@ class ImportManager { name: importObject.source.value.split("/").at(-1) || "N/A", start: importObject.source.start - node.start, end: importObject.source.end - node.start, - sourceRaw: importObject.source.raw + rawName: importObject.source.raw }; if (importObject.source.type === "Literal") { @@ -776,7 +780,7 @@ class ImportManager { name: modulePart.value.split("/").at(-1) || "N/A", start: modulePart.start - node.start, end: modulePart.end - node.start, - sourceRaw: modulePart.raw + rawName: modulePart.raw }; if (modulePart.type === "Literal") { @@ -837,14 +841,15 @@ class ImportManager { /** * Selects a unit by its module name. - * @param {string|RegExp} name - Module Name. - * @param {string|string[]} [type] - "cjs", "dynamic", "es6" one as a string or multiple as array of strings + * @param {string|Object} name - Module name as a string or a RegExp object. + * @param {string|string[]} [type] - Pass the strings "cjs", "dynamic", or "es6". Multiple types can be passed as as an array of those strings * @param {boolean} allowNull - If false the module must be found or a MatchError is thrown. + * @param {boolean} [rawName=false] - If true the name is searched in the full raw module part (including quotes if present). * @returns {Object} - An explicit unit. */ - selectModByName(name, type, allowNull) { + selectModByName(name, type, allowNull, rawName=false) { if (!name) { - throw new TypeError("The name must be provided"); + throw new TypeError("Pass a name as a string or a RegExp object for selecting a module by name"); } let unitList = []; @@ -875,10 +880,15 @@ class ImportManager { // filter for unit name const units = unitList.filter(unit => { - const match = name instanceof RegExp ? unit.module.name !== undefined && name.test(unit.module.name) : unit.module.name.indexOf(name) > -1; + + const nameLookup = rawName ? unit.module.rawName : unit.module.name; + + const match = name instanceof RegExp + ? name.test(nameLookup) + : nameLookup.indexOf(name) > -1; // ignore deleted units - if (match && unit.module.name.match(/^\(deleted\)/)) { + if (match && (/^\(deleted\)/).test(unit.module.name)) { return false; } @@ -909,7 +919,7 @@ class ImportManager { else if (units.length > 1) { let msg = this.#listUnits(units); - msg += `___${os.EOL}Found multiple matches for '${name}'. If no other solution is available you may select via hash.`; + msg += `___${os.EOL}Found multiple matches for '${name}'. Try matching via 'rawName'. If no other solution is available you may select via 'hash'.`; throw new MatchError(msg); } diff --git a/cjs/import-manager.cjs.map b/cjs/import-manager.cjs.map index 404614f..85532af 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":["/**\r\n * Custom error to tell the user, that it is\r\n * not possible to select a specific unit.\r\n */\r\nclass MatchError extends Error {\r\n constructor(message) {\r\n super(message);\r\n this.name = \"MatchError\";\r\n }\r\n}\r\n\r\n/**\r\n * Custom error to abort the building process\r\n * for retrieving information.\r\n */\r\nclass DebuggingError extends Error {\r\n constructor(message) {\r\n if (typeof message !== \"string\") {\r\n message = JSON.stringify(message, null, 4);\r\n }\r\n super(message);\r\n this.name = \"DebuggingError\";\r\n }\r\n}\r\n\r\nexport { DebuggingError, MatchError };\r\n","import { DebuggingError, MatchError } from \"./errors.js\";\r\n\r\n/**\r\n * Creates methods for unit manipulation to\r\n * be attached to a requested unit.\r\n */\r\nexport default class ImportManagerUnitMethods {\r\n\r\n /**\r\n * Stores the handed over unit and creates\r\n * an update method.\r\n * @param {Object} unit - The unit a user requests \r\n * @param {*} es6NodeToUnit - Method to analyze a \r\n */\r\n constructor(unit, es6NodeToUnit) {\r\n this.unit = unit;\r\n\r\n // After a change in the code of a es6 unit is made\r\n // it gets analyzed again, which is very verbose,\r\n // but prevents errors. The \"MagicString\" does not\r\n // contain multiple changes at a time. The analysis\r\n // function is the same as for the initial file\r\n // analyses and gets handed over by the main class.\r\n\r\n this.updateUnit = () => {\r\n\r\n const unit = es6NodeToUnit(\r\n this.unit.code.toString(),\r\n this.unit.start,\r\n this.unit.end\r\n );\r\n\r\n Object.assign(this.unit, unit);\r\n\r\n };\r\n }\r\n\r\n\r\n /**\r\n * Makes sure, that the processed unit is of type 'es6'. \r\n */\r\n #ES6only() {\r\n if (this.unit.type !== \"es6\") {\r\n throw new Error(\"This method is only available for ES6 imports.\");\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Changes the module part of a import statement.\r\n * @param {string|(moduleSourceRaw: string) => string} name - The new module part/path or a function\r\n * that receives the module's raw source code (including quotes if present) and returns the new module part/path.\r\n * @param {*} modType - Module type (literal|raw).\r\n */\r\n renameModule(name, modType) {\r\n const isNameAFn = typeof name === \"function\";\r\n\r\n if (!isNameAFn) {\r\n if (modType === \"string\") {\r\n if (!this.unit.module.quotes) {\r\n this.unit.module.quotes = \"\\\"\";\r\n }\r\n const q = this.unit.module.quotes;\r\n name = q + name + q;\r\n } else if (modType !== \"raw\") {\r\n throw new TypeError(`Unknown modType '${modType}'. Valid types are 'string' and 'raw'.`);\r\n }\r\n }\r\n \r\n this.unit.code.overwrite(this.unit.module.start, this.unit.module.end, isNameAFn ? name(this.unit.module.sourceRaw) : name);\r\n\r\n if (this.unit.type === \"es6\") {\r\n this.updateUnit();\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Adds default members to the import statement.\r\n * @param {string[]} names - A list of default members to add.\r\n */\r\n addDefaultMembers(names) {\r\n this.#ES6only();\r\n\r\n let start; \r\n let defStr;\r\n let memberPart = null;\r\n\r\n // handle the case if default members already exist\r\n if (this.unit.defaultMembers.count > 0) {\r\n start = this.unit.defaultMembers.entities.at(-1).absEnd;\r\n defStr = this.unit.defaultMembers.separator \r\n + names.join(this.unit.defaultMembers.separator);\r\n this.unit.code.appendRight(start, defStr);\r\n }\r\n\r\n // handle the case if default members do not exist, \r\n // and also no non default members (the addition\r\n // needs to be appended left, otherwise is\r\n // interferes with the module part)\r\n else if (this.unit.members.count === 0) {\r\n start = this.unit.module.start;\r\n defStr = names.join(this.unit.members.separator);\r\n memberPart = defStr;\r\n defStr += \" from \";\r\n this.unit.code.appendLeft(start, defStr);\r\n }\r\n\r\n // handle the case if default members do not exist, \r\n // but non default members\r\n else {\r\n start = this.unit.members.start;\r\n defStr = names.join(this.unit.defaultMembers.separator)\r\n + this.unit.members.separator;\r\n this.unit.code.appendRight(start, defStr);\r\n }\r\n \r\n this.updateUnit(memberPart);\r\n }\r\n\r\n\r\n /**\r\n * Adds non default members to the import statement.\r\n * @param {string[]} names - A list of members to add. \r\n */\r\n addMembers(names) {\r\n this.#ES6only();\r\n\r\n let start; \r\n let memStr;\r\n let memberPart = null;\r\n \r\n // handle the case if members already exist\r\n if (this.unit.members.count > 0) {\r\n start = this.unit.members.entities.at(-1).absEnd;\r\n memStr = this.unit.members.separator \r\n + names.join(this.unit.members.separator);\r\n this.unit.code.appendRight(start, memStr);\r\n }\r\n\r\n // handle the case if members do not exist, \r\n // and also no default members (the addition\r\n // needs to be appended left, otherwise is\r\n // interferes with the module part)\r\n else if (this.unit.defaultMembers.count === 0) {\r\n start = this.unit.module.start;\r\n memStr = \"{ \"\r\n + names.join(this.unit.members.separator)\r\n + \" }\";\r\n memberPart = memStr;\r\n memStr += \" from \";\r\n this.unit.code.appendLeft(start, memStr);\r\n }\r\n\r\n // handle the case if members do not exist, \r\n // but default members\r\n else {\r\n start = this.unit.defaultMembers.end;\r\n memStr = this.unit.defaultMembers.separator\r\n + \"{ \"\r\n + names.join(this.unit.members.separator)\r\n + \" }\";\r\n this.unit.code.appendRight(start, memStr);\r\n }\r\n\r\n this.updateUnit(memberPart);\r\n }\r\n\r\n\r\n /**\r\n * Internal helper method to get the member type.\r\n * The user input distinguishes between member/defaultMember\r\n * and the plural versions of them. To prevent confusion in the\r\n * process of selecting the different styles in the unit, this\r\n * methods adds an \"s\" to the given string if missing and selects\r\n * the requested type.\r\n * @param {*} memberType \r\n * @returns \r\n */\r\n #getType(memberType) {\r\n if (memberType.at(-1) !== \"s\") {\r\n memberType += \"s\";\r\n }\r\n return this.unit[memberType];\r\n }\r\n\r\n\r\n /**\r\n * Internal helper method to find a specific member\r\n * or default member.\r\n * @param {string} memberType - member/defaultMember. \r\n * @param {string} name - (default) member name. \r\n * @returns {Object} - (default) member object.\r\n */\r\n #findMember(memberType, name) {\r\n if (!name) {\r\n throw new Error(`${memberType} name must be set.`);\r\n }\r\n const filtered = this.#getType(memberType).entities.filter(m => m.name === name);\r\n if (filtered.length !== 1) {\r\n throw new MatchError(`Unable to locate ${memberType} with name '${name}'`);\r\n }\r\n return filtered[0];\r\n }\r\n\r\n\r\n /**\r\n * Removes a (default) member.\r\n * @param {string} memberType - member|defaultMember\r\n * @param {string} name - Name of the (default) member \r\n */\r\n removeMember(memberType, name) {\r\n this.#ES6only();\r\n\r\n const member = this.#findMember(memberType, name);\r\n\r\n if (this.#getType(memberType).count === 1) {\r\n this.removeMembers(memberType);\r\n } \r\n\r\n else {\r\n let start;\r\n let end;\r\n \r\n if (member.next) {\r\n start = member.start;\r\n end = member.next;\r\n } else if (member.last) {\r\n start = member.last;\r\n end = member.absEnd;\r\n } else {\r\n start = member.start;\r\n end = member.absEnd;\r\n }\r\n\r\n this.unit.code.remove(start, end); \r\n this.updateUnit();\r\n\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Removes an entire group of members or default members.\r\n * @param {string} membersType - member(s)|defaultMember(s) \r\n */\r\n removeMembers(membersType) {\r\n this.#ES6only();\r\n\r\n const isDefault = membersType.indexOf(\"default\") > -1;\r\n\r\n const members = this.#getType(membersType);\r\n const others = this.#getType(isDefault ? \"members\" : \"defaultMembers\");\r\n\r\n let memberPart = null;\r\n if (others.count > 0) {\r\n \r\n const start = !isDefault \r\n ? this.unit.defaultMembers.entities.at(-1).end\r\n : members.start;\r\n\r\n this.unit.code.remove(start, members.end);\r\n }\r\n\r\n else {\r\n this.unit.code.remove(members.start, this.unit.module.start);\r\n memberPart = \"\";\r\n }\r\n\r\n this.updateUnit(memberPart);\r\n }\r\n\r\n\r\n /**\r\n * Renames a single (default) member. The alias\r\n * can be kept or overwritten. \r\n * @param {string} memberType - member|defaultMember \r\n * @param {string} name - The (default) member to rename.\r\n * @param {string} newName - The new name of the (default) member.\r\n * @param {boolean} keepAlias - True if the alias shall be untouched. \r\n */\r\n renameMember(memberType, name, newName, keepAlias) {\r\n this.#ES6only();\r\n\r\n const member = this.#findMember(memberType, name);\r\n let end;\r\n\r\n if (keepAlias) {\r\n end = member.end;\r\n } else {\r\n end = member.absEnd;\r\n }\r\n \r\n this.unit.code.overwrite(member.start, end, newName);\r\n this.updateUnit();\r\n }\r\n\r\n\r\n /**\r\n * Changes the alias. Changing can be renaming\r\n * setting it initially or removing. \r\n * @param {string} memberType - member|defaultMember\r\n * @param {string} name - (default) member name\r\n * @param {string} [set] - A new name or nothing for removal\r\n */\r\n setAlias(memberType, name, set) {\r\n this.#ES6only();\r\n \r\n if (memberType === \"defaultMember\") {\r\n if (name !== \"*\") {\r\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.\");\r\n } else if (!set) {\r\n throw new TypeError(\"Removing the alias of an asterisk is invalid. Use the 'rename' method for other changes.\");\r\n }\r\n }\r\n const aliasStr = set ? `${name} as ${set}` : name;\r\n this.renameMember(memberType, name, aliasStr, false);\r\n this.updateUnit();\r\n }\r\n\r\n\r\n /**\r\n * Method to call after a unit was completely removed\r\n * or replaced, to prevent matching it again afterwards.\r\n */\r\n makeUntraceable() {\r\n this.unit.id = `(deleted) ${this.unit.id}`;\r\n this.unit.hash = `(deleted) ${this.unit.hash}`;\r\n this.unit.module.name = `(deleted) ${this.unit.module.name}`;\r\n }\r\n\r\n\r\n /**\r\n * Debugging method to stop the building process\r\n * and list this unit properties.\r\n */\r\n log(error=true) {\r\n const unit = { ...this.unit };\r\n delete unit.methods;\r\n unit.code = [ unit.code.toString() ];\r\n if (error) {\r\n throw new DebuggingError(unit);\r\n }\r\n return unit;\r\n }\r\n}\r\n","/**\r\n * [ImportManager]{@link https://github.com/UmamiAppearance/ImportManager}\r\n *\r\n * The core class for the rollup-plugin-import-manager,\r\n * which can never the less be used standalone. \r\n * It handles code analysis, creates units from import\r\n * statements, attaches methods to the units and more.\r\n * \r\n * @version 0.3.3\r\n * @author UmamiAppearance [mail@umamiappearance.eu]\r\n * @license MIT\r\n * @see https://github.com/UmamiAppearance/rollup-plugin-import-manager\r\n */\r\n\r\nimport ImportManagerUnitMethods from \"./unit-methods.js\";\r\nimport { DebuggingError, MatchError } from \"./errors.js\";\r\nimport { parse } from \"acorn\";\r\nimport { full as fullWalk } from \"acorn-walk\"; \r\nimport MagicString from \"magic-string\";\r\nimport { bold, yellow } from \"colorette\";\r\nimport { EOL } from \"os\";\r\n\r\n\r\nclass ImportManager {\r\n\r\n /**\r\n * The constructor creates a class import\r\n * object and kicks of the code analysis.\r\n * @param {string} source - The unmodified source code.\r\n * @param {string} filename - The path/name of the input file (used for hash generation). \r\n * @param {object} [warnSpamProtection] - A Set which contains all previously printed warning hashes.\r\n * @param {boolean} [warnings=true] - Pass false to suppress warning messages.\r\n * @param {object} [pluginInstance] - Rollup plugin instance if used as a plugin.\r\n */\r\n constructor(source, filename, warnSpamProtection=new Set(), warnings=true, pluginInstance=null) {\r\n\r\n if (!source) {\r\n source=\"\";\r\n }\r\n\r\n if (!filename) {\r\n filename = String(simpleHash(source));\r\n }\r\n\r\n this.scopeMulti = 1000;\r\n\r\n this.imports = {\r\n es6: {\r\n count: 0,\r\n idScope: 1 * this.scopeMulti,\r\n searched: false,\r\n units: []\r\n },\r\n dynamic: {\r\n count: 0,\r\n idScope: 2 * this.scopeMulti,\r\n searched: false,\r\n units: []\r\n },\r\n cjs: {\r\n count: 0,\r\n idScope: 3 * this.scopeMulti,\r\n searched: false,\r\n units: []\r\n }\r\n\r\n };\r\n\r\n // id scope lookup table with the associated type\r\n this.idTypes = Object.fromEntries(Object.entries(this.imports).map(([k, v]) => [v.idScope, k]));\r\n\r\n this.code = new MagicString(source);\r\n\r\n this.hashList = {};\r\n this.filename = filename.split(process.cwd()).at(1);\r\n this.warnSpamProtection = warnSpamProtection;\r\n \r\n this.parsedCode = parse(source, {\r\n ecmaVersion: \"latest\",\r\n sourceType: \"module\"\r\n });\r\n\r\n if (!warnings) {\r\n this.warning = () => {\r\n return;\r\n };\r\n }\r\n \r\n else {\r\n if (pluginInstance) {\r\n this.warn = pluginInstance.warn;\r\n } else {\r\n this.warn = msg => {\r\n console.warn(\r\n bold(yellow(`ImportManager: ${msg}`))\r\n );\r\n };\r\n }\r\n }\r\n \r\n this.analyze();\r\n }\r\n\r\n\r\n /**\r\n * Analyzes the source and stores all import\r\n * statements as unit objects in the object\r\n * \"this.imports\"\r\n */\r\n analyze() {\r\n \r\n let cjsId = this.imports.cjs.idScope;\r\n let cjsIndex = 0;\r\n\r\n let dynamicId = this.imports.dynamic.idScope;\r\n let dynamicIndex = 0;\r\n\r\n let es6Id = this.imports.es6.idScope;\r\n let es6Index = 0;\r\n\r\n this.parsedCode.body.forEach(node => {\r\n\r\n if (node.type === \"ImportDeclaration\") {\r\n const unit = this.#es6NodeToUnit(node);\r\n unit.id = es6Id ++;\r\n unit.index = es6Index ++;\r\n unit.hash = this.#makeHash(unit);\r\n this.imports.es6.units.push(unit);\r\n this.imports.es6.count ++;\r\n }\r\n \r\n else if (node.type === \"VariableDeclaration\" ||\r\n node.type === \"ExpressionStatement\")\r\n {\r\n fullWalk(node, part => {\r\n\r\n if (part.type === \"ImportExpression\") {\r\n const unit = this.#dynamicNodeToUnit(node, part);\r\n unit.id = dynamicId ++;\r\n unit.index = dynamicIndex ++;\r\n unit.hash = this.#makeHash(unit);\r\n this.imports.dynamic.units.push(unit);\r\n this.imports.dynamic.count ++;\r\n }\r\n \r\n else if (part.type === \"Identifier\" && part.name === \"require\") {\r\n const unit = this.#cjsNodeToUnit(node);\r\n unit.id = cjsId ++;\r\n unit.index = cjsIndex ++;\r\n unit.hash = this.#makeHash(unit);\r\n this.imports.cjs.units.push(unit);\r\n this.imports.cjs.count ++;\r\n }\r\n\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Helper method to generate a very simple hash\r\n * from the unit properties.\r\n * @param {Object} unit - Unit to generate a hash from. \r\n * @returns {string} - a hash as a string \r\n */\r\n #makeHash(unit) {\r\n\r\n const makeInput = (unit) => {\r\n \r\n const joinProps = list => {\r\n list.forEach(member => {\r\n inputStr += member.name;\r\n if (member.alias) {\r\n inputStr += member.alias.name;\r\n }\r\n });\r\n }; \r\n\r\n let inputStr = unit.module.name\r\n + unit.type\r\n + this.filename;\r\n \r\n if (unit.members) {\r\n joinProps(unit.members.entities);\r\n }\r\n\r\n if (unit.defaultMembers) {\r\n joinProps(unit.defaultMembers.entities);\r\n }\r\n\r\n return inputStr;\r\n };\r\n\r\n const input = makeInput(unit);\r\n let hash = String(simpleHash(input));\r\n\r\n // handle duplicates\r\n if (hash in this.hashList) {\r\n \r\n if (unit.module.name !== \"N/A\") {\r\n this.warning(`It seems like there are multiple imports of module '${unit.module.name}'. You should examine that.`);\r\n }\r\n \r\n for (let nr=2;; nr++) {\r\n const nHash = `${hash}#${nr}`;\r\n if (!(nHash in this.hashList)) {\r\n hash = nHash;\r\n break;\r\n }\r\n }\r\n }\r\n \r\n this.hashList[hash] = unit.id;\r\n\r\n return hash;\r\n }\r\n\r\n\r\n /**\r\n * Method to generate a unit object from an acorn\r\n * node, originated from an ES6 Import Statement. \r\n * @param {Object|string} node - acorn node or es6 import statement string. \r\n * @param {number} [oStart] - For updating units the original start index has to be passed. \r\n * @param {number} [oEnd] - For updating units the original end index has to be passed.\r\n * @returns {object} - Import Manager Unit Object.\r\n */\r\n #es6NodeToUnit(node, oStart, oEnd) {\r\n\r\n let code;\r\n if (typeof node === \"string\") {\r\n code = node;\r\n try {\r\n node = parse(node, {\r\n ecmaVersion: \"latest\",\r\n sourceType: \"module\"\r\n }).body.at(0);\r\n } catch(e) {\r\n if (e instanceof SyntaxError) {\r\n let msg = `${EOL}${EOL}Generated Code Snippet${EOL}----------------------${EOL}`;\r\n let { line, column } = e.loc;\r\n line --;\r\n code.toString().split(EOL).forEach((l, i) => {\r\n msg += `l${EOL}`;\r\n if (line === i) {\r\n msg += bold(\" \".repeat(column) + `^${EOL}`);\r\n }\r\n });\r\n\r\n\r\n throw new SyntaxError(msg);\r\n }\r\n throw new Error(e);\r\n }\r\n } else {\r\n code = this.code.slice(node.start, node.end);\r\n }\r\n \r\n const mem = {\r\n defaultMembers: {\r\n count: 0,\r\n entities: []\r\n },\r\n members: {\r\n count: 0,\r\n entities: []\r\n }\r\n };\r\n\r\n if (node.specifiers) {\r\n for (const spec of node.specifiers) {\r\n \r\n const memType = spec.type === \"ImportSpecifier\" ? \"members\" : \"defaultMembers\";\r\n const index = mem[memType].count;\r\n const hasAlias = spec.local.start !== spec.start;\r\n\r\n const start = spec.start - node.start;\r\n let end;\r\n if (!hasAlias) {\r\n end = spec.end - node.start;\r\n } else {\r\n end = (memType === \"members\") ? spec.imported.end-node.start : start+1;\r\n }\r\n const name = code.slice(start, end);\r\n \r\n\r\n const member = {\r\n index,\r\n name,\r\n start,\r\n end,\r\n absEnd: spec.end - node.start\r\n };\r\n\r\n if (hasAlias) {\r\n member.alias = {\r\n name: spec.local.name,\r\n start: spec.local.start - node.start,\r\n end: spec.local.end - node.start\r\n };\r\n }\r\n\r\n if (index > 0) {\r\n member.last = mem[memType].entities[index-1].absEnd;\r\n mem[memType].entities[index-1].next = member.start;\r\n }\r\n \r\n mem[memType].entities.push(member);\r\n mem[memType].count ++;\r\n\r\n }\r\n }\r\n\r\n if (mem.members.count > 0) {\r\n const nonDefaultMatch = code.match(/{[\\s\\S]*?}/);\r\n mem.members.start = nonDefaultMatch.index;\r\n mem.members.end = mem.members.start + nonDefaultMatch.at(0).length; \r\n }\r\n\r\n if (mem.defaultMembers.count > 0) {\r\n mem.defaultMembers.start = mem.defaultMembers.entities.at(0).start;\r\n mem.defaultMembers.end = (mem.members.count > 0)\r\n ? mem.members.start\r\n : mem.defaultMembers.entities.at(-1).absEnd; \r\n }\r\n\r\n // store the first separator of the non default\r\n // and default members for a consistent style\r\n // if one wants to add members\r\n mem.defaultMembers.separator = (mem.defaultMembers.count > 1) ? code.slice(mem.defaultMembers.entities[0].absEnd, mem.defaultMembers.entities[0].next) : \", \";\r\n mem.members.separator = (mem.members.count > 1) ? code.slice(mem.members.entities[0].absEnd, mem.members.entities[0].next) : \", \";\r\n\r\n\r\n const module = {\r\n name: node.source.value.split(\"/\").at(-1),\r\n start: node.source.start - node.start,\r\n end: node.source.end - node.start,\r\n type: \"string\",\r\n quotes: node.source.raw.at(0),\r\n sourceRaw: node.source.raw\r\n };\r\n\r\n \r\n const unit = {\r\n code: new MagicString(code),\r\n defaultMembers: mem.defaultMembers,\r\n members: mem.members,\r\n module,\r\n start: oStart || node.start,\r\n end: oEnd || node.end,\r\n type: \"es6\"\r\n };\r\n\r\n return unit;\r\n }\r\n\r\n\r\n /**\r\n * Method to generate a unit object from an acorn\r\n * node, originated from a Dynamic Import Statement.\r\n * @param {object} node - Complete acorn node.\r\n * @param {object} importObject - Actual import part.\r\n * @returns {object} - Import Manager Unit Object.\r\n */\r\n #dynamicNodeToUnit(node, importObject) {\r\n\r\n const code = this.code.slice(node.start, node.end);\r\n\r\n const module = {\r\n name: importObject.source.value.split(\"/\").at(-1) || \"N/A\",\r\n start: importObject.source.start - node.start,\r\n end: importObject.source.end - node.start,\r\n sourceRaw: importObject.source.raw\r\n };\r\n\r\n if (importObject.source.type === \"Literal\") {\r\n module.type = \"string\";\r\n module.quotes = importObject.source.raw.at(0);\r\n } else {\r\n module.type = \"raw\";\r\n }\r\n\r\n const unit = {\r\n code: new MagicString(code),\r\n module,\r\n start: node.start,\r\n end: node.end,\r\n type: \"dynamic\",\r\n };\r\n\r\n return unit;\r\n }\r\n\r\n\r\n /**\r\n * Method to generate a unit object from an acorn\r\n * node, originated from a Common JS Import Statement.\r\n * @param {object} node - Complete acorn node.\r\n * @returns {object} - Import Manager Unit Object.\r\n */\r\n #cjsNodeToUnit(node) {\r\n\r\n const code = this.code.slice(node.start, node.end);\r\n\r\n const modulePart = node.declarations.at(0).init.arguments.at(0); // TODO: test if this is robust\r\n const module = {\r\n name: modulePart.value.split(\"/\").at(-1) || \"N/A\",\r\n start: modulePart.start - node.start,\r\n end: modulePart.end - node.start,\r\n sourceRaw: modulePart.raw\r\n };\r\n\r\n if (modulePart.type === \"Literal\") {\r\n module.type = \"string\";\r\n module.quotes = modulePart.raw.at(0);\r\n } else {\r\n module.type = \"raw\";\r\n }\r\n\r\n const unit = {\r\n code: new MagicString(code),\r\n module,\r\n start: node.start,\r\n end: node.end,\r\n type: \"cjs\",\r\n };\r\n\r\n return unit;\r\n }\r\n\r\n // ___________________ //\r\n // select unit methods //\r\n\r\n /**\r\n * Helper method to list available units\r\n * in case of a MatchError.\r\n * @param {Object[]} units - Array of unit objects to list.\r\n * @returns {string} - Message for logging.\r\n */\r\n #listUnits(units) {\r\n const msgArray = [\"\"];\r\n \r\n units.forEach(unit => {\r\n msgArray.push(\r\n \"___\",\r\n `ID: ${unit.id}`,\r\n `HASH: ${unit.hash}`, \r\n `NAME: ${unit.module.name}`,\r\n `STATEMENT:${EOL}${unit.code.toString()}${EOL}`\r\n );\r\n });\r\n return msgArray.join(EOL) + EOL;\r\n }\r\n\r\n\r\n /**\r\n * Helper method to list all available units.\r\n * @returns {string} - Message string.\r\n */\r\n #listAllUnits() {\r\n let msg = \"\";\r\n for (const type in this.imports) {\r\n msg += this.#listUnits(this.imports[type].units);\r\n }\r\n return msg;\r\n }\r\n\r\n \r\n /**\r\n * Selects a unit by its module name.\r\n * @param {string|RegExp} name - Module Name. \r\n * @param {string|string[]} [type] - \"cjs\", \"dynamic\", \"es6\" one as a string or multiple as array of strings\r\n * @param {boolean} allowNull - If false the module must be found or a MatchError is thrown.\r\n * @returns {Object} - An explicit unit.\r\n */\r\n selectModByName(name, type, allowNull) {\r\n if (!name) {\r\n throw new TypeError(\"The name must be provided\");\r\n }\r\n\r\n let unitList = [];\r\n\r\n // if the type is not specified use all types (cjs|dynamic|es6)\r\n if (!type) {\r\n type = Object.keys(this.imports);\r\n } else if (!Array.isArray(type)) {\r\n type = [type];\r\n }\r\n\r\n // if an empty array was passed, also use all types\r\n if (!type.length) {\r\n type = Object.keys(this.imports);\r\n }\r\n\r\n // test types for validity\r\n for (const t of type) {\r\n if (!(t in this.imports)) {\r\n throw new TypeError(`Invalid type: '${t}' - Should be one or more of: 'cjs', 'dynamic', 'es6'.`);\r\n }\r\n\r\n // push all available imports in one list\r\n if (this.imports[t].count > 0) {\r\n unitList.push(...this.imports[t].units);\r\n }\r\n }\r\n\r\n // filter for unit name\r\n const units = unitList.filter(unit => {\r\n const match = name instanceof RegExp ? unit.module.name !== undefined && name.test(unit.module.name) : unit.module.name.indexOf(name) > -1;\r\n\r\n // ignore deleted units\r\n if (match && unit.module.name.match(/^\\(deleted\\)/)) {\r\n return false;\r\n }\r\n\r\n return match;\r\n });\r\n\r\n // throw errors if the match is not one\r\n // (if no filename was set a null match\r\n // is also valid)\r\n if (units.length === 0) {\r\n if (allowNull) {\r\n return null;\r\n }\r\n let msg = this.#listUnits(unitList);\r\n let typeStr;\r\n\r\n if (type.length === 1) {\r\n typeStr = type + \"-imports\";\r\n } else if (type.length < Object.keys(this.imports).length) { \r\n typeStr = type.join(\"-imports or \") + \"-imports\";\r\n } else {\r\n typeStr = \"any group\";\r\n }\r\n\r\n msg += `___${EOL}Unable to locate import statement with name: '${name}' in ${typeStr}`;\r\n throw new MatchError(msg);\r\n }\r\n \r\n else if (units.length > 1) {\r\n let msg = this.#listUnits(units);\r\n msg += `___${EOL}Found multiple matches for '${name}'. If no other solution is available you may select via hash.`;\r\n throw new MatchError(msg);\r\n }\r\n\r\n // finally add methods for manipulation to the unit\r\n const unit = units[0];\r\n unit.methods = new ImportManagerUnitMethods(unit, this.#es6NodeToUnit);\r\n\r\n return unit;\r\n }\r\n\r\n\r\n /**\r\n * Selects a unit by its id. Should only be used\r\n * for testing purposes.\r\n * @param {number} id - Unit id. \r\n * @param {boolean} allowNull - If false the module must be found or a MatchError is thrown.\r\n * @returns {Object} - An explicit unit.\r\n */\r\n selectModById(id, allowNull) {\r\n if (!id) {\r\n throw new TypeError(\"The id must be provided\");\r\n }\r\n \r\n // get the type by the id scope\r\n const type = this.idTypes[ Math.floor(id / this.scopeMulti) * this.scopeMulti ];\r\n\r\n // if it is not possible to extract a type by the scope,\r\n // the id is invalid \r\n if (!type) {\r\n // generate an ascending list of valid ids\r\n const ascIds = Object.keys(this.idTypes).sort();\r\n throw new TypeError(`Id '${id}' is invalid. Ids range from ${ascIds.at(0)} to ${ascIds.at(-1)}+`);\r\n }\r\n\r\n // filter the units of the given type for the id\r\n const units = this.imports[type].units.filter(n => n.id == id);\r\n\r\n // if null matches are allowed return null \r\n // if no match was found, otherwise raise\r\n // a match error\r\n if (units.length === 0) {\r\n if (allowNull) {\r\n return null;\r\n }\r\n let msg = this.#listUnits(this.imports[type].units);\r\n msg += `___${EOL}Unable to locate import statement with id: '${id}'`;\r\n throw new MatchError(msg);\r\n }\r\n\r\n // add unit methods\r\n const unit = units[0];\r\n unit.methods = new ImportManagerUnitMethods(unit, this.#es6NodeToUnit);\r\n\r\n return unit;\r\n }\r\n\r\n /**\r\n * Selects a unit by its hash. The hash will change\r\n * if the unit changes its properties in the source\r\n * code (like members, alias, etc.)\r\n * All hashes for one file are stored in a list, with\r\n * the corresponding id. The id-match method can there-\r\n * fore be used, to find the unit.\r\n * @param {string} hash - The hash string of the unit.\r\n * @param {boolean} allowNull - If false the module must be found or a MatchError is thrown.\r\n * @returns {object} - An explicit unit.\r\n */\r\n selectModByHash(hash, allowNull) {\r\n if (!(hash in this.hashList)) {\r\n if (allowNull) {\r\n return null;\r\n }\r\n let msg = this.#listAllUnits(); \r\n msg += `___${EOL}Unable to locate import statement with hash '${hash}'`;\r\n throw new MatchError(msg);\r\n }\r\n\r\n return this.selectModById(this.hashList[hash]);\r\n }\r\n\r\n // ___________________________________________ //\r\n // methods for unit creation, replacement, etc. //\r\n\r\n /**\r\n * All manipulation via unit method is made on the\r\n * code slice of the unit. This methods writes it\r\n * to the code instance. \r\n * @param {Object} unit - Unit Object. \r\n */\r\n commitChanges(unit) {\r\n this.code.overwrite(unit.start, unit.end, unit.code.toString());\r\n }\r\n\r\n\r\n /**\r\n * Removes a unit from the code instance.\r\n * The action must not be committed. \r\n * @param {Object} unit - Unit Object.\r\n * @returns {string} - Unit code, for further processing.\r\n */\r\n remove(unit) {\r\n let charAfter = this.code.slice(unit.end, unit.end+1);\r\n let end = unit.end;\r\n \r\n if (charAfter === \"\\r\") {\r\n end++;\r\n charAfter = this.code.slice(end, end+1);\r\n }\r\n if (charAfter === \"\\n\") {\r\n end++;\r\n }\r\n \r\n const code = this.code.slice(unit.start, end);\r\n\r\n this.code.remove(unit.start, end);\r\n unit.methods.makeUntraceable();\r\n this.imports[unit.type].count --;\r\n \r\n return code;\r\n }\r\n\r\n /**\r\n * Helper method to declare a variable.\r\n * @param {string} declarator - const|let|var|global \r\n * @param {string} varname - Variable Name. \r\n * @returns {string} - Declarator + Varname + Equal Sign.\r\n */\r\n #genDeclaration(declarator, varname) {\r\n let declaration;\r\n if (declarator === \"global\") {\r\n declaration = varname;\r\n } else {\r\n declaration = `${declarator} ${varname}`;\r\n }\r\n return declaration;\r\n }\r\n\r\n /**\r\n * Generates a CJS Import Statement.\r\n * @param {string} module - Module (path).\r\n * @returns {string} - CJS Import Statement.\r\n */\r\n makeCJSStatement(module, declarator, varname) {\r\n const declaration = this.#genDeclaration(declarator, varname);\r\n return `${declaration} = require(\"${module}\");${EOL}`;\r\n }\r\n\r\n /**\r\n * Generates a Dynamic Import Statement.\r\n * @param {string} module - Module (path).\r\n * @returns {string} - CJS Import Statement.\r\n */\r\n makeDynamicStatement(module, declarator, varname) {\r\n const declaration = this.#genDeclaration(declarator, varname);\r\n return `${declaration} = await import(\"${module}\");${EOL}`;\r\n }\r\n \r\n\r\n /**\r\n * Generates an ES6 Import Statement.\r\n * @param {string} module - Module (path).\r\n * @param {string[]} defaultMembers - Default Member Part.\r\n * @param {string[]} members - Member Part.\r\n * @returns {string} - ES6 Import Statement.\r\n */\r\n makeES6Statement(module, defaultMembers, members) {\r\n const memberStrArray = [];\r\n \r\n if (defaultMembers.length) {\r\n memberStrArray.push(\r\n defaultMembers.join(\", \")\r\n );\r\n }\r\n\r\n if (members.length) {\r\n memberStrArray.push(\r\n \"{ \" + members.join(\", \") + \" }\"\r\n );\r\n }\r\n\r\n let memberPart = memberStrArray.join(\", \");\r\n if (memberPart) {\r\n memberPart += \" from \";\r\n }\r\n\r\n return `import ${memberPart}'${module}';${EOL}`;\r\n }\r\n\r\n\r\n /**\r\n * Inserts an Import Statement to the top\r\n * of the file or after the last found import\r\n * statement.\r\n * @param {string} statement - Import Statement.\r\n * @param {number} pos - 'top' or 'bottom'\r\n */\r\n insertStatement(statement, pos, type) {\r\n\r\n let index = 0;\r\n\r\n if (pos !== \"top\" && this.imports[type].count > 0) {\r\n index = this.imports[type].units.at(-1).end;\r\n\r\n // move the index if the following char is a newline\r\n // (if the line was removed in an earlier operation\r\n // this will throw an error, don't do any change in\r\n // this case\r\n\r\n let nextChar;\r\n try {\r\n nextChar = this.code.slice(index, index+1);\r\n } catch {\r\n nextChar = null;\r\n }\r\n\r\n if (nextChar === \"\\r\") {\r\n index ++;\r\n }\r\n if (nextChar === \"\\n\") {\r\n index ++;\r\n }\r\n }\r\n \r\n else {\r\n // find the first meaningful (not a comment)\r\n // code and use the start as insertion point\r\n \r\n index = this.parsedCode.body.at(0).start;\r\n }\r\n \r\n this.code.appendRight(index, statement);\r\n }\r\n\r\n\r\n /**\r\n * Inserts an Import Statement before or after\r\n * a given unit. Also an existing statement can be\r\n * replaced.\r\n * @param {Object} unit - Unit Object \r\n * @param {string} mode - 'append'|'prepend'|'replace' \r\n * @param {string} statement - Import Statement. \r\n */\r\n insertAtUnit(unit, mode, statement) {\r\n\r\n let index;\r\n if (mode === \"append\") {\r\n index = unit.end;\r\n if (this.code.slice(index, index+1) === \"\\r\") {\r\n index ++;\r\n }\r\n if (this.code.slice(index, index+1) === \"\\n\") {\r\n index ++;\r\n }\r\n this.code.appendRight(index, statement);\r\n }\r\n \r\n else if (mode === \"prepend\") {\r\n index = unit.start;\r\n this.code.prependLeft(index, statement);\r\n }\r\n\r\n else if (mode === \"replace\") {\r\n // remove new line from statement\r\n statement = statement.slice(0, -1);\r\n \r\n this.code.overwrite(unit.start, unit.end, statement);\r\n unit.methods.makeUntraceable();\r\n this.imports[unit.type].count --;\r\n }\r\n }\r\n\r\n\r\n // ________________________ //\r\n // global debugging methods //\r\n\r\n \r\n /**\r\n * Debug statements created by IM.\r\n * @param {string} code - Code Snippet String.\r\n * @param {Object} [target] - Target Unit Object.\r\n * @param {string} [type] - Target type.\r\n * @param {string} [mode] - Insert position or attach mode.\r\n */\r\n logCreations(code, target, type, mode) {\r\n let msg = {\r\n addCode: code\r\n };\r\n if (target) {\r\n msg.mode = mode;\r\n msg.targetType = target.type;\r\n msg.targetUnit = target.methods.log(false);\r\n } else if (type) {\r\n msg.insert = mode;\r\n msg.targetType = type;\r\n }\r\n throw new DebuggingError(msg);\r\n }\r\n\r\n\r\n /**\r\n * Debugging method to stop the building process\r\n * and list all import units with its id, hash and\r\n * import statement.\r\n */\r\n logUnits() {\r\n throw new DebuggingError(this.#listAllUnits());\r\n }\r\n\r\n\r\n /**\r\n * Debugging method to stop the building process\r\n * and list the complete import object.\r\n */\r\n logUnitObjects() {\r\n const imports = {...this.imports};\r\n for (const key in imports) {\r\n imports[key].units.forEach(unit => {\r\n unit.code = [ unit.code.toString() ];\r\n });\r\n }\r\n throw new DebuggingError(imports);\r\n }\r\n\r\n\r\n /**\r\n * Warnings with spam protection. Can use internal\r\n * and native rollup method.\r\n * @param {string} msg - Warning Message. \r\n */\r\n warning(msg) {\r\n const hash = simpleHash(msg);\r\n\r\n if (this.warnSpamProtection.has(hash)) {\r\n return;\r\n }\r\n\r\n this.warnSpamProtection.add(hash);\r\n this.warn(msg);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * A (simple as it gets) hash from string function.\r\n * @see https://gist.github.com/iperelivskiy/4110988?permalink_comment_id=2697447#gistcomment-2697447\r\n * @see https://gist.github.com/badboy/6267743#knuths-multiplicative-method\r\n * @param {string} input \r\n * @returns {number} - Hash number.\r\n */\r\nconst simpleHash = (input) => {\r\n let h = 0xdeadbeef;\r\n for (let i=0; i>> 16) >>> 0;\r\n};\r\n\r\nexport { ImportManager, DebuggingError, MatchError, simpleHash };\r\n"],"names":["parse","bold","yellow","fullWalk","EOL"],"mappings":"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"} \ 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 if (typeof message !== \"string\") {\n message = JSON.stringify(message, null, 4);\n }\n super(message);\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 * Changes the module part of a import statement.\n * @param {string|function} name - The new module part/path or a function that receives the module's full (raw) name/path - including quotes if present - which must return the new module part/path.\n * @param {string} modType - Module type (string|raw).\n */\n renameModule(name, modType) {\n\n if (typeof name === \"function\") {\n name = name(this.unit.module.rawName);\n if (typeof name !== \"string\") {\n throw new TypeError(\"If a function is provided the output must be a string.\");\n }\n }\n\n else 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 }\n \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 this.#ES6only();\n \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(error=true) {\n const unit = { ...this.unit };\n delete unit.methods;\n unit.code = [ unit.code.toString() ];\n if (error) {\n throw new DebuggingError(unit);\n }\n return 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.4.1\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\";\nimport { EOL } from \"os\";\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 * @param {object} [pluginInstance] - Rollup plugin instance if used as a plugin.\n */\n constructor(source, filename, warnSpamProtection=new Set(), warnings=true, pluginInstance=null) {\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 else {\n if (pluginInstance) {\n this.warn = pluginInstance.warn;\n } else {\n this.warn = msg => {\n console.warn(\n bold(yellow(`ImportManager: ${msg}`))\n );\n };\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 object\n * \"this.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 {object} - Import Manager Unit Object.\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 = `${EOL}${EOL}Generated Code Snippet${EOL}----------------------${EOL}`;\n let { line, column } = e.loc;\n line --;\n code.toString().split(EOL).forEach((l, i) => {\n msg += `l${EOL}`;\n if (line === i) {\n msg += bold(\" \".repeat(column) + `^${EOL}`);\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 rawName: node.source.raw\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 /**\n * Method to generate a unit object from an acorn\n * node, originated from a Dynamic Import Statement.\n * @param {object} node - Complete acorn node.\n * @param {object} importObject - Actual import part.\n * @returns {object} - Import Manager Unit Object.\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 rawName: importObject.source.raw\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\n /**\n * Method to generate a unit object from an acorn\n * node, originated from a Common JS Import Statement.\n * @param {object} node - Complete acorn node.\n * @returns {object} - Import Manager Unit Object.\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 rawName: modulePart.raw\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:${EOL}${unit.code.toString()}${EOL}`\n );\n });\n return msgArray.join(EOL) + EOL;\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|Object} name - Module name as a string or a RegExp object. \n * @param {string|string[]} [type] - Pass the strings \"cjs\", \"dynamic\", or \"es6\". Multiple types can be passed as as an array of those strings\n * @param {boolean} allowNull - If false the module must be found or a MatchError is thrown.\n * @param {boolean} [rawName=false] - If true the name is searched in the full raw module part (including quotes if present).\n * @returns {Object} - An explicit unit.\n */\n selectModByName(name, type, allowNull, rawName=false) {\n if (!name) {\n throw new TypeError(\"Pass a name as a string or a RegExp object for selecting a module by name\");\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\n const nameLookup = rawName ? unit.module.rawName : unit.module.name;\n\n const match = name instanceof RegExp \n ? name.test(nameLookup)\n : nameLookup.indexOf(name) > -1;\n\n // ignore deleted units\n if (match && (/^\\(deleted\\)/).test(unit.module.name)) {\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 += `___${EOL}Unable 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 += `___${EOL}Found multiple matches for '${name}'. Try matching via 'rawName'. 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 testing purposes.\n * @param {number} id - Unit id. \n * @param {boolean} allowNull - If false the module must be found or a MatchError is thrown.\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 += `___${EOL}Unable 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 * @param {boolean} allowNull - If false the module must be found or a MatchError is thrown.\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 += `___${EOL}Unable 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 * @returns {string} - Unit code, for further processing.\n */\n remove(unit) {\n let charAfter = this.code.slice(unit.end, unit.end+1);\n let end = unit.end;\n \n if (charAfter === \"\\r\") {\n end++;\n charAfter = this.code.slice(end, end+1);\n }\n if (charAfter === \"\\n\") {\n end++;\n }\n \n const code = this.code.slice(unit.start, end);\n\n this.code.remove(unit.start, end);\n unit.methods.makeUntraceable();\n this.imports[unit.type].count --;\n \n return code;\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}\");${EOL}`;\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}\");${EOL}`;\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}';${EOL}`;\n }\n\n\n /**\n * Inserts an Import Statement to the top\n * of the file or after the last found import\n * statement.\n * @param {string} statement - 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 === \"\\r\") {\n index ++;\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 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 - 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) === \"\\r\") {\n index ++;\n }\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 * Debug statements created by IM.\n * @param {string} code - Code Snippet String.\n * @param {Object} [target] - Target Unit Object.\n * @param {string} [type] - Target type.\n * @param {string} [mode] - Insert position or attach mode.\n */\n logCreations(code, target, type, mode) {\n let msg = {\n addCode: code\n };\n if (target) {\n msg.mode = mode;\n msg.targetType = target.type;\n msg.targetUnit = target.methods.log(false);\n } else if (type) {\n msg.insert = mode;\n msg.targetType = type;\n }\n throw new DebuggingError(msg);\n }\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 * Warnings with spam protection. Can use internal\n * and native rollup method.\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 this.warn(msg);\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","bold","yellow","fullWalk","EOL"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b9f7af6..9ed006b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "import-manager", - "version": "0.4.0", + "version": "0.4.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "import-manager", - "version": "0.4.0", + "version": "0.4.1", "license": "MIT", "dependencies": { "acorn": "^8.8.2", @@ -2265,9 +2265,9 @@ } }, "node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" diff --git a/package.json b/package.json index d7ffef4..e04ef15 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "import-manager", - "version": "0.4.0", + "version": "0.4.1", "description": "A class to analyze and manipulate JavaScript import statements from source code files.", "main": "./cjs/import-manager.cjs", "module": "./src/core.js", diff --git a/src/core.js b/src/core.js index 6dbc939..8a27604 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.4.0 + * @version 0.4.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT * @see https://github.com/UmamiAppearance/rollup-plugin-import-manager