UNPKG

babel-plugin-logger-namespace

Version:

Babel plugin that generates the namespace for creating a logger based on the path of the module

75 lines (66 loc) 3.06 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); var path = require('path'); var template = require('@babel/template'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var path__default = /*#__PURE__*/_interopDefaultLegacy(path); var template__default = /*#__PURE__*/_interopDefaultLegacy(template); function pathToNamespace (path, _a) { var stripPrefix = _a.stripPrefix, stripSubfix = _a.stripSubfix, prefix = _a.prefix; var result = path.replace(/[/|\\]/g, ':'); if (stripPrefix !== undefined) { result = result.replace(new RegExp("^(".concat(stripPrefix, ")")), ''); } if (stripSubfix !== undefined) { result = result.replace(new RegExp("(".concat(stripSubfix, ")$")), ''); } if (prefix !== undefined) { result = prefix + result; } return result; } var isNodeModulesInPath = function (pathString) { var segments = path__default["default"].normalize(pathString).split(path__default["default"].sep); return segments.includes('node_modules'); }; var ast = template__default["default"].ast; function index () { return { name: 'transform-import-meta', visitor: { Program: function (path, state) { var _a; if (state.file.opts.filename == null || state.file.opts.root == null || isNodeModulesInPath(state.file.opts.filename) || !state.file.opts.filename.startsWith(state.file.opts.root)) { return; } // make sure it does end with one and only one slash var rootFullPath = path__default["default"].normalize(state.file.opts.root + '/'); var moduleFullPath = state.file.opts.filename; var moduleLocalPath = moduleFullPath.slice(rootFullPath.length); var namespace = pathToNamespace(moduleLocalPath, (_a = state.opts) !== null && _a !== void 0 ? _a : {}); var metas = []; path.traverse({ Identifier: function (idPath) { var _a, _b; if (idPath.node.name === ((_b = (_a = state.opts) === null || _a === void 0 ? void 0 : _a.placeholder) !== null && _b !== void 0 ? _b : 'NAMESPACE')) { metas.push(idPath); } } }); if (metas.length === 0) { return; } for (var _i = 0, metas_1 = metas; _i < metas_1.length; _i++) { var meta = metas_1[_i]; meta.replaceWith(ast(templateObject_1 || (templateObject_1 = tslib.__makeTemplateObject(["", ""], ["", ""])), JSON.stringify(namespace))); } } } }; } var templateObject_1; exports["default"] = index;