1 | import ts from 'typescript';
|
2 | import * as importDeclaration from './importDeclaration';
|
3 | import * as node_ from './node';
|
4 | import * as reference_ from './reference';
|
5 | import * as symbol from './symbol';
|
6 | import * as utils from './utils';
|
7 | export function getAliasNode(node) {
|
8 | return utils.getValueOrUndefined(node.propertyName);
|
9 | }
|
10 | export function getAliasName(node) {
|
11 | const aliasNode = getAliasNode(node);
|
12 | if (aliasNode === undefined) {
|
13 | return aliasNode;
|
14 | }
|
15 | return aliasNode.getText();
|
16 | }
|
17 | export function getModuleSpecifier(node) {
|
18 | const moduleSpecifier = utils.getValueOrUndefined(node.moduleSpecifier);
|
19 | if (moduleSpecifier === undefined) {
|
20 | return undefined;
|
21 | }
|
22 | if (!ts.isStringLiteral(moduleSpecifier)) {
|
23 | return undefined;
|
24 | }
|
25 | return moduleSpecifier;
|
26 | }
|
27 | export function getModuleSpecifierSymbol(typeChecker, node) {
|
28 | const moduleSpecifier = getModuleSpecifier(node);
|
29 | if (moduleSpecifier === undefined) {
|
30 | return undefined;
|
31 | }
|
32 | return node_.getSymbol(typeChecker, moduleSpecifier);
|
33 | }
|
34 | export function getModuleSpecifierSourceFile(typeChecker, node) {
|
35 | const nodeSymbol = getModuleSpecifierSymbol(typeChecker, node);
|
36 | if (nodeSymbol === undefined) {
|
37 | return undefined;
|
38 | }
|
39 | const declarations = symbol.getDeclarations(nodeSymbol).filter(ts.isSourceFile);
|
40 | return declarations.length === 0 ? undefined : declarations[0];
|
41 | }
|
42 | export function getModuleSpecifierSourceFileOrThrow(typeChecker, node) {
|
43 | return utils.throwIfNullOrUndefined(getModuleSpecifierSourceFile(typeChecker, node), 'source file');
|
44 | }
|
45 | export function isExportEquals(node) {
|
46 | return !!node.isExportEquals;
|
47 | }
|
48 | export function hasValueReference(program, languageService, node) {
|
49 | const currentSourceFile = node_.getSourceFile(node);
|
50 | const namespaceImport = importDeclaration.getNamespaceImport(node);
|
51 | if (namespaceImport !== undefined &&
|
52 | hasLocalValueReferences(program, languageService, currentSourceFile, namespaceImport)) {
|
53 | return true;
|
54 | }
|
55 | const defaultImport = importDeclaration.getDefaultImport(node);
|
56 | if (defaultImport !== undefined &&
|
57 | hasLocalValueReferences(program, languageService, currentSourceFile, defaultImport)) {
|
58 | return true;
|
59 | }
|
60 | return importDeclaration
|
61 | .getNamedImports(node)
|
62 | .some((namedImport) => hasLocalValueReferences(program, languageService, currentSourceFile, getImportNameNode(namedImport)));
|
63 | }
|
64 | export function hasLocalValueReferences(program, languageService, currentSourceFile, node) {
|
65 | const references = reference_.findReferencesAsNodes(program, languageService, node);
|
66 | return references.some((reference) => node_.getSourceFile(reference) === currentSourceFile &&
|
67 | node_.getFirstAncestorByTest(reference, ts.isImportDeclaration) === undefined &&
|
68 | !node_.isPartOfTypeNode(reference));
|
69 | }
|
70 | export function getImportNameNode(node) {
|
71 | const alias = node_.getPropertyNameNode(node);
|
72 | return alias === undefined ? node : alias;
|
73 | }
|
74 |
|
75 | //# sourceMappingURL=data:application/json;charset=utf8;base64,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QU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU5QyxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVDLENBQUMiLCJmaWxlIjoibmVvLW9uZS10cy11dGlscy9zcmMvaW1wb3J0RXhwb3J0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0ICogYXMgaW1wb3J0RGVjbGFyYXRpb24gZnJvbSAnLi9pbXBvcnREZWNsYXJhdGlvbic7XG5pbXBvcnQgKiBhcyBub2RlXyBmcm9tICcuL25vZGUnO1xuaW1wb3J0ICogYXMgcmVmZXJlbmNlXyBmcm9tICcuL3JlZmVyZW5jZSc7XG5pbXBvcnQgKiBhcyBzeW1ib2wgZnJvbSAnLi9zeW1ib2wnO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGlhc05vZGUobm9kZTogdHMuSW1wb3J0U3BlY2lmaWVyIHwgdHMuRXhwb3J0U3BlY2lmaWVyKTogdHMuSWRlbnRpZmllciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB1dGlscy5nZXRWYWx1ZU9yVW5kZWZpbmVkKG5vZGUucHJvcGVydHlOYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsaWFzTmFtZShub2RlOiB0cy5JbXBvcnRTcGVjaWZpZXIgfCB0cy5FeHBvcnRTcGVjaWZpZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBhbGlhc05vZGUgPSBnZXRBbGlhc05vZGUobm9kZSk7XG4gIGlmIChhbGlhc05vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBhbGlhc05vZGU7XG4gIH1cblxuICByZXR1cm4gYWxpYXNOb2RlLmdldFRleHQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZHVsZVNwZWNpZmllcihub2RlOiB0cy5JbXBvcnREZWNsYXJhdGlvbiB8IHRzLkV4cG9ydERlY2xhcmF0aW9uKTogdHMuU3RyaW5nTGl0ZXJhbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1vZHVsZVNwZWNpZmllciA9IHV0aWxzLmdldFZhbHVlT3JVbmRlZmluZWQobm9kZS5tb2R1bGVTcGVjaWZpZXIpO1xuICBpZiAobW9kdWxlU3BlY2lmaWVyID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKCF0cy5pc1N0cmluZ0xpdGVyYWwobW9kdWxlU3BlY2lmaWVyKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gbW9kdWxlU3BlY2lmaWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kdWxlU3BlY2lmaWVyU3ltYm9sKFxuICB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4gIG5vZGU6IHRzLkltcG9ydERlY2xhcmF0aW9uIHwgdHMuRXhwb3J0RGVjbGFyYXRpb24sXG4pOiB0cy5TeW1ib2wgfCB1bmRlZmluZWQge1xuICBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSBnZXRNb2R1bGVTcGVjaWZpZXIobm9kZSk7XG4gIGlmIChtb2R1bGVTcGVjaWZpZXIgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gbm9kZV8uZ2V0U3ltYm9sKHR5cGVDaGVja2VyLCBtb2R1bGVTcGVjaWZpZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kdWxlU3BlY2lmaWVyU291cmNlRmlsZShcbiAgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuICBub2RlOiB0cy5JbXBvcnREZWNsYXJhdGlvbiB8IHRzLkV4cG9ydERlY2xhcmF0aW9uLFxuKTogdHMuU291cmNlRmlsZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG5vZGVTeW1ib2wgPSBnZXRNb2R1bGVTcGVjaWZpZXJTeW1ib2wodHlwZUNoZWNrZXIsIG5vZGUpO1xuICBpZiAobm9kZVN5bWJvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGRlY2xhcmF0aW9ucyA9IHN5bWJvbC5nZXREZWNsYXJhdGlvbnMobm9kZVN5bWJvbCkuZmlsdGVyKHRzLmlzU291cmNlRmlsZSk7XG5cbiAgcmV0dXJuIGRlY2xhcmF0aW9ucy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiBkZWNsYXJhdGlvbnNbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2R1bGVTcGVjaWZpZXJTb3VyY2VGaWxlT3JUaHJvdyhcbiAgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuICBub2RlOiB0cy5JbXBvcnREZWNsYXJhdGlvbiB8IHRzLkV4cG9ydERlY2xhcmF0aW9uLFxuKTogdHMuU291cmNlRmlsZSB7XG4gIHJldHVybiB1dGlscy50aHJvd0lmTnVsbE9yVW5kZWZpbmVkKGdldE1vZHVsZVNwZWNpZmllclNvdXJjZUZpbGUodHlwZUNoZWNrZXIsIG5vZGUpLCAnc291cmNlIGZpbGUnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXhwb3J0RXF1YWxzKG5vZGU6IHRzLkV4cG9ydEFzc2lnbm1lbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhbm9kZS5pc0V4cG9ydEVxdWFscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1ZhbHVlUmVmZXJlbmNlKFxuICBwcm9ncmFtOiB0cy5Qcm9ncmFtLFxuICBsYW5ndWFnZVNlcnZpY2U6IHRzLkxhbmd1YWdlU2VydmljZSxcbiAgbm9kZTogdHMuSW1wb3J0RGVjbGFyYXRpb24sXG4pOiBib29sZWFuIHtcbiAgY29uc3QgY3VycmVudFNvdXJjZUZpbGUgPSBub2RlXy5nZXRTb3VyY2VGaWxlKG5vZGUpO1xuXG4gIGNvbnN0IG5hbWVzcGFjZUltcG9ydCA9IGltcG9ydERlY2xhcmF0aW9uLmdldE5hbWVzcGFjZUltcG9ydChub2RlKTtcbiAgaWYgKFxuICAgIG5hbWVzcGFjZUltcG9ydCAhPT0gdW5kZWZpbmVkICYmXG4gICAgaGFzTG9jYWxWYWx1ZVJlZmVyZW5jZXMocHJvZ3JhbSwgbGFuZ3VhZ2VTZXJ2aWNlLCBjdXJyZW50U291cmNlRmlsZSwgbmFtZXNwYWNlSW1wb3J0KVxuICApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGRlZmF1bHRJbXBvcnQgPSBpbXBvcnREZWNsYXJhdGlvbi5nZXREZWZhdWx0SW1wb3J0KG5vZGUpO1xuICBpZiAoXG4gICAgZGVmYXVsdEltcG9ydCAhPT0gdW5kZWZpbmVkICYmXG4gICAgaGFzTG9jYWxWYWx1ZVJlZmVyZW5jZXMocHJvZ3JhbSwgbGFuZ3VhZ2VTZXJ2aWNlLCBjdXJyZW50U291cmNlRmlsZSwgZGVmYXVsdEltcG9ydClcbiAgKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gaW1wb3J0RGVjbGFyYXRpb25cbiAgICAuZ2V0TmFtZWRJbXBvcnRzKG5vZGUpXG4gICAgLnNvbWUoKG5hbWVkSW1wb3J0KSA9PlxuICAgICAgaGFzTG9jYWxWYWx1ZVJlZmVyZW5jZXMocHJvZ3JhbSwgbGFuZ3VhZ2VTZXJ2aWNlLCBjdXJyZW50U291cmNlRmlsZSwgZ2V0SW1wb3J0TmFtZU5vZGUobmFtZWRJbXBvcnQpKSxcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzTG9jYWxWYWx1ZVJlZmVyZW5jZXMoXG4gIHByb2dyYW06IHRzLlByb2dyYW0sXG4gIGxhbmd1YWdlU2VydmljZTogdHMuTGFuZ3VhZ2VTZXJ2aWNlLFxuICBjdXJyZW50U291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbiAgbm9kZTogbm9kZV8uQW55TmFtZWFibGVOb2RlLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJlZmVyZW5jZXMgPSByZWZlcmVuY2VfLmZpbmRSZWZlcmVuY2VzQXNOb2Rlcyhwcm9ncmFtLCBsYW5ndWFnZVNlcnZpY2UsIG5vZGUpO1xuXG4gIHJldHVybiByZWZlcmVuY2VzLnNvbWUoXG4gICAgKHJlZmVyZW5jZSkgPT5cbiAgICAgIG5vZGVfLmdldFNvdXJjZUZpbGUocmVmZXJlbmNlKSA9PT0gY3VycmVudFNvdXJjZUZpbGUgJiZcbiAgICAgIG5vZGVfLmdldEZpcnN0QW5jZXN0b3JCeVRlc3QocmVmZXJlbmNlLCB0cy5pc0ltcG9ydERlY2xhcmF0aW9uKSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAhbm9kZV8uaXNQYXJ0T2ZUeXBlTm9kZShyZWZlcmVuY2UpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1wb3J0TmFtZU5vZGUobm9kZTogdHMuSW1wb3J0U3BlY2lmaWVyKTogdHMuSW1wb3J0U3BlY2lmaWVyIHwgdHMuSWRlbnRpZmllciB7XG4gIGNvbnN0IGFsaWFzID0gbm9kZV8uZ2V0UHJvcGVydHlOYW1lTm9kZShub2RlKTtcblxuICByZXR1cm4gYWxpYXMgPT09IHVuZGVmaW5lZCA/IG5vZGUgOiBhbGlhcztcbn1cbiJdfQ==
|