UNPKG

react-obsidian

Version:

Dependency injection framework for React and React Native applications

85 lines 3.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.passParamNameAsInjectArgument = exports.paramsToDestructuringAssignment = exports.getDecoratorName = exports.getDecoratorByName = exports.getMethodName = exports.getDecoratorArgument = exports.addNameToProviderArguments = exports.providerIsNotNamed = void 0; /* eslint-disable no-param-reassign */ const core_1 = require("@babel/core"); const never = ''; function providerIsNotNamed(decorator) { const argument = getDecoratorArgument(decorator); if (core_1.types.isObjectExpression(argument)) { return argument.properties.find((p) => { if (core_1.types.isObjectProperty(p)) { return core_1.types.isIdentifier(p.key) && p.key.name === 'name'; } return false; }) === undefined; } return true; } exports.providerIsNotNamed = providerIsNotNamed; function addNameToProviderArguments(node, decorator) { var _a; const argument = (_a = getDecoratorArgument(decorator)) !== null && _a !== void 0 ? _a : core_1.types.objectExpression([]); argument.properties.push(core_1.types.objectProperty(core_1.types.identifier('name'), core_1.types.stringLiteral(getMethodName(node)))); decorator.expression.arguments = [argument]; } exports.addNameToProviderArguments = addNameToProviderArguments; function getDecoratorArgument(decorator) { if (core_1.types.isCallExpression(decorator.expression)) { return decorator.expression.arguments.find((a) => core_1.types.isObjectExpression(a)); } return undefined; } exports.getDecoratorArgument = getDecoratorArgument; function getMethodName(node) { if (core_1.types.isIdentifier(node.key)) return node.key.name; throw new Error(`Tried to get class name but encountered unexpected key of type: ${node.key.type}`); } exports.getMethodName = getMethodName; function getDecoratorByName(decorators, decoratorName) { return decorators === null || decorators === void 0 ? void 0 : decorators.find((decorator) => get(decorator, 'expression.callee.name') === decoratorName); } exports.getDecoratorByName = getDecoratorByName; function getDecoratorName(decorator) { return get(decorator, 'expression.callee.name'); } exports.getDecoratorName = getDecoratorName; function paramsToDestructuringAssignment(params) { return core_1.types.objectPattern(params .filter((p) => core_1.types.isIdentifier(p)) .map((p) => core_1.types.objectProperty(core_1.types.identifier(p.name), core_1.types.identifier(p.name)))); } exports.paramsToDestructuringAssignment = paramsToDestructuringAssignment; function passParamNameAsInjectArgument(node, decorator) { if (core_1.types.isCallExpression(decorator.expression)) { decorator.expression.arguments = [ core_1.types.stringLiteral(getNodeName(node)), ]; } } exports.passParamNameAsInjectArgument = passParamNameAsInjectArgument; function getNodeName(node) { if (core_1.types.isTSParameterProperty(node)) { if (core_1.types.isIdentifier(node.parameter)) { return node.parameter.name; } return never; } if (core_1.types.isClassProperty(node)) { if (core_1.types.isIdentifier(node.key)) { return node.key.name; } return never; } return node.name; } function get(node, path) { if (node === undefined || node === null) return undefined; const [key, ...rest] = path.split('.'); if (rest.length === 0) return node[key]; return get(node[key], rest.join('.')); } //# sourceMappingURL=index.js.map