File size: 1,638 Bytes
bc20498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isParserObject = isParserObject;
exports.isEnhancedParserObject = isEnhancedParserObject;
exports.isBasicParserObject = isBasicParserObject;
exports.maybeTSESLintParserObject = maybeTSESLintParserObject;
exports.isTSESLintParserObject = isTSESLintParserObject;
/** Checks whether given object is ParserObject */
function isParserObject(value) {
    return isEnhancedParserObject(value) || isBasicParserObject(value);
}
/** Checks whether given object is EnhancedParserObject */
function isEnhancedParserObject(value) {
    return Boolean(value && typeof value.parseForESLint === "function");
}
/** Checks whether given object is BasicParserObject */
function isBasicParserObject(value) {
    return Boolean(value && typeof value.parse === "function");
}
/** Checks whether given object maybe "@typescript-eslint/parser" */
function maybeTSESLintParserObject(value) {
    return (isEnhancedParserObject(value) &&
        isBasicParserObject(value) &&
        typeof value.createProgram === "function" &&
        typeof value.clearCaches === "function" &&
        typeof value.version === "string");
}
/** Checks whether given object is "@typescript-eslint/parser" */
function isTSESLintParserObject(value) {
    if (!isEnhancedParserObject(value))
        return false;
    try {
        const result = value.parseForESLint("", {});
        const services = result.services;
        return Boolean(services &&
            services.esTreeNodeToTSNodeMap &&
            services.tsNodeToESTreeNodeMap);
    }
    catch (_a) {
        return false;
    }
}