@jpoly1219/context-extractor 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,512 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.TypeScriptTypeChecker = void 0;
27
+ const ts = __importStar(require("typescript"));
28
+ const utils_1 = require("./utils");
29
+ class TypeScriptTypeChecker {
30
+ getIdentifierFromDecl(typeDecl) {
31
+ const declRe = /(.+ )(.+)( = )(.+)/;
32
+ const match = typeDecl.match(declRe);
33
+ if (!match)
34
+ return "";
35
+ return match[2];
36
+ }
37
+ getTypeContextFromDecl(typeDecl) {
38
+ if (this.checkHole(typeDecl)) {
39
+ return this.checkHole(typeDecl);
40
+ }
41
+ else if (this.checkParameter(typeDecl)) {
42
+ return this.checkParameter(typeDecl);
43
+ }
44
+ else if (this.checkFunction(typeDecl)) {
45
+ return this.checkFunction(typeDecl);
46
+ }
47
+ else if (this.checkUnion(typeDecl)) {
48
+ return this.checkUnion(typeDecl);
49
+ }
50
+ else if (this.checkObject(typeDecl)) {
51
+ return this.checkObject(typeDecl);
52
+ }
53
+ else if (this.checkImports(typeDecl)) {
54
+ return this.checkImports(typeDecl);
55
+ }
56
+ else if (this.checkModule(typeDecl)) {
57
+ return this.checkModule(typeDecl);
58
+ }
59
+ else {
60
+ return this.checkPrimitive(typeDecl);
61
+ }
62
+ }
63
+ // pattern matching
64
+ // attempts to match strings to corresponding types, then returns an object containing the name, type span, and an interesting index
65
+ // base case - type can no longer be stepped into
66
+ // boolean, number, string, enum, unknown, any, void, null, undefined, never
67
+ // ideally this should be checked for before we do the for loop
68
+ // return typeSpan;
69
+ // check if hover result is from a primitive type
70
+ checkPrimitive(typeDecl) {
71
+ // type _ = boolean
72
+ const primitivePattern = /(type )(.+)( = )(.+)/;
73
+ const primitiveMatch = typeDecl.match(primitivePattern);
74
+ let primitiveInterestingIndex = -1;
75
+ if (primitiveMatch) {
76
+ primitiveInterestingIndex = (0, utils_1.indexOfRegexGroup)(primitiveMatch, 4);
77
+ }
78
+ if (primitiveInterestingIndex != -1) {
79
+ const typeName = primitiveMatch[2];
80
+ const typeSpan = primitiveMatch[4];
81
+ return { identifier: typeName, span: typeSpan, interestingIndex: primitiveInterestingIndex };
82
+ }
83
+ return null;
84
+ }
85
+ // check if hover result is from an import
86
+ checkImports(typeDecl) {
87
+ // import { _, _ };
88
+ const importPattern = /(import )(\{.+\})/;
89
+ const importMatch = typeDecl.match(importPattern);
90
+ let importInterestingIndex = -1;
91
+ if (importMatch) {
92
+ importInterestingIndex = (0, utils_1.indexOfRegexGroup)(importMatch, 2);
93
+ }
94
+ // import _;
95
+ const defaultImportPattern = /(import )(.+)/;
96
+ const defaultImportMatch = typeDecl.match(defaultImportPattern);
97
+ let defaultImportInterestingIndex = -1;
98
+ if (defaultImportMatch) {
99
+ defaultImportInterestingIndex = (0, utils_1.indexOfRegexGroup)(defaultImportMatch, 2);
100
+ }
101
+ if (importInterestingIndex != -1) {
102
+ const typeName = importMatch[2];
103
+ const typeSpan = importMatch[2];
104
+ return { identifier: typeName, span: typeSpan, interestingIndex: importInterestingIndex };
105
+ }
106
+ else if (defaultImportInterestingIndex != -1) {
107
+ const typeName = defaultImportMatch[2];
108
+ const typeSpan = defaultImportMatch[2];
109
+ return { identifier: typeName, span: typeSpan, interestingIndex: defaultImportInterestingIndex };
110
+ }
111
+ return null;
112
+ }
113
+ // check if hover result is from a module
114
+ checkModule(typeDecl) {
115
+ // module "path/to/module"
116
+ const modulePattern = /(module )(.+)/;
117
+ const moduleMatch = typeDecl.match(modulePattern);
118
+ let moduleInterestingIndex = -1;
119
+ if (moduleMatch) {
120
+ moduleInterestingIndex = (0, utils_1.indexOfRegexGroup)(moduleMatch, 2);
121
+ }
122
+ if (moduleInterestingIndex != -1) {
123
+ const typeName = moduleMatch[2];
124
+ const typeSpan = moduleMatch[2];
125
+ return { identifier: typeName, span: typeSpan, interestingIndex: moduleInterestingIndex };
126
+ }
127
+ return null;
128
+ }
129
+ // check if hover result is from an object
130
+ checkObject(typeDecl) {
131
+ // type _ = {
132
+ // _: t1;
133
+ // _: t2;
134
+ // }
135
+ const objectTypeDefPattern = /(type )(.+)( = )(\{.+\})/;
136
+ const objectTypeDefMatch = typeDecl.match(objectTypeDefPattern);
137
+ let objectTypeDefInterestingIndex = -1;
138
+ if (objectTypeDefMatch) {
139
+ objectTypeDefInterestingIndex = (0, utils_1.indexOfRegexGroup)(objectTypeDefMatch, 4);
140
+ }
141
+ if (objectTypeDefInterestingIndex != -1) {
142
+ const typeName = objectTypeDefMatch[2];
143
+ const typeSpan = objectTypeDefMatch[4];
144
+ return { identifier: typeName, span: typeSpan, interestingIndex: objectTypeDefInterestingIndex };
145
+ }
146
+ return null;
147
+ }
148
+ // check if hover result is from a union
149
+ checkUnion(typeDecl) {
150
+ // type _ = A | B | C
151
+ const unionPattern = /(type )(.+)( = )((.+ | )+.+)/;
152
+ const unionMatch = typeDecl.match(unionPattern);
153
+ let unionInterestingIndex = -1;
154
+ if (unionMatch) {
155
+ unionInterestingIndex = (0, utils_1.indexOfRegexGroup)(unionMatch, 4);
156
+ }
157
+ if (unionInterestingIndex != -1) {
158
+ const typeName = unionMatch[2];
159
+ const typeSpan = unionMatch[4];
160
+ return { identifier: typeName, span: typeSpan, interestingIndex: unionInterestingIndex };
161
+ }
162
+ return null;
163
+ }
164
+ // check if hover result is from a function
165
+ checkFunction(typeDecl) {
166
+ // const myFunc : (arg1: typ1, ...) => _
167
+ const es6AnnotatedFunctionPattern = /(const )(.+)(: )(\(.+\) => .+)/;
168
+ const es6AnnotatedFunctionMatch = typeDecl.match(es6AnnotatedFunctionPattern);
169
+ let es6AnnotatedFunctionInterestingIndex = -1;
170
+ if (es6AnnotatedFunctionMatch) {
171
+ es6AnnotatedFunctionInterestingIndex = (0, utils_1.indexOfRegexGroup)(es6AnnotatedFunctionMatch, 4);
172
+ }
173
+ // type _ = (_: t1) => t2
174
+ const es6FunctionTypeDefPattern = /(type )(.+)( = )(\(.+\) => .+)/;
175
+ const es6FunctionTypeDefPatternMatch = typeDecl.match(es6FunctionTypeDefPattern);
176
+ let es6FunctionTypeDefInterestingIndex = -1;
177
+ if (es6FunctionTypeDefPatternMatch) {
178
+ es6FunctionTypeDefInterestingIndex = (0, utils_1.indexOfRegexGroup)(es6FunctionTypeDefPatternMatch, 4);
179
+ }
180
+ // function myFunc<T>(args: types, genarg: T): returntype
181
+ const genericFunctionTypePattern = /(function )(.+)(\<.+\>\(.*\))(: )(.+)/;
182
+ const genericFunctionTypeMatch = typeDecl.match(genericFunctionTypePattern);
183
+ let genericFunctionTypeInterestingIndex = -1;
184
+ if (genericFunctionTypeMatch) {
185
+ genericFunctionTypeInterestingIndex = (0, utils_1.indexOfRegexGroup)(genericFunctionTypeMatch, 3);
186
+ }
187
+ // function myFunc(args: types): returntype
188
+ const functionTypePattern = /(function )(.+)(\(.*\))(: )(.+)/;
189
+ const functionTypeMatch = typeDecl.match(functionTypePattern);
190
+ let functionTypeInterestingIndex = -1;
191
+ if (functionTypeMatch) {
192
+ functionTypeInterestingIndex = (0, utils_1.indexOfRegexGroup)(functionTypeMatch, 3);
193
+ }
194
+ if (es6AnnotatedFunctionInterestingIndex != -1) {
195
+ const typeName = es6AnnotatedFunctionMatch[2];
196
+ const typeSpan = es6AnnotatedFunctionMatch[4];
197
+ return { identifier: typeName, span: typeSpan, interestingIndex: es6AnnotatedFunctionInterestingIndex };
198
+ }
199
+ else if (es6FunctionTypeDefInterestingIndex != -1) {
200
+ const typeName = es6FunctionTypeDefPatternMatch[2];
201
+ const typeSpan = es6FunctionTypeDefPatternMatch[4];
202
+ return { identifier: typeName, span: typeSpan, interestingIndex: es6FunctionTypeDefInterestingIndex };
203
+ }
204
+ else if (genericFunctionTypeInterestingIndex != -1) {
205
+ const typeName = genericFunctionTypeMatch[2];
206
+ const typeSpan = genericFunctionTypeMatch[3] + genericFunctionTypeMatch[4] + genericFunctionTypeMatch[5];
207
+ return { identifier: typeName, span: typeSpan, interestingIndex: genericFunctionTypeInterestingIndex };
208
+ }
209
+ else if (functionTypeInterestingIndex != -1) {
210
+ const typeName = functionTypeMatch[2];
211
+ const typeSpan = functionTypeMatch[3] + functionTypeMatch[4] + functionTypeMatch[5];
212
+ return { identifier: typeName, span: typeSpan, interestingIndex: functionTypeInterestingIndex };
213
+ }
214
+ return null;
215
+ }
216
+ // check if hover result is from a hole
217
+ checkHole(typeDecl) {
218
+ // (type parameter) T in _<T>(): T
219
+ const holePattern = /(\(type parameter\) T in _\<T\>\(\): T)/;
220
+ const match = typeDecl.match(holePattern);
221
+ if (match) {
222
+ const typeName = "hole function";
223
+ const typeSpan = match[1];
224
+ return { identifier: typeName, span: typeSpan };
225
+ }
226
+ return null;
227
+ }
228
+ // check if hover result is from a parameter
229
+ checkParameter(typeDecl) {
230
+ // (parameter) name: type
231
+ // const parameterPattern = /(\(parameter\) )(.+)(: )(.+))/;
232
+ // const parameterMatch = typeDecl.match(parameterPattern);
233
+ // let parameterInterestingIndex = -1;
234
+ // if (parameterMatch) {
235
+ // parameterInterestingIndex = indexOfRegexGroup(parameterMatch, 4);
236
+ // }
237
+ //
238
+ // if (parameterInterestingIndex != -1) {
239
+ // const typeName = parameterMatch[2];
240
+ // const typeSpan = parameterMatch[4];
241
+ // return { typeName: typeName, typeSpan: typeSpan, interestingIndex: parameterInterestingIndex }
242
+ // }
243
+ return null;
244
+ }
245
+ isTuple(typeSpan) {
246
+ return typeSpan[0] === "[" && typeSpan[typeSpan.length - 1] === "]";
247
+ }
248
+ isUnion(typeSpan) {
249
+ return typeSpan.includes(" | ");
250
+ }
251
+ isArray(typeSpan) {
252
+ return typeSpan.slice(-2) === "[]";
253
+ }
254
+ isObject(typeSpan) {
255
+ return typeSpan[0] === "{" && typeSpan[typeSpan.length - 1] === "}";
256
+ }
257
+ // this is a very rudimentary check, so it should be expanded upon
258
+ isFunction(typeSpan) {
259
+ return typeSpan.includes("=>");
260
+ }
261
+ isPrimitive(typeSpan) {
262
+ const primitives = ["string", "number", "boolean"];
263
+ return primitives.includes(typeSpan);
264
+ }
265
+ isTypeAlias(typeSpan) {
266
+ const caps = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
267
+ return caps.includes(typeSpan[0]);
268
+ }
269
+ escapeQuotes(typeSpan) {
270
+ return typeSpan.replace(/"/g, `\\"`);
271
+ }
272
+ parseTypeArrayString(typeStr) {
273
+ // Remove all spaces
274
+ const cleaned = typeStr.replace(/\s/g, '');
275
+ // Remove the outermost square brackets
276
+ const inner = cleaned.slice(1, -1);
277
+ // const inner = cleaned.slice(-1) === ";" ? cleaned.slice(1, -2) : cleaned.slice(1, -1);
278
+ // Split the string, respecting nested structures
279
+ const result = [];
280
+ let currentItem = '';
281
+ let nestLevel = 0;
282
+ for (const char of inner) {
283
+ if (char === '[')
284
+ nestLevel++;
285
+ if (char === ']')
286
+ nestLevel--;
287
+ if (char === ',' && nestLevel === 0) {
288
+ // check if currentItem is a name: type pair or just type
289
+ if (currentItem.includes(":")) {
290
+ result.push(currentItem.split(":")[1]);
291
+ }
292
+ else {
293
+ result.push(currentItem);
294
+ }
295
+ currentItem = '';
296
+ }
297
+ else {
298
+ currentItem += char;
299
+ }
300
+ }
301
+ if (currentItem.includes(":")) {
302
+ result.push(currentItem.split(":")[1]);
303
+ }
304
+ else {
305
+ result.push(currentItem);
306
+ }
307
+ return result;
308
+ }
309
+ /* Version 2, using TypeScript Compiler API */
310
+ handleMembers(members, checker) {
311
+ return members.map(member => {
312
+ if (ts.isPropertySignature(member) || ts.isPropertyDeclaration(member)) {
313
+ const propertyType = member.type ? this.analyzeTypeNode(member.type, checker) : { kind: 'Any', text: 'any' };
314
+ return {
315
+ kind: 'Property',
316
+ text: member.getText(),
317
+ constituents: [propertyType]
318
+ };
319
+ }
320
+ else if (ts.isMethodSignature(member) || ts.isMethodDeclaration(member)) {
321
+ const parameters = member.parameters.map(param => ({
322
+ name: param.name.getText(),
323
+ optional: !!param.questionToken,
324
+ type: param.type ? this.analyzeTypeNode(param.type, checker) : { kind: 'Any', text: 'any' }
325
+ }));
326
+ const returnType = member.type ? this.analyzeTypeNode(member.type, checker) : { kind: 'Any', text: 'any' };
327
+ return {
328
+ kind: 'Method',
329
+ text: member.getText(),
330
+ parameters,
331
+ returnType
332
+ };
333
+ }
334
+ else {
335
+ return {
336
+ kind: "Unknown",
337
+ text: member.getText()
338
+ };
339
+ }
340
+ });
341
+ }
342
+ analyzeTypeNode(typeNode, checker) {
343
+ switch (typeNode.kind) {
344
+ case ts.SyntaxKind.NumericLiteral: {
345
+ return {
346
+ kind: 'NumericLiteral',
347
+ text: typeNode.getText(),
348
+ };
349
+ }
350
+ case ts.SyntaxKind.StringLiteral: {
351
+ return {
352
+ kind: 'StringLiteral',
353
+ text: typeNode.getText(),
354
+ };
355
+ }
356
+ case ts.SyntaxKind.FunctionType: {
357
+ const tn = typeNode;
358
+ return {
359
+ kind: "Function",
360
+ text: tn.getText(),
361
+ parameters: tn.parameters.map(parameter => {
362
+ return {
363
+ name: parameter.name.getText(),
364
+ optional: !!parameter.questionToken,
365
+ type: parameter.type ? this.analyzeTypeNode(parameter.type, checker) : { kind: "Any", text: "any" }
366
+ };
367
+ }),
368
+ returnType: tn.type ? this.analyzeTypeNode(tn.type, checker) : undefined
369
+ };
370
+ }
371
+ case ts.SyntaxKind.ArrayType: {
372
+ const tn = typeNode;
373
+ return {
374
+ kind: 'Array',
375
+ text: typeNode.getText(),
376
+ constituents: [this.analyzeTypeNode(tn.elementType, checker)]
377
+ };
378
+ }
379
+ case ts.SyntaxKind.TupleType: {
380
+ const tn = typeNode;
381
+ const elements = tn.elements.map(element => {
382
+ if (ts.isRestTypeNode(element)) {
383
+ return {
384
+ kind: 'RestElement',
385
+ text: element.getText(),
386
+ type: this.analyzeTypeNode(element.type, checker)
387
+ };
388
+ }
389
+ else {
390
+ return this.analyzeTypeNode(element, checker);
391
+ }
392
+ });
393
+ return {
394
+ kind: 'Tuple',
395
+ text: typeNode.getText(),
396
+ constituents: elements
397
+ };
398
+ }
399
+ case ts.SyntaxKind.UnionType: {
400
+ const tn = typeNode;
401
+ return {
402
+ kind: "Union",
403
+ text: tn.getText(),
404
+ constituents: tn.types.map(typ => {
405
+ return this.analyzeTypeNode(typ, checker);
406
+ })
407
+ };
408
+ }
409
+ case ts.SyntaxKind.IntersectionType: {
410
+ const tn = typeNode;
411
+ return {
412
+ kind: "Intersection",
413
+ text: tn.getText(),
414
+ constituents: tn.types.map(typ => {
415
+ return this.analyzeTypeNode(typ, checker);
416
+ })
417
+ };
418
+ }
419
+ case ts.SyntaxKind.TypeLiteral: {
420
+ const tn = typeNode;
421
+ return {
422
+ kind: "Object",
423
+ text: tn.getText(),
424
+ constituents: this.handleMembers(tn.members, checker)
425
+ };
426
+ }
427
+ case ts.SyntaxKind.TypeReference: {
428
+ const tn = typeNode;
429
+ const symbol = checker.getSymbolAtLocation(tn.typeName);
430
+ let typeAliasAnalysis = { kind: 'TypeReference', text: typeNode.getText() };
431
+ if (symbol && symbol.declarations) {
432
+ const declaration = symbol.declarations[0];
433
+ if (ts.isTypeAliasDeclaration(declaration)) {
434
+ const typeAlias = declaration;
435
+ if (typeAlias.type) {
436
+ typeAliasAnalysis = Object.assign(Object.assign({}, typeAliasAnalysis), { kind: `TypeReference of TypeAliasDeclaration`, constituents: [this.analyzeTypeNode(typeAlias.type, checker)] });
437
+ }
438
+ }
439
+ else if (ts.isInterfaceDeclaration(declaration)) {
440
+ const interfaceDecl = declaration;
441
+ if (interfaceDecl.members) {
442
+ typeAliasAnalysis = Object.assign(Object.assign({}, typeAliasAnalysis), { kind: `TypeReference of InterfaceDeclaration`, constituents: this.handleMembers(interfaceDecl.members, checker) });
443
+ }
444
+ }
445
+ else if (ts.isClassDeclaration(declaration)) {
446
+ const classDecl = declaration;
447
+ if (classDecl.members) {
448
+ typeAliasAnalysis = Object.assign(Object.assign({}, typeAliasAnalysis), { kind: `TypeReference of ClassDeclaration`, constituents: this.handleMembers(classDecl.members, checker) });
449
+ if (classDecl.heritageClauses) {
450
+ typeAliasAnalysis = Object.assign(Object.assign({}, typeAliasAnalysis), { heritage: classDecl.heritageClauses.map(heritageClause => {
451
+ return heritageClause.types.map(typ => {
452
+ return this.analyzeTypeNode(typ, checker);
453
+ });
454
+ }) });
455
+ }
456
+ }
457
+ }
458
+ }
459
+ return typeAliasAnalysis;
460
+ }
461
+ }
462
+ return {
463
+ kind: ts.SyntaxKind[typeNode.kind],
464
+ text: typeNode.getText()
465
+ };
466
+ }
467
+ analyzeTypeString(typeString, program = this.createProgramFromSource("")) {
468
+ const sourceFile = ts.createSourceFile('temp.ts', `type T = ${typeString};`, ts.ScriptTarget.Latest, true);
469
+ let typeNode;
470
+ ts.forEachChild(sourceFile, node => {
471
+ if (ts.isTypeAliasDeclaration(node)) {
472
+ typeNode = node.type;
473
+ }
474
+ });
475
+ if (!typeNode) {
476
+ throw new Error('Failed to parse type string');
477
+ }
478
+ const checker = program.getTypeChecker();
479
+ return this.analyzeTypeNode(typeNode, checker);
480
+ }
481
+ createProgramFromSource(content) {
482
+ const fileName = 'test.ts';
483
+ const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true);
484
+ const host = ts.createCompilerHost({});
485
+ host.getSourceFile = (fileName) => (fileName === 'test.ts' ? sourceFile : undefined);
486
+ const program = ts.createProgram([fileName], {}, host);
487
+ return program;
488
+ }
489
+ isPrimitive2(typeAnalysisResult) {
490
+ const re = /(.*)Keyword/;
491
+ return typeAnalysisResult.kind.match(re);
492
+ }
493
+ isFunction2(typeAnalysisResult) {
494
+ return typeAnalysisResult.kind === "Function";
495
+ }
496
+ isTuple2(typeAnalysisResult) {
497
+ return typeAnalysisResult.kind === "Tuple";
498
+ }
499
+ isObject2(typeAnalysisResult) {
500
+ return typeAnalysisResult.kind === "Object";
501
+ }
502
+ isUnion2(typeAnalysisResult) {
503
+ return typeAnalysisResult.kind === "Union";
504
+ }
505
+ isArray2(typeAnalysisResult) {
506
+ return typeAnalysisResult.kind === "Array";
507
+ }
508
+ isTypeAlias2(typeAnalysisResult) {
509
+ return typeAnalysisResult.kind === "TypeReference";
510
+ }
511
+ }
512
+ exports.TypeScriptTypeChecker = TypeScriptTypeChecker;
@@ -0,0 +1,40 @@
1
+ import { relevantTypeObject, varsObject, typesObject, typesQueryResult, varsQueryResult, relevantTypeQueryResult, typesAndLocationsQueryResult, Language } from "./types";
2
+ declare const indexOfRegexGroup: (match: RegExpMatchArray, n: number) => number;
3
+ declare const formatTypeSpan: (typeSpan: string) => string;
4
+ declare const extractSnippet: (documentContent: string, start: {
5
+ line: number;
6
+ character: number;
7
+ }, end: {
8
+ line: number;
9
+ character: number;
10
+ }) => string;
11
+ declare const isTuple: (typeSpan: string) => boolean;
12
+ declare const isUnion: (typeSpan: string) => boolean;
13
+ declare const isArray: (typeSpan: string) => boolean;
14
+ declare const isObject: (typeSpan: string) => boolean;
15
+ declare const isFunction: (typeSpan: string) => boolean;
16
+ declare const isPrimitive: (typeSpan: string) => boolean;
17
+ declare const isTypeAlias: (typeSpan: string) => boolean;
18
+ declare const escapeQuotes: (typeSpan: string) => string;
19
+ declare const parseTypeArrayString: (typeStr: string) => string[];
20
+ declare const removeLines: (fileContent: string) => string[];
21
+ declare const parseCodeQLRelevantTypes: (table: relevantTypeQueryResult) => Map<string, relevantTypeObject>;
22
+ declare const parseCodeQLVars: (table: varsQueryResult) => Map<string, varsObject>;
23
+ declare const parseCodeQLTypes: (table: typesQueryResult) => typesObject[];
24
+ declare const parseCodeQLLocationsAndTypes: (table: typesAndLocationsQueryResult) => Map<string, string[]>;
25
+ declare const parseCodeQLTypesAndLocations: (table: typesAndLocationsQueryResult) => Map<string, string>;
26
+ declare const isQLFunction: (typeQLClass: string) => boolean;
27
+ declare const isQLTuple: (typeQLClass: string) => boolean;
28
+ declare const isQLUnion: (typeQLClass: string) => boolean;
29
+ declare const isQLArray: (typeQLClass: string) => boolean;
30
+ declare const isQLInterface: (typeQLClass: string) => boolean;
31
+ declare const isQLLocalTypeAccess: (typeQLClass: string) => boolean;
32
+ declare const isQLPredefined: (typeQLClass: string) => boolean;
33
+ declare const isQLLiteral: (typeQLClass: string) => boolean;
34
+ declare const isQLKeyword: (typeQLClass: string) => boolean;
35
+ declare const isQLLabel: (typeQLClass: string) => boolean;
36
+ declare const isQLIdentifier: (typeQLClass: string) => boolean;
37
+ declare const supportsHole: (lang: Language) => boolean;
38
+ declare const getAllTSFiles: (dirPath: string, arrayOfFiles?: string[]) => string[];
39
+ declare const getAllOCamlFiles: (dirPath: string, arrayOfFiles?: string[]) => string[];
40
+ export { indexOfRegexGroup, formatTypeSpan, extractSnippet, isTuple, isUnion, isArray, isObject, isFunction, isPrimitive, isTypeAlias, escapeQuotes, parseTypeArrayString, removeLines, parseCodeQLRelevantTypes, parseCodeQLVars, parseCodeQLTypes, parseCodeQLLocationsAndTypes, parseCodeQLTypesAndLocations, isQLFunction, isQLTuple, isQLUnion, isQLArray, isQLInterface, isQLLocalTypeAccess, isQLPredefined, isQLLiteral, isQLKeyword, isQLLabel, isQLIdentifier, supportsHole, getAllTSFiles, getAllOCamlFiles };