UNPKG

react-obsidian

Version:

Dependency injection framework for React and React Native applications

91 lines 3.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.providerIsNotNamed = providerIsNotNamed; exports.addNameToProviderArguments = addNameToProviderArguments; exports.getDecoratorObjectArgument = getDecoratorObjectArgument; exports.getDecoratorStringArgument = getDecoratorStringArgument; exports.getMethodName = getMethodName; exports.getDecoratorByName = getDecoratorByName; exports.getDecoratorName = getDecoratorName; exports.paramsToDestructuringAssignment = paramsToDestructuringAssignment; exports.passParamNameAsInjectArgument = passParamNameAsInjectArgument; /* eslint-disable no-param-reassign */ const core_1 = require("@babel/core"); const never = ''; function providerIsNotNamed(decorator) { const argument = getDecoratorObjectArgument(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; } function addNameToProviderArguments(node, decorator) { var _a; const argument = (_a = getDecoratorObjectArgument(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]; } function getDecoratorObjectArgument(decorator) { if (core_1.types.isCallExpression(decorator.expression)) { return decorator.expression.arguments.find((a) => core_1.types.isObjectExpression(a)); } return undefined; } function getDecoratorStringArgument(decorator) { if (core_1.types.isCallExpression(decorator.expression)) { return decorator.expression.arguments.find(a => core_1.types.isStringLiteral(a)); } return undefined; } 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}`); } function getDecoratorByName(decorators, decoratorName) { return decorators === null || decorators === void 0 ? void 0 : decorators.find((decorator) => get(decorator, 'expression.callee.name') === decoratorName); } function getDecoratorName(decorator) { return get(decorator, 'expression.callee.name'); } 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)))); } function passParamNameAsInjectArgument(node, decorator) { if (core_1.types.isCallExpression(decorator.expression)) { decorator.expression.arguments = [ core_1.types.stringLiteral(getNodeName(node)), ]; } } 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