@jpoly1219/context-extractor 0.2.8 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/app.d.ts +7 -3
- package/dist/src/app.js +304 -101
- package/dist/src/ast.d.ts +6 -0
- package/dist/src/ast.js +80 -0
- package/dist/src/codeql.js +17 -7
- package/dist/src/constants.js +17 -7
- package/dist/src/core.d.ts +0 -1
- package/dist/src/core.js +17 -7
- package/dist/src/main.d.ts +8 -2
- package/dist/src/main.js +51 -13
- package/dist/src/ocaml-driver.d.ts +55 -5
- package/dist/src/ocaml-driver.js +295 -190
- package/dist/src/ocaml-utils/_build/default/test_parser.bc.cjs +194658 -0
- package/dist/src/runner.js +118 -3
- package/dist/src/tree-sitter-files/queries/hole-queries/typescript.scm +36 -0
- package/dist/src/tree-sitter-files/queries/relevant-headers-queries/typescript-get-toplevel-headers.scm +22 -0
- package/dist/src/tree-sitter-files/queries/relevant-types-queries/typescript-extract-identifiers.scm +10 -0
- package/dist/src/tree-sitter-files/queries/relevant-types-queries/typescript-find-typedecl-given-typeidentifier.scm +11 -0
- package/dist/src/tree-sitter-files/wasms/tree-sitter-ocaml.wasm +0 -0
- package/dist/src/tree-sitter-files/wasms/tree-sitter-typescript.wasm +0 -0
- package/dist/src/tree-sitter-files/wasms/tree-sitter.wasm +0 -0
- package/dist/src/tree-sitter.d.ts +40 -0
- package/dist/src/tree-sitter.js +311 -0
- package/dist/src/types.d.ts +79 -9
- package/dist/src/types.js +1 -6
- package/dist/src/typescript-driver.d.ts +81 -13
- package/dist/src/typescript-driver.js +1123 -237
- package/dist/src/typescript-type-checker.d.ts +6 -2
- package/dist/src/typescript-type-checker.js +222 -10
- package/dist/src/utils.d.ts +11 -1
- package/dist/src/utils.js +87 -10
- package/dist/src/vscode-ide.d.ts +29 -0
- package/dist/src/vscode-ide.js +161 -0
- package/package.json +12 -6
package/dist/src/types.d.ts
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
import { LspClient, Range } from "../ts-lsp-client-dist/src/main";
|
2
|
+
import * as fs from "fs";
|
3
|
+
import { SyntaxNode, Tree } from "web-tree-sitter";
|
4
|
+
interface Position {
|
5
|
+
line: number;
|
6
|
+
character: number;
|
7
|
+
}
|
2
8
|
interface relevantTypeObject {
|
3
9
|
typeAliasDeclaration: string;
|
4
10
|
typeName: string;
|
@@ -61,8 +67,36 @@ interface typesAndLocationsQueryResult {
|
|
61
67
|
};
|
62
68
|
}
|
63
69
|
interface LanguageDriver {
|
64
|
-
init: (lspClient: LspClient, sketchPath: string) => Promise<void>;
|
65
|
-
|
70
|
+
init: (lspClient: LspClient | null, sketchPath: string) => Promise<void>;
|
71
|
+
injectHole: (sketchPath: string) => void;
|
72
|
+
getHoleContext: (lspClient: LspClient | null, sketchFilePath: string, logStream: fs.WriteStream | null) => Promise<{
|
73
|
+
fullHoverResult: string;
|
74
|
+
functionName: string;
|
75
|
+
functionTypeSpan: string;
|
76
|
+
linePosition: number;
|
77
|
+
characterPosition: number;
|
78
|
+
holeTypeDefLinePos: number;
|
79
|
+
holeTypeDefCharPos: number;
|
80
|
+
range: Range;
|
81
|
+
source: string;
|
82
|
+
trueHoleFunction?: string;
|
83
|
+
}>;
|
84
|
+
getHoleContextWithCompilerAPI: (sketchFilePath: string, logStream: fs.WriteStream | null) => Promise<{
|
85
|
+
fullHoverResult: string;
|
86
|
+
functionName: string;
|
87
|
+
functionTypeSpan: string;
|
88
|
+
linePosition: number;
|
89
|
+
characterPosition: number;
|
90
|
+
holeTypeDefLinePos: number;
|
91
|
+
holeTypeDefCharPos: number;
|
92
|
+
range: Range;
|
93
|
+
source: string;
|
94
|
+
trueHoleFunction?: string;
|
95
|
+
}>;
|
96
|
+
getHoleContextWithTreesitter: (sketchFilePath: string, cursorPosition: {
|
97
|
+
line: number;
|
98
|
+
character: number;
|
99
|
+
}, logStream: fs.WriteStream | null) => Promise<{
|
66
100
|
fullHoverResult: string;
|
67
101
|
functionName: string;
|
68
102
|
functionTypeSpan: string;
|
@@ -74,8 +108,13 @@ interface LanguageDriver {
|
|
74
108
|
source: string;
|
75
109
|
trueHoleFunction?: string;
|
76
110
|
}>;
|
77
|
-
extractRelevantTypes: (lspClient: LspClient, fullHoverResult: string, typeName: string, startLine: number, foundSoFar: Map<string, TypeSpanAndSourceFile>, currentFile: string, foundContents: Map<string, string
|
78
|
-
|
111
|
+
extractRelevantTypes: (lspClient: LspClient | null, fullHoverResult: string, typeName: string, startLine: number, foundSoFar: Map<string, TypeSpanAndSourceFile>, currentFile: string, foundContents: Map<string, string>, logStream: fs.WriteStream | null) => Promise<Map<string, TypeSpanAndSourceFile>>;
|
112
|
+
extractRelevantTypesWithCompilerAPI: (fullHoverResult: string, typeName: string, linePosition: number, characterPosition: number, foundSoFar: Map<string, TypeSpanAndSourceFile>, currentFile: string, foundContents: Map<string, string>, logStream: fs.WriteStream | null) => Promise<Map<string, TypeSpanAndSourceFile>>;
|
113
|
+
extractRelevantTypesWithTreesitter: (lspClient: LspClient | null, fullHoverResult: string, typeName: string, startLine: number, foundSoFar: Map<string, TypeSpanAndSourceFileAndAst>, // identifier -> [full hover result, source]
|
114
|
+
currentFile: string, foundContents: Map<string, string>, // uri -> contents
|
115
|
+
logStream: fs.WriteStream | null) => Promise<Map<string, TypeSpanAndSourceFileAndAst>>;
|
116
|
+
extractRelevantHeaders: (lspClient: LspClient | null, sources: string[], relevantTypes: Map<string, TypeSpanAndSourceFile>, holeType: string, projectRoot: string) => Promise<Set<TypeSpanAndSourceFile>>;
|
117
|
+
extractRelevantHeadersWithTreesitter: (_: LspClient | null, sources: string[], relevantTypes: Map<string, TypeSpanAndSourceFileAndAst>, holeType: string, holeIdentifier: string, projectRoot: string) => Promise<Set<TypeSpanAndSourceFile>>;
|
79
118
|
}
|
80
119
|
type Filepath = string;
|
81
120
|
type RelevantType = string;
|
@@ -85,10 +124,7 @@ interface Context {
|
|
85
124
|
relevantTypes: Map<Filepath, RelevantType[]>;
|
86
125
|
relevantHeaders: Map<Filepath, RelevantHeader[]>;
|
87
126
|
}
|
88
|
-
|
89
|
-
TypeScript = 0,
|
90
|
-
OCaml = 1
|
91
|
-
}
|
127
|
+
type Language = "typescript" | "ocaml";
|
92
128
|
interface TypeChecker {
|
93
129
|
getTypeContextFromDecl: (typeDecl: string) => {
|
94
130
|
identifier: string;
|
@@ -99,6 +135,9 @@ interface TypeSpanAndSourceFile {
|
|
99
135
|
typeSpan: string;
|
100
136
|
sourceFile: string;
|
101
137
|
}
|
138
|
+
interface TypeSpanAndSourceFileAndAst extends TypeSpanAndSourceFile {
|
139
|
+
ast: Tree;
|
140
|
+
}
|
102
141
|
declare enum Model {
|
103
142
|
None = 0,
|
104
143
|
GPT4 = "gpt4",
|
@@ -132,4 +171,35 @@ interface ParameterAnalysis {
|
|
132
171
|
optional: boolean;
|
133
172
|
type: TypeAnalysis;
|
134
173
|
}
|
135
|
-
|
174
|
+
interface VarFuncDecls {
|
175
|
+
kind: "variable" | "function" | "arrowFunction" | "classMethod";
|
176
|
+
name: string;
|
177
|
+
type: string;
|
178
|
+
returnType?: string;
|
179
|
+
position: {
|
180
|
+
line: number;
|
181
|
+
character: number;
|
182
|
+
};
|
183
|
+
declarationText: string;
|
184
|
+
sourceFile: string;
|
185
|
+
}
|
186
|
+
type IDE = "standalone" | "vscode";
|
187
|
+
type VSCodeBuiltinProvider = ExecuteHoverProvider | ExecuteDefinitionProvider | ExecuteTypeDefinitionProvider | ExecuteDocumentSymbolProvider;
|
188
|
+
type ExecuteHoverProvider = "vscode.executeHoverProvider";
|
189
|
+
type ExecuteDefinitionProvider = "vscode.executeDefinitionProvider";
|
190
|
+
type ExecuteTypeDefinitionProvider = "vscode.executeTypeDefinitionProvider";
|
191
|
+
type ExecuteDocumentSymbolProvider = "vscode.executeDocumentSymbolProvider";
|
192
|
+
interface RangeInFile {
|
193
|
+
filepath: string;
|
194
|
+
range: Range;
|
195
|
+
}
|
196
|
+
interface RangeInFileWithContents extends RangeInFile {
|
197
|
+
contents: string;
|
198
|
+
}
|
199
|
+
interface SymbolWithRange extends RangeInFile {
|
200
|
+
name: string;
|
201
|
+
type: SyntaxNode["type"];
|
202
|
+
content: string;
|
203
|
+
}
|
204
|
+
type FileSymbolMap = Record<string, SymbolWithRange[]>;
|
205
|
+
export { Position, relevantTypeObject, varsObject, typesObject, typeAndLocation, relevantTypeQueryResult, varsQueryResult, typesQueryResult, typesAndLocationsQueryResult, LanguageDriver, Language, TypeChecker, TypeSpanAndSourceFile, TypeSpanAndSourceFileAndAst, Context, Model, LLMConfig, GPT4Config, GPT4PromptComponent, TypeAnalysis, ParameterAnalysis, VarFuncDecls, IDE, VSCodeBuiltinProvider, RangeInFile, RangeInFileWithContents, SymbolWithRange, FileSymbolMap };
|
package/dist/src/types.js
CHANGED
@@ -1,11 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.Model =
|
4
|
-
var Language;
|
5
|
-
(function (Language) {
|
6
|
-
Language[Language["TypeScript"] = 0] = "TypeScript";
|
7
|
-
Language[Language["OCaml"] = 1] = "OCaml";
|
8
|
-
})(Language || (exports.Language = Language = {}));
|
3
|
+
exports.Model = void 0;
|
9
4
|
var Model;
|
10
5
|
(function (Model) {
|
11
6
|
Model[Model["None"] = 0] = "None";
|
@@ -1,10 +1,31 @@
|
|
1
|
+
import * as ts from 'typescript';
|
2
|
+
import * as fs from "fs";
|
1
3
|
import { LspClient, Location, Range, SymbolInformation } from "../ts-lsp-client-dist/src/main";
|
2
|
-
import { LanguageDriver, TypeSpanAndSourceFile } from "./types";
|
4
|
+
import { LanguageDriver, TypeSpanAndSourceFile, TypeAnalysis, IDE, TypeSpanAndSourceFileAndAst } from "./types";
|
3
5
|
import { TypeScriptTypeChecker } from "./typescript-type-checker";
|
6
|
+
import Parser from 'web-tree-sitter';
|
4
7
|
export declare class TypeScriptDriver implements LanguageDriver {
|
8
|
+
ide: IDE;
|
5
9
|
typeChecker: TypeScriptTypeChecker;
|
6
|
-
|
7
|
-
|
10
|
+
vscodeImport: any;
|
11
|
+
tsCompilerProgram: ts.Program;
|
12
|
+
tsCompilerTypeChecker: ts.TypeChecker;
|
13
|
+
constructor(ide: IDE, sources: string[], projectRoot: string);
|
14
|
+
init(lspClient: LspClient | null, sketchPath: string): Promise<void>;
|
15
|
+
injectHole(sketchFilePath: string): void;
|
16
|
+
getHoleContext(lspClient: LspClient | null, sketchFilePath: string, logStream: fs.WriteStream | null): Promise<{
|
17
|
+
fullHoverResult: any;
|
18
|
+
functionName: string;
|
19
|
+
functionTypeSpan: any;
|
20
|
+
linePosition: number;
|
21
|
+
characterPosition: number;
|
22
|
+
holeTypeDefLinePos: number;
|
23
|
+
holeTypeDefCharPos: number;
|
24
|
+
range: any;
|
25
|
+
source: string;
|
26
|
+
trueHoleFunction: string;
|
27
|
+
}>;
|
28
|
+
getHoleContextWithCompilerAPI(sketchFilePath: string, logStream: fs.WriteStream | null): Promise<{
|
8
29
|
fullHoverResult: string;
|
9
30
|
functionName: string;
|
10
31
|
functionTypeSpan: string;
|
@@ -12,22 +33,69 @@ export declare class TypeScriptDriver implements LanguageDriver {
|
|
12
33
|
characterPosition: number;
|
13
34
|
holeTypeDefLinePos: number;
|
14
35
|
holeTypeDefCharPos: number;
|
15
|
-
range:
|
36
|
+
range: {
|
37
|
+
start: {
|
38
|
+
line: number;
|
39
|
+
character: number;
|
40
|
+
};
|
41
|
+
end: {
|
42
|
+
line: number;
|
43
|
+
character: number;
|
44
|
+
};
|
45
|
+
};
|
16
46
|
source: string;
|
17
47
|
trueHoleFunction: string;
|
18
48
|
}>;
|
49
|
+
getHoleContextWithTreesitter(sketchFilePath: string, cursorPosition: {
|
50
|
+
line: number;
|
51
|
+
character: number;
|
52
|
+
}, logStream: fs.WriteStream | null): Promise<{
|
53
|
+
fullHoverResult: string;
|
54
|
+
functionName: string;
|
55
|
+
functionTypeSpan: string;
|
56
|
+
linePosition: number;
|
57
|
+
characterPosition: number;
|
58
|
+
holeTypeDefLinePos: number;
|
59
|
+
holeTypeDefCharPos: number;
|
60
|
+
range: Range;
|
61
|
+
source: string;
|
62
|
+
trueHoleFunction?: string;
|
63
|
+
}>;
|
19
64
|
extractRelevantTypes1(lspClient: LspClient, fullHoverResult: string, typeName: string, startLine: number, endLine: number, foundSoFar: Map<string, TypeSpanAndSourceFile>, // identifier -> [full hover result, source]
|
20
65
|
currentFile: string, foundTypeDefinitions: Map<string, Location[]>, foundSymbols: Map<string, SymbolInformation[]>): Promise<Map<string, TypeSpanAndSourceFile>>;
|
21
|
-
extractRelevantTypes(lspClient: LspClient, fullHoverResult: string, typeName: string, startLine: number, foundSoFar: Map<string, TypeSpanAndSourceFile>, // identifier -> [full hover result, source]
|
22
|
-
currentFile: string, foundContents: Map<string, string
|
23
|
-
|
66
|
+
extractRelevantTypes(lspClient: LspClient | null, fullHoverResult: string, typeName: string, startLine: number, foundSoFar: Map<string, TypeSpanAndSourceFile>, // identifier -> [full hover result, source]
|
67
|
+
currentFile: string, foundContents: Map<string, string>, // uri -> contents
|
68
|
+
logStream: fs.WriteStream | null): Promise<Map<string, TypeSpanAndSourceFile>>;
|
69
|
+
extractRelevantTypesWithTreesitter(lspClient: LspClient | null, fullHoverResult: string, typeName: string, startLine: number, foundSoFar: Map<string, TypeSpanAndSourceFileAndAst>, // identifier -> [full hover result, source]
|
70
|
+
currentFile: string, foundContents: Map<string, string>, // uri -> contents
|
71
|
+
logStream: fs.WriteStream | null): Promise<Map<string, TypeSpanAndSourceFileAndAst>>;
|
72
|
+
extractRelevantTypesHelper(lspClient: LspClient | null, fullHoverResult: string, typeName: string, startLine: number, foundSoFar: Map<string, TypeSpanAndSourceFile>, // identifier -> [full hover result, source]
|
73
|
+
currentFile: string, foundContents: Map<string, string>, // uri -> contents
|
74
|
+
layer: number): Promise<void>;
|
75
|
+
extractRelevantTypesWithCompilerAPI(fullHoverResult: string, typeName: string, linePosition: number, characterPosition: number, foundSoFar: Map<string, TypeSpanAndSourceFile>, // identifier -> [full hover result, source]
|
76
|
+
currentFile: string, foundContents: Map<string, string>, // uri -> contents
|
77
|
+
logStream: fs.WriteStream | null): Promise<Map<string, TypeSpanAndSourceFile>>;
|
78
|
+
extractRelevantTypesHelperWithCompilerAPI(fullHoverResult: string, typeName: string, linePosition: number, characterPosition: number, foundSoFar: Map<string, TypeSpanAndSourceFile>, // identifier -> [full hover result, source]
|
79
|
+
currentFile: string, foundContents: Map<string, string>, // uri -> contents
|
80
|
+
layer: number): Promise<void>;
|
81
|
+
extractRelevantTypesHelperWithTreesitter(lspClient: LspClient | null, fullHoverResult: string, typeName: string, startLine: number, foundSoFar: Map<string, TypeSpanAndSourceFileAndAst>, // identifier -> [full hover result, source]
|
24
82
|
currentFile: string, foundContents: Map<string, string>, // uri -> contents
|
25
83
|
layer: number): Promise<void>;
|
26
|
-
extractRelevantHeaders(_: LspClient, sources: string[], relevantTypes: Map<string, TypeSpanAndSourceFile>, holeType: string): Promise<Set<TypeSpanAndSourceFile>>;
|
27
|
-
generateTargetTypes(relevantTypes: Map<string, TypeSpanAndSourceFile>, holeType: string): Set<string>;
|
28
|
-
generateTargetTypesHelper(relevantTypes: Map<string, TypeSpanAndSourceFile>, currType: string, targetTypes: Set<string
|
29
|
-
extractRelevantHeadersHelper(typeSpan: string, targetTypes: Set<string>, relevantTypes: Map<string, TypeSpanAndSourceFile>, relevantContext: Set<TypeSpanAndSourceFile>, line: string, source: string, relevantContextMap: Map<string, TypeSpanAndSourceFile>, tag: boolean, trace: string[], foundNormalForms: Map<string, string
|
30
|
-
|
84
|
+
extractRelevantHeaders(_: LspClient | null, sources: string[], relevantTypes: Map<string, TypeSpanAndSourceFile>, holeType: string, projectRoot: string): Promise<Set<TypeSpanAndSourceFile>>;
|
85
|
+
generateTargetTypes(relevantTypes: Map<string, TypeSpanAndSourceFile>, holeType: string, program: ts.Program, checker: ts.TypeChecker): Set<string>;
|
86
|
+
generateTargetTypesHelper(relevantTypes: Map<string, TypeSpanAndSourceFile>, currType: string, targetTypes: Set<string>, program: ts.Program, checker: ts.TypeChecker): void;
|
87
|
+
extractRelevantHeadersHelper(typeSpan: string, targetTypes: Set<string>, relevantTypes: Map<string, TypeSpanAndSourceFile>, relevantContext: Set<TypeSpanAndSourceFile>, line: string, source: string, relevantContextMap: Map<string, TypeSpanAndSourceFile>, tag: boolean, trace: string[], foundNormalForms: Map<string, string>, foundTypeAnalysisResults: Map<string, TypeAnalysis>, // filename+typeSpan -> typeAnalysisResult
|
88
|
+
program: ts.Program, checker: ts.TypeChecker): void;
|
89
|
+
isTypeEquivalent(t1: string, t2: string, relevantTypes: Map<string, TypeSpanAndSourceFile>, foundNormalForms: Map<string, string>, program: ts.Program, checker: ts.TypeChecker): boolean;
|
31
90
|
normalize(typeSpan: string, relevantTypes: Map<string, TypeSpanAndSourceFile>): string;
|
32
|
-
normalize2(typeSpan: string, relevantTypes: Map<string, TypeSpanAndSourceFile
|
91
|
+
normalize2(typeSpan: string, relevantTypes: Map<string, TypeSpanAndSourceFile>, program: ts.Program, checker: ts.TypeChecker): string;
|
92
|
+
extractRelevantHeadersHelper2(declText: string, typeSpan: string, targetTypes: Set<string>, relevantTypes: Map<string, TypeSpanAndSourceFile>, relevantContext: Set<TypeSpanAndSourceFile>, source: string, relevantContextMap: Map<string, TypeSpanAndSourceFile>, trace: string[], foundNormalForms: Map<string, string>, foundTypeAnalysisResults: Map<string, TypeAnalysis>, // filename+typeSpan -> typeAnalysisResult
|
93
|
+
program: ts.Program, checker: ts.TypeChecker): void;
|
94
|
+
extractRelevantHeadersWithTreesitter(_: LspClient | null, sources: string[], relevantTypes: Map<string, TypeSpanAndSourceFileAndAst>, holeType: string, holeIdentifier: string, projectRoot: string): Promise<Set<TypeSpanAndSourceFile>>;
|
95
|
+
extractRelevantHeadersWithTreesitterHelper(originalDeclText: string, node: Parser.SyntaxNode, targetTypes: Set<Parser.SyntaxNode>, relevantTypes: Map<string, TypeSpanAndSourceFileAndAst>, relevantContext: Set<TypeSpanAndSourceFile>, relevantContextMap: Map<string, TypeSpanAndSourceFile>, foundNormalForms: Map<string, string>, source: string): Promise<void>;
|
96
|
+
generateTargetTypesWithTreesitter(relevantTypes: Map<string, TypeSpanAndSourceFileAndAst>, holeType: string, holeIdentifier: string): Promise<Set<Parser.SyntaxNode>>;
|
97
|
+
unwrapToBaseType(node: Parser.SyntaxNode): Parser.SyntaxNode;
|
98
|
+
generateTargetTypesWithTreesitterHelper(relevantTypes: Map<string, TypeSpanAndSourceFileAndAst>, currType: string, targetTypes: Set<Parser.SyntaxNode>, node: Parser.SyntaxNode | null): Promise<void>;
|
99
|
+
isTypeEquivalentWithTreesitter(node: Parser.SyntaxNode, typ: Parser.SyntaxNode, relevantTypes: Map<string, TypeSpanAndSourceFileAndAst>, foundNormalForms: Map<string, string>): Promise<boolean>;
|
100
|
+
normalizeWithTreesitter(node: Parser.SyntaxNode, relevantTypes: Map<string, TypeSpanAndSourceFileAndAst>): Promise<string>;
|
33
101
|
}
|