UNPKG

@prodo/babel-plugin

Version:

Babel plugin for [Prodo](https://prodo.dev). See [documentation](https://docs.prodo.dev/basics/babel-plugin) for more info.

68 lines 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var pathLib = require("path"); var inject_universe_1 = require("./inject-universe"); var utils_1 = require("./utils"); var visitPossibleActionOrComponent = function (t, name, rootPath) { if (utils_1.isPossibleComponentName(name)) { inject_universe_1.default(t, "component", name, rootPath); } else if (utils_1.isPossibleActionName(name)) { inject_universe_1.default(t, "action", name, rootPath); } }; var extractName = function (filePath) { var basename = pathLib.basename(filePath); var fileName = basename.slice(0, basename.length - pathLib.extname(basename).length); return fileName === "index" ? extractName(pathLib.dirname(filePath)) : fileName.replace(/[-_](\w)/g, function (w) { return w.toUpperCase(); }).replace(/[-_]/g, ""); }; exports.default = (function (_a) { var t = _a.types; var visitFunctionDeclaration = function (path) { if (path.node.id == null) { return; } visitPossibleActionOrComponent(t, path.node.id.name, path); }; var visitFunctionExpression = function (path, state) { if (t.isVariableDeclarator(path.parent) && t.isVariableDeclaration(path.parentPath.parent) && (t.isProgram(path.parentPath.parentPath.parent) || t.isExportNamedDeclaration(path.parentPath.parentPath.parent))) { // const foo = () => {}; // or // export const foo = () => {}; if (!t.isIdentifier(path.parent.id)) { // const {foo} = () => {}; return; } visitPossibleActionOrComponent(t, path.parent.id.name, path); } else if (t.isAssignmentExpression(path.parent) && t.isMemberExpression(path.parent.left) && t.isIdentifier(path.parent.left.object) && path.parent.left.object.name === "exports" && t.isExpressionStatement(path.parentPath.parent) && t.isProgram(path.parentPath.parentPath.parent)) { // exports.foo = () => {}; visitPossibleActionOrComponent(t, path.parent.left.property.name, path); } else if (!t.isProgram(path.parent) && t.isExportDefaultDeclaration(path.parent)) { // export default () => {}; // Need to work out whether it's a component or an action if (!state.file || !state.file.opts || !state.file.opts.filename) { return; } visitPossibleActionOrComponent(t, extractName(state.file.opts.filename), path); } }; return { FunctionDeclaration: visitFunctionDeclaration, FunctionExpression: visitFunctionExpression, ArrowFunctionExpression: visitFunctionExpression, }; }); //# sourceMappingURL=components-and-actions.js.map