/
drndsv
/
react
Обзор
Документация
Войти
/
drndsv
/
react
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
node_modules/@babel/plugin-transform-react-jsx-self/lib/index.js
61 строка
2 KB
drndsv
Initial commit
14 апр 2025, 22:53
14 апр 2025, 22:53
641ac8a
Код
Авторство
О чём код?
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _helperPluginUtils = require("@babel/helper-plugin-utils"); var _core = require("@babel/core"); const TRACE_ID = "__self"; function getThisFunctionParent(path) { let scope = path.scope; do { const { path } = scope; if (path.isFunctionParent() && !path.isArrowFunctionExpression()) { return path; } } while (scope = scope.parent); return null; } function isDerivedClass(classPath) { return classPath.node.superClass !== null; } function isThisAllowed(path) { const parentMethodOrFunction = getThisFunctionParent(path); if (parentMethodOrFunction === null) { return true; } if (!parentMethodOrFunction.isMethod()) { return true; } if (parentMethodOrFunction.node.kind !== "constructor") { return true; } return !isDerivedClass(parentMethodOrFunction.parentPath.parentPath); } var _default = exports.default = (0, _helperPluginUtils.declare)(api => { api.assertVersion(7); const visitor = { JSXOpeningElement(path) { if (!isThisAllowed(path)) { return; } const node = path.node; const id = _core.types.jsxIdentifier(TRACE_ID); const trace = _core.types.thisExpression(); node.attributes.push(_core.types.jsxAttribute(id, _core.types.jsxExpressionContainer(trace))); } }; return { name: "transform-react-jsx-self", visitor: { Program(path) { path.traverse(visitor); } } }; }); //# sourceMappingURL=index.js.map