UNPKG

12 kBJavaScriptView Raw
1import ts from 'typescript';
2import * as importDeclaration from './importDeclaration';
3import * as node_ from './node';
4import * as reference_ from './reference';
5import * as symbol from './symbol';
6import * as utils from './utils';
7export function getAliasNode(node) {
8 return utils.getValueOrUndefined(node.propertyName);
9}
10export function getAliasName(node) {
11 const aliasNode = getAliasNode(node);
12 if (aliasNode === undefined) {
13 return aliasNode;
14 }
15 return aliasNode.getText();
16}
17export 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}
27export function getModuleSpecifierSymbol(typeChecker, node) {
28 const moduleSpecifier = getModuleSpecifier(node);
29 if (moduleSpecifier === undefined) {
30 return undefined;
31 }
32 return node_.getSymbol(typeChecker, moduleSpecifier);
33}
34export 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}
42export function getModuleSpecifierSourceFileOrThrow(typeChecker, node) {
43 return utils.throwIfNullOrUndefined(getModuleSpecifierSourceFile(typeChecker, node), 'source file');
44}
45export function isExportEquals(node) {
46 return !!node.isExportEquals;
47}
48export 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}
64export 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}
70export 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==