UNPKG

12.3 kBJavaScriptView Raw
1import ts from 'typescript';
2import * as utils from '../utils';
3export function getModifiers(node) {
4 const modifiers = utils.getValueOrUndefined(node.modifiers);
5 return modifiers === undefined ? [] : modifiers;
6}
7export function getFirstModifierByKind(node, kind) {
8 const modifier = getModifiers(node).find((mod) => mod.kind === kind);
9 if (modifier !== undefined) {
10 return modifier;
11 }
12 return node.getChildren().find((mod) => mod.kind === kind);
13}
14export function getAbstractKeyword(node) {
15 return getFirstModifierByKind(node, ts.SyntaxKind.AbstractKeyword);
16}
17export function isAbstract(node) {
18 return getAbstractKeyword(node) !== undefined;
19}
20export function getConstKeyword(node) {
21 return getFirstModifierByKind(node, ts.SyntaxKind.ConstKeyword);
22}
23export function isConst(node) {
24 return getConstKeyword(node) !== undefined;
25}
26export function getPublicKeyword(node) {
27 return getFirstModifierByKind(node, ts.SyntaxKind.PublicKeyword);
28}
29export function isPublic(node) {
30 return getPublicKeyword(node) !== undefined;
31}
32export function getProtectedKeyword(node) {
33 return getFirstModifierByKind(node, ts.SyntaxKind.ProtectedKeyword);
34}
35export function isProtected(node) {
36 return getProtectedKeyword(node) !== undefined;
37}
38export function getPrivateKeyword(node) {
39 return getFirstModifierByKind(node, ts.SyntaxKind.PrivateKeyword);
40}
41export function isPrivate(node) {
42 return getPrivateKeyword(node) !== undefined;
43}
44export function getReadonlyKeyword(node) {
45 return getFirstModifierByKind(node, ts.SyntaxKind.ReadonlyKeyword);
46}
47export function isReadonly(node) {
48 return getReadonlyKeyword(node) !== undefined;
49}
50export function getStaticKeyword(node) {
51 return getFirstModifierByKind(node, ts.SyntaxKind.StaticKeyword);
52}
53export function isStatic(node) {
54 return getStaticKeyword(node) !== undefined;
55}
56export function getExportKeyword(node) {
57 return getFirstModifierByKind(node, ts.SyntaxKind.ExportKeyword);
58}
59export function hasExportKeyword(node) {
60 return getExportKeyword(node) !== undefined;
61}
62export function getDefaultKeyword(node) {
63 return getFirstModifierByKind(node, ts.SyntaxKind.DefaultKeyword);
64}
65export function hasDefaultKeyword(node) {
66 return getDefaultKeyword(node) !== undefined;
67}
68export function isNamedExport(node) {
69 const parent = utils.getValueOrUndefined(node.parent);
70 return parent !== undefined && ts.isSourceFile(parent) && hasExportKeyword(node) && !hasDefaultKeyword(node);
71}
72export function isDefaultExport(node) {
73 return hasExportKeyword(node) && hasDefaultKeyword(node);
74}
75export function getDeclareKeyword(node) {
76 return getFirstModifierByKind(node, ts.SyntaxKind.DeclareKeyword);
77}
78export function hasDeclareKeyword(node) {
79 return getDeclareKeyword(node) !== undefined;
80}
81
82//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUMsSUFBYTtJQUMzQyxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBYTtJQUM3QyxPQUFPLHNCQUFzQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBYTtJQUM3QyxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQztBQUMvQyxDQUFDIiwiZmlsZSI6Im5lby1vbmUtdHMtdXRpbHMvc3JjL2Jhc2UvbW9kaWZpZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZSBuby1iaXR3aXNlXG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2RpZmllcnMobm9kZTogdHMuTm9kZSk6IHJlYWRvbmx5IHRzLk1vZGlmaWVyW10ge1xuICBjb25zdCBtb2RpZmllcnMgPSB1dGlscy5nZXRWYWx1ZU9yVW5kZWZpbmVkKG5vZGUubW9kaWZpZXJzKTtcblxuICByZXR1cm4gbW9kaWZpZXJzID09PSB1bmRlZmluZWQgPyBbXSA6IG1vZGlmaWVycztcbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpcnN0TW9kaWZpZXJCeUtpbmQ8VG9rZW4gZXh0ZW5kcyB0cy5Nb2RpZmllcj4oXG4gIG5vZGU6IHRzLk5vZGUsXG4gIGtpbmQ6IFRva2VuIGV4dGVuZHMgdHMuVG9rZW48aW5mZXIgVEtpbmQ+ID8gVEtpbmQgOiBuZXZlcixcbik6IFRva2VuIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbW9kaWZpZXIgPSBnZXRNb2RpZmllcnMobm9kZSkuZmluZCgobW9kKTogbW9kIGlzIFRva2VuID0+IG1vZC5raW5kID09PSBraW5kKTtcbiAgaWYgKG1vZGlmaWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gbW9kaWZpZXI7XG4gIH1cblxuICByZXR1cm4gbm9kZS5nZXRDaGlsZHJlbigpLmZpbmQoKG1vZCk6IG1vZCBpcyBUb2tlbiA9PiBtb2Qua2luZCA9PT0ga2luZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBYnN0cmFjdEtleXdvcmQobm9kZTogdHMuTm9kZSk6IHRzLlRva2VuPHRzLlN5bnRheEtpbmQuQWJzdHJhY3RLZXl3b3JkPiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRGaXJzdE1vZGlmaWVyQnlLaW5kKG5vZGUsIHRzLlN5bnRheEtpbmQuQWJzdHJhY3RLZXl3b3JkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzdHJhY3Qobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0QWJzdHJhY3RLZXl3b3JkKG5vZGUpICE9PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25zdEtleXdvcmQobm9kZTogdHMuTm9kZSk6IHRzLlRva2VuPHRzLlN5bnRheEtpbmQuQ29uc3RLZXl3b3JkPiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRGaXJzdE1vZGlmaWVyQnlLaW5kKG5vZGUsIHRzLlN5bnRheEtpbmQuQ29uc3RLZXl3b3JkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uc3Qobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0Q29uc3RLZXl3b3JkKG5vZGUpICE9PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQdWJsaWNLZXl3b3JkKG5vZGU6IHRzLk5vZGUpOiB0cy5Ub2tlbjx0cy5TeW50YXhLaW5kLlB1YmxpY0tleXdvcmQ+IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldEZpcnN0TW9kaWZpZXJCeUtpbmQobm9kZSwgdHMuU3ludGF4S2luZC5QdWJsaWNLZXl3b3JkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHVibGljKG5vZGU6IHRzLk5vZGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldFB1YmxpY0tleXdvcmQobm9kZSkgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3RlY3RlZEtleXdvcmQobm9kZTogdHMuTm9kZSk6IHRzLlRva2VuPHRzLlN5bnRheEtpbmQuUHJvdGVjdGVkS2V5d29yZD4gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2V0Rmlyc3RNb2RpZmllckJ5S2luZChub2RlLCB0cy5TeW50YXhLaW5kLlByb3RlY3RlZEtleXdvcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcm90ZWN0ZWQobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0UHJvdGVjdGVkS2V5d29yZChub2RlKSAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJpdmF0ZUtleXdvcmQobm9kZTogdHMuTm9kZSk6IHRzLlRva2VuPHRzLlN5bnRheEtpbmQuUHJpdmF0ZUtleXdvcmQ+IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldEZpcnN0TW9kaWZpZXJCeUtpbmQobm9kZSwgdHMuU3ludGF4S2luZC5Qcml2YXRlS2V5d29yZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByaXZhdGUobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0UHJpdmF0ZUtleXdvcmQobm9kZSkgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlYWRvbmx5S2V5d29yZChub2RlOiB0cy5Ob2RlKTogdHMuVG9rZW48dHMuU3ludGF4S2luZC5SZWFkb25seUtleXdvcmQ+IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldEZpcnN0TW9kaWZpZXJCeUtpbmQobm9kZSwgdHMuU3ludGF4S2luZC5SZWFkb25seUtleXdvcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWFkb25seShub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRSZWFkb25seUtleXdvcmQobm9kZSkgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXRpY0tleXdvcmQobm9kZTogdHMuTm9kZSk6IHRzLlRva2VuPHRzLlN5bnRheEtpbmQuU3RhdGljS2V5d29yZD4gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2V0Rmlyc3RNb2RpZmllckJ5S2luZChub2RlLCB0cy5TeW50YXhLaW5kLlN0YXRpY0tleXdvcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdGF0aWMobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0U3RhdGljS2V5d29yZChub2RlKSAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXhwb3J0S2V5d29yZChub2RlOiB0cy5Ob2RlKTogdHMuVG9rZW48dHMuU3ludGF4S2luZC5FeHBvcnRLZXl3b3JkPiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRGaXJzdE1vZGlmaWVyQnlLaW5kKG5vZGUsIHRzLlN5bnRheEtpbmQuRXhwb3J0S2V5d29yZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNFeHBvcnRLZXl3b3JkKG5vZGU6IHRzLk5vZGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldEV4cG9ydEtleXdvcmQobm9kZSkgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRLZXl3b3JkKG5vZGU6IHRzLk5vZGUpOiB0cy5Ub2tlbjx0cy5TeW50YXhLaW5kLkRlZmF1bHRLZXl3b3JkPiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRGaXJzdE1vZGlmaWVyQnlLaW5kKG5vZGUsIHRzLlN5bnRheEtpbmQuRGVmYXVsdEtleXdvcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzRGVmYXVsdEtleXdvcmQobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0RGVmYXVsdEtleXdvcmQobm9kZSkgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTmFtZWRFeHBvcnQobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICBjb25zdCBwYXJlbnQgPSB1dGlscy5nZXRWYWx1ZU9yVW5kZWZpbmVkKG5vZGUucGFyZW50KTtcblxuICByZXR1cm4gcGFyZW50ICE9PSB1bmRlZmluZWQgJiYgdHMuaXNTb3VyY2VGaWxlKHBhcmVudCkgJiYgaGFzRXhwb3J0S2V5d29yZChub2RlKSAmJiAhaGFzRGVmYXVsdEtleXdvcmQobm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RlZmF1bHRFeHBvcnQobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaGFzRXhwb3J0S2V5d29yZChub2RlKSAmJiBoYXNEZWZhdWx0S2V5d29yZChub2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlY2xhcmVLZXl3b3JkKG5vZGU6IHRzLk5vZGUpOiB0cy5Ub2tlbjx0cy5TeW50YXhLaW5kLkRlY2xhcmVLZXl3b3JkPiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRGaXJzdE1vZGlmaWVyQnlLaW5kKG5vZGUsIHRzLlN5bnRheEtpbmQuRGVjbGFyZUtleXdvcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzRGVjbGFyZUtleXdvcmQobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0RGVjbGFyZUtleXdvcmQobm9kZSkgIT09IHVuZGVmaW5lZDtcbn1cbiJdfQ==