@lzehrung/codegraph 2.3.24 → 2.3.25

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.
Files changed (181) hide show
  1. package/README.md +1 -1
  2. package/codegraph-skill/codegraph/SKILL.md +1 -1
  3. package/dist/bin/cli.js +3420 -1620
  4. package/dist/bin/query-index-worker.js +569 -229
  5. package/dist/cli/context.d.ts.map +1 -1
  6. package/dist/cli/context.js +7 -4
  7. package/dist/cli/context.js.map +1 -1
  8. package/dist/cli/doctor.d.ts +1 -0
  9. package/dist/cli/doctor.d.ts.map +1 -1
  10. package/dist/cli/doctor.js +8 -1
  11. package/dist/cli/doctor.js.map +1 -1
  12. package/dist/document-links/asciidoc.d.ts.map +1 -1
  13. package/dist/document-links/asciidoc.js +33 -0
  14. package/dist/document-links/asciidoc.js.map +1 -1
  15. package/dist/document-links/language-ids.d.ts +10 -0
  16. package/dist/document-links/language-ids.d.ts.map +1 -0
  17. package/dist/document-links/language-ids.js +15 -0
  18. package/dist/document-links/language-ids.js.map +1 -0
  19. package/dist/document-links/markdown.d.ts.map +1 -1
  20. package/dist/document-links/markdown.js +103 -21
  21. package/dist/document-links/markdown.js.map +1 -1
  22. package/dist/document-links/shared.d.ts.map +1 -1
  23. package/dist/document-links/shared.js +1 -0
  24. package/dist/document-links/shared.js.map +1 -1
  25. package/dist/document-links.d.ts +1 -3
  26. package/dist/document-links.d.ts.map +1 -1
  27. package/dist/document-links.js +1 -8
  28. package/dist/document-links.js.map +1 -1
  29. package/dist/duplicates/unit-cache.d.ts +1 -1
  30. package/dist/duplicates/unit-cache.d.ts.map +1 -1
  31. package/dist/duplicates/unit-cache.js +4 -1
  32. package/dist/duplicates/unit-cache.js.map +1 -1
  33. package/dist/duplicates/units.d.ts +1 -0
  34. package/dist/duplicates/units.d.ts.map +1 -1
  35. package/dist/duplicates/units.js +55 -10
  36. package/dist/duplicates/units.js.map +1 -1
  37. package/dist/graphs/edge-resolution.d.ts.map +1 -1
  38. package/dist/graphs/edge-resolution.js +3 -0
  39. package/dist/graphs/edge-resolution.js.map +1 -1
  40. package/dist/graphs/external/stdlib.d.ts.map +1 -1
  41. package/dist/graphs/external/stdlib.js +18 -11
  42. package/dist/graphs/external/stdlib.js.map +1 -1
  43. package/dist/graphs/specifiers.d.ts +3 -2
  44. package/dist/graphs/specifiers.d.ts.map +1 -1
  45. package/dist/graphs/specifiers.js +76 -39
  46. package/dist/graphs/specifiers.js.map +1 -1
  47. package/dist/graphs/symbol-graph-detailed/receiver-calls.js +1 -1
  48. package/dist/graphs/symbol-graph-detailed/receiver-calls.js.map +1 -1
  49. package/dist/indexer/build-cache/options.d.ts +8 -2
  50. package/dist/indexer/build-cache/options.d.ts.map +1 -1
  51. package/dist/indexer/build-cache/options.js +10 -2
  52. package/dist/indexer/build-cache/options.js.map +1 -1
  53. package/dist/indexer/build-cache/reports.d.ts.map +1 -1
  54. package/dist/indexer/build-cache/reports.js +29 -21
  55. package/dist/indexer/build-cache/reports.js.map +1 -1
  56. package/dist/indexer/expand-star-imports.d.ts.map +1 -1
  57. package/dist/indexer/expand-star-imports.js +8 -3
  58. package/dist/indexer/expand-star-imports.js.map +1 -1
  59. package/dist/indexer/imports/language-specific.d.ts.map +1 -1
  60. package/dist/indexer/imports/language-specific.js +166 -32
  61. package/dist/indexer/imports/language-specific.js.map +1 -1
  62. package/dist/indexer/imports/native-captures.d.ts.map +1 -1
  63. package/dist/indexer/imports/native-captures.js +4 -3
  64. package/dist/indexer/imports/native-captures.js.map +1 -1
  65. package/dist/indexer/imports/python.d.ts +2 -0
  66. package/dist/indexer/imports/python.d.ts.map +1 -1
  67. package/dist/indexer/imports/python.js +113 -8
  68. package/dist/indexer/imports/python.js.map +1 -1
  69. package/dist/indexer/imports.d.ts.map +1 -1
  70. package/dist/indexer/imports.js +25 -12
  71. package/dist/indexer/imports.js.map +1 -1
  72. package/dist/indexer/locals-and-exports.d.ts.map +1 -1
  73. package/dist/indexer/locals-and-exports.js +153 -38
  74. package/dist/indexer/locals-and-exports.js.map +1 -1
  75. package/dist/indexer/navigation-goto.js +1 -1
  76. package/dist/indexer/navigation-goto.js.map +1 -1
  77. package/dist/indexer/scope-types.d.ts +1 -1
  78. package/dist/indexer/scope-types.d.ts.map +1 -1
  79. package/dist/indexer/scope.d.ts.map +1 -1
  80. package/dist/indexer/scope.js +43 -2
  81. package/dist/indexer/scope.js.map +1 -1
  82. package/dist/languages/definitions/c-family.d.ts +5 -0
  83. package/dist/languages/definitions/c-family.d.ts.map +1 -1
  84. package/dist/languages/definitions/c-family.js +27 -6
  85. package/dist/languages/definitions/c-family.js.map +1 -1
  86. package/dist/languages/definitions/c.d.ts.map +1 -1
  87. package/dist/languages/definitions/c.js +5 -0
  88. package/dist/languages/definitions/c.js.map +1 -1
  89. package/dist/languages/definitions/cpp.d.ts.map +1 -1
  90. package/dist/languages/definitions/cpp.js +41 -3
  91. package/dist/languages/definitions/cpp.js.map +1 -1
  92. package/dist/languages/definitions/csharp.d.ts.map +1 -1
  93. package/dist/languages/definitions/csharp.js +52 -21
  94. package/dist/languages/definitions/csharp.js.map +1 -1
  95. package/dist/languages/definitions/go.d.ts.map +1 -1
  96. package/dist/languages/definitions/go.js +10 -7
  97. package/dist/languages/definitions/go.js.map +1 -1
  98. package/dist/languages/definitions/html-stub.d.ts +6 -7
  99. package/dist/languages/definitions/html-stub.d.ts.map +1 -1
  100. package/dist/languages/definitions/html-stub.js +6 -7
  101. package/dist/languages/definitions/html-stub.js.map +1 -1
  102. package/dist/languages/definitions/html.js +13 -13
  103. package/dist/languages/definitions/html.js.map +1 -1
  104. package/dist/languages/definitions/java.d.ts.map +1 -1
  105. package/dist/languages/definitions/java.js +6 -0
  106. package/dist/languages/definitions/java.js.map +1 -1
  107. package/dist/languages/definitions/javascript.d.ts.map +1 -1
  108. package/dist/languages/definitions/javascript.js +48 -30
  109. package/dist/languages/definitions/javascript.js.map +1 -1
  110. package/dist/languages/definitions/kotlin.d.ts.map +1 -1
  111. package/dist/languages/definitions/kotlin.js +49 -61
  112. package/dist/languages/definitions/kotlin.js.map +1 -1
  113. package/dist/languages/definitions/php.js +1 -1
  114. package/dist/languages/definitions/php.js.map +1 -1
  115. package/dist/languages/definitions/python.d.ts.map +1 -1
  116. package/dist/languages/definitions/python.js +85 -20
  117. package/dist/languages/definitions/python.js.map +1 -1
  118. package/dist/languages/definitions/ruby.d.ts.map +1 -1
  119. package/dist/languages/definitions/ruby.js +13 -11
  120. package/dist/languages/definitions/ruby.js.map +1 -1
  121. package/dist/languages/definitions/rust.d.ts.map +1 -1
  122. package/dist/languages/definitions/rust.js +22 -5
  123. package/dist/languages/definitions/rust.js.map +1 -1
  124. package/dist/languages/definitions/scss.d.ts.map +1 -1
  125. package/dist/languages/definitions/scss.js +21 -17
  126. package/dist/languages/definitions/scss.js.map +1 -1
  127. package/dist/languages/definitions/sql.js +1 -1
  128. package/dist/languages/definitions/sql.js.map +1 -1
  129. package/dist/languages/definitions/swift.d.ts.map +1 -1
  130. package/dist/languages/definitions/swift.js +66 -16
  131. package/dist/languages/definitions/swift.js.map +1 -1
  132. package/dist/languages/definitions/typescript.d.ts.map +1 -1
  133. package/dist/languages/definitions/typescript.js +30 -9
  134. package/dist/languages/definitions/typescript.js.map +1 -1
  135. package/dist/languages/definitions/zig.d.ts.map +1 -1
  136. package/dist/languages/definitions/zig.js +26 -5
  137. package/dist/languages/definitions/zig.js.map +1 -1
  138. package/dist/languages/import-statement-parsers.d.ts +14 -1
  139. package/dist/languages/import-statement-parsers.d.ts.map +1 -1
  140. package/dist/languages/import-statement-parsers.js +473 -45
  141. package/dist/languages/import-statement-parsers.js.map +1 -1
  142. package/dist/languages/types.d.ts +11 -0
  143. package/dist/languages/types.d.ts.map +1 -1
  144. package/dist/languages.d.ts +1 -0
  145. package/dist/languages.d.ts.map +1 -1
  146. package/dist/languages.js +9 -2
  147. package/dist/languages.js.map +1 -1
  148. package/dist/native/backend-report-format.d.ts +4 -0
  149. package/dist/native/backend-report-format.d.ts.map +1 -0
  150. package/dist/native/backend-report-format.js +14 -0
  151. package/dist/native/backend-report-format.js.map +1 -0
  152. package/dist/native/contracts.d.ts +2 -0
  153. package/dist/native/contracts.d.ts.map +1 -1
  154. package/dist/util/comments.js +1 -1
  155. package/dist/util/comments.js.map +1 -1
  156. package/dist/util/member-access.d.ts +1 -1
  157. package/dist/util/member-access.d.ts.map +1 -1
  158. package/dist/util/member-access.js +5 -2
  159. package/dist/util/member-access.js.map +1 -1
  160. package/dist/util/project-files.js +1 -1
  161. package/dist/util/project-files.js.map +1 -1
  162. package/dist/util/resolution/rust.d.ts +8 -1
  163. package/dist/util/resolution/rust.d.ts.map +1 -1
  164. package/dist/util/resolution/rust.js +521 -7
  165. package/dist/util/resolution/rust.js.map +1 -1
  166. package/dist/util/resolution-candidates.d.ts +1 -1
  167. package/dist/util/resolution-candidates.d.ts.map +1 -1
  168. package/dist/util/resolution-candidates.js +11 -8
  169. package/dist/util/resolution-candidates.js.map +1 -1
  170. package/dist/util/resolution.d.ts +5 -0
  171. package/dist/util/resolution.d.ts.map +1 -1
  172. package/dist/util/resolution.js +18 -7
  173. package/dist/util/resolution.js.map +1 -1
  174. package/dist/util/rust-test-modules.d.ts.map +1 -1
  175. package/dist/util/rust-test-modules.js +2 -5
  176. package/dist/util/rust-test-modules.js.map +1 -1
  177. package/dist/util/specifiers.d.ts +8 -0
  178. package/dist/util/specifiers.d.ts.map +1 -1
  179. package/dist/util/specifiers.js +33 -7
  180. package/dist/util/specifiers.js.map +1 -1
  181. package/package.json +3 -3
