{"version":3,"file":"rollup-plugin-import-manager.cjs","sources":["../src/diff.js","../src/index.js"],"sourcesContent":["import { diffLines, structuredPatch } from \"diff\";\nimport { blue, bold, red, green, gray } from \"colorette\";\n\n\n/**\n * Adds an angle bracket to each line of a\n * text section.\n * @param {string} angle - '>' or '<'\n * @param {string} txt - The text section.\n * @returns {string} - The given text section with an angle bracket and a space in front of each line. \n */\nconst addAngles = (angle, txt) => {\n    const txtArr = txt.split(\"\\n\");\n    let lastChar = \"\";\n    if (txt.at(-1) === \"\\n\") {\n        lastChar = \"\\n\";\n        txtArr.pop();\n    }\n    let output = txtArr.map(line => `${angle} ${line}`).join(\"\\n\");\n    output += lastChar;\n    return output;\n};\n\n\n/**\n * Prints an output in the mould of GNU diff when\n * called with no parameters other than the files.\n * But more picturesque, thanks to red and green\n * colors...\n * Also possible is a \"file\" mode. This variant\n * shows the whole file with added and removed\n * lines.\n * @param {string} source - The original code.\n * @param {string} code - The modified code.\n * @param {string} [diffOption] - As passed by the user. If the value is 'file' also unchanged code is printed.  \n */\nconst showDiff = (filename, source, code, diffOption) => {\n    const fileMode = diffOption == \"file\";\n    \n    console.log(bold(blue(\n        `(plugin ImportManager) diff for file '${filename}':`\n    )));\n    \n    console.log(gray(\"BEGIN >>>\"));\n\n    if (fileMode) {\n        const diff = diffLines(source, code);\n\n        let message = \"\";\n        \n        diff.forEach((part) => {\n            let msg;\n            if (part.added) {\n                msg = green(addAngles(\">\", part.value));\n            } else if (part.removed) {\n                msg = red(addAngles(\"<\", part.value));\n            } else {\n                msg = part.value;\n            }\n            message += msg;\n        });\n        \n        console.log(message);\n    \n    }\n        \n    else {\n        const diff = structuredPatch(\"\", \"\", source, code, \"\", \"\", {\n            context: 0\n        });\n        \n        for (const part of diff.hunks) {\n\n            // add\n            if (part.oldLines === 0) {\n                let info = `${part.oldStart}a${part.newStart}`;\n                if (part.newLines > 1) {\n                    info += `,${part.newStart+part.newLines-1}`;\n                }\n                console.log(bold(info));\n                part.lines.forEach(line => console.log(green(`> ${line.slice(1)}`)));\n            }\n            \n            // delete\n            else if (part.newLines === 0) {\n                let info = String(part.oldStart);\n                if (part.oldLines > 1) {\n                    info += `,${part.oldStart+part.oldLines-1}`;\n                }\n                info += `d${part.newLines}`;\n                console.log(bold(info));\n                part.lines.forEach(line => console.log(red(`< ${line.slice(1)}`)));\n            }\n            \n            // change\n            else {\n                let info = String(part.oldStart);\n                if (part.oldLines > 1) {\n                    info += `,${part.oldStart+part.oldLines-1}`;\n                }\n                info += `c${part.newStart}`;\n                if (part.newLines > 1) {\n                    info += `,${part.newStart+part.newLines-1}`;\n                }\n                console.log(bold(info));\n                \n                let plus = false;\n                part.lines.forEach((line, i) => {\n                    if (plus) {\n                        console.log(green(`> ${line.slice(1)}`));\n                    } else {\n                        console.log(red(`< ${line.slice(1)}`));\n                        if (part.lines[i+1].at(0) === \"+\") {\n                            console.log(\"---\");\n                            plus = true;\n                        }\n                    }\n                });\n            }\n        }\n    }\n     \n    console.log(gray(\"<<< END\\n\"));\n};\n\nexport default showDiff;\n","/**\n * [rollup-plugin-import-manager]{@link https://github.com/UmamiAppearance/rollup-plugin-import-manager}\n *\n * @version 0.6.4\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\n\nimport { createFilter } from \"@rollup/pluginutils\";\nimport { ImportManager } from \"import-manager\";\nimport showDiff from \"./diff.js\";\n\n// test if input is an object\nconst isObject = input => typeof input === \"object\" && !Array.isArray(input) && input !== null;\n\n// helper to allow string and array\nconst ensureArray = (arr) => Array.isArray(arr) ? arr : [arr];\n\n// helper to allow string and object\nconst ensureObj = (input) => {\n\n    if (typeof input === \"string\") {\n        const output = {};\n        output[input] = null;\n        return output;\n    }\n    \n    else if (isObject(input)) {\n        return input;\n    }\n    \n    throw new TypeError(\"Only strings and objects are allowed for actions.\");\n    \n};\n\n// makes the life of the user a little bit easier\n// by accepting multiple versions of boolean vars \nconst bool = (b) => !(Boolean(b) === false || (/^(?:false|no?|0)$/i).test(String(b)));\n\n// allow some variations to enable object mode \n// for debugging\nconst showObjects = (v) => (/^(?:objects?|imports?|verbose)$/).test(String(v));\n\n\n// main\nconst importManager = (options={}) => {\n\n    const filter = createFilter(options.include, options.exclude);\n\n    // Initialize a new set to be passed to every \n    // ImportManager instance. It keeps track of\n    // warnings, that were shown already.\n    const warnSpamProtection = new Set();\n  \n    return {\n        name: \"ImportManager\",\n    \n        transform (source, id) {\n            if (!filter(id)) return;\n\n            const warnings = typeof options.warnings === \"undefined\" ? true : bool(options.warnings);\n\n            const manager = new ImportManager(source, id, warnSpamProtection, warnings, this);       \n\n            if (!(\"units\" in options) || \"debug\" in options) {\n                if (showObjects(options.debug)) {\n                    manager.logUnitObjects();\n                } else {\n                    manager.logUnits();\n                }\n            }\n            \n            else {\n\n                const unitArray = ensureArray(options.units);\n\n                for (const unitSection of unitArray) {\n\n                    let allowId = false; \n                    let allowNull = true;\n\n                    if (\"file\" in unitSection) {\n                        const isMatch = createFilter(unitSection.file);\n\n                        if (!isMatch(id)) {\n                            continue;\n                        }\n\n                        allowId = true;\n                        allowNull = false;\n                    }\n\n\n                    // a little helper function to select a unit\n                    const selectUnit = (section) => {\n                        if (!isObject(section)) {\n                            throw new TypeError(\"Input must be an object.\");\n                        }\n\n                        let unit = null;\n                    \n                        if (\"id\" in section) {\n                            if (allowId) {\n                                manager.warning(\"Selecting modules via Id should only be used for testing.\");\n                                unit = manager.selectModById(section.id, allowNull);\n                            } else {\n                                throw new Error(\"Filename must be specified for selecting via Id.\");\n                            }\n                        } else if (\"hash\" in section) {\n                            unit = manager.selectModByHash(section.hash, allowNull);\n                        } else if (\"module\" in section) {\n                            unit = manager.selectModByName(section.module, section.type, allowNull);\n                        } else if (\"rawModule\" in section) {\n                            unit = manager.selectModByName(section.rawModule, section.type, allowNull, true);\n                        }\n                    \n                        return unit;\n                    };\n\n                    \n                    // creating units from scratch\n                    if (\"createModule\" in unitSection || \"addCode\" in unitSection) {\n\n                        let codeSnippet;\n                        let debug = false;\n\n                        if (\"createModule\" in unitSection) {\n\n                            if (allowNull) {\n                                manager.warning(\"No file specified for import statement creation! If the build fails, this could be the reason.\");\n                            }\n\n                            const module = unitSection.createModule;\n                            let type = unitSection.type;\n\n                            const mem = {\n                                defaultMembers: [],\n                                members: []\n                            };\n\n                            if (\"actions\" in unitSection) {\n                                for (let action of ensureArray(unitSection.actions)) {\n                                    action = ensureObj(action);\n                                    if ((action.select === \"members\" || action.select === \"defaultMembers\") && \"add\" in action) {\n                                        mem[action.select] = ensureArray(action.add); \n                                    }\n                                    if (\"debug\" in action) {\n                                        debug = true;\n                                    }\n                                }\n                            }\n\n                            if (mem.defaultMembers.length || mem.members.length) {\n                                type = \"es6\";\n                            }\n\n                            \n                            if (!type) {\n                                throw new TypeError(\"If no (default) members are specified, the type cannot be determined and must be specified by passing 'type: \\\"cjs\\\"|\\\"dynamic\\\"|\\\"es6\\\"'\");\n                            } else if (type === \"es6\") {\n                                codeSnippet = manager.makeES6Statement(module, mem.defaultMembers, mem.members);\n                            } else {\n                                const declarators = /^(?:const|let|var|global)$/;\n                                const [ declarator, varname ] = Object.entries(unitSection).filter(e => declarators.test(e[0])).at(0) || [ null, null ];\n\n                                if (!declarator || !varname) {\n                                    throw new TypeError(\"dynamic and cjs imports require a valid declarator key (const|let|var|global) and a value for the variable name.\");\n                                }\n\n                                if (type === \"cjs\") {\n                                    codeSnippet = manager.makeCJSStatement(module, declarator, varname);\n                                } else if (type === \"dynamic\") {\n                                    codeSnippet = manager.makeDynamicStatement(module, declarator, varname);\n                                }\n                            }\n                        }\n                        \n                        else {\n                            codeSnippet = unitSection.addCode;\n                            if (!(codeSnippet && typeof codeSnippet === \"string\")) {\n                                throw new TypeError(\"'addCode' must be a non empty string.\");\n                            }\n\n                            if (\"actions\" in unitSection) {\n                                for (let action of ensureArray(unitSection.actions)) {\n                                    action = ensureObj(action);\n                                    if (\"debug\" in action) {\n                                        debug = true;\n                                    }\n                                }\n                            }\n                        }\n                        \n                        let mode;\n                        for (const key in unitSection) {\n                            const targetMatch = key.match(/^(?:(?:ap|pre)pend|replace)$/);\n                            if (targetMatch) {\n                                mode = targetMatch.at(0);\n                                break;\n                            }\n                        }\n\n                        \n                        if (mode) {\n                            // look for the target with the values at key 'append|prepend|replace'\n                            const target = selectUnit(unitSection[mode]);\n\n                            if (debug) {\n                                manager.logCreations(codeSnippet, target, null, mode);\n                            }\n                            \n                            // insert if match is found\n                            // (which can be undefined if no file specified)\n                            if (target) {\n                                manager.insertAtUnit(target, mode, codeSnippet);\n                            }\n                        }\n\n                        else {\n                            // default is es6\n                            let type = \"es6\";\n\n                            // overwrite this if set by the config\n                            if (unitSection.type) {\n                                type = unitSection.type;\n                            } \n                            \n                            // if type is dynamic change to es6 if is6 imports\n                            // are found (as dynamic imports can be wildly spread)\n                            \n                            if (type === \"dynamic\" && manager.imports.es6.length) {\n                                type = \"es6\";\n                            }\n\n                            if (debug) {\n                                manager.logCreations(codeSnippet, null, type, unitSection.insert || \"bottom\");\n                            }\n\n                            manager.insertStatement(codeSnippet, unitSection.insert, type);\n                        }\n\n                        continue;\n                    }\n                    \n\n                    // select existing units\n                    const unit = selectUnit(unitSection);\n                    if (!unit) {\n                        continue;\n                    }\n                    \n                    \n                    if (\"actions\" in unitSection) {\n\n                        for (let action of ensureArray(unitSection.actions)) {\n                            \n                            action = ensureObj(action);\n                            \n                            if (\"debug\" in action) {\n                                unit.methods.log();       \n                            }\n\n                            // cut and paste a unit\n                            else if (\"cut\" in action) {\n                                const newSection = {...unitSection};\n                                delete newSection.actions;\n                                newSection.addCode = manager.remove(unit);\n                                unitArray.push(newSection);\n\n                                continue;\n                            }\n                            \n                            else if (\"select\" in action) {\n\n                                // module\n                                if (action.select === \"module\" && \"rename\" in action) {\n                                    const modType = (\"modType\" in action) ? action.modType : unit.module.type;\n                                    unit.methods.renameModule(action.rename, modType);\n                                }\n\n                                // single (default) member\n                                else if (action.select === \"member\" || action.select === \"defaultMember\" ) {\n                                    const memberType = action.select;\n                                    \n                                    if (\"alias\" in action) {\n                                        const alias = \"remove\" in action ? null : action.alias;\n                                        unit.methods.setAlias(memberType, action.name, alias);\n                                    }\n                                    \n                                    else if (\"rename\" in action) {\n                                        const keepAlias = \"keepAlias\" in action ? bool(action.keepAlias) : false;\n                                        unit.methods.renameMember(memberType, action.name, action.rename, keepAlias);\n                                    }\n\n                                    else if (\"remove\" in action) {\n                                        unit.methods.removeMember(memberType, action.name);\n                                    }\n\n                                }\n\n                                // entire group of (default) members\n                                else if (action.select === \"members\" || action.select === \"defaultMembers\") {\n                                    if (\"remove\" in action) {\n                                        unit.methods.removeMembers(action.select);\n                                    }\n\n                                    if (\"add\" in action) {\n                                        if (action.select === \"members\") {\n                                            unit.methods.addMembers(ensureArray(action.add));\n                                        } else {\n                                            unit.methods.addDefaultMembers(ensureArray(action.add));\n                                        }\n                                    } \n                                }\n                            }\n\n                            // remove the entire unit\n                            else if (\"remove\" in action) {\n                                manager.remove(unit);\n                                continue;\n                            }\n\n                            // apply the changes to the code\n                            manager.commitChanges(unit);\n                        }\n                    }\n                }\n            }\n\n            const code = manager.code.toString();\n            \n            if (\"showDiff\" in options && manager.code.hasChanged()) {\n                showDiff(id, source, code, options.showDiff);\n            }\n            \n            let map;\n\n            if (options.sourceMap !== false && options.sourcemap !== false) {\n                map = manager.code.generateMap({ hires: true });\n            }\n\n            return { code, map };\n        }\n    };\n};\n  \nexport { importManager };\n"],"names":["bold","blue","gray","diff","diffLines","green","red","structuredPatch","createFilter","ImportManager"],"mappings":"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"}