skir 0.0.3 → 0.0.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 (60) hide show
  1. package/dist/casing.d.ts.map +1 -1
  2. package/dist/casing.js +4 -1
  3. package/dist/casing.js.map +1 -1
  4. package/dist/casing.test.js +35 -1
  5. package/dist/casing.test.js.map +1 -1
  6. package/dist/compatibility_checker.test.js +2 -2
  7. package/dist/compiler.js +23 -42
  8. package/dist/compiler.js.map +1 -1
  9. package/dist/config.d.ts +2 -2
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +5 -10
  12. package/dist/config.js.map +1 -1
  13. package/dist/config_parser.d.ts +25 -0
  14. package/dist/config_parser.d.ts.map +1 -0
  15. package/dist/config_parser.js +125 -0
  16. package/dist/config_parser.js.map +1 -0
  17. package/dist/config_parser.test.d.ts +2 -0
  18. package/dist/config_parser.test.d.ts.map +1 -0
  19. package/dist/config_parser.test.js +386 -0
  20. package/dist/config_parser.test.js.map +1 -0
  21. package/dist/doc_comment_parser.d.ts +3 -2
  22. package/dist/doc_comment_parser.d.ts.map +1 -1
  23. package/dist/doc_comment_parser.js +67 -52
  24. package/dist/doc_comment_parser.js.map +1 -1
  25. package/dist/doc_comment_parser.test.js +86 -154
  26. package/dist/doc_comment_parser.test.js.map +1 -1
  27. package/dist/error_renderer.d.ts +4 -0
  28. package/dist/error_renderer.d.ts.map +1 -1
  29. package/dist/error_renderer.js +21 -0
  30. package/dist/error_renderer.js.map +1 -1
  31. package/dist/module_set.d.ts.map +1 -1
  32. package/dist/module_set.js +29 -12
  33. package/dist/module_set.js.map +1 -1
  34. package/dist/module_set.test.js +318 -173
  35. package/dist/module_set.test.js.map +1 -1
  36. package/dist/parser.d.ts.map +1 -1
  37. package/dist/parser.js +10 -10
  38. package/dist/parser.js.map +1 -1
  39. package/dist/project_initializer.js +9 -1
  40. package/dist/project_initializer.js.map +1 -1
  41. package/dist/tokenizer.d.ts +7 -1
  42. package/dist/tokenizer.d.ts.map +1 -1
  43. package/dist/tokenizer.js +12 -0
  44. package/dist/tokenizer.js.map +1 -1
  45. package/package.json +10 -5
  46. package/src/casing.ts +6 -1
  47. package/src/compiler.ts +26 -40
  48. package/src/config.ts +10 -15
  49. package/src/config_parser.ts +169 -0
  50. package/src/doc_comment_parser.ts +76 -52
  51. package/src/error_renderer.ts +34 -0
  52. package/src/module_set.ts +31 -15
  53. package/src/parser.ts +16 -10
  54. package/src/project_initializer.ts +9 -1
  55. package/src/tokenizer.ts +20 -2
  56. package/dist/language_server.d.ts +0 -15
  57. package/dist/language_server.d.ts.map +0 -1
  58. package/dist/language_server.js +0 -248
  59. package/dist/language_server.js.map +0 -1
  60. package/src/language_server.ts +0 -301
