.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / tslint / node_modules / tsutils / util / type.js
1 "use strict";
2 Object.defineProperty(exports, "__esModule", { value: true });
3 var ts = require("typescript");
4 var type_1 = require("../typeguard/type");
5 var util_1 = require("./util");
6 function isEmptyObjectType(type) {
7     if (type_1.isObjectType(type) &&
8         type.objectFlags & ts.ObjectFlags.Anonymous &&
9         type.getProperties().length === 0 &&
10         type.getCallSignatures().length === 0 &&
11         type.getConstructSignatures().length === 0 &&
12         type.getStringIndexType() === undefined &&
13         type.getNumberIndexType() === undefined) {
14         var baseTypes = type.getBaseTypes();
15         return baseTypes === undefined || baseTypes.every(isEmptyObjectType);
16     }
17     return false;
18 }
19 exports.isEmptyObjectType = isEmptyObjectType;
20 function removeOptionalityFromType(checker, type) {
21     if (!containsTypeWithFlag(type, ts.TypeFlags.Undefined))
22         return type;
23     var allowsNull = containsTypeWithFlag(type, ts.TypeFlags.Null);
24     type = checker.getNonNullableType(type);
25     return allowsNull ? checker.getNullableType(type, ts.TypeFlags.Null) : type;
26 }
27 exports.removeOptionalityFromType = removeOptionalityFromType;
28 function containsTypeWithFlag(type, flag) {
29     for (var _i = 0, _a = unionTypeParts(type); _i < _a.length; _i++) {
30         var t = _a[_i];
31         if (util_1.isTypeFlagSet(t, flag))
32             return true;
33     }
34     return false;
35 }
36 function isTypeAssignableToNumber(checker, type) {
37     return isTypeAssignableTo(checker, type, ts.TypeFlags.NumberLike);
38 }
39 exports.isTypeAssignableToNumber = isTypeAssignableToNumber;
40 function isTypeAssignableToString(checker, type) {
41     return isTypeAssignableTo(checker, type, ts.TypeFlags.StringLike);
42 }
43 exports.isTypeAssignableToString = isTypeAssignableToString;
44 function isTypeAssignableTo(checker, type, flags) {
45     flags |= ts.TypeFlags.Any;
46     var typeParametersSeen;
47     return (function check(t) {
48         if (type_1.isTypeParameter(t) && t.symbol !== undefined && t.symbol.declarations !== undefined) {
49             if (typeParametersSeen === undefined) {
50                 typeParametersSeen = new Set([t]);
51             }
52             else if (!typeParametersSeen.has(t)) {
53                 typeParametersSeen.add(t);
54             }
55             else {
56                 return false;
57             }
58             var declaration = t.symbol.declarations[0];
59             if (declaration.constraint === undefined)
60                 return true;
61             return check(checker.getTypeFromTypeNode(declaration.constraint));
62         }
63         if (type_1.isUnionType(t))
64             return t.types.every(check);
65         if (type_1.isIntersectionType(t))
66             return t.types.some(check);
67         return util_1.isTypeFlagSet(t, flags);
68     })(type);
69 }
70 function getCallSignaturesOfType(type) {
71     if (type_1.isUnionType(type)) {
72         var signatures = [];
73         for (var _i = 0, _a = type.types; _i < _a.length; _i++) {
74             var t = _a[_i];
75             signatures.push.apply(signatures, getCallSignaturesOfType(t));
76         }
77         return signatures;
78     }
79     if (type_1.isIntersectionType(type)) {
80         var signatures = void 0;
81         for (var _b = 0, _c = type.types; _b < _c.length; _b++) {
82             var t = _c[_b];
83             var sig = getCallSignaturesOfType(t);
84             if (sig.length !== 0) {
85                 if (signatures !== undefined)
86                     return [];
87                 signatures = sig;
88             }
89         }
90         return signatures === undefined ? [] : signatures;
91     }
92     return type.getCallSignatures();
93 }
94 exports.getCallSignaturesOfType = getCallSignaturesOfType;
95 function unionTypeParts(type) {
96     return type_1.isUnionType(type) ? type.types : [type];
97 }
98 exports.unionTypeParts = unionTypeParts;
99 function isThenableType(checker, node, type) {
100     if (type === void 0) { type = checker.getTypeAtLocation(node); }
101     for (var _i = 0, _a = unionTypeParts(checker.getApparentType(type)); _i < _a.length; _i++) {
102         var ty = _a[_i];
103         var then = ty.getProperty('then');
104         if (then === undefined)
105             continue;
106         var thenType = checker.getTypeOfSymbolAtLocation(then, node);
107         for (var _b = 0, _c = unionTypeParts(thenType); _b < _c.length; _b++) {
108             var t = _c[_b];
109             for (var _d = 0, _e = t.getCallSignatures(); _d < _e.length; _d++) {
110                 var signature = _e[_d];
111                 if (signature.parameters.length !== 0 && isCallback(checker, signature.parameters[0], node))
112                     return true;
113             }
114         }
115     }
116     return false;
117 }
118 exports.isThenableType = isThenableType;
119 function isCallback(checker, param, node) {
120     var type = checker.getApparentType(checker.getTypeOfSymbolAtLocation(param, node));
121     if (param.valueDeclaration.dotDotDotToken) {
122         type = type.getNumberIndexType();
123         if (type === undefined)
124             return false;
125     }
126     for (var _i = 0, _a = unionTypeParts(type); _i < _a.length; _i++) {
127         var t = _a[_i];
128         if (t.getCallSignatures().length !== 0)
129             return true;
130     }
131     return false;
132 }
133 function isFalsyType(type) {
134     if (type.flags & (ts.TypeFlags.Undefined | ts.TypeFlags.Null | ts.TypeFlags.Void))
135         return true;
136     if (type_1.isLiteralType(type))
137         return !type.value;
138     if (type.flags & ts.TypeFlags.BooleanLiteral)
139         return type.intrinsicName === 'false';
140     return false;
141 }
142 exports.isFalsyType = isFalsyType;
143 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBaUM7QUFDakMsMENBQWtIO0FBQ2xILCtCQUF1QztBQUV2QyxTQUFnQixpQkFBaUIsQ0FBQyxJQUFhO0lBQzNDLElBQUksbUJBQVksQ0FBQyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLFNBQVM7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEtBQUssU0FBUyxFQUFFO1FBQ3pDLElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxPQUFPLFNBQVMsS0FBSyxTQUFTLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBQ3hFO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQVpELDhDQVlDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUMsT0FBdUIsRUFBRSxJQUFhO0lBQzVFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUM7SUFDaEIsSUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsSUFBSSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxPQUFPLFVB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