UNPKG

babel-plugin-debug-macros

Version:
96 lines 13.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const macros_1 = __importDefault(require("./utils/macros")); const normalize_options_1 = require("./utils/normalize-options"); const babel_import_util_1 = require("babel-import-util"); function macros(babel) { let t = babel.types; function buildIdentifier(value, name) { let replacement = t.booleanLiteral(value); t.addComment(replacement, 'trailing', ` ${name} `); return replacement; } return { name: 'babel-feature-flags-and-debug-macros', visitor: { ImportSpecifier(path, state) { let importPath = path.parent.source.value; let flagsForImport = state.opts.flags[importPath]; if (flagsForImport) { let flagName = t.isIdentifier(path.node.imported) ? path.node.imported.name : path.node.imported.value; let localBindingName = path.node.local.name; if (!(flagName in flagsForImport)) { throw new Error(`Imported ${flagName} from ${importPath} which is not a supported flag.`); } let flagValue = flagsForImport[flagName]; if (flagValue === null) { return; } let binding = path.scope.getBinding(localBindingName); binding.referencePaths.forEach((p) => { if (flagValue === '@embroider/macros') { p.replaceWith(t.callExpression(state.util.import(p, "@embroider/macros", "isDevelopingApp"), [])); p.scope.crawl(); } else { p.replaceWith(buildIdentifier(flagValue, flagName)); } }); path.remove(); path.scope.removeOwnBinding(localBindingName); } }, ImportDeclaration: { exit(path, state) { let importPath = path.node.source.value; let flagsForImport = state.opts.flags[importPath]; // remove flag source imports when no specifiers are left if (flagsForImport && path.get('specifiers').length === 0) { path.remove(); } }, }, Program: { enter(path, state) { // most of our plugin declares state.opts as already being normalized. // This is the spot where we force it become so. state.opts = (0, normalize_options_1.normalizeOptions)(state.opts); state.util = new babel_import_util_1.ImportUtil(t, path); this.macroBuilder = new macros_1.default(babel, state.opts, state.util); let body = path.get('body'); body.forEach((item) => { if (item.isImportDeclaration()) { let importPath = item.node.source.value; let debugToolsImport = state.opts.debugTools.debugToolsImport; if (debugToolsImport && debugToolsImport === importPath) { if (!item.node.specifiers.length) { item.remove(); } else { this.macroBuilder.collectDebugToolsSpecifiers(item.get('specifiers')); } } } }); }, exit() { this.macroBuilder.cleanImports(); }, }, ExpressionStatement(path) { this.macroBuilder.build(path); }, }, }; } exports.default = macros; macros.baseDir = function () { return path_1.default.resolve(__dirname, '..', '..'); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsNERBQW9DO0FBQ3BDLGlFQUE2RjtBQUc3Rix5REFBK0M7QUFRL0MsU0FBd0IsTUFBTSxDQUFDLEtBQW1CO0lBQ2hELElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFFcEIsU0FBUyxlQUFlLENBQUMsS0FBYyxFQUFFLElBQVk7UUFDbkQsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLHNDQUFzQztRQUM1QyxPQUFPLEVBQUU7WUFDUCxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUs7Z0JBQ3pCLElBQUksVUFBVSxHQUFJLElBQUksQ0FBQyxNQUE4QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ25FLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUVsRCxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNuQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO3dCQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTt3QkFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztvQkFDN0IsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENB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Q0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO29DQUNqQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0NBQ2hCLENBQUM7cUNBQU0sQ0FBQztvQ0FDTixJQUFJLENBQUMsWUFBWSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQ0FDeEUsQ0FBQzs0QkFDSCxDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxJQUFJO29CQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ25DLENBQUM7YUFDRjtZQUVELG1CQUFtQixDQUFDLElBQUk7Z0JBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hDLENBQUM7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBbEdELHlCQWtHQztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUc7SUFDZixPQUFPLGNBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBNYWNyb3MgZnJvbSAnLi91dGlscy9tYWNyb3MnO1xuaW1wb3J0IHsgVXNlck9wdGlvbnMsIE5vcm1hbGl6ZWRPcHRpb25zLCBub3JtYWxpemVPcHRpb25zIH0gZnJvbSAnLi91dGlscy9ub3JtYWxpemUtb3B0aW9ucyc7XG5pbXBvcnQgKiBhcyBCYWJlbCBmcm9tICdAYmFiZWwvY29yZSc7XG5pbXBvcnQgdHlwZSB7IHR5cGVzIGFzIHQgfSBmcm9tICdAYmFiZWwvY29yZSc7XG5pbXBvcnQgeyBJbXBvcnRVdGlsIH0gZnJvbSAnYmFiZWwtaW1wb3J0LXV0aWwnO1xuXG5pbnRlcmZhY2UgU3RhdGUge1xuICBvcHRzOiBOb3JtYWxpemVkT3B0aW9ucztcbiAgbWFjcm9CdWlsZGVyOiBNYWNyb3M7XG4gIHV0aWw6IEltcG9ydFV0aWw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1hY3JvcyhiYWJlbDogdHlwZW9mIEJhYmVsKTogQmFiZWwuUGx1Z2luT2JqPFN0YXRlPiB7XG4gIGxldCB0ID0gYmFiZWwudHlwZXM7XG5cbiAgZnVuY3Rpb24gYnVpbGRJZGVudGlmaWVyKHZhbHVlOiBib29sZWFuLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVwbGFjZW1lbnQgPSB0LmJvb2xlYW5MaXRlcmFsKHZhbHVlKTtcbiAgICB0LmFkZENvbW1lbnQocmVwbGFjZW1lbnQsICd0cmFpbGluZycsIGAgJHtuYW1lfSBgKTtcbiAgICByZXR1cm4gcmVwbGFjZW1lbnQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdiYWJlbC1mZWF0dXJlLWZsYWdzLWFuZC1kZWJ1Zy1tYWNyb3MnLFxuICAgIHZpc2l0b3I6IHtcbiAgICAgIEltcG9ydFNwZWNpZmllcihwYXRoLCBzdGF0ZSkge1xuICAgICAgICBsZXQgaW1wb3J0UGF0aCA9IChwYXRoLnBhcmVudCBhcyB0LkltcG9ydERlY2xhcmF0aW9uKS5zb3VyY2UudmFsdWU7XG4gICAgICAgIGxldCBmbGFnc0ZvckltcG9ydCA9IHN0YXRlLm9wdHMuZmxhZ3NbaW1wb3J0UGF0aF07XG5cbiAgICAgICAgaWYgKGZsYWdzRm9ySW1wb3J0KSB7XG4gICAgICAgICAgbGV0IGZsYWdOYW1lID0gdC5pc0lkZW50aWZpZXIocGF0aC5ub2RlLmltcG9ydGVkKVxuICAgICAgICAgICAgPyBwYXRoLm5vZGUuaW1wb3J0ZWQubmFtZVxuICAgICAgICAgICAgOiBwYXRoLm5vZGUuaW1wb3J0ZWQudmFsdWU7XG4gICAgICAgICAgbGV0IGxvY2FsQmluZGluZ05hbWUgPSBwYXRoLm5vZGUubG9jYWwubmFtZTtcblxuICAgICAgICAgIGlmICghKGZsYWdOYW1lIGluIGZsYWdzRm9ySW1wb3J0KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgSW1wb3J0ZWQgJHtmbGFnTmFtZX0gZnJvbSAke2ltcG9ydFBhdGh9IHdoaWNoIGlzIG5vdCBhIHN1cHBvcnRlZCBmbGFnLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGZsYWdWYWx1ZSA9IGZsYWdzRm9ySW1wb3J0W2ZsYWdOYW1lXTtcbiAgICAgICAgICBpZiAoZmxhZ1ZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGJpbmRpbmcgPSBwYXRoLnNjb3BlLmdldEJpbmRpbmcobG9jYWxCaW5kaW5nTmFtZSkhO1xuXG4gICAgICAgICAgYmluZGluZy5yZWZlcmVuY2VQYXRocy5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgICAgICBpZiAoZmxhZ1ZhbHVlID09PSAnQGVtYnJvaWRlci9tYWNyb3MnKSB7XG4gICAgICAgICAgICAgIHAucmVwbGFjZVdpdGgodC5jYWxsRXhwcmVzc2lvbihzdGF0ZS51dGlsLmltcG9ydChwLCBcIkBlbWJyb2lkZXIvbWFjcm9zXCIsIFwiaXNEZXZlbG9waW5nQXBwXCIpLCBbXSkpXG4gICAgICAgICAgICAgIHAuc2NvcGUuY3Jhd2woKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHAucmVwbGFjZVdpdGgoYnVpbGRJZGVudGlmaWVyKGZsYWdWYWx1ZSwgZmxhZ05hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHBhdGgucmVtb3ZlKCk7XG4gICAgICAgICAgcGF0aC5zY29wZS5yZW1vdmVPd25CaW5kaW5nKGxvY2FsQmluZGluZ05hbWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICBJbXBvcnREZWNsYXJhdGlvbjoge1xuICAgICAgICBleGl0KHBhdGgsIHN0YXRlKSB7XG4gICAgICAgICAgbGV0IGltcG9ydFBhdGggPSBwYXRoLm5vZGUuc291cmNlLnZhbHVlO1xuICAgICAgICAgIGxldCBmbGFnc0ZvckltcG9ydCA9IHN0YXRlLm9wdHMuZmxhZ3NbaW1wb3J0UGF0aF07XG5cbiAgICAgICAgICAvLyByZW1vdmUgZmxhZyBzb3VyY2UgaW1wb3J0cyB3aGVuIG5vIHNwZWNpZmllcnMgYXJlIGxlZnRcbiAgICAgICAgICBpZiAoZmxhZ3NGb3JJbXBvcnQgJiYgcGF0aC5nZXQoJ3NwZWNpZmllcnMnKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHBhdGgucmVtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgUHJvZ3JhbToge1xuICAgICAgICBlbnRlcihwYXRoLCBzdGF0ZSkge1xuICAgICAgICAgIC8vIG1vc3Qgb2Ygb3VyIHBsdWdpbiBkZWNsYXJlcyBzdGF0ZS5vcHRzIGFzIGFscmVhZHkgYmVpbmcgbm9ybWFsaXplZC5cbiAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzcG90IHdoZXJlIHdlIGZvcmNlIGl0IGJlY29tZSBzby5cbiAgICAgICAgICBzdGF0ZS5vcHRzID0gbm9ybWFsaXplT3B0aW9ucyhzdGF0ZS5vcHRzIGFzIHVua25vd24gYXMgVXNlck9wdGlvbnMpO1xuICAgICAgICAgIHN0YXRlLnV0aWwgPSBuZXcgSW1wb3J0VXRpbCh0LCBwYXRoKVxuICAgICAgICAgIHRoaXMubWFjcm9CdWlsZGVyID0gbmV3IE1hY3JvcyhiYWJlbCwgc3RhdGUub3B0cywgc3RhdGUudXRpbCk7XG5cbiAgICAgICAgICBsZXQgYm9keSA9IHBhdGguZ2V0KCdib2R5Jyk7XG5cbiAgICAgICAgICBib2R5LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlzSW1wb3J0RGVjbGFyYXRpb24oKSkge1xuICAgICAgICAgICAgICBsZXQgaW1wb3J0UGF0aCA9IGl0ZW0ubm9kZS5zb3VyY2UudmFsdWU7XG5cbiAgICAgICAgICAgICAgbGV0IGRlYnVnVG9vbHNJbXBvcnQgPSBzdGF0ZS5vcHRzLmRlYnVnVG9vbHMuZGVidWdUb29sc0ltcG9ydDtcblxuICAgICAgICAgICAgICBpZiAoZGVidWdUb29sc0ltcG9ydCAmJiBkZWJ1Z1Rvb2xzSW1wb3J0ID09PSBpbXBvcnRQYXRoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtLm5vZGUuc3BlY2lmaWVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIGl0ZW0ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFjcm9CdWlsZGVyLmNvbGxlY3REZWJ1Z1Rvb2xzU3BlY2lmaWVycyhpdGVtLmdldCgnc3BlY2lmaWVycycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBleGl0KCkge1xuICAgICAgICAgIHRoaXMubWFjcm9CdWlsZGVyLmNsZWFuSW1wb3J0cygpO1xuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgRXhwcmVzc2lvblN0YXRlbWVudChwYXRoKSB7XG4gICAgICAgIHRoaXMubWFjcm9CdWlsZGVyLmJ1aWxkKHBhdGgpO1xuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuXG5tYWNyb3MuYmFzZURpciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicpO1xufTtcbiJdfQ==