1 | import ts from 'typescript';
|
2 | import { modifier } from './base';
|
3 | import * as file from './file';
|
4 | import * as node_ from './node';
|
5 | import * as utils from './utils';
|
6 | function 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 | }
|
23 | export function findReferences(languageService, node) {
|
24 | return utils.getArray(languageService.findReferences(node.getSourceFile().fileName, getNodeForReferences(node).getStart()));
|
25 | }
|
26 | export 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 | }
|
36 | export function findReferencesAsNodes(program, languageService, node) {
|
37 | return getNodesForReferences(program, findReferences(languageService, node));
|
38 | }
|
39 |
|
40 | //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlZmVyZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEtBQUssSUFBSSxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEtBQUssS0FBSyxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEtBQUssS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUVqQyxTQUFTLG9CQUFvQixDQUFDLElBQTJDO0lBQ3ZFLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN6QixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDdEIsSUFBSSxFQUFFLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3ZELE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUM1QixlQUFtQyxFQUNuQyxJQUEyQztJQUUzQyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQ25CLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUNyRyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsT0FBbUIsRUFDbkIsT0FBdUM7SUFFdkMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFxQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUN4RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO1FBQ3RFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWxILE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FDZixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFMUUsT0FBTyxLQUFLLENBQUMsc0JBQXNCLENBQ2pDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFDOUQsaUJBQWlCLENBQ2xCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsT0FBbUIsRUFDbkIsZUFBbUMsRUFDbkMsSUFBMkM7SUFFM0MsT0FBTyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUMiLCJmaWxlIjoibmVvLW9uZS10cy11dGlscy9zcmMvcmVmZXJlbmNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGUgbm8tYW55XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBtb2RpZmllciB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBmaWxlIGZyb20gJy4vZmlsZSc7XG5pbXBvcnQgKiBhcyBub2RlXyBmcm9tICcuL25vZGUnO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIGdldE5vZGVGb3JSZWZlcmVuY2VzKG5vZGU6IG5vZGVfLkFueU5hbWVhYmxlTm9kZSB8IHRzLklkZW50aWZpZXIpOiB0cy5Ob2RlIHtcbiAgaWYgKHRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgY29uc3QgbmFtZSA9IG5vZGVfLmdldE5hbWVOb2RlKG5vZGUpO1xuICBpZiAobmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRzLmlzQXJyYXlCaW5kaW5nUGF0dGVybihuYW1lKSB8fCB0cy5pc09iamVjdEJpbmRpbmdQYXR0ZXJuKG5hbWUpKSB7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZTtcbiAgfVxuXG4gIGNvbnN0IGV4cCA9IG1vZGlmaWVyLmdldERlZmF1bHRLZXl3b3JkKG5vZGUpO1xuICBpZiAoZXhwICE9PSB1bmRlZmluZWQgJiYgbW9kaWZpZXIuaXNEZWZhdWx0RXhwb3J0KG5vZGUpKSB7XG4gICAgcmV0dXJuIGV4cDtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFJlZmVyZW5jZXMoXG4gIGxhbmd1YWdlU2VydmljZTogdHMuTGFuZ3VhZ2VTZXJ2aWNlLFxuICBub2RlOiBub2RlXy5BbnlOYW1lYWJsZU5vZGUgfCB0cy5JZGVudGlmaWVyLFxuKTogcmVhZG9ubHkgdHMuUmVmZXJlbmNlZFN5bWJvbFtdIHtcbiAgcmV0dXJuIHV0aWxzLmdldEFycmF5KFxuICAgIGxhbmd1YWdlU2VydmljZS5maW5kUmVmZXJlbmNlcyhub2RlLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSwgZ2V0Tm9kZUZvclJlZmVyZW5jZXMobm9kZSkuZ2V0U3RhcnQoKSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROb2Rlc0ZvclJlZmVyZW5jZXMoXG4gIHByb2dyYW06IHRzLlByb2dyYW0sXG4gIHN5bWJvbHM6IHJlYWRvbmx5IHRzLlJlZmVyZW5jZWRTeW1ib2xbXSxcbik6IHJlYWRvbmx5IHRzLk5vZGVbXSB7XG4gIHJldHVybiBzeW1ib2xzLnJlZHVjZTxyZWFkb25seSB0cy5Ob2RlW10+KChhY2MsIHN5bWJvbCkgPT4ge1xuICAgIGNvbnN0IGlzQWxpYXMgPSBzeW1ib2wuZGVmaW5pdGlvbi5raW5kID09PSB0cy5TY3JpcHRFbGVtZW50S2luZC5hbGlhcztcbiAgICBjb25zdCByZWZlcmVuY2VzID0gaXNBbGlhcyA/IHN5bWJvbC5yZWZlcmVuY2VzIDogc3ltYm9sLnJlZmVyZW5jZXMuZmlsdGVyKChyZWZlcmVuY2UpID0+ICFyZWZlcmVuY2UuaXNEZWZpbml0aW9uKTtcblxuICAgIHJldHVybiBhY2MuY29uY2F0KFxuICAgICAgcmVmZXJlbmNlcy5tYXAoKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICBjb25zdCBzb3VyY2VGaWxlID0gZmlsZS5nZXRTb3VyY2VGaWxlT3JUaHJvdyhwcm9ncmFtLCByZWZlcmVuY2UuZmlsZU5hbWUpO1xuXG4gICAgICAgIHJldHVybiB1dGlscy50aHJvd0lmTnVsbE9yVW5kZWZpbmVkKFxuICAgICAgICAgIG5vZGVfLmdldERlc2NlbmRhbnRBdFBvcyhzb3VyY2VGaWxlLCByZWZlcmVuY2UudGV4dFNwYW4uc3RhcnQpLFxuICAgICAgICAgICdyZWZlcmVuY2VkIG5vZGUnLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgKTtcbiAgfSwgW10pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFJlZmVyZW5jZXNBc05vZGVzKFxuICBwcm9ncmFtOiB0cy5Qcm9ncmFtLFxuICBsYW5ndWFnZVNlcnZpY2U6IHRzLkxhbmd1YWdlU2VydmljZSxcbiAgbm9kZTogbm9kZV8uQW55TmFtZWFibGVOb2RlIHwgdHMuSWRlbnRpZmllcixcbik6IHJlYWRvbmx5IHRzLk5vZGVbXSB7XG4gIHJldHVybiBnZXROb2Rlc0ZvclJlZmVyZW5jZXMocHJvZ3JhbSwgZmluZFJlZmVyZW5jZXMobGFuZ3VhZ2VTZXJ2aWNlLCBub2RlKSk7XG59XG4iXX0=
|