UNPKG

@itrocks/parameter-name

Version:

Runtime parameter name reflection from TypeScript declaration files

35 lines 1.73 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parameterNamesFromFile = parameterNamesFromFile; const node_fs_1 = require("node:fs"); const typescript_1 = __importDefault(require("typescript")); function parameterNamesFromFile(fileName, className, methodName) { const isMethod = (methodName === 'constructor') ? typescript_1.default.isConstructorDeclaration : function (node) { return typescript_1.default.isMethodDeclaration(node) && node.name && typescript_1.default.isIdentifier(node.name) && (node.name.text === methodName); }; const content = (0, node_fs_1.readFileSync)(fileName.substring(0, fileName.lastIndexOf('.')) + '.d.ts', 'utf8'); const sourceFile = typescript_1.default.createSourceFile(fileName, content, typescript_1.default.ScriptTarget.Latest, true); let propertyNames = new Array; function searchClass(node) { if (typescript_1.default.isClassDeclaration(node) && node.name && typescript_1.default.isIdentifier(node.name) && (node.name.text === className)) { return typescript_1.default.forEachChild(node, searchMethod); } typescript_1.default.forEachChild(node, searchClass); } function searchMethod(node) { if (isMethod(node)) { propertyNames = node.parameters.map(parameter => typescript_1.default.isIdentifier(parameter.name) ? parameter.name.text : ''); } } searchClass(sourceFile); return propertyNames; } //# sourceMappingURL=parameter-name.js.map