skir 1.2.5 → 1.2.6

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 (91) hide show
  1. package/dist/casing.d.ts +5 -0
  2. package/dist/casing.js +23 -0
  3. package/dist/casing.js.map +1 -0
  4. package/dist/command_line_parser.d.ts +36 -0
  5. package/dist/command_line_parser.d.ts.map +1 -0
  6. package/dist/command_line_parser.js +240 -0
  7. package/dist/command_line_parser.js.map +1 -0
  8. package/dist/compatibility_checker.d.ts +74 -0
  9. package/dist/compatibility_checker.js +331 -0
  10. package/dist/compatibility_checker.js.map +1 -0
  11. package/dist/compiler.d.ts +3 -0
  12. package/dist/compiler.js +406 -0
  13. package/dist/compiler.js.map +1 -0
  14. package/dist/completion_helper.d.ts +27 -0
  15. package/dist/completion_helper.js +101 -0
  16. package/dist/completion_helper.js.map +1 -0
  17. package/dist/config.d.ts +18 -0
  18. package/dist/config.js +19 -0
  19. package/dist/config.js.map +1 -0
  20. package/dist/config_parser.d.ts +34 -0
  21. package/dist/config_parser.js +217 -0
  22. package/dist/config_parser.js.map +1 -0
  23. package/dist/definition_finder.d.ts +16 -0
  24. package/dist/definition_finder.js +375 -0
  25. package/dist/definition_finder.js.map +1 -0
  26. package/dist/dependency_manager.d.ts +14 -0
  27. package/dist/dependency_manager.js +109 -0
  28. package/dist/dependency_manager.js.map +1 -0
  29. package/dist/doc_comment_parser.d.ts +6 -0
  30. package/dist/doc_comment_parser.js +269 -0
  31. package/dist/doc_comment_parser.js.map +1 -0
  32. package/dist/doc_reference_resolver.d.ts +5 -0
  33. package/dist/doc_reference_resolver.js +232 -0
  34. package/dist/doc_reference_resolver.js.map +1 -0
  35. package/dist/error_renderer.d.ts +24 -0
  36. package/dist/error_renderer.js +326 -0
  37. package/dist/error_renderer.js.map +1 -0
  38. package/dist/exit_error.d.ts +8 -0
  39. package/dist/exit_error.d.ts.map +1 -0
  40. package/dist/exit_error.js +8 -0
  41. package/dist/exit_error.js.map +1 -0
  42. package/dist/expected_names.d.ts +11 -0
  43. package/dist/expected_names.js +34 -0
  44. package/dist/expected_names.js.map +1 -0
  45. package/dist/formatter.d.ts +28 -0
  46. package/dist/formatter.js +338 -0
  47. package/dist/formatter.js.map +1 -0
  48. package/dist/get_dependencies_flow.d.ts +40 -0
  49. package/dist/get_dependencies_flow.js +177 -0
  50. package/dist/get_dependencies_flow.js.map +1 -0
  51. package/dist/import_block_formatter.d.ts +3 -0
  52. package/dist/import_block_formatter.js +36 -0
  53. package/dist/import_block_formatter.js.map +1 -0
  54. package/dist/index.d.ts +2 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +2 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/io.d.ts +23 -0
  59. package/dist/io.d.ts.map +1 -0
  60. package/dist/io.js +58 -0
  61. package/dist/io.js.map +1 -0
  62. package/dist/literals.d.ts +12 -0
  63. package/dist/literals.js +96 -0
  64. package/dist/literals.js.map +1 -0
  65. package/dist/module_collector.d.ts +9 -0
  66. package/dist/module_collector.js +73 -0
  67. package/dist/module_collector.js.map +1 -0
  68. package/dist/module_set.d.ts +51 -0
  69. package/dist/module_set.js +1331 -0
  70. package/dist/module_set.js.map +1 -0
  71. package/dist/package_downloader.d.ts +4 -0
  72. package/dist/package_downloader.js +256 -0
  73. package/dist/package_downloader.js.map +1 -0
  74. package/dist/package_types.d.ts +30 -0
  75. package/dist/package_types.d.ts.map +1 -0
  76. package/dist/package_types.js +2 -0
  77. package/dist/package_types.js.map +1 -0
  78. package/dist/parser.d.ts +7 -0
  79. package/dist/parser.js +1335 -0
  80. package/dist/parser.js.map +1 -0
  81. package/dist/project_initializer.d.ts +2 -0
  82. package/dist/project_initializer.d.ts.map +1 -0
  83. package/dist/project_initializer.js +207 -0
  84. package/dist/project_initializer.js.map +1 -0
  85. package/dist/snapshotter.d.ts +16 -0
  86. package/dist/snapshotter.js +263 -0
  87. package/dist/snapshotter.js.map +1 -0
  88. package/dist/tokenizer.d.ts +18 -0
  89. package/dist/tokenizer.js +244 -0
  90. package/dist/tokenizer.js.map +1 -0
  91. package/package.json +1 -1
