UNPKG

4.91 kBJavaScriptView Raw
1import ts from 'typescript';
2import { modifier } from './base';
3import * as class_ from './class_';
4import * as node_ from './node';
5import * as object_ from './object_';
6function findOtherProperty(node) {
7 const parent = node_.getParent(node);
8 const kind = node.kind === ts.SyntaxKind.GetAccessor ? ts.SyntaxKind.SetAccessor : ts.SyntaxKind.GetAccessor;
9 const thisName = node_.getName(node);
10 let properties;
11 if (ts.isClassDeclaration(parent) || ts.isClassExpression(parent)) {
12 properties = modifier.isStatic(node)
13 ? class_.getConcreteStaticProperties(parent)
14 : class_.getConcreteInstanceProperties(parent);
15 }
16 else {
17 properties = object_.getProperties(parent);
18 }
19 for (const prop of properties) {
20 if (prop.kind === kind && node_.getName(prop) === thisName) {
21 return prop;
22 }
23 }
24 return undefined;
25}
26export function getGetAccessor(node) {
27 return findOtherProperty(node);
28}
29export function getSetAccessor(node) {
30 return findOtherProperty(node);
31}
32
33//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxNQUFNLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxPQUFPLE1BQU0sV0FBVyxDQUFDO0FBRXJDLFNBQVMsaUJBQWlCLENBQ3hCLElBQVU7SUFFVixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUF3RCxJQUFJLENBQUMsQ0FBQztJQUM1RixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7SUFDN0csTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVyQyxJQUFJLFVBQVUsQ0FBQztJQUVmLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNqRSxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUM7WUFDNUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNsRDtTQUFNO1FBQ0wsVUFBVSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDNUM7SUFHRCxLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsRUFBRTtRQUM3QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxFQUFFO1lBRTFELE9BQU8sSUFBVyxDQUFDO1NBQ3BCO0tBQ0Y7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUErQjtJQUM1RCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQStCO0lBQzVELE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsQ0FBQyIsImZpbGUiOiJuZW8tb25lLXRzLXV0aWxzL3NyYy9hY2Nlc3Nvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IG1vZGlmaWVyIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCAqIGFzIGNsYXNzXyBmcm9tICcuL2NsYXNzXyc7XG5pbXBvcnQgKiBhcyBub2RlXyBmcm9tICcuL25vZGUnO1xuaW1wb3J0ICogYXMgb2JqZWN0XyBmcm9tICcuL29iamVjdF8nO1xuXG5mdW5jdGlvbiBmaW5kT3RoZXJQcm9wZXJ0eTxEZWNsIGV4dGVuZHMgdHMuR2V0QWNjZXNzb3JEZWNsYXJhdGlvbiB8IHRzLlNldEFjY2Vzc29yRGVjbGFyYXRpb24+KFxuICBub2RlOiBEZWNsLFxuKTogKERlY2wgZXh0ZW5kcyB0cy5HZXRBY2Nlc3NvckRlY2xhcmF0aW9uID8gdHMuU2V0QWNjZXNzb3JEZWNsYXJhdGlvbiA6IHRzLkdldEFjY2Vzc29yRGVjbGFyYXRpb24pIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcGFyZW50ID0gbm9kZV8uZ2V0UGFyZW50PHRzLkdldEFjY2Vzc29yRGVjbGFyYXRpb24gfCB0cy5TZXRBY2Nlc3NvckRlY2xhcmF0aW9uPihub2RlKTtcbiAgY29uc3Qga2luZCA9IG5vZGUua2luZCA9PT0gdHMuU3ludGF4S2luZC5HZXRBY2Nlc3NvciA/IHRzLlN5bnRheEtpbmQuU2V0QWNjZXNzb3IgOiB0cy5TeW50YXhLaW5kLkdldEFjY2Vzc29yO1xuICBjb25zdCB0aGlzTmFtZSA9IG5vZGVfLmdldE5hbWUobm9kZSk7XG5cbiAgbGV0IHByb3BlcnRpZXM7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uZGl0aW9uYWwtZXhwcmVzc2lvblxuICBpZiAodHMuaXNDbGFzc0RlY2xhcmF0aW9uKHBhcmVudCkgfHwgdHMuaXNDbGFzc0V4cHJlc3Npb24ocGFyZW50KSkge1xuICAgIHByb3BlcnRpZXMgPSBtb2RpZmllci5pc1N0YXRpYyhub2RlKVxuICAgICAgPyBjbGFzc18uZ2V0Q29uY3JldGVTdGF0aWNQcm9wZXJ0aWVzKHBhcmVudClcbiAgICAgIDogY2xhc3NfLmdldENvbmNyZXRlSW5zdGFuY2VQcm9wZXJ0aWVzKHBhcmVudCk7XG4gIH0gZWxzZSB7XG4gICAgcHJvcGVydGllcyA9IG9iamVjdF8uZ2V0UHJvcGVydGllcyhwYXJlbnQpO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWxvb3Atc3RhdGVtZW50XG4gIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgaWYgKHByb3Aua2luZCA9PT0ga2luZCAmJiBub2RlXy5nZXROYW1lKHByb3ApID09PSB0aGlzTmFtZSkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICAgICAgcmV0dXJuIHByb3AgYXMgYW55O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRHZXRBY2Nlc3Nvcihub2RlOiB0cy5TZXRBY2Nlc3NvckRlY2xhcmF0aW9uKTogdHMuR2V0QWNjZXNzb3JEZWNsYXJhdGlvbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBmaW5kT3RoZXJQcm9wZXJ0eShub2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldEFjY2Vzc29yKG5vZGU6IHRzLkdldEFjY2Vzc29yRGVjbGFyYXRpb24pOiB0cy5TZXRBY2Nlc3NvckRlY2xhcmF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGZpbmRPdGhlclByb3BlcnR5KG5vZGUpO1xufVxuIl19