@@ -1,4 +1,9 @@
1
+ import fsp from "node:fs/promises";
1
2
  import path from "node:path";
3
+ import { isRustItemStartBoundary, skipRustAttribute, skipRustBalancedDelimiters, skipRustCommentOrLiteral, skipRustCommentsAndWhitespaceBackward, skipRustMacroTokenTree, skipRustOuterAttribute, } from "../../languages/import-statement-parsers.js";
4
+ import { XID_IDENTIFIER_SOURCE } from "../identifiers.js";
5
+ import { lruMapGet, lruMapSet } from "../lru-map.js";
6
+ import { isFilePathWithinRoot } from "../paths.js";
2
7
  import { fileExists } from "../workspace.js";
3
8
  function isWithinOrEqual(candidate, root) {
4
9
  const relative = path.relative(root, candidate);
@@ -52,15 +57,524 @@ function parentRustModuleDir(fromFile, currentDir) {
52
57
  async function resolveRustModuleParts(baseDir, parts) {
53
58
  return firstExistingFile(rustModuleCandidates(baseDir, parts));
54
59
  }
55
- export async function resolveRustImportPath(projectRoot, fromFile, spec) {
60
+ const RUST_PATH_ATTRIBUTE_PATTERN = /#\s*\[\s*path\s*=\s*(?:r(#*)"([\s\S]*?)"\1|"([^"]*)")\s*\]/gu;
61
+ const RUST_CFG_TEST_ATTRIBUTE_PATTERN = /#\s*\[\s*cfg\s*\(\s*test\s*\)\s*\]/;
62
+ const RUST_VISIBILITY_PATTERN = /^(?:pub(?:\s*\([^)]*\))?\s+)/;
63
+ const RUST_MOD_NAME_PATTERN = new RegExp(String.raw `^mod\s+(${XID_IDENTIFIER_SOURCE})`, "u");
64
+ const MAX_RUST_PATH_ATTRIBUTE_CACHE_ENTRIES = 256;
65
+ const EMPTY_RUST_MODULE_SCOPE = {
66
+ pathAttributes: new Map(),
67
+ inlineModules: new Map(),
68
+ };
69
+ const rustPathAttributeCache = new Map();
70
+ const rustPathAttributeInflight = new Map();
71
+ function createRustModuleScope() {
72
+ return { pathAttributes: new Map(), inlineModules: new Map() };
73
+ }
74
+ function pathAttributeFromAttributeBlock(attributes) {
75
+ let last;
76
+ RUST_PATH_ATTRIBUTE_PATTERN.lastIndex = 0;
77
+ for (const match of attributes.matchAll(RUST_PATH_ATTRIBUTE_PATTERN)) {
78
+ last = match[2] ?? match[3];
79
+ }
80
+ return last;
81
+ }
82
+ export function takeTrailingRustAttributes(source, statementIndex) {
83
+ let index = skipRustCommentsAndWhitespaceBackward(source, statementIndex);
84
+ const chunks = [];
85
+ while (index > 0) {
86
+ if (source[index - 1] !== "]")
87
+ break;
88
+ const attrStart = rustOuterAttributeStartEndingAt(source, index);
89
+ if (attrStart === null)
90
+ break;
91
+ chunks.unshift(source.slice(attrStart, index));
92
+ index = skipRustCommentsAndWhitespaceBackward(source, attrStart);
93
+ }
94
+ return chunks.join("\n");
95
+ }
96
+ export function rustItemKeywordIndex(source, start) {
97
+ let index = start;
98
+ while (index < source.length) {
99
+ if (/\s/.test(source[index])) {
100
+ index += 1;
101
+ continue;
102
+ }
103
+ const skipped = skipRustCommentOrLiteral(source, index);
104
+ if (skipped) {
105
+ index = skipped.end;
106
+ continue;
107
+ }
108
+ const attrEnd = skipRustOuterAttribute(source, index);
109
+ if (attrEnd !== null) {
110
+ index = attrEnd;
111
+ continue;
112
+ }
113
+ break;
114
+ }
115
+ return index;
116
+ }
117
+ export function rustLeadingAttributesIncludeCfgTest(source, statementIndex) {
118
+ const keywordIndex = rustItemKeywordIndex(source, statementIndex);
119
+ return RUST_CFG_TEST_ATTRIBUTE_PATTERN.test(takeTrailingRustAttributes(source, keywordIndex));
120
+ }
121
+ function enclosingInlineModulePath(scope, index) {
122
+ for (const [name, child] of scope.inlineModules) {
123
+ const location = child.inlineLocation;
124
+ if (!location || index < location.start || index >= location.end)
125
+ continue;
126
+ return [name, ...enclosingInlineModulePath(child, index)];
127
+ }
128
+ return [];
129
+ }
130
+ export function rustEnclosingInlineModulePath(source, statementStartIndex) {
131
+ return enclosingInlineModulePath(extractRustModPathAttributeScopes(source), statementStartIndex);
132
+ }
133
+ function findPathAttributedModulePath(scope, moduleName, prefix) {
134
+ if (scope.pathAttributes.has(moduleName))
135
+ return [...prefix, moduleName];
136
+ for (const [childName, child] of scope.inlineModules) {
137
+ const hit = findPathAttributedModulePath(child, moduleName, [...prefix, childName]);
138
+ if (hit)
139
+ return hit;
140
+ }
141
+ return undefined;
142
+ }
143
+ export function rustGraphModuleSpecifier(source, moduleName, statementStartIndex) {
144
+ if (statementStartIndex !== undefined) {
145
+ const pathAttribute = extractRustModPathAttribute(source, moduleName, statementStartIndex);
146
+ if (!pathAttribute)
147
+ return moduleName;
148
+ const prefix = rustEnclosingInlineModulePath(source, statementStartIndex);
149
+ return prefix.length ? `${prefix.join("::")}::${moduleName}` : moduleName;
150
+ }
151
+ const found = findPathAttributedModulePath(extractRustModPathAttributeScopes(source), moduleName, []);
152
+ return found?.join("::") ?? moduleName;
153
+ }
154
+ export function rustStatementStartIndex(source, statementText, statementStartIndex, searchFrom = 0) {
155
+ if (statementStartIndex !== undefined)
156
+ return statementStartIndex;
157
+ const normalized = statementText.trim();
158
+ if (!normalized)
159
+ return undefined;
160
+ const index = source.indexOf(normalized, searchFrom);
161
+ return index >= 0 ? index : undefined;
162
+ }
163
+ function rustOuterAttributeStartEndingAt(source, end) {
164
+ for (let start = end - 2; start >= 0; start -= 1) {
165
+ if (source[start] !== "#")
166
+ continue;
167
+ if (skipRustOuterAttribute(source, start) === end)
168
+ return start;
169
+ }
170
+ return null;
171
+ }
172
+ function collectLeadingRustOuterAttributes(source, start) {
173
+ let cursor = start;
174
+ const chunks = [];
175
+ while (cursor < source.length) {
176
+ if (/\s/.test(source[cursor])) {
177
+ cursor += 1;
178
+ continue;
179
+ }
180
+ const skipped = skipRustCommentOrLiteral(source, cursor);
181
+ if (skipped) {
182
+ cursor = skipped.end;
183
+ continue;
184
+ }
185
+ const attrEnd = skipRustOuterAttribute(source, cursor);
186
+ if (attrEnd === null)
187
+ break;
188
+ chunks.push(source.slice(cursor, attrEnd));
189
+ cursor = attrEnd;
190
+ }
191
+ return chunks.join("\n");
192
+ }
193
+ function skipRustTrivia(source, index, end) {
194
+ let cursor = index;
195
+ while (cursor < end) {
196
+ if (/\s/.test(source[cursor])) {
197
+ cursor += 1;
198
+ continue;
199
+ }
200
+ const skipped = skipRustCommentOrLiteral(source, cursor);
201
+ if (skipped) {
202
+ cursor = skipped.end < end ? skipped.end : end;
203
+ continue;
204
+ }
205
+ break;
206
+ }
207
+ return cursor;
208
+ }
209
+ function extractRustModPathAttributeScopes(source) {
210
+ const root = createRustModuleScope();
211
+ scanRustModuleScope(source, 0, source.length, root);
212
+ return root;
213
+ }
214
+ function scanRustModuleScope(source, start, end, scope) {
215
+ let index = start;
216
+ while (index < end) {
217
+ const skipped = skipRustCommentOrLiteral(source, index) ?? skipRustMacroTokenTree(source, index);
218
+ if (skipped) {
219
+ index = skipped.end < end ? skipped.end : end;
220
+ continue;
221
+ }
222
+ if (/\s/.test(source[index])) {
223
+ index += 1;
224
+ continue;
225
+ }
226
+ const attrEnd = skipRustAttribute(source, index);
227
+ if (attrEnd !== null) {
228
+ index = attrEnd < end ? attrEnd : end;
229
+ continue;
230
+ }
231
+ if (!isRustItemStartBoundary(source, index)) {
232
+ index += 1;
233
+ continue;
234
+ }
235
+ const visMatch = source.slice(index, end).match(RUST_VISIBILITY_PATTERN);
236
+ const afterVis = visMatch ? index + visMatch[0].length : index;
237
+ const modMatch = source.slice(afterVis, end).match(RUST_MOD_NAME_PATTERN);
238
+ if (modMatch?.[1]) {
239
+ const moduleName = modMatch[1];
240
+ const headerEnd = afterVis + modMatch[0].length;
241
+ const attrs = takeTrailingRustAttributes(source, index);
242
+ const testOnly = RUST_CFG_TEST_ATTRIBUTE_PATTERN.test(attrs);
243
+ const pathValue = pathAttributeFromAttributeBlock(attrs);
244
+ const cursor = skipRustTrivia(source, headerEnd, end);
245
+ if (source[cursor] === ";") {
246
+ if (!testOnly && pathValue && !scope.pathAttributes.has(moduleName)) {
247
+ scope.pathAttributes.set(moduleName, pathValue);
248
+ }
249
+ index = cursor + 1;
250
+ continue;
251
+ }
252
+ if (source[cursor] === "{") {
253
+ const bodyEnd = skipRustBalancedDelimiters(source, cursor + 1, "}");
254
+ const boundedEnd = bodyEnd < end ? bodyEnd : end;
255
+ if (!testOnly) {
256
+ let child = scope.inlineModules.get(moduleName);
257
+ if (!child) {
258
+ child = createRustModuleScope();
259
+ scope.inlineModules.set(moduleName, child);
260
+ }
261
+ const bodyExclusiveEnd = boundedEnd > cursor + 1 ? boundedEnd - 1 : boundedEnd;
262
+ child.inlineLocation = { start: cursor + 1, end: bodyExclusiveEnd, directory: pathValue ?? moduleName };
263
+ scanRustModuleScope(source, cursor + 1, bodyExclusiveEnd, child);
264
+ }
265
+ index = boundedEnd;
266
+ continue;
267
+ }
268
+ index = headerEnd;
269
+ continue;
270
+ }
271
+ if (source[index] === "{") {
272
+ const skippedBlock = skipRustBalancedDelimiters(source, index + 1, "}");
273
+ index = skippedBlock < end ? skippedBlock : end;
274
+ continue;
275
+ }
276
+ index += 1;
277
+ }
278
+ }
279
+ export function extractRustModPathAttribute(source, moduleName, statementStartIndex) {
280
+ if (statementStartIndex !== undefined) {
281
+ const leadingWhitespace = source.slice(statementStartIndex).search(/\S/);
282
+ const index = statementStartIndex + Math.max(0, leadingWhitespace);
283
+ if (source[index] === "#") {
284
+ return pathAttributeFromAttributeBlock(collectLeadingRustOuterAttributes(source, index));
285
+ }
286
+ return pathAttributeFromAttributeBlock(takeTrailingRustAttributes(source, index));
287
+ }
288
+ if (!moduleName)
289
+ return undefined;
290
+ return extractRustModPathAttributeScopes(source).pathAttributes.get(moduleName);
291
+ }
292
+ async function isExistingAttributedPathInsideProject(projectRoot, attributedPath) {
293
+ if (!(await fileExists(attributedPath)))
294
+ return false;
295
+ if (!isFilePathWithinRoot(projectRoot, attributedPath))
296
+ return false;
297
+ try {
298
+ const realRoot = await fsp.realpath(projectRoot);
299
+ const realCandidate = await fsp.realpath(attributedPath);
300
+ return isFilePathWithinRoot(realRoot, realCandidate);
301
+ }
302
+ catch {
303
+ return false;
304
+ }
305
+ }
306
+ function rustPathAttributeSignature(stat) {
307
+ return `${stat.size}:${stat.mtimeMs}`;
308
+ }
309
+ async function loadRustPathAttributeScope(file) {
310
+ const resolved = path.resolve(file);
311
+ let signature;
312
+ try {
313
+ const stat = await fsp.stat(resolved);
314
+ if (!stat.isFile())
315
+ return EMPTY_RUST_MODULE_SCOPE;
316
+ signature = rustPathAttributeSignature(stat);
317
+ }
318
+ catch {
319
+ return EMPTY_RUST_MODULE_SCOPE;
320
+ }
321
+ const cached = lruMapGet(rustPathAttributeCache, resolved);
322
+ if (cached && cached.signature === signature)
323
+ return cached.attributes;
324
+ const inflightKey = `${resolved}::${signature}`;
325
+ const inflight = rustPathAttributeInflight.get(inflightKey);
326
+ if (inflight)
327
+ return await inflight;
328
+ const pending = (async () => {
329
+ try {
330
+ const source = await fsp.readFile(resolved, "utf8");
331
+ const attributes = extractRustModPathAttributeScopes(source);
332
+ lruMapSet(rustPathAttributeCache, resolved, { signature, attributes }, MAX_RUST_PATH_ATTRIBUTE_CACHE_ENTRIES);
333
+ return attributes;
334
+ }
335
+ catch {
336
+ return EMPTY_RUST_MODULE_SCOPE;
337
+ }
338
+ finally {
339
+ rustPathAttributeInflight.delete(inflightKey);
340
+ }
341
+ })();
342
+ rustPathAttributeInflight.set(inflightKey, pending);
343
+ return await pending;
344
+ }
345
+ function rustChildModuleDir(parentFile) {
346
+ const dir = path.dirname(parentFile);
347
+ const stem = path.basename(parentFile, ".rs");
348
+ if (stem === "mod" || stem === "lib" || stem === "main")
349
+ return dir;
350
+ return path.join(dir, stem);
351
+ }
352
+ async function rustDeclaringFileCandidates(fromFile, sourceRoot) {
353
+ const files = [];
354
+ const seen = new Set();
355
+ const root = path.resolve(sourceRoot);
356
+ const resolvedFrom = path.resolve(fromFile);
357
+ let dir = path.dirname(resolvedFrom);
358
+ for (let depth = 0; depth < 16; depth += 1) {
359
+ let entries = [];
360
+ try {
361
+ entries = await fsp.readdir(dir);
362
+ }
363
+ catch {
364
+ entries = [];
365
+ }
366
+ for (const entry of entries) {
367
+ if (!entry.endsWith(".rs"))
368
+ continue;
369
+ const abs = path.resolve(dir, entry);
370
+ if (abs === resolvedFrom || seen.has(abs))
371
+ continue;
372
+ seen.add(abs);
373
+ files.push(abs);
374
+ }
375
+ if (path.resolve(dir) === root)
376
+ break;
377
+ const parent = path.dirname(dir);
378
+ if (parent === dir)
379
+ break;
380
+ if (!isWithinOrEqual(parent, root) && path.resolve(dir) !== root) {
381
+ if (!seen.has(root)) {
382
+ let rootEntries = [];
383
+ try {
384
+ rootEntries = await fsp.readdir(root);
385
+ }
386
+ catch {
387
+ rootEntries = [];
388
+ }
389
+ for (const entry of rootEntries) {
390
+ if (!entry.endsWith(".rs"))
391
+ continue;
392
+ const abs = path.resolve(root, entry);
393
+ if (abs === resolvedFrom || seen.has(abs))
394
+ continue;
395
+ seen.add(abs);
396
+ files.push(abs);
397
+ }
398
+ }
399
+ break;
400
+ }
401
+ dir = parent;
402
+ }
403
+ return files;
404
+ }
405
+ async function findAttributedDeclarationParent(projectRoot, declaringFile, targetFile) {
406
+ const resolvedTarget = path.resolve(targetFile);
407
+ const walk = async (scope, currentFile, currentModuleDir, attributeDirectory) => {
408
+ for (const pathValue of scope.pathAttributes.values()) {
409
+ const attributedPath = path.resolve(attributeDirectory, pathValue);
410
+ if (path.resolve(attributedPath) !== resolvedTarget)
411
+ continue;
412
+ if (!(await isExistingAttributedPathInsideProject(projectRoot, attributedPath)))
413
+ continue;
414
+ return { parentFile: currentFile, parentModuleDir: currentModuleDir };
415
+ }
416
+ for (const [name, child] of scope.inlineModules) {
417
+ const nextDir = path.resolve(currentModuleDir, child.inlineLocation?.directory ?? name);
418
+ const hit = await walk(child, currentFile, nextDir, nextDir);
419
+ if (hit)
420
+ return hit;
421
+ }
422
+ return null;
423
+ };
424
+ const scope = await loadRustPathAttributeScope(declaringFile);
425
+ return walk(scope, path.resolve(declaringFile), rustChildModuleDir(declaringFile), path.dirname(declaringFile));
426
+ }
427
+ async function findPathAttributeParent(projectRoot, fromFile, sourceRoot) {
428
+ const candidates = await rustDeclaringFileCandidates(fromFile, sourceRoot);
429
+ for (const candidate of candidates) {
430
+ const found = await findAttributedDeclarationParent(projectRoot, candidate, fromFile);
431
+ if (found)
432
+ return found;
433
+ }
434
+ return null;
435
+ }
436
+ async function rustSuperModuleContext(projectRoot, fromFile, sourceRoot) {
437
+ const attributed = await findPathAttributeParent(projectRoot, fromFile, sourceRoot);
438
+ if (attributed)
439
+ return attributed;
440
+ const currentDir = path.dirname(fromFile);
441
+ const parentModuleDir = parentRustModuleDir(fromFile, currentDir);
442
+ return { parentFile: await resolveRustModuleParts(parentModuleDir, []), parentModuleDir };
443
+ }
444
+ async function declaringFileForSpecifierHead(projectRoot, fromFile, sourceRoot, head) {
445
+ if (head === "*")
446
+ return null;
447
+ if (head === "crate") {
448
+ return resolveRustModuleParts(sourceRoot, []);
449
+ }
450
+ if (head === "self") {
451
+ return path.resolve(fromFile);
452
+ }
453
+ if (head === "super") {
454
+ const context = await rustSuperModuleContext(projectRoot, fromFile, sourceRoot);
455
+ return context.parentFile;
456
+ }
457
+ return path.resolve(fromFile);
458
+ }
459
+ function rustScopeAtDirectory(scope, fromDir, toDir) {
460
+ const relative = path.relative(fromDir, toDir);
461
+ if (!relative || relative.startsWith("..") || path.isAbsolute(relative))
462
+ return scope;
463
+ let current = scope;
464
+ for (const part of relative.split(/[\\/]/).filter(Boolean)) {
465
+ const child = current.inlineModules.get(part);
466
+ if (!child)
467
+ return current;
468
+ current = child;
469
+ }
470
+ return current;
471
+ }
472
+ async function resolveAttributedRustModulePath(projectRoot, fromFile, parts, sourceRoot) {
473
+ const head = parts[0];
474
+ if (!head)
475
+ return undefined;
476
+ let startFile;
477
+ let startModuleDir;
478
+ if (head === "super") {
479
+ const context = await rustSuperModuleContext(projectRoot, fromFile, sourceRoot);
480
+ startFile = context.parentFile;
481
+ startModuleDir = context.parentModuleDir;
482
+ }
483
+ else {
484
+ startFile = await declaringFileForSpecifierHead(projectRoot, fromFile, sourceRoot, head);
485
+ }
486
+ if (!startFile)
487
+ return undefined;
488
+ let childParts = parts;
489
+ if (head === "crate" || head === "self" || head === "super") {
490
+ childParts = parts.slice(1);
491
+ }
492
+ let currentFile = startFile;
493
+ let currentScope = await loadRustPathAttributeScope(currentFile);
494
+ let currentModuleDir = startModuleDir ?? rustChildModuleDir(currentFile);
495
+ if (startModuleDir) {
496
+ currentScope = rustScopeAtDirectory(currentScope, rustChildModuleDir(currentFile), startModuleDir);
497
+ }
498
+ let attributeDirectory = path.dirname(currentFile);
499
+ if (startModuleDir)
500
+ attributeDirectory = startModuleDir;
501
+ let usedAttribute = false;
502
+ for (const child of childParts) {
503
+ if (!child || child === "*") {
504
+ if (usedAttribute)
505
+ return currentFile;
506
+ return undefined;
507
+ }
508
+ const pathValue = currentScope.pathAttributes.get(child);
509
+ if (pathValue) {
510
+ const attributedPath = path.resolve(attributeDirectory, pathValue);
511
+ if (!(await isExistingAttributedPathInsideProject(projectRoot, attributedPath))) {
512
+ return null;
513
+ }
514
+ currentFile = path.resolve(attributedPath);
515
+ currentScope = await loadRustPathAttributeScope(currentFile);
516
+ currentModuleDir = rustChildModuleDir(currentFile);
517
+ attributeDirectory = path.dirname(currentFile);
518
+ usedAttribute = true;
519
+ continue;
520
+ }
521
+ const inline = currentScope.inlineModules.get(child);
522
+ if (inline) {
523
+ currentScope = inline;
524
+ currentModuleDir = path.resolve(currentModuleDir, inline.inlineLocation?.directory ?? child);
525
+ attributeDirectory = currentModuleDir;
526
+ continue;
527
+ }
528
+ const conventional = await resolveRustModuleParts(currentModuleDir, [child]);
529
+ if (!conventional) {
530
+ if (usedAttribute)
531
+ return null;
532
+ return undefined;
533
+ }
534
+ currentFile = conventional;
535
+ currentScope = await loadRustPathAttributeScope(currentFile);
536
+ currentModuleDir = rustChildModuleDir(currentFile);
537
+ attributeDirectory = path.dirname(currentFile);
538
+ }
539
+ if (usedAttribute)
540
+ return currentFile;
541
+ return undefined;
542
+ }
543
+ function inlineAttributeDirectory(scope, index, moduleDir) {
544
+ for (const child of scope.inlineModules.values()) {
545
+ const location = child.inlineLocation;
546
+ if (!location || index < location.start || index >= location.end)
547
+ continue;
548
+ const directory = path.resolve(moduleDir, location.directory);
549
+ return inlineAttributeDirectory(child, index, directory) ?? directory;
550
+ }
551
+ return undefined;
552
+ }
553
+ export async function resolveRustImportPath(projectRoot, fromFile, spec, pathAttribute, statementStartIndex) {
56
554
  const normalized = normalizeRustModuleSpecifier(spec);
57
555
  if (!normalized)
58
556
  return null;
59
557
  const parts = normalized.split("::").filter(Boolean);
60
558
  if (!parts.length)
61
559
  return null;
560
+ if (pathAttribute) {
561
+ let attributeDirectory = path.dirname(fromFile);
562
+ if (statementStartIndex !== undefined) {
563
+ const scope = await loadRustPathAttributeScope(fromFile);
564
+ attributeDirectory =
565
+ inlineAttributeDirectory(scope, statementStartIndex, rustChildModuleDir(fromFile)) ?? attributeDirectory;
566
+ }
567
+ const attributedPath = path.resolve(attributeDirectory, pathAttribute);
568
+ if (await isExistingAttributedPathInsideProject(projectRoot, attributedPath)) {
569
+ return path.resolve(attributedPath);
570
+ }
571
+ return null;
572
+ }
62
573
  const cargoRoot = await findNearestCargoRoot(fromFile, projectRoot);
63
574
  const sourceRoot = crateSourceRoot(cargoRoot, projectRoot);
575
+ const walked = await resolveAttributedRustModulePath(projectRoot, fromFile, parts, sourceRoot);
576
+ if (walked !== undefined)
577
+ return walked;
64
578
  const currentDir = path.dirname(fromFile);
65
579
  const head = parts[0];
66
580
  const tail = parts.slice(1);
@@ -68,15 +582,15 @@ export async function resolveRustImportPath(projectRoot, fromFile, spec) {
68
582
  return resolveRustModuleParts(sourceRoot, tail);
69
583
  }
70
584
  if (head === "self") {
585
+ if (!tail.length)
586
+ return path.resolve(fromFile);
71
587
  return resolveRustModuleParts(currentDir, tail);
72
588
  }
73
589
  if (head === "super") {
74
- const parentModuleDir = parentRustModuleDir(fromFile, currentDir);
75
- const parentModuleFile = await resolveRustModuleParts(parentModuleDir, []);
76
- if (!tail.length && parentModuleFile) {
77
- return parentModuleFile;
78
- }
79
- return resolveRustModuleParts(parentModuleDir, tail);
590
+ const context = await rustSuperModuleContext(projectRoot, fromFile, sourceRoot);
591
+ if (!tail.length)
592
+ return context.parentFile;
593
+ return resolveRustModuleParts(context.parentModuleDir, tail);
80
594
  }
81
595
  const siblingModule = await resolveRustModuleParts(currentDir, parts);
82
596
  if (siblingModule) {
@@ -1 +1 @@
1
- {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/util/resolution/rust.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/util/resolution/rust.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,wBAAwB,EACxB,qCAAqC,EACrC,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,SAAS,eAAe,CAAC,SAAiB,EAAE,IAAY;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,QAAgB,EAAE,WAAmB;IACvE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QAClC,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,4BAA4B,CAAC,IAAY;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACjG,OAAO,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AAC5F,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,UAAoB;IACnD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe,EAAE,KAAwB;IACrE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,UAAU,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,eAAe,CAAC,SAAwB,EAAE,WAAmB;IACpE,MAAM,IAAI,GAAG,SAAS,IAAI,WAAW,CAAC;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB,EAAE,UAAkB;IAC/D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,OAAe,EAAE,KAAwB;IAC7E,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,2BAA2B,GAAG,8DAA8D,CAAC;AACnG,MAAM,+BAA+B,GAAG,oCAAoC,CAAC;AAC7E,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AAC/D,MAAM,qBAAqB,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,WAAW,qBAAqB,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7F,MAAM,qCAAqC,GAAG,GAAG,CAAC;AAalD,MAAM,uBAAuB,GAAoB;IAC/C,cAAc,EAAE,IAAI,GAAG,EAAE;IACzB,aAAa,EAAE,IAAI,GAAG,EAAE;CACzB,CAAC;AAEF,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAuC,CAAC;AAC9E,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAoC,CAAC;AAE9E,SAAS,qBAAqB;IAC5B,OAAO,EAAE,cAAc,EAAE,IAAI,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,+BAA+B,CAAC,UAAkB;IACzD,IAAI,IAAwB,CAAC;IAC7B,2BAA2B,CAAC,SAAS,GAAG,CAAC,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;QACrE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAc,EAAE,cAAsB;IAC/E,IAAI,KAAK,GAAG,qCAAqC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;QACjB,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;YAAE,MAAM;QACrC,MAAM,SAAS,GAAG,+BAA+B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACjE,IAAI,SAAS,KAAK,IAAI;YAAE,MAAM;QAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/C,KAAK,GAAG,qCAAqC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,KAAa;IAChE,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;YACpB,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,KAAK,GAAG,OAAO,CAAC;YAChB,SAAS;QACX,CAAC;QACD,MAAM;IACR,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,MAAc,EAAE,cAAsB;IACxF,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClE,OAAO,+BAA+B,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAsB,EAAE,KAAa;IACtE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;QACtC,IAAI,CAAC,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,KAAK,IAAI,QAAQ,CAAC,GAAG;YAAE,SAAS;QAC3E,OAAO,CAAC,IAAI,EAAE,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,MAAc,EAAE,mBAA2B;IACvF,OAAO,yBAAyB,CAAC,iCAAiC,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAsB,EACtB,UAAkB,EAClB,MAAyB;IAEzB,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,CAAC,GAAG,MAAM,EAAE,UAAU,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,4BAA4B,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QACpF,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IACtB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAc,EAAE,UAAkB,EAAE,mBAA4B;IACvG,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,2BAA2B,CAAC,MAAM,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;QAC3F,IAAI,CAAC,aAAa;YAAE,OAAO,UAAU,CAAC;QACtC,MAAM,MAAM,GAAG,6BAA6B,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IAC5E,CAAC;IACD,MAAM,KAAK,GAAG,4BAA4B,CAAC,iCAAiC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACtG,OAAO,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,aAAqB,EACrB,mBAA4B,EAC5B,UAAU,GAAG,CAAC;IAEd,IAAI,mBAAmB,KAAK,SAAS;QAAE,OAAO,mBAAmB,CAAC;IAClE,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACrD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACxC,CAAC;AAED,SAAS,+BAA+B,CAAC,MAAc,EAAE,GAAW;IAClE,KAAK,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACjD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG;YAAE,SAAS;QACpC,IAAI,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;IAClE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iCAAiC,CAAC,MAAc,EAAE,KAAa;IACtE,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,OAAO,KAAK,IAAI;YAAE,MAAM;QAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3C,MAAM,GAAG,OAAO,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,KAAa,EAAE,GAAW;IAChE,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO,MAAM,GAAG,GAAG,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/C,SAAS;QACX,CAAC;QACD,MAAM;IACR,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iCAAiC,CAAC,MAAc;IACvD,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;IACrC,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc,EAAE,KAAa,EAAE,GAAW,EAAE,KAAsB;IAC7F,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,OAAO,KAAK,GAAG,GAAG,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACjG,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,KAAK,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;YACtC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YAC5C,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC1E,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAChD,MAAM,KAAK,GAAG,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC,QAAQ,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;oBACpE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBAClD,CAAC;gBACD,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;gBACpE,MAAM,UAAU,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;gBACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,IAAI,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAChD,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,KAAK,GAAG,qBAAqB,EAAE,CAAC;wBAChC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;oBAC7C,CAAC;oBACD,MAAM,gBAAgB,GAAG,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;oBAC/E,KAAK,CAAC,cAAc,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,IAAI,UAAU,EAAE,CAAC;oBACxG,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;gBACnE,CAAC;gBACD,KAAK,GAAG,UAAU,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,KAAK,GAAG,SAAS,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,0BAA0B,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YACxE,KAAK,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;YAChD,SAAS;QACX,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,MAAc,EACd,UAAmB,EACnB,mBAA4B;IAE5B,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;YAC1B,OAAO,+BAA+B,CAAC,iCAAiC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,+BAA+B,CAAC,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,iCAAiC,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClF,CAAC;AAED,KAAK,UAAU,qCAAqC,CAAC,WAAmB,EAAE,cAAsB;IAC9F,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,cAAc,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACzD,OAAO,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAuC;IACzE,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,IAAY;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO,uBAAuB,CAAC;QACnD,SAAS,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,UAAU,CAAC;IAEvE,MAAM,WAAW,GAAG,GAAG,QAAQ,KAAK,SAAS,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5D,IAAI,QAAQ;QAAE,OAAO,MAAM,QAAQ,CAAC;IAEpC,MAAM,OAAO,GAAG,CAAC,KAAK,IAA8B,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,iCAAiC,CAAC,MAAM,CAAC,CAAC;YAC7D,SAAS,CAAC,sBAAsB,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,qCAAqC,CAAC,CAAC;YAC9G,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,uBAAuB,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,yBAAyB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,yBAAyB,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,MAAM,OAAO,CAAC;AACvB,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC;IACpE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,QAAgB,EAAE,UAAkB;IAC7E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrC,IAAI,GAAG,KAAK,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI;YAAE,MAAM;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YACjE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,IAAI,WAAW,GAAa,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,WAAW,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC;gBAAC,MAAM,CAAC;oBACP,WAAW,GAAG,EAAE,CAAC;gBACnB,CAAC;gBACD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;oBAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAAE,SAAS;oBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACtC,IAAI,GAAG,KAAK,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,SAAS;oBACpD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QACD,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,+BAA+B,CAC5C,WAAmB,EACnB,aAAqB,EACrB,UAAkB;IAElB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,KAAK,EAChB,KAAsB,EACtB,WAAmB,EACnB,gBAAwB,EACxB,kBAA0B,EACuC,EAAE;QACnE,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YACtD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACnE,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,cAAc;gBAAE,SAAS;YAC9D,IAAI,CAAC,CAAC,MAAM,qCAAqC,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;gBAAE,SAAS;YAC1F,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC;QACxE,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,cAAc,EAAE,SAAS,IAAI,IAAI,CAAC,CAAC;YACxF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7D,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAClH,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,WAAmB,EACnB,QAAgB,EAChB,UAAkB;IAElB,MAAM,UAAU,GAAG,MAAM,2BAA2B,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC3E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,+BAA+B,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtF,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,WAAmB,EACnB,QAAgB,EAChB,UAAkB;IAElB,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACpF,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC;AAC5F,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,WAAmB,EACnB,QAAgB,EAChB,UAAkB,EAClB,IAAY;IAEZ,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,sBAAsB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChF,OAAO,OAAO,CAAC,UAAU,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAsB,EAAE,OAAe,EAAE,KAAa;IAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC;QAC3B,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,+BAA+B,CAC5C,WAAmB,EACnB,QAAgB,EAChB,KAAwB,EACxB,UAAkB;IAElB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,IAAI,SAAwB,CAAC;IAC7B,IAAI,cAAkC,CAAC;IACvC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChF,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;QAC/B,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,MAAM,6BAA6B,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,IAAI,UAAU,GAAsB,KAAK,CAAC;IAC1C,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5D,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,WAAW,GAAG,SAAS,CAAC;IAC5B,IAAI,YAAY,GAAG,MAAM,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACjE,IAAI,gBAAgB,GAAG,cAAc,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACzE,IAAI,cAAc,EAAE,CAAC;QACnB,YAAY,GAAG,oBAAoB,CAAC,YAAY,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;IACrG,CAAC;IACD,IAAI,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACnD,IAAI,cAAc;QAAE,kBAAkB,GAAG,cAAc,CAAC;IACxD,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC5B,IAAI,aAAa;gBAAE,OAAO,WAAW,CAAC;YACtC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACnE,IAAI,CAAC,CAAC,MAAM,qCAAqC,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;gBAChF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC3C,YAAY,GAAG,MAAM,0BAA0B,CAAC,WAAW,CAAC,CAAC;YAC7D,gBAAgB,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACnD,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC/C,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,MAAM,EAAE,CAAC;YACX,YAAY,GAAG,MAAM,CAAC;YACtB,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,cAAc,EAAE,SAAS,IAAI,KAAK,CAAC,CAAC;YAC7F,kBAAkB,GAAG,gBAAgB,CAAC;YACtC,SAAS;QACX,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,aAAa;gBAAE,OAAO,IAAI,CAAC;YAC/B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,WAAW,GAAG,YAAY,CAAC;QAC3B,YAAY,GAAG,MAAM,0BAA0B,CAAC,WAAW,CAAC,CAAC;QAC7D,gBAAgB,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACnD,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,aAAa;QAAE,OAAO,WAAW,CAAC;IACtC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAsB,EAAE,KAAa,EAAE,SAAiB;IACxF,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;QACtC,IAAI,CAAC,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,KAAK,IAAI,QAAQ,CAAC,GAAG;YAAE,SAAS;QAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9D,OAAO,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,SAAS,CAAC;IACxE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,QAAgB,EAChB,IAAY,EACZ,aAAsB,EACtB,mBAA4B;IAE5B,MAAM,UAAU,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE/B,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,MAAM,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YACzD,kBAAkB;gBAChB,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,IAAI,kBAAkB,CAAC;QAC7G,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QACvE,IAAI,MAAM,qCAAqC,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC;YAC7E,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/F,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAExC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE5B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChF,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,UAAU,CAAC;QAC5C,OAAO,sBAAsB,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACtE,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,sBAAsB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACnD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export declare const STYLESHEET_RESOLUTION_EXTENSIONS: readonly [".css", ".scss", ".less"];
2
- export declare const DEFAULT_RESOLUTION_EXTENSIONS: readonly [".ts", ".tsx", ".js", ".jsx", ".mts", ".cts", ".mjs", ".cjs", ".json", ".css", ".scss", ".less", ".php", ".html", ".vue", ".svelte", ".go", ".java", ".cs", ".rb", ".rs", ".c", ".h", ".cc", ".cpp", ".cxx", ".c++", ".hpp", ".hh", ".hxx", ".ipp", ".tpp", ".inl", ".kt", ".kts", ".swift"];
2
+ export declare const DEFAULT_RESOLUTION_EXTENSIONS: readonly [".ts", ".tsx", ".d.ts", ".js", ".jsx", ".mts", ".d.mts", ".cts", ".d.cts", ".mjs", ".cjs", ".json", ".css", ".scss", ".less", ".php", ".html", ".vue", ".svelte", ".go", ".java", ".cs", ".rb", ".rs", ".c", ".h", ".cc", ".cpp", ".cxx", ".c++", ".hpp", ".hh", ".hxx", ".ipp", ".tpp", ".inl", ".kt", ".kts", ".swift"];
3
3
  export declare function getResolutionExtensions(resolutionExtensions?: readonly string[]): string[];
4
4
  export declare function listResolutionCandidates(base: string, resolutionExtensions?: readonly string[]): string[];
5
5
  //# sourceMappingURL=resolution-candidates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolution-candidates.d.ts","sourceRoot":"","sources":["../../src/util/resolution-candidates.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gCAAgC,qCAAsC,CAAC;AAEpF,eAAO,MAAM,6BAA6B,wSAmChC,CAAC;AAaX,wBAAgB,uBAAuB,CAAC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAG1F;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAmBzG"}
1
+ {"version":3,"file":"resolution-candidates.d.ts","sourceRoot":"","sources":["../../src/util/resolution-candidates.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gCAAgC,qCAAsC,CAAC;AAEpF,eAAO,MAAM,6BAA6B,qUAsChC,CAAC;AAaX,wBAAgB,uBAAuB,CAAC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAG1F;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAmBzG"}
@@ -3,10 +3,13 @@ export const STYLESHEET_RESOLUTION_EXTENSIONS = [".css", ".scss", ".less"];
3
3
  export const DEFAULT_RESOLUTION_EXTENSIONS = [
4
4
  ".ts",
5
5
  ".tsx",
6
+ ".d.ts",
6
7
  ".js",
7
8
  ".jsx",
8
9
  ".mts",
10
+ ".d.mts",
9
11
  ".cts",
12
+ ".d.cts",
10
13
  ".mjs",
11
14
  ".cjs",
12
15
  ".json",
@@ -37,14 +40,14 @@ export const DEFAULT_RESOLUTION_EXTENSIONS = [
37
40
  ".swift",
38
41
  ];
39
42
  const EXPLICIT_SPECIFIER_EXTENSION_FAMILIES = {
40
- ".ts": [".ts", ".tsx", ".js", ".jsx"],
41
- ".tsx": [".tsx", ".jsx", ".ts", ".js"],
42
- ".js": [".ts", ".tsx", ".js", ".jsx"],
43
- ".jsx": [".tsx", ".jsx", ".ts", ".js"],
44
- ".mts": [".mts", ".mjs"],
45
- ".mjs": [".mts", ".mjs"],
46
- ".cts": [".cts", ".cjs"],
47
- ".cjs": [".cts", ".cjs"],
43
+ ".ts": [".ts", ".tsx", ".d.ts", ".js", ".jsx"],
44
+ ".tsx": [".tsx", ".jsx", ".ts", ".d.ts", ".js"],
45
+ ".js": [".ts", ".tsx", ".d.ts", ".js", ".jsx"],
46
+ ".jsx": [".tsx", ".jsx", ".ts", ".d.ts", ".js"],
47
+ ".mts": [".mts", ".d.mts", ".mjs"],
48
+ ".mjs": [".mts", ".d.mts", ".mjs"],
49
+ ".cts": [".cts", ".d.cts", ".cjs"],
50
+ ".cjs": [".cts", ".d.cts", ".cjs"],
48
51
  };
49
52
  export function getResolutionExtensions(resolutionExtensions) {
50
53
  const extensions = resolutionExtensions === undefined ? DEFAULT_RESOLUTION_EXTENSIONS : resolutionExtensions;