@@ -0,0 +1,386 @@
1
+ import { expect } from "buckwheat";
2
+ import { describe, it } from "mocha";
3
+ import { parseSkirConfig } from "./config_parser.js";
4
+ describe("config_parser", () => {
5
+ describe("parseConfig", () => {
6
+ it("should parse valid config with single generator", async () => {
7
+ const yamlCode = `
8
+ generators:
9
+ - mod: "@example/generator"
10
+ config:
11
+ foo: bar
12
+ srcDir: src
13
+ `;
14
+ const result = await parseSkirConfig(yamlCode);
15
+ expect(result).toMatch({
16
+ skirConfig: {
17
+ generators: [
18
+ {
19
+ mod: "@example/generator",
20
+ config: { foo: "bar" },
21
+ },
22
+ ],
23
+ srcDir: "src",
24
+ },
25
+ errors: [],
26
+ });
27
+ });
28
+ it("should parse valid config with multiple generators", async () => {
29
+ const yamlCode = `
30
+ generators:
31
+ - mod: "@example/gen1"
32
+ config: {}
33
+ - mod: "@example/gen2"
34
+ config:
35
+ setting: value
36
+ outDir: custom/skirout
37
+ `;
38
+ const result = await parseSkirConfig(yamlCode);
39
+ expect(result).toMatch({
40
+ skirConfig: {
41
+ generators: [
42
+ { mod: "@example/gen1", config: {} },
43
+ {
44
+ mod: "@example/gen2",
45
+ config: { setting: "value" },
46
+ outDir: "custom/skirout",
47
+ },
48
+ ],
49
+ },
50
+ errors: [],
51
+ });
52
+ });
53
+ it("should parse config with outDir array", async () => {
54
+ const yamlCode = `
55
+ generators:
56
+ - mod: "@example/generator"
57
+ config: {}
58
+ outDir:
59
+ - path/to/skirout
60
+ - another/skirout
61
+ `;
62
+ const result = await parseSkirConfig(yamlCode);
63
+ expect(result).toMatch({
64
+ skirConfig: {
65
+ generators: [
66
+ {
67
+ mod: "@example/generator",
68
+ config: {},
69
+ outDir: ["path/to/skirout", "another/skirout"],
70
+ },
71
+ ],
72
+ },
73
+ errors: [],
74
+ });
75
+ });
76
+ it("should parse config without optional srcDir", async () => {
77
+ const yamlCode = `
78
+ generators:
79
+ - mod: "@example/generator"
80
+ config: {}
81
+ `;
82
+ const result = await parseSkirConfig(yamlCode);
83
+ expect(result).toMatch({
84
+ skirConfig: {
85
+ generators: [{ mod: "@example/generator", config: {} }],
86
+ },
87
+ errors: [],
88
+ });
89
+ });
90
+ it("should return error for invalid YAML syntax", async () => {
91
+ const yamlCode = `
92
+ generators:
93
+ - mod: "@example/generator"
94
+ config:
95
+ invalid: [unclosed array
96
+ `;
97
+ const result = await parseSkirConfig(yamlCode);
98
+ expect(result).toMatch({
99
+ skirConfig: undefined,
100
+ errors: [
101
+ {
102
+ // message: "",
103
+ },
104
+ ], // At least one error
105
+ });
106
+ });
107
+ it("should return error with line number for YAML syntax error", async () => {
108
+ const yamlCode = `generators:
109
+ - mod: test
110
+ bad indentation`;
111
+ const result = await parseSkirConfig(yamlCode);
112
+ expect(result).toMatch({
113
+ skirConfig: undefined,
114
+ errors: [
115
+ {
116
+ range: {
117
+ start: {
118
+ lineNumber: 3,
119
+ colNumber: 5,
120
+ offset: 30,
121
+ },
122
+ end: {
123
+ lineNumber: 3,
124
+ colNumber: 20,
125
+ offset: 45,
126
+ },
127
+ },
128
+ },
129
+ ],
130
+ });
131
+ });
132
+ it("should return error for missing required field", async () => {
133
+ const yamlCode = `
134
+ generators:
135
+ - config: {}
136
+ `;
137
+ const result = await parseSkirConfig(yamlCode);
138
+ expect(result).toMatch({
139
+ skirConfig: undefined,
140
+ errors: [
141
+ {
142
+ message: /(required|expected)/i,
143
+ },
144
+ ],
145
+ });
146
+ });
147
+ it("should return error for wrong type", async () => {
148
+ const yamlCode = `
149
+ generators: "not an array"
150
+ `;
151
+ const result = await parseSkirConfig(yamlCode);
152
+ expect(result).toMatch({
153
+ skirConfig: undefined,
154
+ errors: [{}], // At least one error
155
+ });
156
+ });
157
+ it("should return error with line/column for schema validation error", async () => {
158
+ const yamlCode = `
159
+ generators:
160
+ - mod: "@example/generator"
161
+ config: {}
162
+ outDir: invalid/path
163
+ `;
164
+ const result = await parseSkirConfig(yamlCode);
165
+ expect(result).toMatch({
166
+ skirConfig: undefined,
167
+ errors: [
168
+ {
169
+ message: 'Invalid string: must end with "/skirout"',
170
+ range: {
171
+ start: {
172
+ lineNumber: 5,
173
+ colNumber: 13,
174
+ offset: 70,
175
+ },
176
+ end: {
177
+ lineNumber: 5,
178
+ colNumber: 25,
179
+ offset: 82,
180
+ },
181
+ },
182
+ },
183
+ ],
184
+ });
185
+ });
186
+ it("should return error for extra fields in strict schema", async () => {
187
+ const yamlCode = `
188
+ generators:
189
+ - mod: "@example/generator"
190
+ config: {}
191
+ extraField: value
192
+ `;
193
+ const result = await parseSkirConfig(yamlCode);
194
+ expect(result).toMatch({
195
+ skirConfig: undefined,
196
+ errors: [
197
+ {
198
+ message: /unrecognized/i,
199
+ },
200
+ ],
201
+ });
202
+ });
203
+ it("should return error for invalid outDir pattern", async () => {
204
+ const yamlCode = `
205
+ generators:
206
+ - mod: "@example/generator"
207
+ config: {}
208
+ outDir: does/not/end/properly
209
+ `;
210
+ const result = await parseSkirConfig(yamlCode);
211
+ expect(result).toMatch({
212
+ skirConfig: undefined,
213
+ errors: [{}], // At least one error
214
+ });
215
+ });
216
+ it("should return error for invalid outDir array element", async () => {
217
+ const yamlCode = `
218
+ generators:
219
+ - mod: "@example/generator"
220
+ config: {}
221
+ outDir:
222
+ - valid/skirout
223
+ - invalid/path
224
+ `;
225
+ const result = await parseSkirConfig(yamlCode);
226
+ expect(result).toMatch({
227
+ skirConfig: undefined,
228
+ errors: [{}], // At least one error
229
+ });
230
+ });
231
+ it("should parse config with empty generators array", async () => {
232
+ const yamlCode = `
233
+ generators: []
234
+ `;
235
+ const result = await parseSkirConfig(yamlCode);
236
+ expect(result).toMatch({
237
+ skirConfig: {
238
+ generators: [],
239
+ },
240
+ errors: [],
241
+ });
242
+ });
243
+ it("should handle empty YAML document", async () => {
244
+ const yamlCode = "";
245
+ const result = await parseSkirConfig(yamlCode);
246
+ // Empty YAML parses as null/undefined, which fails schema validation
247
+ expect(result).toMatch({
248
+ skirConfig: undefined,
249
+ errors: [{}], // At least one error
250
+ });
251
+ });
252
+ it("should handle YAML with comments", async () => {
253
+ const yamlCode = `
254
+ # This is a comment
255
+ generators:
256
+ # Generator 1
257
+ - mod: "@example/generator"
258
+ config: {}
259
+ # Source directory
260
+ srcDir: src
261
+ `;
262
+ const result = await parseSkirConfig(yamlCode);
263
+ expect(result).toMatch({
264
+ skirConfig: {
265
+ generators: [
266
+ {
267
+ mod: "@example/generator",
268
+ config: {},
269
+ },
270
+ ],
271
+ srcDir: "src",
272
+ },
273
+ errors: [],
274
+ });
275
+ });
276
+ it("should return multiple errors for multiple validation issues", async () => {
277
+ const yamlCode = `
278
+ generators:
279
+ - config: {}
280
+ - mod: "@example/gen"
281
+ extraField: invalid
282
+ `;
283
+ const result = await parseSkirConfig(yamlCode);
284
+ expect(result).toMatch({
285
+ skirConfig: undefined,
286
+ errors: [{}, {}], // At least two errors
287
+ });
288
+ });
289
+ it("should handle complex nested config objects", async () => {
290
+ const yamlCode = `
291
+ generators:
292
+ - mod: "@example/generator"
293
+ config:
294
+ nested:
295
+ deeply:
296
+ value: 123
297
+ array:
298
+ - item1
299
+ - item2
300
+ boolean: true
301
+ `;
302
+ const result = await parseSkirConfig(yamlCode);
303
+ expect(result).toMatch({
304
+ skirConfig: {
305
+ generators: [
306
+ {
307
+ mod: "@example/generator",
308
+ config: {
309
+ nested: {
310
+ deeply: {
311
+ value: 123,
312
+ },
313
+ },
314
+ array: ["item1", "item2"],
315
+ boolean: true,
316
+ },
317
+ },
318
+ ],
319
+ },
320
+ errors: [],
321
+ });
322
+ });
323
+ it("should validate outDir ends with skirout", async () => {
324
+ const yamlCode = `
325
+ generators:
326
+ - mod: "@example/generator"
327
+ config: {}
328
+ outDir: path/to/skirout
329
+ `;
330
+ const result = await parseSkirConfig(yamlCode);
331
+ expect(result).toMatch({
332
+ skirConfig: {
333
+ generators: [
334
+ {
335
+ mod: "@example/generator",
336
+ config: {},
337
+ outDir: "path/to/skirout",
338
+ },
339
+ ],
340
+ },
341
+ errors: [],
342
+ });
343
+ });
344
+ it("should handle YAML with duplicate keys as warning/error", async () => {
345
+ const yamlCode = `
346
+ generators:
347
+ - mod: "@example/generator"
348
+ config: {}
349
+ mod: "@another/generator"
350
+ `;
351
+ const result = await parseSkirConfig(yamlCode);
352
+ // YAML library should detect duplicate keys
353
+ // The exact behavior depends on yaml library settings
354
+ if (result.errors.length > 0) {
355
+ expect(result.skirConfig).toMatch(undefined);
356
+ }
357
+ });
358
+ it("should do validation on generator's config if known", async () => {
359
+ const yamlCode = `
360
+ generators:
361
+ - mod: skir-typescript-gen
362
+ outDir: ./skirout
363
+ config:
364
+ importPathExtension: .jss
365
+ `;
366
+ const result = await parseSkirConfig(yamlCode);
367
+ expect(result).toMatch({
368
+ errors: [
369
+ {
370
+ range: {
371
+ start: {
372
+ lineNumber: 6,
373
+ colNumber: 28,
374
+ },
375
+ end: {
376
+ lineNumber: 6,
377
+ colNumber: 32,
378
+ },
379
+ },
380
+ },
381
+ ],
382
+ });
383
+ });
384
+ });
385
+ });
386
+ //# sourceMappingURL=config_parser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config_parser.test.js","sourceRoot":"","sources":["../src/config_parser.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,QAAQ,GAAG;;;;;;CAMtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE;oBACV,UAAU,EAAE;wBACV;4BACE,GAAG,EAAE,oBAAoB;4BACzB,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;yBACvB;qBACF;oBACD,MAAM,EAAE,KAAK;iBACd;gBACD,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,QAAQ,GAAG;;;;;;;;CAQtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE;oBACV,UAAU,EAAE;wBACV,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE;wBACpC;4BACE,GAAG,EAAE,eAAe;4BACpB,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;4BAC5B,MAAM,EAAE,gBAAgB;yBACzB;qBACF;iBACF;gBACD,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,QAAQ,GAAG;;;;;;;CAOtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE;oBACV,UAAU,EAAE;wBACV;4BACE,GAAG,EAAE,oBAAoB;4BACzB,MAAM,EAAE,EAAE;4BACV,MAAM,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;yBAC/C;qBACF;iBACF;gBACD,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,QAAQ,GAAG;;;;CAItB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE;oBACV,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;iBACxD;gBACD,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,QAAQ,GAAG;;;;;CAKtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE;oBACN;oBACE,eAAe;qBAChB;iBACF,EAAE,qBAAqB;aACzB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,QAAQ,GAAG;;oBAEH,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE;oBACN;wBACE,KAAK,EAAE;4BACL,KAAK,EAAE;gCACL,UAAU,EAAE,CAAC;gCACb,SAAS,EAAE,CAAC;gCACZ,MAAM,EAAE,EAAE;6BACX;4BACD,GAAG,EAAE;gCACH,UAAU,EAAE,CAAC;gCACb,SAAS,EAAE,EAAE;gCACb,MAAM,EAAE,EAAE;6BACX;yBACF;qBACF;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,QAAQ,GAAG;;;CAGtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE;oBACN;wBACE,OAAO,EAAE,sBAAsB;qBAChC;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,QAAQ,GAAG;;CAEtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,qBAAqB;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,QAAQ,GAAG;;;;;CAKtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE;oBACN;wBACE,OAAO,EAAE,0CAA0C;wBACnD,KAAK,EAAE;4BACL,KAAK,EAAE;gCACL,UAAU,EAAE,CAAC;gCACb,SAAS,EAAE,EAAE;gCACb,MAAM,EAAE,EAAE;6BACX;4BACD,GAAG,EAAE;gCACH,UAAU,EAAE,CAAC;gCACb,SAAS,EAAE,EAAE;gCACb,MAAM,EAAE,EAAE;6BACX;yBACF;qBACF;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,QAAQ,GAAG;;;;;CAKtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE;oBACN;wBACE,OAAO,EAAE,eAAe;qBACzB;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,QAAQ,GAAG;;;;;CAKtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,qBAAqB;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,QAAQ,GAAG;;;;;;;CAOtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,qBAAqB;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,QAAQ,GAAG;;CAEtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE;oBACV,UAAU,EAAE,EAAE;iBACf;gBACD,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,qEAAqE;YACrE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,qBAAqB;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,QAAQ,GAAG;;;;;;;;CAQtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE;oBACV,UAAU,EAAE;wBACV;4BACE,GAAG,EAAE,oBAAoB;4BACzB,MAAM,EAAE,EAAE;yBACX;qBACF;oBACD,MAAM,EAAE,KAAK;iBACd;gBACD,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,QAAQ,GAAG;;;;;CAKtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,sBAAsB;aACzC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,QAAQ,GAAG;;;;;;;;;;;CAWtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE;oBACV,UAAU,EAAE;wBACV;4BACE,GAAG,EAAE,oBAAoB;4BACzB,MAAM,EAAE;gCACN,MAAM,EAAE;oCACN,MAAM,EAAE;wCACN,KAAK,EAAE,GAAG;qCACX;iCACF;gCACD,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gCACzB,OAAO,EAAE,IAAI;6BACd;yBACF;qBACF;iBACF;gBACD,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,QAAQ,GAAG;;;;;CAKtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE;oBACV,UAAU,EAAE;wBACV;4BACE,GAAG,EAAE,oBAAoB;4BACzB,MAAM,EAAE,EAAE;4BACV,MAAM,EAAE,iBAAiB;yBAC1B;qBACF;iBACF;gBACD,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,QAAQ,GAAG;;;;;CAKtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,4CAA4C;YAC5C,sDAAsD;YACtD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,QAAQ,GAAG;;;;;;CAMtB,CAAC;YACI,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,MAAM,EAAE;oBACN;wBACE,KAAK,EAAE;4BACL,KAAK,EAAE;gCACL,UAAU,EAAE,CAAC;gCACb,SAAS,EAAE,EAAE;6BACd;4BACD,GAAG,EAAE;gCACH,UAAU,EAAE,CAAC;gCACb,SAAS,EAAE,EAAE;6BACd;yBACF;qBACF;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
- import type { Doc, Result, Token } from "skir-internal";
2
- export declare function parseDocComments(docComments: readonly Token[]): Result<Doc>;
1
+ import type { Doc, MutableDoc, Result, Token } from "skir-internal";
2
+ export declare function parseDocComment(docComment: Token): Result<Doc>;
3
+ export declare function mergeDocs(docs: readonly Doc[]): MutableDoc;
3
4
  //# sourceMappingURL=doc_comment_parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doc_comment_parser.d.ts","sourceRoot":"","sources":["../src/doc_comment_parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,GAAG,EAGH,MAAM,EAEN,KAAK,EACN,MAAM,eAAe,CAAC;AAEvB,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,SAAS,KAAK,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAG3E"}
