diff --git a/cjs/import-manager.cjs b/cjs/import-manager.cjs index 92314ec..56c5d3f 100644 --- a/cjs/import-manager.cjs +++ b/cjs/import-manager.cjs @@ -395,7 +395,6 @@ class ImportManagerUnitMethods { */ - class ImportManager { /** @@ -520,6 +519,7 @@ class ImportManager { else if (part.type === "Identifier" && part.name === "require") { const unit = this.#cjsNodeToUnit(node); + if (!unit) return; unit.id = cjsId ++; unit.index = cjsIndex ++; unit.hash = this.#makeHash(unit); @@ -772,6 +772,7 @@ class ImportManager { * @returns {object} - Import Manager Unit Object. */ #cjsNodeToUnit(node) { + if (!node || !node.declarations || node.declarations.length >= 0) return; const code = this.code.slice(node.start, node.end); diff --git a/cjs/import-manager.cjs.map b/cjs/import-manager.cjs.map index a701837..f890886 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 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.2\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 +{"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.2\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 if (!unit) return;\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 if (!node || !node.declarations || node.declarations.length >= 0) return;\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/src/core.js b/src/core.js index 717400c..f3cf31f 100644 --- a/src/core.js +++ b/src/core.js @@ -145,6 +145,7 @@ class ImportManager { else if (part.type === "Identifier" && part.name === "require") { const unit = this.#cjsNodeToUnit(node); + if (!unit) return; unit.id = cjsId ++; unit.index = cjsIndex ++; unit.hash = this.#makeHash(unit); @@ -397,6 +398,7 @@ class ImportManager { * @returns {object} - Import Manager Unit Object. */ #cjsNodeToUnit(node) { + if (!node || !node.declarations || node.declarations.length >= 0) return; const code = this.code.slice(node.start, node.end);