UNPKG

babel-plugin-debug-macros

Version:
72 lines 10.2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const builder_1 = __importDefault(require("./builder")); const babel_type_helpers_1 = require("./babel-type-helpers"); const SUPPORTED_MACROS = ['assert', 'deprecate', 'warn', 'log']; class Macros { constructor(babel, options, util) { this.localDebugBindings = []; this.debugHelpers = options.externalizeHelpers; this.builder = new builder_1.default(babel.types, util, { module: this.debugHelpers?.module, global: this.debugHelpers?.global, assertPredicateIndex: options.debugTools && options.debugTools.assertPredicateIndex, isDebug: options.debugTools.isDebug, }); } /** * Injects the either the env-flags module with the debug binding or * adds the debug binding if missing from the env-flags module. */ expand() { this.builder.expandMacros(); this._cleanImports(); } /** * Collects the import bindings for the debug tools. */ collectDebugToolsSpecifiers(specifiers) { specifiers.forEach((specifier) => { if (specifier.node.type === 'ImportSpecifier' && SUPPORTED_MACROS.indexOf((0, babel_type_helpers_1.name)(specifier.node.imported)) > -1) { this.localDebugBindings.push(specifier.get('local')); } }); } /** * Builds the expressions that the CallExpression will expand into. */ build(path) { if (!(0, babel_type_helpers_1.isCallStatementPath)(path)) { return; } if (this.localDebugBindings.some((b) => b.node.name === path.node.expression.callee.name)) { let imported = (0, babel_type_helpers_1.name)(path.scope.getBinding(path.node.expression.callee.name).path.node .imported); this.builder[`${imported}`](path); } } _cleanImports() { if (!this.debugHelpers?.module) { if (this.localDebugBindings.length > 0) { let importPath = this.localDebugBindings[0].findParent((p) => p.isImportDeclaration()); if (importPath === null) { // import declaration in question seems to have already been removed return; } let specifiers = importPath.get('specifiers'); if (specifiers.length === this.localDebugBindings.length) { this.localDebugBindings[0].parentPath.parentPath.remove(); } else { this.localDebugBindings.forEach((binding) => binding.parentPath.remove()); } } } } } exports.default = Macros; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjcm9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL21hY3Jvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdEQUFnQztBQU1oQyw2REFBaUU7QUFJakUsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBR2hFLE1BQXFCLE1BQU07SUFLekIsWUFBWSxLQUFtQixFQUFFLE9BQTBCLEVBQUUsSUFBZ0I7UUFIckUsdUJBQWtCLEdBQTZCLEVBQUUsQ0FBQztRQUl4RCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksaUJBQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRTtZQUM1QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNO1lBQ2pDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU07WUFDakMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLG9CQUFvQjtZQUNuRixPQUFPLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUU1QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsMkJBQTJCLENBQ3pCLFVBRUc7UUFFSCxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0IsSUFDRSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUI7Z0JBQ3pDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFBLHlCQUFJLEVBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUM1RCxDQUFDO2dCQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxJQUFxQztRQUN6QyxJQUFJLENBQUMsSUFBQSx3Q0FBbUIsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxRixJQUFJLFFBQVEsR0FBRyxJQUFBLHlCQUFJLEVBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUUsQ0FBQyxJQUFJLENBQUMsSUFBMEI7aUJBQ3RGLFFBQVEsQ0FDTSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQy9CLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQzNELENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxDQUNnQixDQUFDO2dCQUMxQyxJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDeEIsb0VBQW9FO29CQUNwRSxPQUFPO2dCQUNULENBQUM7Z0JBQ0QsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFFOUMsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdELENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzVFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQS9FRCx5QkErRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbGRlciBmcm9tICcuL2J1aWxkZXInO1xuaW1wb3J0IHR5cGUgKiBhcyBCYWJlbCBmcm9tICdAYmFiZWwvY29yZSc7XG5pbXBvcnQgdHlwZSB7IHR5cGVzIGFzIHQgfSBmcm9tICdAYmFiZWwvY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgTm9ybWFsaXplZE9wdGlvbnMgfSBmcm9tICcuL25vcm1hbGl6ZS1vcHRpb25zJztcbmltcG9ydCB0eXBlIHsgTm9kZVBhdGggfSBmcm9tICdAYmFiZWwvY29yZSc7XG5pbXBvcnQgeyBpc0NhbGxTdGF0ZW1lbnRQYXRoLCBuYW1lIH0gZnJvbSAnLi9iYWJlbC10eXBlLWhlbHBlcnMnO1xuaW1wb3J0IHR5cGUgeyBJbXBvcnRVdGlsIH0gZnJvbSAnYmFiZWwtaW1wb3J0LXV0aWwnO1xuXG5cbmNvbnN0IFNVUFBPUlRFRF9NQUNST1MgPSBbJ2Fzc2VydCcsICdkZXByZWNhdGUnLCAnd2FybicsICdsb2cnXTtcbnR5cGUgU3VwcG9ydGVkTWFjcm8gPSAnYXNzZXJ0JyB8ICdkZXByZWNhdGUnIHwgJ3dhcm4nIHwgJ2xvZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hY3JvcyB7XG4gIHByaXZhdGUgZGVidWdIZWxwZXJzOiBOb3JtYWxpemVkT3B0aW9uc1snZXh0ZXJuYWxpemVIZWxwZXJzJ107XG4gIHByaXZhdGUgbG9jYWxEZWJ1Z0JpbmRpbmdzOiBOb2RlUGF0aDx0LklkZW50aWZpZXI+W10gPSBbXTtcbiAgcHJpdmF0ZSBidWlsZGVyOiBCdWlsZGVyO1xuXG4gIGNvbnN0cnVjdG9yKGJhYmVsOiB0eXBlb2YgQmFiZWwsIG9wdGlvbnM6IE5vcm1hbGl6ZWRPcHRpb25zLCB1dGlsOiBJbXBvcnRVdGlsKSB7XG4gICAgdGhpcy5kZWJ1Z0hlbHBlcnMgPSBvcHRpb25zLmV4dGVybmFsaXplSGVscGVycztcbiAgICB0aGlzLmJ1aWxkZXIgPSBuZXcgQnVpbGRlcihiYWJlbC50eXBlcywgdXRpbCwge1xuICAgICAgbW9kdWxlOiB0aGlzLmRlYnVnSGVscGVycz8ubW9kdWxlLFxuICAgICAgZ2xvYmFsOiB0aGlzLmRlYnVnSGVscGVycz8uZ2xvYmFsLFxuICAgICAgYXNzZXJ0UHJlZGljYXRlSW5kZXg6IG9wdGlvbnMuZGVidWdUb29scyAmJiBvcHRpb25zLmRlYnVnVG9vbHMuYXNzZXJ0UHJlZGljYXRlSW5kZXgsXG4gICAgICBpc0RlYnVnOiBvcHRpb25zLmRlYnVnVG9vbHMuaXNEZWJ1ZyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmplY3RzIHRoZSBlaXRoZXIgdGhlIGVudi1mbGFncyBtb2R1bGUgd2l0aCB0aGUgZGVidWcgYmluZGluZyBvclxuICAgKiBhZGRzIHRoZSBkZWJ1ZyBiaW5kaW5nIGlmIG1pc3NpbmcgZnJvbSB0aGUgZW52LWZsYWdzIG1vZHVsZS5cbiAgICovXG4gIGV4cGFuZCgpIHtcbiAgICB0aGlzLmJ1aWxkZXIuZXhwYW5kTWFjcm9zKCk7XG5cbiAgICB0aGlzLl9jbGVhbkltcG9ydHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsZWN0cyB0aGUgaW1wb3J0IGJpbmRpbmdzIGZvciB0aGUgZGVidWcgdG9vbHMuXG4gICAqL1xuICBjb2xsZWN0RGVidWdUb29sc1NwZWNpZmllcnMoXG4gICAgc3BlY2lmaWVyczogTm9kZVBhdGg8XG4gICAgICB0LkltcG9ydFNwZWNpZmllciB8IHQuSW1wb3J0RGVmYXVsdFNwZWNpZmllciB8IHQuSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyXG4gICAgPltdXG4gICkge1xuICAgIHNwZWNpZmllcnMuZm9yRWFjaCgoc3BlY2lmaWVyKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHNwZWNpZmllci5ub2RlLnR5cGUgPT09ICdJbXBvcnRTcGVjaWZpZXInICYmXG4gICAgICAgIFNVUFBPUlRFRF9NQUNST1MuaW5kZXhPZihuYW1lKHNwZWNpZmllci5ub2RlLmltcG9ydGVkKSkgPiAtMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubG9jYWxEZWJ1Z0JpbmRpbmdzLnB1c2goc3BlY2lmaWVyLmdldCgnbG9jYWwnKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBleHByZXNzaW9ucyB0aGF0IHRoZSBDYWxsRXhwcmVzc2lvbiB3aWxsIGV4cGFuZCBpbnRvLlxuICAgKi9cbiAgYnVpbGQocGF0aDogTm9kZVBhdGg8dC5FeHByZXNzaW9uU3RhdGVtZW50Pikge1xuICAgIGlmICghaXNDYWxsU3RhdGVtZW50UGF0aChwYXRoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5sb2NhbERlYnVnQmluZGluZ3Muc29tZSgoYikgPT4gYi5ub2RlLm5hbWUgPT09IHBhdGgubm9kZS5leHByZXNzaW9uLmNhbGxlZS5uYW1lKSkge1xuICAgICAgbGV0IGltcG9ydGVkID0gbmFtZShcbiAgICAgICAgKHBhdGguc2NvcGUuZ2V0QmluZGluZyhwYXRoLm5vZGUuZXhwcmVzc2lvbi5jYWxsZWUubmFtZSkhLnBhdGgubm9kZSBhcyB0LkltcG9ydFNwZWNpZmllcilcbiAgICAgICAgICAuaW1wb3J0ZWRcbiAgICAgICkgYXMgU3VwcG9ydGVkTWFjcm87XG4gICAgICB0aGlzLmJ1aWxkZXJbYCR7aW1wb3J0ZWR9YF0ocGF0aCk7XG4gICAgfVxuICB9XG5cbiAgX2NsZWFuSW1wb3J0cygpIHtcbiAgICBpZiAoIXRoaXMuZGVidWdIZWxwZXJzPy5tb2R1bGUpIHtcbiAgICAgIGlmICh0aGlzLmxvY2FsRGVidWdCaW5kaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBpbXBvcnRQYXRoID0gdGhpcy5sb2NhbERlYnVnQmluZGluZ3NbMF0uZmluZFBhcmVudCgocCkgPT5cbiAgICAgICAgICBwLmlzSW1wb3J0RGVjbGFyYXRpb24oKVxuICAgICAgICApIGFzIE5vZGVQYXRoPHQuSW1wb3J0RGVjbGFyYXRpb24+IHwgbnVsbDtcbiAgICAgICAgaWYgKGltcG9ydFBhdGggPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBpbXBvcnQgZGVjbGFyYXRpb24gaW4gcXVlc3Rpb24gc2VlbXMgdG8gaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZFxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc3BlY2lmaWVycyA9IGltcG9ydFBhdGguZ2V0KCdzcGVjaWZpZXJzJyk7XG5cbiAgICAgICAgaWYgKHNwZWNpZmllcnMubGVuZ3RoID09PSB0aGlzLmxvY2FsRGVidWdCaW5kaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmxvY2FsRGVidWdCaW5kaW5nc1swXS5wYXJlbnRQYXRoLnBhcmVudFBhdGghLnJlbW92ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9jYWxEZWJ1Z0JpbmRpbmdzLmZvckVhY2goKGJpbmRpbmcpID0+IGJpbmRpbmcucGFyZW50UGF0aC5yZW1vdmUoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==