UNPKG

5.04 kBJavaScriptView Raw
1import ts from 'typescript';
2import * as utils from '../utils';
3import { getSyntaxKindName } from './syntaxKind';
4export function getHeritageClauses(node) {
5 const heritageClauses = utils.getValueOrUndefined(node.heritageClauses);
6 if (heritageClauses === undefined) {
7 return [];
8 }
9 return heritageClauses;
10}
11export function getHeritageClauseByKind(node, kind) {
12 return getHeritageClauses(node).find((clause) => clause.token === kind);
13}
14export function getHeritageClauseByKindOrThrow(node, kind) {
15 return utils.throwIfNullOrUndefined(getHeritageClauseByKind(node, kind), `heritage clause of kind ${getSyntaxKindName(kind)}`);
16}
17export function getTypeNodes(node) {
18 const types = utils.getValueOrUndefined(node.types);
19 return types === undefined ? [] : types;
20}
21export function getToken(node) {
22 return node.token;
23}
24export function isExtends(node) {
25 return getToken(node) === ts.SyntaxKind.ExtendsKeyword;
26}
27export function isImplements(node) {
28 return getToken(node) === ts.SyntaxKind.ImplementsKeyword;
29}
30
31//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhlcml0YWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QixPQUFPLEtBQUssS0FBSyxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJakQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQTJCO0lBQzVELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDeEUsSUFBSSxlQUFlLEtBQUssU0FBUyxFQUFFO1FBQ2pDLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFFRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxJQUEyQixFQUMzQixJQUFvRTtJQUVwRSxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxJQUEyQixFQUMzQixJQUFvRTtJQUVwRSxPQUFPLEtBQUssQ0FBQyxzQkFBc0IsQ0FDakMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUNuQywyQkFBMkIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDckQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQXVCO0lBQ2xELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFcEQsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUMxQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUF1QjtJQUM5QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBdUI7SUFDL0MsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7QUFDekQsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBdUI7SUFDbEQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztBQUM1RCxDQUFDIiwiZmlsZSI6Im5lby1vbmUtdHMtdXRpbHMvc3JjL2Jhc2UvaGVyaXRhZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBnZXRTeW50YXhLaW5kTmFtZSB9IGZyb20gJy4vc3ludGF4S2luZCc7XG5cbnR5cGUgSGVyaXRhZ2VDbGF1c2FibGVOb2RlID0gdHMuTm9kZSAmIHsgcmVhZG9ubHkgaGVyaXRhZ2VDbGF1c2VzPzogdHMuTm9kZUFycmF5PHRzLkhlcml0YWdlQ2xhdXNlPiB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVyaXRhZ2VDbGF1c2VzKG5vZGU6IEhlcml0YWdlQ2xhdXNhYmxlTm9kZSk6IHJlYWRvbmx5IHRzLkhlcml0YWdlQ2xhdXNlW10ge1xuICBjb25zdCBoZXJpdGFnZUNsYXVzZXMgPSB1dGlscy5nZXRWYWx1ZU9yVW5kZWZpbmVkKG5vZGUuaGVyaXRhZ2VDbGF1c2VzKTtcbiAgaWYgKGhlcml0YWdlQ2xhdXNlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIGhlcml0YWdlQ2xhdXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhlcml0YWdlQ2xhdXNlQnlLaW5kKFxuICBub2RlOiBIZXJpdGFnZUNsYXVzYWJsZU5vZGUsXG4gIGtpbmQ6IHRzLlN5bnRheEtpbmQuRXh0ZW5kc0tleXdvcmQgfCB0cy5TeW50YXhLaW5kLkltcGxlbWVudHNLZXl3b3JkLFxuKTogdHMuSGVyaXRhZ2VDbGF1c2UgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2V0SGVyaXRhZ2VDbGF1c2VzKG5vZGUpLmZpbmQoKGNsYXVzZSkgPT4gY2xhdXNlLnRva2VuID09PSBraW5kKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhlcml0YWdlQ2xhdXNlQnlLaW5kT3JUaHJvdyhcbiAgbm9kZTogSGVyaXRhZ2VDbGF1c2FibGVOb2RlLFxuICBraW5kOiB0cy5TeW50YXhLaW5kLkV4dGVuZHNLZXl3b3JkIHwgdHMuU3ludGF4S2luZC5JbXBsZW1lbnRzS2V5d29yZCxcbik6IHRzLkhlcml0YWdlQ2xhdXNlIHtcbiAgcmV0dXJuIHV0aWxzLnRocm93SWZOdWxsT3JVbmRlZmluZWQoXG4gICAgZ2V0SGVyaXRhZ2VDbGF1c2VCeUtpbmQobm9kZSwga2luZCksXG4gICAgYGhlcml0YWdlIGNsYXVzZSBvZiBraW5kICR7Z2V0U3ludGF4S2luZE5hbWUoa2luZCl9YCxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVOb2Rlcyhub2RlOiB0cy5IZXJpdGFnZUNsYXVzZSk6IHJlYWRvbmx5IHRzLkV4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50c1tdIHtcbiAgY29uc3QgdHlwZXMgPSB1dGlscy5nZXRWYWx1ZU9yVW5kZWZpbmVkKG5vZGUudHlwZXMpO1xuXG4gIHJldHVybiB0eXBlcyA9PT0gdW5kZWZpbmVkID8gW10gOiB0eXBlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRva2VuKG5vZGU6IHRzLkhlcml0YWdlQ2xhdXNlKTogdHMuU3ludGF4S2luZC5FeHRlbmRzS2V5d29yZCB8IHRzLlN5bnRheEtpbmQuSW1wbGVtZW50c0tleXdvcmQge1xuICByZXR1cm4gbm9kZS50b2tlbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZW5kcyhub2RlOiB0cy5IZXJpdGFnZUNsYXVzZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0VG9rZW4obm9kZSkgPT09IHRzLlN5bnRheEtpbmQuRXh0ZW5kc0tleXdvcmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ltcGxlbWVudHMobm9kZTogdHMuSGVyaXRhZ2VDbGF1c2UpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldFRva2VuKG5vZGUpID09PSB0cy5TeW50YXhLaW5kLkltcGxlbWVudHNLZXl3b3JkO1xufVxuIl19