@@ -0,0 +1,217 @@
1
+ import * as CcGen from "skir-cc-gen";
2
+ import * as DartGen from "skir-dart-gen";
3
+ import * as GleamGen from "skir-gleam-gen";
4
+ import * as GoGen from "skir-go-gen";
5
+ import * as JavaGen from "skir-java-gen";
6
+ import * as KotlinGen from "skir-kotlin-gen";
7
+ import * as PythonGen from "skir-python-gen";
8
+ import * as RustGen from "skir-rust-gen";
9
+ import * as SwiftGen from "skir-swift-gen";
10
+ import * as TypescriptGen from "skir-typescript-gen";
11
+ import * as ZigGen from "skir-zig-gen";
12
+ import { LineCounter, parseDocument } from "yaml";
13
+ import { SkirConfig } from "./config.js";
14
+ /** Synchronous version - doesn't import any module. */
15
+ export function parseSkirConfig(yamlCode) {
16
+ return parseSkirConfigInternal(yamlCode, (mod) => STATIC_GENERATORS[mod]);
17
+ }
18
+ /** Async version - dynamically imports generator modules. */
19
+ export async function parseSkirConfigWithDynamicImports(yamlCode) {
20
+ return parseSkirConfigInternalAsync(yamlCode, importCodeGenerator);
21
+ }
22
+ export async function importCodeGenerator(mod) {
23
+ const module = await import(mod);
24
+ const generator = module.GENERATOR;
25
+ if (typeof generator !== "object") {
26
+ throw new Error(`Cannot import GENERATOR from module ${mod}`);
27
+ }
28
+ return generator;
29
+ }
30
+ function parseYaml(yamlCode) {
31
+ const errors = [];
32
+ // 1. Parse YAML into a Document object
33
+ const lineCounter = new LineCounter();
34
+ const doc = parseDocument(yamlCode, { lineCounter });
35
+ const offsetToPos = (offset) => {
36
+ const pos = lineCounter.linePos(offset);
37
+ return {
38
+ offset: offset,
39
+ lineNumber: pos.line,
40
+ colNumber: pos.col,
41
+ };
42
+ };
43
+ const offsetRangeToRange = (start, end) => ({
44
+ start: offsetToPos(start),
45
+ end: offsetToPos(end),
46
+ });
47
+ const pathToRange = (path) => {
48
+ const node = doc.getIn(path, true);
49
+ if (!node || !node.range) {
50
+ return undefined;
51
+ }
52
+ return offsetRangeToRange(node.range[0], node.range[1]);
53
+ };
54
+ const pushErrorAtPath = (path, message) => {
55
+ const pathRemainder = [];
56
+ while (path.length !== 0) {
57
+ const range = pathToRange(path);
58
+ if (range) {
59
+ break;
60
+ }
61
+ else {
62
+ // It's possible that 'path' does not map to a node if 'path' refers to
63
+ // a property which is missing. In that case, we pop the last element
64
+ // of 'path' and try again, until we find a node that exists. The
65
+ // elements which were popped will be included in the error message.
66
+ pathRemainder.push(path.at(-1));
67
+ path = path.slice(0, -1);
68
+ }
69
+ }
70
+ pathRemainder.reverse();
71
+ const pathRemainderStr = pathRemainder
72
+ .map((p, i) => typeof p === "number" ? `[${p}]` : i === 0 ? p : `.${String(p)}`)
73
+ .join("");
74
+ const messagePrefix = pathRemainder.length
75
+ ? `Missing property '${pathRemainderStr}': `
76
+ : "";
77
+ const range = pathToRange(path);
78
+ errors.push({
79
+ message: messagePrefix + message,
80
+ range: range,
81
+ });
82
+ };
83
+ // Check for YAML parsing errors
84
+ if (doc.errors.length > 0) {
85
+ for (const error of doc.errors) {
86
+ const range = offsetRangeToRange(error.pos[0], error.pos[1]);
87
+ errors.push({
88
+ message: error.message,
89
+ range: range,
90
+ });
91
+ }
92
+ return {
93
+ earlyReturn: {
94
+ skirConfig: undefined,
95
+ errors: errors,
96
+ },
97
+ zodResult: { success: false },
98
+ errors,
99
+ pushErrorAtPath,
100
+ };
101
+ }
102
+ // 2. Validate with Zod schema
103
+ const jsData = doc.toJS();
104
+ const zodResult = SkirConfig.safeParse(jsData);
105
+ if (!zodResult.success) {
106
+ for (const issue of zodResult.error.issues) {
107
+ pushErrorAtPath(issue.path, issue.message);
108
+ }
109
+ const maybeForgotToEditAfterInit = jsData &&
110
+ typeof jsData === "object" &&
111
+ "generators" in jsData &&
112
+ jsData.generators === null
113
+ ? true
114
+ : false;
115
+ return {
116
+ earlyReturn: {
117
+ skirConfig: undefined,
118
+ errors: errors,
119
+ maybeForgotToEditAfterInit,
120
+ },
121
+ zodResult,
122
+ errors,
123
+ pushErrorAtPath,
124
+ };
125
+ }
126
+ return {
127
+ zodResult,
128
+ errors,
129
+ pushErrorAtPath,
130
+ };
131
+ }
132
+ function parseSkirConfigInternal(yamlCode, getGenerator) {
133
+ const { earlyReturn, errors, zodResult, pushErrorAtPath } = parseYaml(yamlCode);
134
+ if (earlyReturn) {
135
+ return earlyReturn;
136
+ }
137
+ // Validate each generator's config with Zod schema
138
+ for (let i = 0; i < zodResult.data.generators.length; i++) {
139
+ const generatorConfig = zodResult.data.generators[i];
140
+ const { mod } = generatorConfig;
141
+ const generator = getGenerator(mod);
142
+ if (generator) {
143
+ const parsedGeneratorConfig = generator.configType.safeParse(generatorConfig.config);
144
+ if (!parsedGeneratorConfig.success) {
145
+ for (const issue of parsedGeneratorConfig.error.issues) {
146
+ const path = [
147
+ "generators",
148
+ i,
149
+ "config",
150
+ ...issue.path,
151
+ ];
152
+ pushErrorAtPath(path, issue.message ?? "Error");
153
+ }
154
+ }
155
+ }
156
+ }
157
+ if (errors.length > 0) {
158
+ return { skirConfig: undefined, errors: errors };
159
+ }
160
+ return { skirConfig: zodResult.data, errors: [] };
161
+ }
162
+ async function parseSkirConfigInternalAsync(yamlCode, getGenerator) {
163
+ const { earlyReturn, errors, zodResult, pushErrorAtPath } = parseYaml(yamlCode);
164
+ if (earlyReturn) {
165
+ return earlyReturn;
166
+ }
167
+ // Validate each generator's config with Zod schema
168
+ for (let i = 0; i < zodResult.data.generators.length; i++) {
169
+ const generatorConfig = zodResult.data.generators[i];
170
+ const { mod } = generatorConfig;
171
+ let generator;
172
+ try {
173
+ generator = await getGenerator(mod);
174
+ }
175
+ catch (e) {
176
+ if (e instanceof Error) {
177
+ pushErrorAtPath(["generators", i, "mod"], e.message);
178
+ continue;
179
+ }
180
+ else {
181
+ throw e;
182
+ }
183
+ }
184
+ if (generator) {
185
+ const parsedGeneratorConfig = generator.configType.safeParse(generatorConfig.config);
186
+ if (!parsedGeneratorConfig.success) {
187
+ for (const issue of parsedGeneratorConfig.error.issues) {
188
+ const path = [
189
+ "generators",
190
+ i,
191
+ "config",
192
+ ...issue.path,
193
+ ];
194
+ pushErrorAtPath(path, issue.message ?? "Error");
195
+ }
196
+ }
197
+ }
198
+ }
199
+ if (errors.length > 0) {
200
+ return { skirConfig: undefined, errors: errors };
201
+ }
202
+ return { skirConfig: zodResult.data, errors: [] };
203
+ }
204
+ const STATIC_GENERATORS = {
205
+ "skir-cc-gen": CcGen.GENERATOR,
206
+ "skir-dart-gen": DartGen.GENERATOR,
207
+ "skir-gleam-gen": GleamGen.GENERATOR,
208
+ "skir-go-gen": GoGen.GENERATOR,
209
+ "skir-java-gen": JavaGen.GENERATOR,
210
+ "skir-kotlin-gen": KotlinGen.GENERATOR,
211
+ "skir-python-gen": PythonGen.GENERATOR,
212
+ "skir-rust-gen": RustGen.GENERATOR,
213
+ "skir-swift-gen": SwiftGen.GENERATOR,
214
+ "skir-zig-gen": ZigGen.GENERATOR,
215
+ "skir-typescript-gen": TypescriptGen.GENERATOR,
216
+ };
217
+ //# sourceMappingURL=config_parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config_parser.js","sourceRoot":"","sources":["../src/config_parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Utilities to help implement the jump-to-definition functionality for skir
3
+ * files in IDEs.
4
+ */
5
+ import { type Constant, type Field, type ImportAlias, type Method, type Module, type Record, type Token } from "skir-internal";
6
+ export interface DefinitionMatch {
7
+ /** Module containing the definition. */
8
+ modulePath: string;
9
+ /** Position of the definition within the module. */
10
+ declaration: Constant | Field | ImportAlias | Method | Record | undefined;
11
+ /** Token which got hovered. */
12
+ referenceToken: Token;
13
+ }
14
+ export declare function findDefinition(module: Module, position: number): DefinitionMatch | null;
15
+ export declare function findReferences(definition: Token, modules: readonly Module[]): Token[];
16
+ //# sourceMappingURL=definition_finder.d.ts.map
@@ -0,0 +1,375 @@
1
+ /**
2
+ * Utilities to help implement the jump-to-definition functionality for skir
3
+ * files in IDEs.
4
+ */
5
+ import { unquoteAndUnescape, } from "skir-internal";
6
+ export function findDefinition(module, position) {
7
+ return findDefinitionInDeclarations(module.declarations, position);
8
+ }
9
+ function findDefinitionInDeclarations(declarations, position) {
10
+ for (const declaration of declarations) {
11
+ const maybeMatch = findDefinitionInDeclaration(declaration, position);
12
+ if (maybeMatch) {
13
+ return maybeMatch;
14
+ }
15
+ }
16
+ return null;
17
+ }
18
+ function findDefinitionInDeclaration(declaration, position) {
19
+ // First, look for a match in the doc comment.
20
+ switch (declaration.kind) {
21
+ case "import":
22
+ case "import-alias":
23
+ case "removed":
24
+ // No doc.
25
+ break;
26
+ default: {
27
+ for (const docPiece of declaration.doc.pieces) {
28
+ if (docPiece.kind === "reference") {
29
+ for (const namePart of docPiece.nameParts) {
30
+ if (tokenContains(namePart.token, position)) {
31
+ const { declaration } = namePart;
32
+ if (declaration) {
33
+ return declarationToMatch(declaration, namePart.token);
34
+ }
35
+ else {
36
+ return null;
37
+ }
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
44
+ // If the position lands on the declaration's own name token, return it as
45
+ // its own definition.
46
+ switch (declaration.kind) {
47
+ case "constant":
48
+ case "field":
49
+ case "import-alias":
50
+ case "method":
51
+ case "record": {
52
+ if (tokenContains(declaration.name, position)) {
53
+ return declarationToMatch(declaration, declaration.name);
54
+ }
55
+ break;
56
+ }
57
+ }
58
+ // Then look for a match in the declaration itself.
59
+ switch (declaration.kind) {
60
+ case "constant": {
61
+ if (declaration.type) {
62
+ const maybeMatch = findDefinitionInResolvedType(declaration.type, position);
63
+ if (maybeMatch) {
64
+ return maybeMatch;
65
+ }
66
+ }
67
+ const maybeMatch = findDefinitionInValue(declaration.value, position);
68
+ if (maybeMatch) {
69
+ return maybeMatch;
70
+ }
71
+ return null;
72
+ }
73
+ case "field": {
74
+ if (declaration.type) {
75
+ return findDefinitionInResolvedType(declaration.type, position);
76
+ }
77
+ return null;
78
+ }
79
+ case "import":
80
+ case "import-alias": {
81
+ if (tokenContains(declaration.modulePath, position) &&
82
+ declaration.resolvedModulePath) {
83
+ return {
84
+ modulePath: declaration.resolvedModulePath,
85
+ declaration: undefined,
86
+ referenceToken: declaration.modulePath,
87
+ };
88
+ }
89
+ return null;
90
+ }
91
+ case "method": {
92
+ if (declaration.requestType) {
93
+ const maybeMatch = findDefinitionInResolvedType(declaration.requestType, position);
94
+ if (maybeMatch) {
95
+ return maybeMatch;
96
+ }
97
+ }
98
+ if (declaration.responseType) {
99
+ const maybeMatch = findDefinitionInResolvedType(declaration.responseType, position);
100
+ if (maybeMatch) {
101
+ return maybeMatch;
102
+ }
103
+ }
104
+ return null;
105
+ }
106
+ case "record": {
107
+ return (findDefinitionInDeclarations(declaration.fields, position) ??
108
+ findDefinitionInDeclarations(declaration.nestedRecords, position));
109
+ }
110
+ case "removed": {
111
+ return null;
112
+ }
113
+ }
114
+ }
115
+ function findDefinitionInResolvedType(type, position) {
116
+ switch (type.kind) {
117
+ case "array": {
118
+ if (type.key) {
119
+ for (const item of type.key.path) {
120
+ if (tokenContains(item.name, position)) {
121
+ const { declaration } = item;
122
+ if (declaration) {
123
+ return declarationToMatch(declaration, item.name);
124
+ }
125
+ }
126
+ }
127
+ }
128
+ return findDefinitionInResolvedType(type.item, position);
129
+ }
130
+ case "optional": {
131
+ return findDefinitionInResolvedType(type.other, position);
132
+ }
133
+ case "primitive": {
134
+ return null;
135
+ }
136
+ case "record": {
137
+ for (const namePart of type.nameParts) {
138
+ if (tokenContains(namePart.token, position)) {
139
+ return declarationToMatch(namePart.declaration, namePart.token);
140
+ }
141
+ }
142
+ return null;
143
+ }
144
+ }
145
+ }
146
+ function findDefinitionInValue(value, position) {
147
+ switch (value.kind) {
148
+ case "array": {
149
+ for (const item of value.items) {
150
+ const maybeMatch = findDefinitionInValue(item, position);
151
+ if (maybeMatch) {
152
+ return maybeMatch;
153
+ }
154
+ }
155
+ return null;
156
+ }
157
+ case "object": {
158
+ if (!value.record) {
159
+ return null;
160
+ }
161
+ if (value.record.recordType === "struct") {
162
+ // Look for a match with a field name.
163
+ for (const entry of Object.values(value.entries)) {
164
+ if (tokenContains(entry.name, position)) {
165
+ const { fieldDeclaration } = entry;
166
+ if (fieldDeclaration) {
167
+ return declarationToMatch(fieldDeclaration, entry.name);
168
+ }
169
+ else {
170
+ return null;
171
+ }
172
+ }
173
+ }
174
+ }
175
+ else {
176
+ // An enum. Look for a match with the "kind" field.
177
+ const kindEntry = value.entries["kind"];
178
+ if (kindEntry && isStringLiteral(kindEntry.value)) {
179
+ if (tokenContains(kindEntry.value.token, position)) {
180
+ const variantName = unquoteAndUnescape(kindEntry.value.token.text);
181
+ const variantDeclaration = value.record.nameToDeclaration[variantName];
182
+ if (variantDeclaration?.kind === "field") {
183
+ return declarationToMatch(variantDeclaration, kindEntry.value.token);
184
+ }
185
+ }
186
+ else {
187
+ return null;
188
+ }
189
+ }
190
+ }
191
+ // Look for a match within the field values.
192
+ for (const entry of Object.values(value.entries)) {
193
+ const maybeMatch = findDefinitionInValue(entry.value, position);
194
+ if (maybeMatch) {
195
+ return maybeMatch;
196
+ }
197
+ }
198
+ return null;
199
+ }
200
+ case "literal": {
201
+ if (isStringLiteral(value) && value.type?.kind === "enum") {
202
+ const { variant } = value.type;
203
+ return declarationToMatch(variant, value.token);
204
+ }
205
+ return null;
206
+ }
207
+ }
208
+ }
209
+ function tokenContains(token, position) {
210
+ const end = token.position + token.text.length;
211
+ return position >= token.position && position <= end;
212
+ }
213
+ function declarationToMatch(declaration, referenceToken) {
214
+ const { name } = declaration;
215
+ return {
216
+ modulePath: name.line.modulePath,
217
+ declaration: declaration,
218
+ referenceToken,
219
+ };
220
+ }
221
+ function isStringLiteral(value) {
222
+ return value.kind === "literal" && /^["']/.test(value.token.text);
223
+ }
224
+ // -----------------------------------------------------------------------------
225
+ // REFERENCES FINDER
226
+ // -----------------------------------------------------------------------------
227
+ export function findReferences(definition, modules) {
228
+ const references = [];
229
+ for (const module of modules) {
230
+ findReferencesInDeclarations(definition, module.declarations, references);
231
+ }
232
+ return references;
233
+ }
234
+ function findReferencesInDeclarations(definition, declarations, references) {
235
+ for (const declaration of declarations) {
236
+ findReferencesInDeclaration(definition, declaration, references);
237
+ }
238
+ }
239
+ function findReferencesInDeclaration(definition, declaration, references) {
240
+ // First, collect references from the doc comment.
241
+ switch (declaration.kind) {
242
+ case "import":
243
+ case "import-alias":
244
+ case "removed":
245
+ // No doc.
246
+ break;
247
+ default: {
248
+ for (const docPiece of declaration.doc.pieces) {
249
+ if (docPiece.kind === "reference") {
250
+ for (const namePart of docPiece.nameParts) {
251
+ if (namePart.declaration?.name === definition) {
252
+ references.push(namePart.token);
253
+ }
254
+ }
255
+ }
256
+ }
257
+ }
258
+ }
259
+ // Then collect references from the declaration body.
260
+ switch (declaration.kind) {
261
+ case "constant": {
262
+ if (declaration.type) {
263
+ findReferencesInResolvedType(definition, declaration.type, references);
264
+ }
265
+ findReferencesInValue(definition, declaration.value, references);
266
+ break;
267
+ }
268
+ case "field": {
269
+ if (declaration.type) {
270
+ findReferencesInResolvedType(definition, declaration.type, references);
271
+ }
272
+ break;
273
+ }
274
+ case "import":
275
+ case "import-alias": {
276
+ // Module path tokens are not declaration references.
277
+ break;
278
+ }
279
+ case "method": {
280
+ if (declaration.requestType) {
281
+ findReferencesInResolvedType(definition, declaration.requestType, references);
282
+ }
283
+ if (declaration.responseType) {
284
+ findReferencesInResolvedType(definition, declaration.responseType, references);
285
+ }
286
+ break;
287
+ }
288
+ case "record": {
289
+ findReferencesInDeclarations(definition, declaration.fields, references);
290
+ break;
291
+ }
292
+ case "removed": {
293
+ break;
294
+ }
295
+ }
296
+ }
297
+ function findReferencesInResolvedType(definition, type, references) {
298
+ switch (type.kind) {
299
+ case "array": {
300
+ if (type.key) {
301
+ for (const item of type.key.path) {
302
+ if (item.declaration?.name === definition) {
303
+ references.push(item.name);
304
+ }
305
+ }
306
+ }
307
+ findReferencesInResolvedType(definition, type.item, references);
308
+ break;
309
+ }
310
+ case "optional": {
311
+ findReferencesInResolvedType(definition, type.other, references);
312
+ break;
313
+ }
314
+ case "primitive": {
315
+ break;
316
+ }
317
+ case "record": {
318
+ for (const namePart of type.nameParts) {
319
+ if (namePart.declaration.name === definition) {
320
+ references.push(namePart.token);
321
+ }
322
+ }
323
+ break;
324
+ }
325
+ }
326
+ }
327
+ function findReferencesInValue(definition, value, references) {
328
+ switch (value.kind) {
329
+ case "array": {
330
+ for (const item of value.items) {
331
+ findReferencesInValue(definition, item, references);
332
+ }
333
+ break;
334
+ }
335
+ case "object": {
336
+ if (!value.record) {
337
+ break;
338
+ }
339
+ if (value.record.recordType === "struct") {
340
+ // Check field name keys, then recurse into field values.
341
+ for (const entry of Object.values(value.entries)) {
342
+ if (entry.fieldDeclaration?.name === definition) {
343
+ references.push(entry.name);
344
+ }
345
+ findReferencesInValue(definition, entry.value, references);
346
+ }
347
+ }
348
+ else {
349
+ // An enum. Only the "kind" token is a navigable reference — mirrors
350
+ // findDefinition's behavior of returning null when the position is
351
+ // not within the kind token.
352
+ const kindEntry = value.entries["kind"];
353
+ if (kindEntry && kindEntry.value.kind === "literal") {
354
+ const variantName = unquoteAndUnescape(kindEntry.value.token.text);
355
+ const variantDeclaration = value.record.nameToDeclaration[variantName];
356
+ if (variantDeclaration?.kind === "field" &&
357
+ variantDeclaration.name === definition) {
358
+ references.push(kindEntry.value.token);
359
+ }
360
+ }
361
+ }
362
+ break;
363
+ }
364
+ case "literal": {
365
+ if (isStringLiteral(value) && value.type?.kind === "enum") {
366
+ const { variant } = value.type;
367
+ if (variant.name === definition) {
368
+ references.push(value.token);
369
+ }
370
+ }
371
+ break;
372
+ }
373
+ }
374
+ }
375
+ //# sourceMappingURL=definition_finder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition_finder.js","sourceRoot":"","sources":["../src/definition_finder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { AsyncFileReader } from "./io.js";
2
+ import type { DependenciesResult, PackageDownloader, PackageIdToVersion } from "./package_types.js";
3
+ export declare class DependencyManager {
4
+ private readonly rootDir;
5
+ private readonly githubToken;
6
+ private readonly fileReader;
7
+ private readonly packageDownloader;
8
+ constructor(rootDir: string, githubToken: string | undefined, fileReader?: AsyncFileReader, packageDownloader?: PackageDownloader);
9
+ getDependencies(dependencies: PackageIdToVersion, writeOption?: "write" | "no-write"): Promise<DependenciesResult>;
10
+ private writeOnDisk;
11
+ private get externalDir();
12
+ private readDependenciesFile;
13
+ }
14
+ //# sourceMappingURL=dependency_manager.d.ts.map