UNPKG

6.76 kBJavaScriptView Raw
1import ts from 'typescript';
2import { modifier } from './base';
3import * as file from './file';
4import * as node_ from './node';
5import * as utils from './utils';
6function getNodeForReferences(node) {
7 if (ts.isIdentifier(node)) {
8 return node;
9 }
10 const name = node_.getNameNode(node);
11 if (name !== undefined) {
12 if (ts.isArrayBindingPattern(name) || ts.isObjectBindingPattern(name)) {
13 return node;
14 }
15 return name;
16 }
17 const exp = modifier.getDefaultKeyword(node);
18 if (exp !== undefined && modifier.isDefaultExport(node)) {
19 return exp;
20 }
21 return node;
22}
23export function findReferences(languageService, node) {
24 return utils.getArray(languageService.findReferences(node.getSourceFile().fileName, getNodeForReferences(node).getStart()));
25}
26export function getNodesForReferences(program, symbols) {
27 return symbols.reduce((acc, symbol) => {
28 const isAlias = symbol.definition.kind === ts.ScriptElementKind.alias;
29 const references = isAlias ? symbol.references : symbol.references.filter((reference) => !reference.isDefinition);
30 return acc.concat(references.map((reference) => {
31 const sourceFile = file.getSourceFileOrThrow(program, reference.fileName);
32 return utils.throwIfNullOrUndefined(node_.getDescendantAtPos(sourceFile, reference.textSpan.start), 'referenced node');
33 }));
34 }, []);
35}
36export function findReferencesAsNodes(program, languageService, node) {
37 return getNodesForReferences(program, findReferences(languageService, node));
38}
39
40//# sourceMappingURL=data:application/json;charset=utf8;base64,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LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGUgbm8tYW55XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBtb2RpZmllciB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBmaWxlIGZyb20gJy4vZmlsZSc7XG5pbXBvcnQgKiBhcyBub2RlXyBmcm9tICcuL25vZGUnO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIGdldE5vZGVGb3JSZWZlcmVuY2VzKG5vZGU6IG5vZGVfLkFueU5hbWVhYmxlTm9kZSB8IHRzLklkZW50aWZpZXIpOiB0cy5Ob2RlIHtcbiAgaWYgKHRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgY29uc3QgbmFtZSA9IG5vZGVfLmdldE5hbWVOb2RlKG5vZGUpO1xuICBpZiAobmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRzLmlzQXJyYXlCaW5kaW5nUGF0dGVybihuYW1lKSB8fCB0cy5pc09iamVjdEJpbmRpbmdQYXR0ZXJuKG5hbWUpKSB7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZTtcbiAgfVxuXG4gIGNvbnN0IGV4cCA9IG1vZGlmaWVyLmdldERlZmF1bHRLZXl3b3JkKG5vZGUpO1xuICBpZiAoZXhwICE9PSB1bmRlZmluZWQgJiYgbW9kaWZpZXIuaXNEZWZhdWx0RXhwb3J0KG5vZGUpKSB7XG4gICAgcmV0dXJuIGV4cDtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFJlZmVyZW5jZXMoXG4gIGxhbmd1YWdlU2VydmljZTogdHMuTGFuZ3VhZ2VTZXJ2aWNlLFxuICBub2RlOiBub2RlXy5BbnlOYW1lYWJsZU5vZGUgfCB0cy5JZGVudGlmaWVyLFxuKTogcmVhZG9ubHkgdHMuUmVmZXJlbmNlZFN5bWJvbFtdIHtcbiAgcmV0dXJuIHV0aWxzLmdldEFycmF5KFxuICAgIGxhbmd1YWdlU2VydmljZS5maW5kUmVmZXJlbmNlcyhub2RlLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSwgZ2V0Tm9kZUZvclJlZmVyZW5jZXMobm9kZSkuZ2V0U3RhcnQoKSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROb2Rlc0ZvclJlZmVyZW5jZXMoXG4gIHByb2dyYW06IHRzLlByb2dyYW0sXG4gIHN5bWJvbHM6IHJlYWRvbmx5IHRzLlJlZmVyZW5jZWRTeW1ib2xbXSxcbik6IHJlYWRvbmx5IHRzLk5vZGVbXSB7XG4gIHJldHVybiBzeW1ib2xzLnJlZHVjZTxyZWFkb25seSB0cy5Ob2RlW10+KChhY2MsIHN5bWJvbCkgPT4ge1xuICAgIGNvbnN0IGlzQWxpYXMgPSBzeW1ib2wuZGVmaW5pdGlvbi5raW5kID09PSB0cy5TY3JpcHRFbGVtZW50S2luZC5hbGlhcztcbiAgICBjb25zdCByZWZlcmVuY2VzID0gaXNBbGlhcyA/IHN5bWJvbC5yZWZlcmVuY2VzIDogc3ltYm9sLnJlZmVyZW5jZXMuZmlsdGVyKChyZWZlcmVuY2UpID0+ICFyZWZlcmVuY2UuaXNEZWZpbml0aW9uKTtcblxuICAgIHJldHVybiBhY2MuY29uY2F0KFxuICAgICAgcmVmZXJlbmNlcy5tYXAoKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICBjb25zdCBzb3VyY2VGaWxlID0gZmlsZS5nZXRTb3VyY2VGaWxlT3JUaHJvdyhwcm9ncmFtLCByZWZlcmVuY2UuZmlsZU5hbWUpO1xuXG4gICAgICAgIHJldHVybiB1dGlscy50aHJvd0lmTnVsbE9yVW5kZWZpbmVkKFxuICAgICAgICAgIG5vZGVfLmdldERlc2NlbmRhbnRBdFBvcyhzb3VyY2VGaWxlLCByZWZlcmVuY2UudGV4dFNwYW4uc3RhcnQpLFxuICAgICAgICAgICdyZWZlcmVuY2VkIG5vZGUnLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgKTtcbiAgfSwgW10pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFJlZmVyZW5jZXNBc05vZGVzKFxuICBwcm9ncmFtOiB0cy5Qcm9ncmFtLFxuICBsYW5ndWFnZVNlcnZpY2U6IHRzLkxhbmd1YWdlU2VydmljZSxcbiAgbm9kZTogbm9kZV8uQW55TmFtZWFibGVOb2RlIHwgdHMuSWRlbnRpZmllcixcbik6IHJlYWRvbmx5IHRzLk5vZGVbXSB7XG4gIHJldHVybiBnZXROb2Rlc0ZvclJlZmVyZW5jZXMocHJvZ3JhbSwgZmluZFJlZmVyZW5jZXMobGFuZ3VhZ2VTZXJ2aWNlLCBub2RlKSk7XG59XG4iXX0=