1
+ {"version":3,"file":"doc_comment_parser.d.ts","sourceRoot":"","sources":["../src/doc_comment_parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,GAAG,EAIH,UAAU,EAGV,MAAM,EAEN,KAAK,EACN,MAAM,eAAe,CAAC;AAEvB,wBAAgB,eAAe,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAG9D;AAuOD,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,GAAG,UAAU,CAqB1D"}
@@ -1,29 +1,44 @@
1
1
  import { assert } from "node:console";
2
- export function parseDocComments(docComments) {
3
- const parser = new DocCommentsParser(docComments);
2
+ export function parseDocComment(docComment) {
3
+ const parser = new DocCommentParser(docComment);
4
4
  return parser.parse();
5
5
  }
6
- class DocCommentsParser {
7
- constructor(docComments) {
8
- this.docComments = docComments;
6
+ class DocCommentParser {
7
+ constructor(docComment) {
8
+ this.docComment = docComment;
9
9
  this.pieces = [];
10
10
  this.errors = [];
11
11
  this.currentText = "";
12
- this.docCommentIndex = -1;
13
12
  this.charIndex = -1;
14
- this.contentOffset = -1;
13
+ const { text } = docComment;
14
+ if (text.startsWith("/// ")) {
15
+ this.content = text.slice(4);
16
+ }
17
+ else if (text.startsWith("///")) {
18
+ this.content = text.slice(3);
19
+ }
20
+ else {
21
+ throw new Error("Expected doc comment to start with ///");
22
+ }
23
+ this.charIndex = 0;
15
24
  }
16
25
  parse() {
17
- while (this.nextDocComment()) {
18
- this.parseCurrentDocComment();
19
- }
26
+ this.parseDocComment();
20
27
  // Add any remaining text
21
28
  if (this.currentText.length > 0) {
22
29
  this.pieces.push({ kind: "text", text: this.currentText });
23
30
  }
24
- const text = this.docComments
25
- .map((c) => c.text.slice(c.text.startsWith("/// ") ? 4 : 3))
26
- .join("\n");
31
+ const { pieces } = this;
32
+ const text = pieces
33
+ .map((p) => {
34
+ switch (p.kind) {
35
+ case "text":
36
+ return p.text;
37
+ case "reference":
38
+ return p.referenceRange.text;
39
+ }
40
+ })
41
+ .join("");
27
42
  return {
28
43
  result: {
29
44
  text: text,
@@ -32,7 +47,7 @@ class DocCommentsParser {
32
47
  errors: this.errors,
33
48
  };
34
49
  }
35
- parseCurrentDocComment() {
50
+ parseDocComment() {
36
51
  // Matches unescaped [ or ], OR escaped [[ or ]]
37
52
  const specialCharRegex = /\[\[|\]\]|\[|\]/g;
38
53
  while (this.charIndex < this.content.length) {
@@ -76,15 +91,12 @@ class DocCommentsParser {
76
91
  this.charIndex++;
77
92
  }
78
93
  }
79
- // Add newline between comment lines (except after the last line)
80
- if (this.docCommentIndex < this.docComments.length - 1) {
81
- this.currentText += "\n";
82
- }
83
94
  }
84
95
  parseReference() {
85
96
  const { content, docComment } = this;
86
97
  const leftBracketCharIndex = this.charIndex;
87
- const startPosition = docComment.position + leftBracketCharIndex;
98
+ const contentOffset = docComment.text.length - content.length;
99
+ const startPosition = docComment.position + contentOffset + leftBracketCharIndex;
88
100
  const rightBracketCharIndex = content.indexOf("]", leftBracketCharIndex);
89
101
  // End position: right after the closing bracket or at end of the line if
90
102
  // not found.
@@ -111,7 +123,8 @@ class DocCommentsParser {
111
123
  const tokens = [];
112
124
  while (this.charIndex < endCharIndex) {
113
125
  const char = content[this.charIndex];
114
- const position = docComment.position + this.charIndex;
126
+ const contentOffset = docComment.text.length - content.length;
127
+ const position = docComment.position + contentOffset + this.charIndex;
115
128
  const makeToken = (text) => ({
116
129
  text: text,
117
130
  originalText: text,
@@ -139,7 +152,8 @@ class DocCommentsParser {
139
152
  }
140
153
  else {
141
154
  // Invalid character in reference (including whitespace)
142
- const column = this.docComment.colNumber + this.charIndex;
155
+ const contentOffset = docComment.text.length - content.length;
156
+ const column = this.docComment.colNumber + contentOffset + this.charIndex;
143
157
  hasError = true;
144
158
  this.errors.push({
145
159
  token: referenceRange,
@@ -149,25 +163,28 @@ class DocCommentsParser {
149
163
  this.charIndex = endCharIndex;
150
164
  }
151
165
  }
152
- const nameChain = hasError ? [] : this.parseNameChain(tokens);
166
+ const nameParts = hasError ? [] : this.parseNameParts(tokens);
153
167
  return {
154
168
  kind: "reference",
155
- nameChain: nameChain,
169
+ nameParts: nameParts,
156
170
  absolute: tokens[0]?.text === ".",
157
171
  referee: undefined,
158
172
  docComment: this.docComment,
159
173
  referenceRange: referenceRange,
160
174
  };
161
175
  }
162
- parseNameChain(tokens) {
163
- const nameChain = [];
176
+ parseNameParts(tokens) {
177
+ const nameParts = [];
164
178
  let expect = "identifier or '.'";
165
179
  for (const token of tokens) {
166
180
  let expected;
167
181
  if (/^[a-zA-Z]/.test(token.text)) {
168
182
  expected = expect === "identifier or '.'" || expect === "identifier";
169
183
  expect = "'.' or ']'";
170
- nameChain.push(token);
184
+ nameParts.push({
185
+ token: token,
186
+ declaration: undefined,
187
+ });
171
188
  }
172
189
  else if (token.text === ".") {
173
190
  expected = expect === "identifier or '.'" || expect === "'.' or ']'";
@@ -185,39 +202,37 @@ class DocCommentsParser {
185
202
  return [];
186
203
  }
187
204
  if (token.text === "]") {
188
- return nameChain;
205
+ return nameParts;
189
206
  }
190
207
  }
191
208
  // An error has already been pushed to signify the unterminated reference.
192
209
  return [];
193
210
  }
194
- /// The current doc comment being parsed.
195
- get docComment() {
196
- return this.docComments[this.docCommentIndex];
197
- }
198
- /// The text of the current doc comment being parsed.
199
- get content() {
200
- return this.docComment.text;
211
+ }
212
+ export function mergeDocs(docs) {
213
+ if (docs.length <= 0) {
214
+ return EMPTY_DOC;
201
215
  }
202
- nextDocComment() {
203
- if (this.docCommentIndex < this.docComments.length - 1) {
204
- this.docCommentIndex++;
205
- const { content } = this;
206
- if (content.startsWith("/// ")) {
207
- this.contentOffset = 4;
208
- }
209
- else if (content.startsWith("///")) {
210
- this.contentOffset = 3;
211
- }
212
- else {
213
- throw new Error("Expected doc comment to start with ///");
214
- }
215
- this.charIndex = this.contentOffset;
216
- return true;
217
- }
218
- else {
219
- return false;
216
+ // Insert '\n' between each doc comment (== line)
217
+ const text = docs.map((d) => d.text).join("\n");
218
+ const pieces = [];
219
+ for (let i = 0; i < docs.length; ++i) {
220
+ const doc = docs[i];
221
+ if (i !== 0) {
222
+ pieces.push({
223
+ kind: "text",
224
+ text: "\n",
225
+ });
220
226
  }
227
+ doc.pieces.forEach((p) => pieces.push(p));
221
228
  }
229
+ return {
230
+ text: text,
231
+ pieces: pieces,
232
+ };
222
233
  }
234
+ const EMPTY_DOC = {
235
+ text: "",
236
+ pieces: [],
237
+ };
223
238
  //# sourceMappingURL=doc_comment_parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doc_comment_parser.js","sourceRoot":"","sources":["../src/doc_comment_parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doc_comment_parser.js","sourceRoot":"","sources":["../src/doc_comment_parser.ts"],"names":[],"mappings":"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"}