@stupidloud/codegraph 0.7.7
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/LICENSE +21 -0
- package/README.md +482 -0
- package/dist/bin/codegraph.d.ts +21 -0
- package/dist/bin/codegraph.d.ts.map +1 -0
- package/dist/bin/codegraph.js +1296 -0
- package/dist/bin/codegraph.js.map +1 -0
- package/dist/bin/node-version-check.d.ts +17 -0
- package/dist/bin/node-version-check.d.ts.map +1 -0
- package/dist/bin/node-version-check.js +39 -0
- package/dist/bin/node-version-check.js.map +1 -0
- package/dist/bin/uninstall.d.ts +14 -0
- package/dist/bin/uninstall.d.ts.map +1 -0
- package/dist/bin/uninstall.js +148 -0
- package/dist/bin/uninstall.js.map +1 -0
- package/dist/config.d.ts +51 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +342 -0
- package/dist/config.js.map +1 -0
- package/dist/context/formatter.d.ts +30 -0
- package/dist/context/formatter.d.ts.map +1 -0
- package/dist/context/formatter.js +244 -0
- package/dist/context/formatter.js.map +1 -0
- package/dist/context/index.d.ts +99 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +1075 -0
- package/dist/context/index.js.map +1 -0
- package/dist/db/index.d.ts +72 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +200 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +44 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +160 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/queries.d.ts +253 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +1202 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.sql +169 -0
- package/dist/db/sqlite-adapter.d.ts +52 -0
- package/dist/db/sqlite-adapter.d.ts.map +1 -0
- package/dist/db/sqlite-adapter.js +237 -0
- package/dist/db/sqlite-adapter.js.map +1 -0
- package/dist/directory.d.ts +57 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +264 -0
- package/dist/directory.js.map +1 -0
- package/dist/errors.d.ts +136 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +219 -0
- package/dist/errors.js.map +1 -0
- package/dist/extraction/dfm-extractor.d.ts +31 -0
- package/dist/extraction/dfm-extractor.d.ts.map +1 -0
- package/dist/extraction/dfm-extractor.js +151 -0
- package/dist/extraction/dfm-extractor.js.map +1 -0
- package/dist/extraction/grammars.d.ts +78 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +322 -0
- package/dist/extraction/grammars.js.map +1 -0
- package/dist/extraction/index.d.ts +130 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +1279 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/languages/c-cpp.d.ts +4 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
- package/dist/extraction/languages/c-cpp.js +126 -0
- package/dist/extraction/languages/c-cpp.js.map +1 -0
- package/dist/extraction/languages/csharp.d.ts +3 -0
- package/dist/extraction/languages/csharp.d.ts.map +1 -0
- package/dist/extraction/languages/csharp.js +72 -0
- package/dist/extraction/languages/csharp.js.map +1 -0
- package/dist/extraction/languages/dart.d.ts +3 -0
- package/dist/extraction/languages/dart.d.ts.map +1 -0
- package/dist/extraction/languages/dart.js +192 -0
- package/dist/extraction/languages/dart.js.map +1 -0
- package/dist/extraction/languages/go.d.ts +3 -0
- package/dist/extraction/languages/go.d.ts.map +1 -0
- package/dist/extraction/languages/go.js +58 -0
- package/dist/extraction/languages/go.js.map +1 -0
- package/dist/extraction/languages/index.d.ts +10 -0
- package/dist/extraction/languages/index.d.ts.map +1 -0
- package/dist/extraction/languages/index.js +45 -0
- package/dist/extraction/languages/index.js.map +1 -0
- package/dist/extraction/languages/java.d.ts +3 -0
- package/dist/extraction/languages/java.d.ts.map +1 -0
- package/dist/extraction/languages/java.js +64 -0
- package/dist/extraction/languages/java.js.map +1 -0
- package/dist/extraction/languages/javascript.d.ts +3 -0
- package/dist/extraction/languages/javascript.d.ts.map +1 -0
- package/dist/extraction/languages/javascript.js +90 -0
- package/dist/extraction/languages/javascript.js.map +1 -0
- package/dist/extraction/languages/kotlin.d.ts +3 -0
- package/dist/extraction/languages/kotlin.d.ts.map +1 -0
- package/dist/extraction/languages/kotlin.js +253 -0
- package/dist/extraction/languages/kotlin.js.map +1 -0
- package/dist/extraction/languages/pascal.d.ts +3 -0
- package/dist/extraction/languages/pascal.d.ts.map +1 -0
- package/dist/extraction/languages/pascal.js +66 -0
- package/dist/extraction/languages/pascal.js.map +1 -0
- package/dist/extraction/languages/php.d.ts +3 -0
- package/dist/extraction/languages/php.d.ts.map +1 -0
- package/dist/extraction/languages/php.js +107 -0
- package/dist/extraction/languages/php.js.map +1 -0
- package/dist/extraction/languages/python.d.ts +3 -0
- package/dist/extraction/languages/python.d.ts.map +1 -0
- package/dist/extraction/languages/python.js +56 -0
- package/dist/extraction/languages/python.js.map +1 -0
- package/dist/extraction/languages/ruby.d.ts +3 -0
- package/dist/extraction/languages/ruby.d.ts.map +1 -0
- package/dist/extraction/languages/ruby.js +114 -0
- package/dist/extraction/languages/ruby.js.map +1 -0
- package/dist/extraction/languages/rust.d.ts +3 -0
- package/dist/extraction/languages/rust.d.ts.map +1 -0
- package/dist/extraction/languages/rust.js +109 -0
- package/dist/extraction/languages/rust.js.map +1 -0
- package/dist/extraction/languages/scala.d.ts +3 -0
- package/dist/extraction/languages/scala.d.ts.map +1 -0
- package/dist/extraction/languages/scala.js +139 -0
- package/dist/extraction/languages/scala.js.map +1 -0
- package/dist/extraction/languages/swift.d.ts +3 -0
- package/dist/extraction/languages/swift.d.ts.map +1 -0
- package/dist/extraction/languages/swift.js +91 -0
- package/dist/extraction/languages/swift.js.map +1 -0
- package/dist/extraction/languages/typescript.d.ts +3 -0
- package/dist/extraction/languages/typescript.d.ts.map +1 -0
- package/dist/extraction/languages/typescript.js +129 -0
- package/dist/extraction/languages/typescript.js.map +1 -0
- package/dist/extraction/liquid-extractor.d.ts +52 -0
- package/dist/extraction/liquid-extractor.d.ts.map +1 -0
- package/dist/extraction/liquid-extractor.js +313 -0
- package/dist/extraction/liquid-extractor.js.map +1 -0
- package/dist/extraction/parse-worker.d.ts +8 -0
- package/dist/extraction/parse-worker.d.ts.map +1 -0
- package/dist/extraction/parse-worker.js +94 -0
- package/dist/extraction/parse-worker.js.map +1 -0
- package/dist/extraction/svelte-extractor.d.ts +56 -0
- package/dist/extraction/svelte-extractor.d.ts.map +1 -0
- package/dist/extraction/svelte-extractor.js +272 -0
- package/dist/extraction/svelte-extractor.js.map +1 -0
- package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-helpers.js +103 -0
- package/dist/extraction/tree-sitter-helpers.js.map +1 -0
- package/dist/extraction/tree-sitter-types.d.ts +179 -0
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-types.js +10 -0
- package/dist/extraction/tree-sitter-types.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts +233 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -0
- package/dist/extraction/tree-sitter.js +2393 -0
- package/dist/extraction/tree-sitter.js.map +1 -0
- package/dist/extraction/vue-extractor.d.ts +36 -0
- package/dist/extraction/vue-extractor.d.ts.map +1 -0
- package/dist/extraction/vue-extractor.js +163 -0
- package/dist/extraction/vue-extractor.js.map +1 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +13 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/queries.d.ts +106 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +366 -0
- package/dist/graph/queries.js.map +1 -0
- package/dist/graph/traversal.d.ts +127 -0
- package/dist/graph/traversal.d.ts.map +1 -0
- package/dist/graph/traversal.js +493 -0
- package/dist/graph/traversal.js.map +1 -0
- package/dist/index.d.ts +504 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +982 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/claude-md-template.d.ts +10 -0
- package/dist/installer/claude-md-template.d.ts.map +1 -0
- package/dist/installer/claude-md-template.js +46 -0
- package/dist/installer/claude-md-template.js.map +1 -0
- package/dist/installer/config-writer.d.ts +36 -0
- package/dist/installer/config-writer.d.ts.map +1 -0
- package/dist/installer/config-writer.js +304 -0
- package/dist/installer/config-writer.js.map +1 -0
- package/dist/installer/index.d.ts +12 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +201 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/mcp/index.d.ts +82 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +330 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +19 -0
- package/dist/mcp/server-instructions.d.ts.map +1 -0
- package/dist/mcp/server-instructions.js +59 -0
- package/dist/mcp/server-instructions.js.map +1 -0
- package/dist/mcp/tools.d.ts +187 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +1250 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/transport.d.ts +89 -0
- package/dist/mcp/transport.d.ts.map +1 -0
- package/dist/mcp/transport.js +170 -0
- package/dist/mcp/transport.js.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.js +225 -0
- package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
- package/dist/resolution/frameworks/csharp.d.ts +8 -0
- package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
- package/dist/resolution/frameworks/csharp.js +213 -0
- package/dist/resolution/frameworks/csharp.js.map +1 -0
- package/dist/resolution/frameworks/express.d.ts +8 -0
- package/dist/resolution/frameworks/express.d.ts.map +1 -0
- package/dist/resolution/frameworks/express.js +225 -0
- package/dist/resolution/frameworks/express.js.map +1 -0
- package/dist/resolution/frameworks/go.d.ts +8 -0
- package/dist/resolution/frameworks/go.d.ts.map +1 -0
- package/dist/resolution/frameworks/go.js +158 -0
- package/dist/resolution/frameworks/go.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +41 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -0
- package/dist/resolution/frameworks/index.js +129 -0
- package/dist/resolution/frameworks/index.js.map +1 -0
- package/dist/resolution/frameworks/java.d.ts +8 -0
- package/dist/resolution/frameworks/java.d.ts.map +1 -0
- package/dist/resolution/frameworks/java.js +177 -0
- package/dist/resolution/frameworks/java.js.map +1 -0
- package/dist/resolution/frameworks/laravel.d.ts +13 -0
- package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
- package/dist/resolution/frameworks/laravel.js +248 -0
- package/dist/resolution/frameworks/laravel.js.map +1 -0
- package/dist/resolution/frameworks/python.d.ts +10 -0
- package/dist/resolution/frameworks/python.d.ts.map +1 -0
- package/dist/resolution/frameworks/python.js +278 -0
- package/dist/resolution/frameworks/python.js.map +1 -0
- package/dist/resolution/frameworks/react.d.ts +8 -0
- package/dist/resolution/frameworks/react.d.ts.map +1 -0
- package/dist/resolution/frameworks/react.js +272 -0
- package/dist/resolution/frameworks/react.js.map +1 -0
- package/dist/resolution/frameworks/ruby.d.ts +8 -0
- package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
- package/dist/resolution/frameworks/ruby.js +198 -0
- package/dist/resolution/frameworks/ruby.js.map +1 -0
- package/dist/resolution/frameworks/rust.d.ts +8 -0
- package/dist/resolution/frameworks/rust.d.ts.map +1 -0
- package/dist/resolution/frameworks/rust.js +207 -0
- package/dist/resolution/frameworks/rust.js.map +1 -0
- package/dist/resolution/frameworks/svelte.d.ts +9 -0
- package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
- package/dist/resolution/frameworks/svelte.js +249 -0
- package/dist/resolution/frameworks/svelte.js.map +1 -0
- package/dist/resolution/frameworks/swift.d.ts +10 -0
- package/dist/resolution/frameworks/swift.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift.js +376 -0
- package/dist/resolution/frameworks/swift.js.map +1 -0
- package/dist/resolution/frameworks/vue.d.ts +9 -0
- package/dist/resolution/frameworks/vue.d.ts.map +1 -0
- package/dist/resolution/frameworks/vue.js +306 -0
- package/dist/resolution/frameworks/vue.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +40 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -0
- package/dist/resolution/import-resolver.js +663 -0
- package/dist/resolution/import-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +106 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +709 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +32 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +384 -0
- package/dist/resolution/name-matcher.js.map +1 -0
- package/dist/resolution/path-aliases.d.ts +68 -0
- package/dist/resolution/path-aliases.d.ts.map +1 -0
- package/dist/resolution/path-aliases.js +238 -0
- package/dist/resolution/path-aliases.js.map +1 -0
- package/dist/resolution/strip-comments.d.ts +27 -0
- package/dist/resolution/strip-comments.d.ts.map +1 -0
- package/dist/resolution/strip-comments.js +441 -0
- package/dist/resolution/strip-comments.js.map +1 -0
- package/dist/resolution/types.d.ts +172 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/types.js +8 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/search/query-parser.d.ts +57 -0
- package/dist/search/query-parser.d.ts.map +1 -0
- package/dist/search/query-parser.js +177 -0
- package/dist/search/query-parser.js.map +1 -0
- package/dist/search/query-utils.d.ts +53 -0
- package/dist/search/query-utils.d.ts.map +1 -0
- package/dist/search/query-utils.js +347 -0
- package/dist/search/query-utils.js.map +1 -0
- package/dist/sync/index.d.ts +13 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +17 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/watcher.d.ts +81 -0
- package/dist/sync/watcher.d.ts.map +1 -0
- package/dist/sync/watcher.js +184 -0
- package/dist/sync/watcher.js.map +1 -0
- package/dist/types.d.ts +438 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +263 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/shimmer-progress.d.ts +11 -0
- package/dist/ui/shimmer-progress.d.ts.map +1 -0
- package/dist/ui/shimmer-progress.js +90 -0
- package/dist/ui/shimmer-progress.js.map +1 -0
- package/dist/ui/shimmer-worker.d.ts +2 -0
- package/dist/ui/shimmer-worker.d.ts.map +1 -0
- package/dist/ui/shimmer-worker.js +112 -0
- package/dist/ui/shimmer-worker.js.map +1 -0
- package/dist/ui/types.d.ts +17 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +3 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/utils.d.ts +205 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +549 -0
- package/dist/utils.js.map +1 -0
- package/dist/vectors/embedder.d.ts +121 -0
- package/dist/vectors/embedder.d.ts.map +1 -0
- package/dist/vectors/embedder.js +237 -0
- package/dist/vectors/embedder.js.map +1 -0
- package/dist/vectors/index.d.ts +9 -0
- package/dist/vectors/index.d.ts.map +1 -0
- package/dist/vectors/index.js +20 -0
- package/dist/vectors/index.js.map +1 -0
- package/dist/vectors/manager.d.ts +124 -0
- package/dist/vectors/manager.d.ts.map +1 -0
- package/dist/vectors/manager.js +322 -0
- package/dist/vectors/manager.js.map +1 -0
- package/dist/vectors/search.d.ts +143 -0
- package/dist/vectors/search.d.ts.map +1 -0
- package/dist/vectors/search.js +460 -0
- package/dist/vectors/search.js.map +1 -0
- package/dist/visualizer/public/index.html +1994 -0
- package/dist/visualizer/server.d.ts +46 -0
- package/dist/visualizer/server.d.ts.map +1 -0
- package/dist/visualizer/server.js +491 -0
- package/dist/visualizer/server.js.map +1 -0
- package/package.json +60 -0
- package/scripts/patch-tree-sitter-dart.js +112 -0
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Per-language comment stripper for framework route extractors.
|
|
4
|
+
*
|
|
5
|
+
* Replaces comment characters and string-literal contents that hide
|
|
6
|
+
* routing-shaped text with spaces (NOT removal) so that source offsets
|
|
7
|
+
* are preserved. This means `match.index` from a regex run on the
|
|
8
|
+
* stripped output still maps to the same line in the original source.
|
|
9
|
+
*
|
|
10
|
+
* Example:
|
|
11
|
+
* Input: "x = 1 # path('/fake/', V)\n real = 2"
|
|
12
|
+
* Output: "x = 1 \n real = 2"
|
|
13
|
+
*
|
|
14
|
+
* Why strip strings/docstrings as well as comments? Python module/class
|
|
15
|
+
* docstrings are a common source of false positives — they often contain
|
|
16
|
+
* `path('/example/', View)` examples in usage docs. We treat triple-quoted
|
|
17
|
+
* strings the same as comments. Single-line strings stay intact (a `#`
|
|
18
|
+
* inside a Python string is NOT a comment).
|
|
19
|
+
*
|
|
20
|
+
* Scope: this is a pragmatic, regex-supporting helper, not a full parser.
|
|
21
|
+
* It does NOT try to detect JS regex literals, Python f-string expressions,
|
|
22
|
+
* or shell-style heredocs. Those edge cases are not load-bearing for the
|
|
23
|
+
* `path(...)`, `Route::get(...)`, `app.get(...)` style patterns that
|
|
24
|
+
* framework extractors scan for.
|
|
25
|
+
*/
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.stripCommentsForRegex = stripCommentsForRegex;
|
|
28
|
+
function stripCommentsForRegex(content, lang) {
|
|
29
|
+
switch (lang) {
|
|
30
|
+
case 'python':
|
|
31
|
+
return stripPython(content);
|
|
32
|
+
case 'ruby':
|
|
33
|
+
return stripRuby(content);
|
|
34
|
+
case 'rust':
|
|
35
|
+
return stripRust(content);
|
|
36
|
+
case 'php':
|
|
37
|
+
return stripPhp(content);
|
|
38
|
+
case 'go':
|
|
39
|
+
return stripGo(content);
|
|
40
|
+
case 'javascript':
|
|
41
|
+
case 'typescript':
|
|
42
|
+
case 'java':
|
|
43
|
+
case 'csharp':
|
|
44
|
+
case 'swift':
|
|
45
|
+
return stripCStyle(content, /* allowSingleQuoteStrings */ lang === 'javascript' || lang === 'typescript');
|
|
46
|
+
default:
|
|
47
|
+
return content;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Replace every char in a slice with spaces, but keep newlines so line
|
|
52
|
+
* numbers computed downstream remain valid.
|
|
53
|
+
*/
|
|
54
|
+
function blankRange(buf, start, end, src) {
|
|
55
|
+
for (let i = start; i < end; i++) {
|
|
56
|
+
buf[i] = src[i] === '\n' ? '\n' : ' ';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// ---------- Python ----------
|
|
60
|
+
function stripPython(src) {
|
|
61
|
+
const out = src.split('');
|
|
62
|
+
let i = 0;
|
|
63
|
+
const n = src.length;
|
|
64
|
+
while (i < n) {
|
|
65
|
+
const c = src[i];
|
|
66
|
+
const c2 = src[i + 1] ?? '';
|
|
67
|
+
const c3 = src[i + 2] ?? '';
|
|
68
|
+
// Triple-quoted string: """...""" or '''...'''
|
|
69
|
+
if ((c === '"' || c === "'") && c2 === c && c3 === c) {
|
|
70
|
+
const quote = c;
|
|
71
|
+
const start = i;
|
|
72
|
+
i += 3;
|
|
73
|
+
while (i < n) {
|
|
74
|
+
if (src[i] === '\\' && i + 1 < n) {
|
|
75
|
+
i += 2;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (src[i] === quote && src[i + 1] === quote && src[i + 2] === quote) {
|
|
79
|
+
i += 3;
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
i++;
|
|
83
|
+
}
|
|
84
|
+
blankRange(out, start, i, src);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// Single-line string: '...' or "..."
|
|
88
|
+
if (c === '"' || c === "'") {
|
|
89
|
+
const quote = c;
|
|
90
|
+
i++;
|
|
91
|
+
while (i < n && src[i] !== quote) {
|
|
92
|
+
if (src[i] === '\\' && i + 1 < n) {
|
|
93
|
+
i += 2;
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (src[i] === '\n')
|
|
97
|
+
break; // unterminated
|
|
98
|
+
i++;
|
|
99
|
+
}
|
|
100
|
+
if (i < n && src[i] === quote)
|
|
101
|
+
i++;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
// Line comment
|
|
105
|
+
if (c === '#') {
|
|
106
|
+
const start = i;
|
|
107
|
+
while (i < n && src[i] !== '\n')
|
|
108
|
+
i++;
|
|
109
|
+
blankRange(out, start, i, src);
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
i++;
|
|
113
|
+
}
|
|
114
|
+
return out.join('');
|
|
115
|
+
}
|
|
116
|
+
// ---------- Ruby ----------
|
|
117
|
+
function stripRuby(src) {
|
|
118
|
+
const out = src.split('');
|
|
119
|
+
let i = 0;
|
|
120
|
+
const n = src.length;
|
|
121
|
+
let atLineStart = true;
|
|
122
|
+
while (i < n) {
|
|
123
|
+
const c = src[i];
|
|
124
|
+
// =begin / =end block comments must be at start of line (after optional whitespace)
|
|
125
|
+
if (atLineStart && c === '=' && src.startsWith('=begin', i)) {
|
|
126
|
+
const start = i;
|
|
127
|
+
// consume to matching =end at line start
|
|
128
|
+
i += '=begin'.length;
|
|
129
|
+
while (i < n) {
|
|
130
|
+
if (src[i] === '\n') {
|
|
131
|
+
// check next line for =end
|
|
132
|
+
let j = i + 1;
|
|
133
|
+
while (j < n && (src[j] === ' ' || src[j] === '\t'))
|
|
134
|
+
j++;
|
|
135
|
+
if (src.startsWith('=end', j)) {
|
|
136
|
+
i = j + '=end'.length;
|
|
137
|
+
// consume rest of that line
|
|
138
|
+
while (i < n && src[i] !== '\n')
|
|
139
|
+
i++;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
i++;
|
|
144
|
+
}
|
|
145
|
+
blankRange(out, start, i, src);
|
|
146
|
+
atLineStart = i > 0 && src[i - 1] === '\n';
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
// String literals
|
|
150
|
+
if (c === '"' || c === "'") {
|
|
151
|
+
const quote = c;
|
|
152
|
+
i++;
|
|
153
|
+
while (i < n && src[i] !== quote) {
|
|
154
|
+
if (src[i] === '\\' && i + 1 < n) {
|
|
155
|
+
i += 2;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (src[i] === '\n')
|
|
159
|
+
break;
|
|
160
|
+
i++;
|
|
161
|
+
}
|
|
162
|
+
if (i < n && src[i] === quote)
|
|
163
|
+
i++;
|
|
164
|
+
atLineStart = false;
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
// Line comment
|
|
168
|
+
if (c === '#') {
|
|
169
|
+
const start = i;
|
|
170
|
+
while (i < n && src[i] !== '\n')
|
|
171
|
+
i++;
|
|
172
|
+
blankRange(out, start, i, src);
|
|
173
|
+
atLineStart = false;
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (c === '\n') {
|
|
177
|
+
atLineStart = true;
|
|
178
|
+
i++;
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
if (c === ' ' || c === '\t') {
|
|
182
|
+
// whitespace doesn't change atLineStart
|
|
183
|
+
i++;
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
atLineStart = false;
|
|
187
|
+
i++;
|
|
188
|
+
}
|
|
189
|
+
return out.join('');
|
|
190
|
+
}
|
|
191
|
+
// ---------- C-style (JS/TS/Java/C#/Swift) ----------
|
|
192
|
+
function stripCStyle(src, allowSingleQuoteStrings) {
|
|
193
|
+
const out = src.split('');
|
|
194
|
+
let i = 0;
|
|
195
|
+
const n = src.length;
|
|
196
|
+
while (i < n) {
|
|
197
|
+
const c = src[i];
|
|
198
|
+
const c2 = src[i + 1] ?? '';
|
|
199
|
+
// Block comment
|
|
200
|
+
if (c === '/' && c2 === '*') {
|
|
201
|
+
const start = i;
|
|
202
|
+
i += 2;
|
|
203
|
+
while (i < n && !(src[i] === '*' && src[i + 1] === '/'))
|
|
204
|
+
i++;
|
|
205
|
+
if (i < n)
|
|
206
|
+
i += 2;
|
|
207
|
+
blankRange(out, start, i, src);
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
// Line comment
|
|
211
|
+
if (c === '/' && c2 === '/') {
|
|
212
|
+
const start = i;
|
|
213
|
+
while (i < n && src[i] !== '\n')
|
|
214
|
+
i++;
|
|
215
|
+
blankRange(out, start, i, src);
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
// String literals
|
|
219
|
+
if (c === '"' || (allowSingleQuoteStrings && c === "'") || c === '`') {
|
|
220
|
+
const quote = c;
|
|
221
|
+
i++;
|
|
222
|
+
while (i < n && src[i] !== quote) {
|
|
223
|
+
if (src[i] === '\\' && i + 1 < n) {
|
|
224
|
+
i += 2;
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
// Template literal can span lines; regular strings break on newline (treat as unterminated)
|
|
228
|
+
if (quote !== '`' && src[i] === '\n')
|
|
229
|
+
break;
|
|
230
|
+
i++;
|
|
231
|
+
}
|
|
232
|
+
if (i < n && src[i] === quote)
|
|
233
|
+
i++;
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
i++;
|
|
237
|
+
}
|
|
238
|
+
return out.join('');
|
|
239
|
+
}
|
|
240
|
+
// ---------- PHP ----------
|
|
241
|
+
function stripPhp(src) {
|
|
242
|
+
const out = src.split('');
|
|
243
|
+
let i = 0;
|
|
244
|
+
const n = src.length;
|
|
245
|
+
while (i < n) {
|
|
246
|
+
const c = src[i];
|
|
247
|
+
const c2 = src[i + 1] ?? '';
|
|
248
|
+
// Block comment
|
|
249
|
+
if (c === '/' && c2 === '*') {
|
|
250
|
+
const start = i;
|
|
251
|
+
i += 2;
|
|
252
|
+
while (i < n && !(src[i] === '*' && src[i + 1] === '/'))
|
|
253
|
+
i++;
|
|
254
|
+
if (i < n)
|
|
255
|
+
i += 2;
|
|
256
|
+
blankRange(out, start, i, src);
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
// // line comment
|
|
260
|
+
if (c === '/' && c2 === '/') {
|
|
261
|
+
const start = i;
|
|
262
|
+
while (i < n && src[i] !== '\n')
|
|
263
|
+
i++;
|
|
264
|
+
blankRange(out, start, i, src);
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
// # line comment (PHP supports both)
|
|
268
|
+
if (c === '#') {
|
|
269
|
+
const start = i;
|
|
270
|
+
while (i < n && src[i] !== '\n')
|
|
271
|
+
i++;
|
|
272
|
+
blankRange(out, start, i, src);
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
// String literals: ', ", ` (PHP doesn't really use backticks for strings,
|
|
276
|
+
// but it does have shell-exec backticks; treating as a string is fine here)
|
|
277
|
+
if (c === '"' || c === "'" || c === '`') {
|
|
278
|
+
const quote = c;
|
|
279
|
+
i++;
|
|
280
|
+
while (i < n && src[i] !== quote) {
|
|
281
|
+
if (src[i] === '\\' && i + 1 < n) {
|
|
282
|
+
i += 2;
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
if (src[i] === '\n')
|
|
286
|
+
break;
|
|
287
|
+
i++;
|
|
288
|
+
}
|
|
289
|
+
if (i < n && src[i] === quote)
|
|
290
|
+
i++;
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
i++;
|
|
294
|
+
}
|
|
295
|
+
return out.join('');
|
|
296
|
+
}
|
|
297
|
+
// ---------- Go ----------
|
|
298
|
+
function stripGo(src) {
|
|
299
|
+
const out = src.split('');
|
|
300
|
+
let i = 0;
|
|
301
|
+
const n = src.length;
|
|
302
|
+
while (i < n) {
|
|
303
|
+
const c = src[i];
|
|
304
|
+
const c2 = src[i + 1] ?? '';
|
|
305
|
+
// Block comment
|
|
306
|
+
if (c === '/' && c2 === '*') {
|
|
307
|
+
const start = i;
|
|
308
|
+
i += 2;
|
|
309
|
+
while (i < n && !(src[i] === '*' && src[i + 1] === '/'))
|
|
310
|
+
i++;
|
|
311
|
+
if (i < n)
|
|
312
|
+
i += 2;
|
|
313
|
+
blankRange(out, start, i, src);
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
// Line comment
|
|
317
|
+
if (c === '/' && c2 === '/') {
|
|
318
|
+
const start = i;
|
|
319
|
+
while (i < n && src[i] !== '\n')
|
|
320
|
+
i++;
|
|
321
|
+
blankRange(out, start, i, src);
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
// Raw string with backticks (no escapes, can span lines)
|
|
325
|
+
if (c === '`') {
|
|
326
|
+
i++;
|
|
327
|
+
while (i < n && src[i] !== '`')
|
|
328
|
+
i++;
|
|
329
|
+
if (i < n)
|
|
330
|
+
i++;
|
|
331
|
+
continue;
|
|
332
|
+
}
|
|
333
|
+
// Interpreted string with double quotes
|
|
334
|
+
if (c === '"') {
|
|
335
|
+
i++;
|
|
336
|
+
while (i < n && src[i] !== '"') {
|
|
337
|
+
if (src[i] === '\\' && i + 1 < n) {
|
|
338
|
+
i += 2;
|
|
339
|
+
continue;
|
|
340
|
+
}
|
|
341
|
+
if (src[i] === '\n')
|
|
342
|
+
break;
|
|
343
|
+
i++;
|
|
344
|
+
}
|
|
345
|
+
if (i < n && src[i] === '"')
|
|
346
|
+
i++;
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
349
|
+
// Rune literal with single quotes (handle as a tiny string)
|
|
350
|
+
if (c === "'") {
|
|
351
|
+
i++;
|
|
352
|
+
while (i < n && src[i] !== "'") {
|
|
353
|
+
if (src[i] === '\\' && i + 1 < n) {
|
|
354
|
+
i += 2;
|
|
355
|
+
continue;
|
|
356
|
+
}
|
|
357
|
+
if (src[i] === '\n')
|
|
358
|
+
break;
|
|
359
|
+
i++;
|
|
360
|
+
}
|
|
361
|
+
if (i < n && src[i] === "'")
|
|
362
|
+
i++;
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
365
|
+
i++;
|
|
366
|
+
}
|
|
367
|
+
return out.join('');
|
|
368
|
+
}
|
|
369
|
+
// ---------- Rust ----------
|
|
370
|
+
function stripRust(src) {
|
|
371
|
+
const out = src.split('');
|
|
372
|
+
let i = 0;
|
|
373
|
+
const n = src.length;
|
|
374
|
+
while (i < n) {
|
|
375
|
+
const c = src[i];
|
|
376
|
+
const c2 = src[i + 1] ?? '';
|
|
377
|
+
// Nested block comment /* ... /* ... */ ... */
|
|
378
|
+
if (c === '/' && c2 === '*') {
|
|
379
|
+
const start = i;
|
|
380
|
+
i += 2;
|
|
381
|
+
let depth = 1;
|
|
382
|
+
while (i < n && depth > 0) {
|
|
383
|
+
if (src[i] === '/' && src[i + 1] === '*') {
|
|
384
|
+
depth++;
|
|
385
|
+
i += 2;
|
|
386
|
+
}
|
|
387
|
+
else if (src[i] === '*' && src[i + 1] === '/') {
|
|
388
|
+
depth--;
|
|
389
|
+
i += 2;
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
i++;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
blankRange(out, start, i, src);
|
|
396
|
+
continue;
|
|
397
|
+
}
|
|
398
|
+
// Line comment
|
|
399
|
+
if (c === '/' && c2 === '/') {
|
|
400
|
+
const start = i;
|
|
401
|
+
while (i < n && src[i] !== '\n')
|
|
402
|
+
i++;
|
|
403
|
+
blankRange(out, start, i, src);
|
|
404
|
+
continue;
|
|
405
|
+
}
|
|
406
|
+
// String literals
|
|
407
|
+
if (c === '"') {
|
|
408
|
+
i++;
|
|
409
|
+
while (i < n && src[i] !== '"') {
|
|
410
|
+
if (src[i] === '\\' && i + 1 < n) {
|
|
411
|
+
i += 2;
|
|
412
|
+
continue;
|
|
413
|
+
}
|
|
414
|
+
i++;
|
|
415
|
+
}
|
|
416
|
+
if (i < n && src[i] === '"')
|
|
417
|
+
i++;
|
|
418
|
+
continue;
|
|
419
|
+
}
|
|
420
|
+
// Char literal — keep simple: skip 'x' or '\x'
|
|
421
|
+
if (c === "'") {
|
|
422
|
+
// Could be a lifetime, e.g. 'a, but those don't contain routing text
|
|
423
|
+
i++;
|
|
424
|
+
while (i < n && src[i] !== "'") {
|
|
425
|
+
if (src[i] === '\\' && i + 1 < n) {
|
|
426
|
+
i += 2;
|
|
427
|
+
continue;
|
|
428
|
+
}
|
|
429
|
+
if (src[i] === '\n')
|
|
430
|
+
break;
|
|
431
|
+
i++;
|
|
432
|
+
}
|
|
433
|
+
if (i < n && src[i] === "'")
|
|
434
|
+
i++;
|
|
435
|
+
continue;
|
|
436
|
+
}
|
|
437
|
+
i++;
|
|
438
|
+
}
|
|
439
|
+
return out.join('');
|
|
440
|
+
}
|
|
441
|
+
//# sourceMappingURL=strip-comments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strip-comments.js","sourceRoot":"","sources":["../../src/resolution/strip-comments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference Resolution Types
|
|
3
|
+
*
|
|
4
|
+
* Types for the reference resolution system.
|
|
5
|
+
*/
|
|
6
|
+
import { EdgeKind, Language, Node } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* An unresolved reference from extraction
|
|
9
|
+
*/
|
|
10
|
+
export interface UnresolvedRef {
|
|
11
|
+
/** ID of the source node containing the reference */
|
|
12
|
+
fromNodeId: string;
|
|
13
|
+
/** The name being referenced */
|
|
14
|
+
referenceName: string;
|
|
15
|
+
/** Type of reference */
|
|
16
|
+
referenceKind: EdgeKind;
|
|
17
|
+
/** Line where reference occurs */
|
|
18
|
+
line: number;
|
|
19
|
+
/** Column where reference occurs */
|
|
20
|
+
column: number;
|
|
21
|
+
/** File path where reference occurs */
|
|
22
|
+
filePath: string;
|
|
23
|
+
/** Language of the source file */
|
|
24
|
+
language: Language;
|
|
25
|
+
/** Possible qualified names it might resolve to */
|
|
26
|
+
candidates?: string[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A resolved reference
|
|
30
|
+
*/
|
|
31
|
+
export interface ResolvedRef {
|
|
32
|
+
/** Original unresolved reference */
|
|
33
|
+
original: UnresolvedRef;
|
|
34
|
+
/** ID of the target node */
|
|
35
|
+
targetNodeId: string;
|
|
36
|
+
/** Confidence score (0-1) */
|
|
37
|
+
confidence: number;
|
|
38
|
+
/** How it was resolved */
|
|
39
|
+
resolvedBy: 'exact-match' | 'import' | 'qualified-name' | 'framework' | 'fuzzy' | 'instance-method' | 'file-path';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Result of resolution attempt
|
|
43
|
+
*/
|
|
44
|
+
export interface ResolutionResult {
|
|
45
|
+
/** Successfully resolved references */
|
|
46
|
+
resolved: ResolvedRef[];
|
|
47
|
+
/** References that couldn't be resolved */
|
|
48
|
+
unresolved: UnresolvedRef[];
|
|
49
|
+
/** Statistics */
|
|
50
|
+
stats: {
|
|
51
|
+
total: number;
|
|
52
|
+
resolved: number;
|
|
53
|
+
unresolved: number;
|
|
54
|
+
byMethod: Record<string, number>;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Context for resolution - provides access to the graph
|
|
59
|
+
*/
|
|
60
|
+
export interface ResolutionContext {
|
|
61
|
+
/** Get all nodes in a file */
|
|
62
|
+
getNodesInFile(filePath: string): Node[];
|
|
63
|
+
/** Get all nodes by name */
|
|
64
|
+
getNodesByName(name: string): Node[];
|
|
65
|
+
/** Get all nodes by qualified name */
|
|
66
|
+
getNodesByQualifiedName(qualifiedName: string): Node[];
|
|
67
|
+
/** Get all nodes of a kind */
|
|
68
|
+
getNodesByKind(kind: Node['kind']): Node[];
|
|
69
|
+
/** Check if a file exists */
|
|
70
|
+
fileExists(filePath: string): boolean;
|
|
71
|
+
/** Read file content */
|
|
72
|
+
readFile(filePath: string): string | null;
|
|
73
|
+
/** Get project root */
|
|
74
|
+
getProjectRoot(): string;
|
|
75
|
+
/** Get all files */
|
|
76
|
+
getAllFiles(): string[];
|
|
77
|
+
/** Get nodes by lowercase name (O(1) lookup for fuzzy matching) */
|
|
78
|
+
getNodesByLowerName(lowerName: string): Node[];
|
|
79
|
+
/** Get cached import mappings for a file */
|
|
80
|
+
getImportMappings(filePath: string, language: Language): ImportMapping[];
|
|
81
|
+
/**
|
|
82
|
+
* Project import-path aliases (tsconfig/jsconfig `paths`). Returns
|
|
83
|
+
* `null` when the project doesn't define any. Cached per resolver
|
|
84
|
+
* instance — safe to call from any resolver code path. Optional so
|
|
85
|
+
* existing test fixtures and external context implementations
|
|
86
|
+
* compile without modification; production resolver implements it.
|
|
87
|
+
*/
|
|
88
|
+
getProjectAliases?(): import('./path-aliases').AliasMap | null;
|
|
89
|
+
/**
|
|
90
|
+
* Re-exports declared by a file (`export { x } from './other'`,
|
|
91
|
+
* `export * from './other'`). Empty array when the file has none.
|
|
92
|
+
* Optional so older callers compile; the import resolver follows
|
|
93
|
+
* re-export chains when this is provided.
|
|
94
|
+
*/
|
|
95
|
+
getReExports?(filePath: string, language: Language): ReExport[];
|
|
96
|
+
/**
|
|
97
|
+
* List immediate subdirectories of `relativePath` (relative to the
|
|
98
|
+
* project root). Returns an empty array when the path doesn't exist
|
|
99
|
+
* or isn't a directory. Used by framework resolvers that need to
|
|
100
|
+
* walk build-system metadata (e.g. Cargo workspace globs). Optional
|
|
101
|
+
* so external context implementations and test fixtures compile
|
|
102
|
+
* without modification.
|
|
103
|
+
*/
|
|
104
|
+
listDirectories?(relativePath: string): string[];
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Result of framework-specific file extraction.
|
|
108
|
+
*/
|
|
109
|
+
export interface FrameworkExtractionResult {
|
|
110
|
+
/** Framework-specific nodes (e.g. routes) */
|
|
111
|
+
nodes: Node[];
|
|
112
|
+
/** Framework-specific unresolved references (e.g. route -> handler) */
|
|
113
|
+
references: UnresolvedRef[];
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Framework-specific resolver
|
|
117
|
+
*/
|
|
118
|
+
export interface FrameworkResolver {
|
|
119
|
+
/** Framework name */
|
|
120
|
+
name: string;
|
|
121
|
+
/** Languages this framework applies to. If omitted, applies to all languages. */
|
|
122
|
+
languages?: Language[];
|
|
123
|
+
/** Detect if project uses this framework (project-level, called once at startup) */
|
|
124
|
+
detect(context: ResolutionContext): boolean;
|
|
125
|
+
/** Resolve a reference using framework-specific patterns */
|
|
126
|
+
resolve(ref: UnresolvedRef, context: ResolutionContext): ResolvedRef | null;
|
|
127
|
+
/**
|
|
128
|
+
* Extract framework-specific nodes and references from a file.
|
|
129
|
+
*
|
|
130
|
+
* Returns route nodes, middleware nodes, etc., plus unresolved references
|
|
131
|
+
* that link those nodes to handlers (view classes, controller methods,
|
|
132
|
+
* included modules). Unresolved references flow into the normal resolution
|
|
133
|
+
* pipeline; the framework's own `resolve()` is one of the strategies tried.
|
|
134
|
+
*/
|
|
135
|
+
extract?(filePath: string, content: string): FrameworkExtractionResult;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Import mapping from a file
|
|
139
|
+
*/
|
|
140
|
+
export interface ImportMapping {
|
|
141
|
+
/** Local name used in the file */
|
|
142
|
+
localName: string;
|
|
143
|
+
/** Original exported name (may differ due to aliasing) */
|
|
144
|
+
exportedName: string;
|
|
145
|
+
/** Source module/path */
|
|
146
|
+
source: string;
|
|
147
|
+
/** Whether it's a default import */
|
|
148
|
+
isDefault: boolean;
|
|
149
|
+
/** Whether it's a namespace import (import * as X) */
|
|
150
|
+
isNamespace: boolean;
|
|
151
|
+
/** Resolved file path (if local) */
|
|
152
|
+
resolvedPath?: string;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Re-export from a file: `export { x } from './other'` or
|
|
156
|
+
* `export * from './other'`. Used by the resolver to chase
|
|
157
|
+
* symbols through barrel files.
|
|
158
|
+
*/
|
|
159
|
+
export type ReExport = {
|
|
160
|
+
kind: 'named';
|
|
161
|
+
/** Name as exported by THIS file. */
|
|
162
|
+
exportedName: string;
|
|
163
|
+
/** Name in the upstream module (differs when renamed: `as`). */
|
|
164
|
+
originalName: string;
|
|
165
|
+
/** Module specifier of the upstream module. */
|
|
166
|
+
source: string;
|
|
167
|
+
} | {
|
|
168
|
+
kind: 'wildcard';
|
|
169
|
+
/** Module specifier of the upstream module. */
|
|
170
|
+
source: string;
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resolution/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/resolution/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|