@getmikk/core 1.8.2 → 1.9.0
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/package.json +3 -1
- package/src/constants.ts +285 -0
- package/src/contract/contract-generator.ts +7 -0
- package/src/contract/index.ts +2 -3
- package/src/contract/lock-compiler.ts +74 -42
- package/src/contract/lock-reader.ts +24 -4
- package/src/contract/schema.ts +27 -1
- package/src/error-handler.ts +430 -0
- package/src/graph/cluster-detector.ts +45 -20
- package/src/graph/confidence-engine.ts +60 -0
- package/src/graph/dead-code-detector.ts +27 -5
- package/src/graph/graph-builder.ts +298 -238
- package/src/graph/impact-analyzer.ts +131 -114
- package/src/graph/index.ts +4 -0
- package/src/graph/memory-manager.ts +345 -0
- package/src/graph/query-engine.ts +79 -0
- package/src/graph/risk-engine.ts +86 -0
- package/src/graph/types.ts +89 -64
- package/src/parser/boundary-checker.ts +3 -1
- package/src/parser/change-detector.ts +99 -0
- package/src/parser/go/go-extractor.ts +28 -9
- package/src/parser/go/go-parser.ts +2 -0
- package/src/parser/index.ts +88 -38
- package/src/parser/javascript/js-extractor.ts +1 -1
- package/src/parser/javascript/js-parser.ts +2 -0
- package/src/parser/oxc-parser.ts +675 -0
- package/src/parser/oxc-resolver.ts +83 -0
- package/src/parser/tree-sitter/parser.ts +27 -15
- package/src/parser/types.ts +100 -73
- package/src/parser/typescript/ts-extractor.ts +241 -537
- package/src/parser/typescript/ts-parser.ts +16 -171
- package/src/parser/typescript/ts-resolver.ts +11 -1
- package/src/search/bm25.ts +5 -2
- package/src/utils/minimatch.ts +1 -1
- package/tests/contract.test.ts +2 -2
- package/tests/dead-code.test.ts +7 -7
- package/tests/esm-resolver.test.ts +75 -0
- package/tests/graph.test.ts +20 -20
- package/tests/helpers.ts +11 -6
- package/tests/impact-classified.test.ts +37 -41
- package/tests/parser.test.ts +7 -5
- package/tests/ts-parser.test.ts +27 -52
- package/test-output.txt +0 -373
package/test-output.txt
DELETED
|
@@ -1,373 +0,0 @@
|
|
|
1
|
-
bun test v1.3.5 (1e86cebd)
|
|
2
|
-
|
|
3
|
-
tests\adr-manager.test.ts:
|
|
4
|
-
(pass) AdrManager > lists decisions
|
|
5
|
-
(pass) AdrManager > gets a decision by id
|
|
6
|
-
(pass) AdrManager > adds a new decision
|
|
7
|
-
(pass) AdrManager > fails to add if id already exists [15.00ms]
|
|
8
|
-
(pass) AdrManager > updates an existing decision
|
|
9
|
-
(pass) AdrManager > fails to update missing decision
|
|
10
|
-
(pass) AdrManager > removes a decision
|
|
11
|
-
|
|
12
|
-
tests\contract.test.ts:
|
|
13
|
-
(pass) MikkContractSchema > validates correct mikk.json
|
|
14
|
-
(pass) MikkContractSchema > rejects mikk.json with missing required fields
|
|
15
|
-
(pass) MikkContractSchema > applies default overwrite mode
|
|
16
|
-
(pass) LockCompiler > compiles a valid lock file
|
|
17
|
-
(pass) LockCompiler > assigns functions to correct modules
|
|
18
|
-
(pass) LockCompiler > computes stable module hash
|
|
19
|
-
(pass) LockCompiler > validates against MikkLockSchema
|
|
20
|
-
(pass) ContractGenerator > generates contract from clusters
|
|
21
|
-
|
|
22
|
-
tests\dead-code.test.ts:
|
|
23
|
-
(pass) DeadCodeDetector > detects uncalled functions
|
|
24
|
-
(pass) DeadCodeDetector > exempts exported functions
|
|
25
|
-
(pass) DeadCodeDetector > exempts entry point name patterns
|
|
26
|
-
(pass) DeadCodeDetector > exempts functions called by exported functions in the same file
|
|
27
|
-
|
|
28
|
-
tests\fs.test.ts:
|
|
29
|
-
(pass) detectProjectLanguage > detects TypeScript from tsconfig.json
|
|
30
|
-
(pass) detectProjectLanguage > detects Rust from Cargo.toml [15.00ms]
|
|
31
|
-
(pass) detectProjectLanguage > detects Go from go.mod
|
|
32
|
-
(pass) detectProjectLanguage > detects Python from pyproject.toml
|
|
33
|
-
(pass) detectProjectLanguage > detects Python from requirements.txt
|
|
34
|
-
(pass) detectProjectLanguage > detects Ruby from Gemfile
|
|
35
|
-
(pass) detectProjectLanguage > detects Java from pom.xml [16.00ms]
|
|
36
|
-
(pass) detectProjectLanguage > detects PHP from composer.json
|
|
37
|
-
(pass) detectProjectLanguage > detects C# from .csproj file
|
|
38
|
-
(pass) detectProjectLanguage > detects C# from .sln file
|
|
39
|
-
(pass) detectProjectLanguage > detects JavaScript from package.json (no tsconfig)
|
|
40
|
-
(pass) detectProjectLanguage > returns unknown for empty directory
|
|
41
|
-
(pass) detectProjectLanguage > prioritises TypeScript over JavaScript
|
|
42
|
-
(pass) getDiscoveryPatterns > returns patterns and ignore for typescript [15.00ms]
|
|
43
|
-
(pass) getDiscoveryPatterns > returns patterns and ignore for javascript
|
|
44
|
-
(pass) getDiscoveryPatterns > returns patterns and ignore for python
|
|
45
|
-
(pass) getDiscoveryPatterns > returns patterns and ignore for go
|
|
46
|
-
(pass) getDiscoveryPatterns > returns patterns and ignore for rust
|
|
47
|
-
(pass) getDiscoveryPatterns > returns patterns and ignore for java
|
|
48
|
-
(pass) getDiscoveryPatterns > returns patterns and ignore for ruby
|
|
49
|
-
(pass) getDiscoveryPatterns > returns patterns and ignore for php
|
|
50
|
-
(pass) getDiscoveryPatterns > returns patterns and ignore for csharp
|
|
51
|
-
(pass) getDiscoveryPatterns > returns patterns and ignore for unknown
|
|
52
|
-
(pass) getDiscoveryPatterns > typescript includes JS files too
|
|
53
|
-
(pass) getDiscoveryPatterns > python patterns include .py
|
|
54
|
-
(pass) getDiscoveryPatterns > all languages ignore .mikk and .git
|
|
55
|
-
(pass) parseMikkIgnore > parses non-empty lines
|
|
56
|
-
(pass) parseMikkIgnore > returns empty array for empty content
|
|
57
|
-
(pass) parseMikkIgnore > strips comments and blank lines
|
|
58
|
-
(pass) parseMikkIgnore > converts trailing-slash directories without path to **/ glob
|
|
59
|
-
(pass) parseMikkIgnore > converts trailing-slash directories with path to ** glob
|
|
60
|
-
(pass) parseMikkIgnore > handles bare file patterns without slash
|
|
61
|
-
|
|
62
|
-
tests\fuzzy-match.test.ts:
|
|
63
|
-
(pass) levenshtein > identical strings → 0
|
|
64
|
-
(pass) levenshtein > empty vs non-empty
|
|
65
|
-
(pass) levenshtein > single char difference
|
|
66
|
-
(pass) levenshtein > completely different strings
|
|
67
|
-
(pass) levenshtein > insertion
|
|
68
|
-
(pass) splitCamelCase > camelCase
|
|
69
|
-
(pass) splitCamelCase > PascalCase
|
|
70
|
-
(pass) splitCamelCase > snake_case
|
|
71
|
-
(pass) splitCamelCase > multiple words
|
|
72
|
-
(pass) extractKeywords > removes stop words
|
|
73
|
-
(pass) extractKeywords > lowercases everything
|
|
74
|
-
(pass) scoreFunctions > exact name match scores highest
|
|
75
|
-
(pass) scoreFunctions > keyword match works
|
|
76
|
-
(pass) scoreFunctions > module match boosts score
|
|
77
|
-
(pass) scoreFunctions > maxResults limits output
|
|
78
|
-
(pass) findFuzzyMatches > finds similar names
|
|
79
|
-
(pass) findFuzzyMatches > finds substring matches
|
|
80
|
-
(pass) findFuzzyMatches > returns empty for very dissimilar terms
|
|
81
|
-
|
|
82
|
-
tests\go-parser.test.ts:
|
|
83
|
-
(pass) GoExtractor > function extraction > extracts top-level exported functions [16.00ms]
|
|
84
|
-
(pass) GoExtractor > function extraction > extracts unexported top-level functions
|
|
85
|
-
(pass) GoExtractor > function extraction > marks exported functions correctly
|
|
86
|
-
(pass) GoExtractor > function extraction > does NOT include methods in extractFunctions()
|
|
87
|
-
(pass) GoExtractor > function extraction > extracts purpose from leading comment
|
|
88
|
-
(pass) GoExtractor > function extraction > extracts params with name and type
|
|
89
|
-
(pass) GoExtractor > function extraction > extracts return type
|
|
90
|
-
(pass) GoExtractor > function extraction > extracts function ID with correct format
|
|
91
|
-
(pass) GoExtractor > function extraction > populates startLine and endLine
|
|
92
|
-
(pass) GoExtractor > function extraction > extracts calls within function body
|
|
93
|
-
(pass) GoExtractor > class extraction (structs) > extracts struct types as classes
|
|
94
|
-
(pass) GoExtractor > class extraction (structs) > groups receiver methods into struct classes
|
|
95
|
-
(pass) GoExtractor > class extraction (structs) > marks exported structs correctly
|
|
96
|
-
(pass) GoExtractor > class extraction (structs) > method IDs use Receiver.Method format
|
|
97
|
-
(pass) GoExtractor > class extraction (structs) > extracts purpose for structs
|
|
98
|
-
(pass) GoExtractor > import extraction > extracts block imports
|
|
99
|
-
(pass) GoExtractor > import extraction > extracts single-line imports
|
|
100
|
-
(pass) GoExtractor > import extraction > uses last path segment as import name
|
|
101
|
-
(pass) GoExtractor > export extraction > only exports uppercase identifiers
|
|
102
|
-
(pass) GoExtractor > route detection > detects Gin routes with correct methods
|
|
103
|
-
(pass) GoExtractor > route detection > extracts route paths correctly
|
|
104
|
-
(pass) GoExtractor > route detection > routes have correct file and line
|
|
105
|
-
(pass) GoExtractor > error handling extraction > detects "if err != nil" patterns
|
|
106
|
-
(pass) GoParser > getSupportedExtensions returns .go
|
|
107
|
-
321 | })
|
|
108
|
-
322 |
|
|
109
|
-
323 | test('parse returns a well-formed ParsedFile', () => {
|
|
110
|
-
324 | const parser = new GoParser()
|
|
111
|
-
325 | const result = parser.parse('auth/service.go', SIMPLE_GO)
|
|
112
|
-
326 | expect(result.path).toBe('auth/service.go')
|
|
113
|
-
^
|
|
114
|
-
error: expect(received).toBe(expected)
|
|
115
|
-
|
|
116
|
-
Expected: "auth/service.go"
|
|
117
|
-
Received: undefined
|
|
118
|
-
|
|
119
|
-
at <anonymous> (C:\Users\Ansh\Desktop\web\Mesh\packages\core\tests\go-parser.test.ts:326:29)
|
|
120
|
-
(fail) GoParser > parse returns a well-formed ParsedFile
|
|
121
|
-
336 |
|
|
122
|
-
337 | test('parse populates functions from a real Go service', () => {
|
|
123
|
-
338 | const parser = new GoParser()
|
|
124
|
-
339 | const result = parser.parse('auth/service.go', SIMPLE_GO)
|
|
125
|
-
340 | // Top-level funcs: hashPassword, keyFunc
|
|
126
|
-
341 | expect(result.functions.some(f => f.name === 'hashPassword')).toBe(true)
|
|
127
|
-
^
|
|
128
|
-
TypeError: undefined is not an object (evaluating 'result.functions.some')
|
|
129
|
-
at <anonymous> (C:\Users\Ansh\Desktop\web\Mesh\packages\core\tests\go-parser.test.ts:341:23)
|
|
130
|
-
(fail) GoParser > parse populates functions from a real Go service
|
|
131
|
-
343 | })
|
|
132
|
-
344 |
|
|
133
|
-
345 | test('parse populates classes for structs with methods', () => {
|
|
134
|
-
346 | const parser = new GoParser()
|
|
135
|
-
347 | const result = parser.parse('auth/service.go', SIMPLE_GO)
|
|
136
|
-
348 | const authService = result.classes.find(c => c.name === 'AuthService')
|
|
137
|
-
^
|
|
138
|
-
TypeError: undefined is not an object (evaluating 'new GoParser().parse("auth/service.go", SIMPLE_GO).classes.find')
|
|
139
|
-
at <anonymous> (C:\Users\Ansh\Desktop\web\Mesh\packages\core\tests\go-parser.test.ts:348:36)
|
|
140
|
-
(fail) GoParser > parse populates classes for structs with methods
|
|
141
|
-
351 | })
|
|
142
|
-
352 |
|
|
143
|
-
353 | test('parse detects routes in a Gin router file', () => {
|
|
144
|
-
354 | const parser = new GoParser()
|
|
145
|
-
355 | const result = parser.parse('api/routes.go', ROUTES_GO)
|
|
146
|
-
356 | expect(result.routes.length).toBeGreaterThanOrEqual(4)
|
|
147
|
-
^
|
|
148
|
-
TypeError: undefined is not an object (evaluating 'result.routes.length')
|
|
149
|
-
at <anonymous> (C:\Users\Ansh\Desktop\web\Mesh\packages\core\tests\go-parser.test.ts:356:23)
|
|
150
|
-
(fail) GoParser > parse detects routes in a Gin router file
|
|
151
|
-
20 | this.modulePath = readModulePath(projectRoot)
|
|
152
|
-
21 | }
|
|
153
|
-
22 |
|
|
154
|
-
23 | /** Resolve a list of imports for a single file */
|
|
155
|
-
24 | resolveAll(imports: ParsedImport[]): ParsedImport[] {
|
|
156
|
-
25 | return imports.map(imp => this.resolve(imp))
|
|
157
|
-
^
|
|
158
|
-
TypeError: undefined is not an object (evaluating 'imports.map')
|
|
159
|
-
at resolveAll (C:\Users\Ansh\Desktop\web\Mesh\packages\core\src\parser\go\go-resolver.ts:25:16)
|
|
160
|
-
at <anonymous> (C:\Users\Ansh\Desktop\web\Mesh\packages\core\src\parser\go\go-parser.ts:34:31)
|
|
161
|
-
at map (1:11)
|
|
162
|
-
at <anonymous> (C:\Users\Ansh\Desktop\web\Mesh\packages\core\tests\go-parser.test.ts:363:33)
|
|
163
|
-
(fail) GoParser > resolveImports passes through without crashing on no go.mod
|
|
164
|
-
|
|
165
|
-
tests\graph.test.ts:
|
|
166
|
-
(pass) GraphBuilder > creates nodes for files
|
|
167
|
-
(pass) GraphBuilder > creates nodes for functions
|
|
168
|
-
(pass) GraphBuilder > creates edges for imports
|
|
169
|
-
(pass) GraphBuilder > creates edges for function calls via imports
|
|
170
|
-
(pass) GraphBuilder > creates containment edges
|
|
171
|
-
(pass) GraphBuilder > builds adjacency maps
|
|
172
|
-
(pass) ImpactAnalyzer > finds direct dependents
|
|
173
|
-
(pass) ImpactAnalyzer > finds transitive dependents [16.00ms]
|
|
174
|
-
(pass) ImpactAnalyzer > reports correct depth
|
|
175
|
-
(pass) ImpactAnalyzer > assigns high confidence for small impacts
|
|
176
|
-
(pass) ImpactAnalyzer > does not include changed nodes in impacted
|
|
177
|
-
(pass) ClusterDetector > groups files by directory
|
|
178
|
-
(pass) ClusterDetector > computes confidence scores
|
|
179
|
-
|
|
180
|
-
tests\hash.test.ts:
|
|
181
|
-
(pass) hashContent > produces consistent hashes
|
|
182
|
-
(pass) hashContent > produces different hashes for different content
|
|
183
|
-
(pass) hashContent > returns 64 character hex string (SHA-256)
|
|
184
|
-
(pass) hashFunctionBody > hashes specific line range
|
|
185
|
-
(pass) computeModuleHash > produces consistent hash regardless of input order
|
|
186
|
-
(pass) computeModuleHash > changes when any file hash changes
|
|
187
|
-
(pass) computeRootHash > produces consistent hash
|
|
188
|
-
|
|
189
|
-
tests\impact-classified.test.ts:
|
|
190
|
-
(pass) ImpactAnalyzer - Classified > classifies impacts based on depth and module boundaries
|
|
191
|
-
(pass) ImpactAnalyzer - Classified > classifies same-module depth-1 impact as HIGH, not CRITICAL
|
|
192
|
-
|
|
193
|
-
tests\js-parser.test.ts:
|
|
194
|
-
(pass) JavaScriptExtractor > CommonJS require() imports > extracts plain require() as default import
|
|
195
|
-
(pass) JavaScriptExtractor > CommonJS require() imports > extracts destructured require() as named imports
|
|
196
|
-
(pass) JavaScriptExtractor > CommonJS require() imports > extracts relative require(./db)
|
|
197
|
-
(pass) JavaScriptExtractor > CommonJS require() imports > does NOT capture require(variable) — dynamic require skipped
|
|
198
|
-
(pass) JavaScriptExtractor > CommonJS require() imports > does NOT capture require.resolve() as an import
|
|
199
|
-
(pass) JavaScriptExtractor > CommonJS module.exports = { } exports > module.exports = { foo, bar } marks names as exports
|
|
200
|
-
(pass) JavaScriptExtractor > module.exports = function pattern > extracts named function expression from module.exports
|
|
201
|
-
(pass) JavaScriptExtractor > module.exports = function pattern > extracted function has correct file and purpose
|
|
202
|
-
(pass) JavaScriptExtractor > module.exports = function pattern > extracts params from module.exports function [16.00ms]
|
|
203
|
-
(pass) JavaScriptExtractor > module.exports = function pattern > detects edge cases (early return guard)
|
|
204
|
-
(pass) JavaScriptExtractor > exports.x = function pattern > extracts function assigned to exports.createUser
|
|
205
|
-
(pass) JavaScriptExtractor > exports.x = function pattern > extracts async arrow function assigned to exports.deleteUser
|
|
206
|
-
(pass) JavaScriptExtractor > exports.x = function pattern > exports.x appears in extractExports()
|
|
207
|
-
(pass) JavaScriptExtractor > exports.x = function pattern > detects throw as error handling
|
|
208
|
-
(pass) JavaScriptExtractor > module.exports = { inline functions } > exports names from object literal
|
|
209
|
-
(pass) JavaScriptExtractor > ESM imports and exports > extracts static ESM imports
|
|
210
|
-
(pass) JavaScriptExtractor > ESM imports and exports > extracts named ESM function export
|
|
211
|
-
(pass) JavaScriptExtractor > ESM imports and exports > extracts arrow function export
|
|
212
|
-
(pass) JavaScriptExtractor > ESM imports and exports > extracts export default function
|
|
213
|
-
(pass) JavaScriptExtractor > JSX components > parses JSX without crashing
|
|
214
|
-
(pass) JavaScriptExtractor > JSX components > extracts function component
|
|
215
|
-
(pass) JavaScriptExtractor > JSX components > extracts arrow function component
|
|
216
|
-
(pass) JavaScriptExtractor > JSX components > extracts purpose from comment above JSX component
|
|
217
|
-
(pass) JavaScriptExtractor > JSX components > detects early-return edge case (if !user return null)
|
|
218
|
-
(pass) JavaScriptExtractor > async functions > marks async functions correctly
|
|
219
|
-
(pass) JavaScriptExtractor > Express route detection > detects GET route
|
|
220
|
-
(pass) JavaScriptExtractor > Express route detection > detects POST route with middleware
|
|
221
|
-
(pass) JavaScriptExtractor > Express route detection > detects DELETE route
|
|
222
|
-
(pass) JavaScriptExtractor > edge cases > empty file parses without error and returns empty arrays
|
|
223
|
-
(pass) JavaScriptExtractor > edge cases > comments-only file parses without error
|
|
224
|
-
(pass) JavaScriptExtractor > edge cases > module.exports spread literal does not crash
|
|
225
|
-
(pass) JavaScriptExtractor > edge cases > mixed ESM + CJS file captures both import and require
|
|
226
|
-
(pass) JavaScriptExtractor > edge cases > mixed ESM + CJS: captures both ESM and CJS exports
|
|
227
|
-
(pass) JavaScriptExtractor > edge cases > no duplicate imports when same source appears in both ESM and CJS
|
|
228
|
-
(pass) JavaScriptExtractor > edge cases > no duplicate exports when CJS and ESM both declare same name
|
|
229
|
-
(pass) JavaScriptExtractor > edge cases > malformed code gracefully degrades without crashing
|
|
230
|
-
(pass) JavaScriptParser > getSupportedExtensions includes .js .mjs .cjs .jsx
|
|
231
|
-
(pass) JavaScriptParser > parse returns language: javascript [16.00ms]
|
|
232
|
-
(pass) JavaScriptParser > parse includes hash and parsedAt
|
|
233
|
-
(pass) JavaScriptParser > CJS-exported functions are marked isExported via cross-reference
|
|
234
|
-
(pass) JavaScriptParser > resolveImports resolves relative paths with .js extension probing
|
|
235
|
-
(pass) JavaScriptParser > resolveImports leaves external packages unresolved (empty resolvedPath)
|
|
236
|
-
(pass) JavaScriptParser > parse .jsx file language is javascript
|
|
237
|
-
(pass) JavaScriptResolver > resolves relative import with .js extension
|
|
238
|
-
(pass) JavaScriptResolver > resolves relative import with /index.js fallback
|
|
239
|
-
(pass) JavaScriptResolver > falls back to .ts for mixed TS/JS project
|
|
240
|
-
(pass) JavaScriptResolver > leaves external packages unresolved
|
|
241
|
-
(pass) JavaScriptResolver > resolves with no known files list (defaults to .js suffix)
|
|
242
|
-
(pass) JavaScriptResolver > source with existing .js extension returned as-is
|
|
243
|
-
(pass) JavaScriptResolver > resolves path alias when aliases provided
|
|
244
|
-
(pass) JavaScriptResolver > resolveAll resolves all imports in a list
|
|
245
|
-
(pass) getParser — JS extensions > returns JavaScriptParser for .js
|
|
246
|
-
(pass) getParser — JS extensions > returns JavaScriptParser for .mjs
|
|
247
|
-
(pass) getParser — JS extensions > returns JavaScriptParser for .cjs
|
|
248
|
-
(pass) getParser — JS extensions > returns JavaScriptParser for .jsx
|
|
249
|
-
(pass) getParser — JS extensions > still returns TypeScriptParser for .ts
|
|
250
|
-
624 | const p = getParser('src/index.ts')
|
|
251
|
-
625 | expect(p.getSupportedExtensions()).toContain('.ts')
|
|
252
|
-
626 | })
|
|
253
|
-
627 |
|
|
254
|
-
628 | test('still throws UnsupportedLanguageError for .py', () => {
|
|
255
|
-
629 | expect(() => getParser('src/app.py')).toThrow()
|
|
256
|
-
^
|
|
257
|
-
error: expect(received).toThrow()
|
|
258
|
-
|
|
259
|
-
Received function did not throw
|
|
260
|
-
Received value: TreeSitterParser {
|
|
261
|
-
parser: null,
|
|
262
|
-
languages: Map {},
|
|
263
|
-
getSupportedExtensions: [Function: getSupportedExtensions],
|
|
264
|
-
init: [AsyncFunction: init],
|
|
265
|
-
parse: [AsyncFunction: parse],
|
|
266
|
-
resolveImports: [Function: resolveImports],
|
|
267
|
-
buildEmptyFile: [Function: buildEmptyFile],
|
|
268
|
-
loadLang: [AsyncFunction: loadLang],
|
|
269
|
-
getLanguageConfig: [AsyncFunction: getLanguageConfig],
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
at <anonymous> (C:\Users\Ansh\Desktop\web\Mesh\packages\core\tests\js-parser.test.ts:629:47)
|
|
273
|
-
(fail) getParser — JS extensions > still throws UnsupportedLanguageError for .py
|
|
274
|
-
|
|
275
|
-
tests\parser.test.ts:
|
|
276
|
-
(pass) TypeScriptExtractor > extracts function declarations
|
|
277
|
-
(pass) TypeScriptExtractor > extracts arrow functions assigned to const
|
|
278
|
-
(pass) TypeScriptExtractor > extracts async functions
|
|
279
|
-
(pass) TypeScriptExtractor > extracts call expressions from function bodies
|
|
280
|
-
(pass) TypeScriptExtractor > extracts imports
|
|
281
|
-
(pass) TypeScriptExtractor > extracts named exports
|
|
282
|
-
(pass) TypeScriptExtractor > extracts classes with methods
|
|
283
|
-
(pass) TypeScriptExtractor > skips type-only imports
|
|
284
|
-
(pass) TypeScriptExtractor > handles optional parameters
|
|
285
|
-
(pass) TypeScriptExtractor > handles default parameter values
|
|
286
|
-
134 | describe('TypeScriptParser', () => {
|
|
287
|
-
135 | const parser = new TypeScriptParser()
|
|
288
|
-
136 |
|
|
289
|
-
137 | it('returns correct language', () => {
|
|
290
|
-
138 | const result = parser.parse('src/test.ts', 'const x = 1')
|
|
291
|
-
139 | expect(result.language).toBe('typescript')
|
|
292
|
-
^
|
|
293
|
-
error: expect(received).toBe(expected)
|
|
294
|
-
|
|
295
|
-
Expected: "typescript"
|
|
296
|
-
Received: undefined
|
|
297
|
-
|
|
298
|
-
at <anonymous> (C:\Users\Ansh\Desktop\web\Mesh\packages\core\tests\parser.test.ts:139:33)
|
|
299
|
-
(fail) TypeScriptParser > returns correct language
|
|
300
|
-
144 | import { jwtDecode } from '../utils/jwt'
|
|
301
|
-
145 | export function verifyToken(token: string): boolean {
|
|
302
|
-
146 | return jwtDecode(token).exp > Date.now()
|
|
303
|
-
147 | }
|
|
304
|
-
148 | `)
|
|
305
|
-
149 | expect(result.functions).toHaveLength(1)
|
|
306
|
-
^
|
|
307
|
-
error: Received value does not have a length property: undefined
|
|
308
|
-
at <anonymous> (C:\Users\Ansh\Desktop\web\Mesh\packages\core\tests\parser.test.ts:149:34)
|
|
309
|
-
(fail) TypeScriptParser > parses a complete file
|
|
310
|
-
(pass) TypeScriptParser > supports .tsx extension
|
|
311
|
-
(pass) TypeScriptResolver > resolves relative imports
|
|
312
|
-
(pass) TypeScriptResolver > resolves path aliases
|
|
313
|
-
(pass) TypeScriptResolver > skips external packages
|
|
314
|
-
(pass) TypeScriptResolver > handles index files
|
|
315
|
-
(pass) getParser > returns TypeScriptParser for .ts files
|
|
316
|
-
(pass) getParser > returns TypeScriptParser for .tsx files
|
|
317
|
-
211 | const parser = getParser('src/App.tsx')
|
|
318
|
-
212 | expect(parser).toBeInstanceOf(TypeScriptParser)
|
|
319
|
-
213 | })
|
|
320
|
-
214 |
|
|
321
|
-
215 | it('throws for unsupported extensions', () => {
|
|
322
|
-
216 | expect(() => getParser('src/auth.rb')).toThrow(UnsupportedLanguageError)
|
|
323
|
-
^
|
|
324
|
-
error: expect(received).toThrow(expected)
|
|
325
|
-
|
|
326
|
-
Expected constructor: UnsupportedLanguageError
|
|
327
|
-
|
|
328
|
-
Received function did not throw
|
|
329
|
-
Received value: TreeSitterParser {
|
|
330
|
-
parser: null,
|
|
331
|
-
languages: Map {},
|
|
332
|
-
getSupportedExtensions: [Function: getSupportedExtensions],
|
|
333
|
-
init: [AsyncFunction: init],
|
|
334
|
-
parse: [AsyncFunction: parse],
|
|
335
|
-
resolveImports: [Function: resolveImports],
|
|
336
|
-
buildEmptyFile: [Function: buildEmptyFile],
|
|
337
|
-
loadLang: [AsyncFunction: loadLang],
|
|
338
|
-
getLanguageConfig: [AsyncFunction: getLanguageConfig],
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
at <anonymous> (C:\Users\Ansh\Desktop\web\Mesh\packages\core\tests\parser.test.ts:216:48)
|
|
342
|
-
(fail) getParser > throws for unsupported extensions [16.00ms]
|
|
343
|
-
|
|
344
|
-
tests\tree-sitter-parser.test.ts:
|
|
345
|
-
(pass) TreeSitterParser > parses Python correctly [62.00ms]
|
|
346
|
-
(pass) TreeSitterParser > parses Java correctly
|
|
347
|
-
(pass) TreeSitterParser > parses Go correctly [16.00ms]
|
|
348
|
-
(pass) TreeSitterParser > handles empty files gracefully [16.00ms]
|
|
349
|
-
(pass) TreeSitterParser > handles syntax errors in Python code gracefully [15.00ms]
|
|
350
|
-
(pass) TreeSitterParser > handles unsupported extensions gracefully
|
|
351
|
-
(pass) TreeSitterParser > handles syntax errors in Java gracefully
|
|
352
|
-
|
|
353
|
-
tests\ts-parser.test.ts:
|
|
354
|
-
(pass) ts-parser config "extends" resolution > recursively merges compiler paths from extended configs
|
|
355
|
-
(pass) TypeScriptParser Edge Cases & Fault Tolerance > handles completely empty files [16.00ms]
|
|
356
|
-
(pass) TypeScriptParser Edge Cases & Fault Tolerance > gracefully degrades on severe syntax errors
|
|
357
|
-
(pass) TypeScriptParser Edge Cases & Fault Tolerance > handles files with only comments
|
|
358
|
-
|
|
359
|
-
9 tests failed:
|
|
360
|
-
(fail) GoParser > parse returns a well-formed ParsedFile
|
|
361
|
-
(fail) GoParser > parse populates functions from a real Go service
|
|
362
|
-
(fail) GoParser > parse populates classes for structs with methods
|
|
363
|
-
(fail) GoParser > parse detects routes in a Gin router file
|
|
364
|
-
(fail) GoParser > resolveImports passes through without crashing on no go.mod
|
|
365
|
-
(fail) getParser — JS extensions > still throws UnsupportedLanguageError for .py
|
|
366
|
-
(fail) TypeScriptParser > returns correct language
|
|
367
|
-
(fail) TypeScriptParser > parses a complete file
|
|
368
|
-
(fail) getParser > throws for unsupported extensions [16.00ms]
|
|
369
|
-
|
|
370
|
-
199 pass
|
|
371
|
-
9 fail
|
|
372
|
-
457 expect() calls
|
|
373
|
-
Ran 208 tests across 13 files. [769.00ms]
|