sdin
Version:
JavaScript package builder.
2 lines • 1.32 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.codeDefinitionBabelPlugin=e;var s=require("@babel/types"),t=require("lodash"),i=require("../utils/string");function e(){return{name:"code-definition",pre(){var e;this.opts._init||(this.opts._init=!0,e=null!=(e=this.opts.definitions)?e:{},this.opts.definitions=(0,t.mapValues)(e,e=>(0,i.executeCode)(e)),this.opts.definitionKeys=Object.keys(e).sort((e,t)=>t.length-e.length))},visitor:{MemberExpression:n,Identifier:o,UnaryExpression:r}}}function n(t,e){a(t,e,e=>t.matchesPattern(e))}function o(t,e){if(!t.scope.getBinding(t.node.name)){if(t.container&&"type"in t.container){var i=t.container.type;if("ImportDefaultSpecifier"===i||"ImportSpecifier"===i)return}"computed"in t.parent&&!1===t.parent.computed&&("key"===t.key||"property"===t.key)||a(t,e,e=>t.node.name===e)}}function r(e,i){if("typeof"===e.node.operator&&"name"in e.node.argument){let t="typeof "+e.node.argument.name;a(e,i,e=>t===e)}}function a(e,t,i){let n,o=void 0,r=void 0;for(var a of t.opts.definitionKeys)if(i(a)){o=a,r=t.opts.definitions[a];break}var p;o&&(e.replaceWith((0,s.valueToNode)(r)),null!=(n=e.parentPath))&&n.isBinaryExpression()&&(p=e.parentPath.evaluate()).confident&&e.parentPath.replaceWith((0,s.valueToNode)(p.value))}
//# sourceMappingURL=babel-plugin-code-definition.js.map