skir 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/casing.test.js +1 -1
  2. package/dist/casing.test.js.map +1 -1
  3. package/dist/command_line_parser.d.ts.map +1 -1
  4. package/dist/command_line_parser.js +76 -36
  5. package/dist/command_line_parser.js.map +1 -1
  6. package/dist/command_line_parser.test.js +119 -31
  7. package/dist/command_line_parser.test.js.map +1 -1
  8. package/dist/compiler.js +59 -84
  9. package/dist/compiler.js.map +1 -1
  10. package/dist/config.d.ts +2 -2
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +6 -13
  13. package/dist/config.js.map +1 -1
  14. package/dist/config_parser.d.ts +31 -0
  15. package/dist/config_parser.d.ts.map +1 -0
  16. package/dist/config_parser.js +146 -0
  17. package/dist/config_parser.js.map +1 -0
  18. package/dist/config_parser.test.d.ts +2 -0
  19. package/dist/config_parser.test.d.ts.map +1 -0
  20. package/dist/config_parser.test.js +419 -0
  21. package/dist/config_parser.test.js.map +1 -0
  22. package/dist/doc_comment_parser.d.ts +3 -2
  23. package/dist/doc_comment_parser.d.ts.map +1 -1
  24. package/dist/doc_comment_parser.js +56 -49
  25. package/dist/doc_comment_parser.js.map +1 -1
  26. package/dist/doc_comment_parser.test.js +86 -154
  27. package/dist/doc_comment_parser.test.js.map +1 -1
  28. package/dist/error_renderer.d.ts +5 -0
  29. package/dist/error_renderer.d.ts.map +1 -1
  30. package/dist/error_renderer.js +27 -3
  31. package/dist/error_renderer.js.map +1 -1
  32. package/dist/exit_error.d.ts +8 -0
  33. package/dist/exit_error.d.ts.map +1 -0
  34. package/dist/exit_error.js +8 -0
  35. package/dist/exit_error.js.map +1 -0
  36. package/dist/io.d.ts +2 -0
  37. package/dist/io.d.ts.map +1 -1
  38. package/dist/io.js +22 -3
  39. package/dist/io.js.map +1 -1
  40. package/dist/module_collector.d.ts.map +1 -1
  41. package/dist/module_collector.js +12 -7
  42. package/dist/module_collector.js.map +1 -1
  43. package/dist/module_set.d.ts.map +1 -1
  44. package/dist/module_set.js +33 -16
  45. package/dist/module_set.js.map +1 -1
  46. package/dist/module_set.test.js +318 -173
  47. package/dist/module_set.test.js.map +1 -1
  48. package/dist/parser.d.ts.map +1 -1
  49. package/dist/parser.js +16 -16
  50. package/dist/parser.js.map +1 -1
  51. package/dist/project_initializer.d.ts.map +1 -1
  52. package/dist/project_initializer.js +97 -15
  53. package/dist/project_initializer.js.map +1 -1
  54. package/dist/tokenizer.d.ts +7 -1
  55. package/dist/tokenizer.d.ts.map +1 -1
  56. package/dist/tokenizer.js +12 -0
  57. package/dist/tokenizer.js.map +1 -1
  58. package/package.json +14 -9
  59. package/src/command_line_parser.ts +95 -40
  60. package/src/compiler.ts +74 -86
  61. package/src/config.ts +8 -15
  62. package/src/config_parser.ts +198 -0
  63. package/src/doc_comment_parser.ts +65 -49
  64. package/src/error_renderer.ts +45 -3
  65. package/src/exit_error.ts +6 -0
  66. package/src/io.ts +22 -3
  67. package/src/module_collector.ts +21 -7
  68. package/src/module_set.ts +35 -19
  69. package/src/parser.ts +22 -16
  70. package/src/project_initializer.ts +97 -15
  71. package/src/tokenizer.ts +20 -2
  72. package/dist/language_server.d.ts +0 -15
  73. package/dist/language_server.d.ts.map +0 -1
  74. package/dist/language_server.js +0 -248
  75. package/dist/language_server.js.map +0 -1
  76. package/src/language_server.ts +0 -301
@@ -0,0 +1,419 @@
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
+ outDir: ./skirout
11
+ config:
12
+ foo: bar
13
+ srcDir: src
14
+ `;
15
+ const result = await parseSkirConfig(yamlCode);
16
+ expect(result).toMatch({
17
+ skirConfig: {
18
+ generators: [
19
+ {
20
+ mod: "@example/generator",
21
+ outDir: "./skirout",
22
+ config: { foo: "bar" },
23
+ },
24
+ ],
25
+ srcDir: "src",
26
+ },
27
+ errors: [],
28
+ });
29
+ });
30
+ it("should parse valid config with multiple generators", async () => {
31
+ const yamlCode = `
32
+ generators:
33
+ - mod: "@example/gen1"
34
+ outDir: ./skirout
35
+ config: {}
36
+ - mod: "@example/gen2"
37
+ config:
38
+ setting: value
39
+ outDir: custom/skirout
40
+ `;
41
+ const result = await parseSkirConfig(yamlCode);
42
+ expect(result).toMatch({
43
+ skirConfig: {
44
+ generators: [
45
+ { mod: "@example/gen1", outDir: "./skirout", config: {} },
46
+ {
47
+ mod: "@example/gen2",
48
+ config: { setting: "value" },
49
+ outDir: "custom/skirout",
50
+ },
51
+ ],
52
+ },
53
+ errors: [],
54
+ });
55
+ });
56
+ it("should parse config with outDir array", async () => {
57
+ const yamlCode = `
58
+ generators:
59
+ - mod: "@example/generator"
60
+ config: {}
61
+ outDir:
62
+ - path/to/skirout
63
+ - another/skirout
64
+ `;
65
+ const result = await parseSkirConfig(yamlCode);
66
+ expect(result).toMatch({
67
+ skirConfig: {
68
+ generators: [
69
+ {
70
+ mod: "@example/generator",
71
+ config: {},
72
+ outDir: ["path/to/skirout", "another/skirout"],
73
+ },
74
+ ],
75
+ },
76
+ errors: [],
77
+ });
78
+ });
79
+ it("should parse config without optional srcDir", async () => {
80
+ const yamlCode = `
81
+ generators:
82
+ - mod: "@example/generator"
83
+ outDir: ./skirout
84
+ config: {}
85
+ `;
86
+ const result = await parseSkirConfig(yamlCode);
87
+ expect(result).toMatch({
88
+ skirConfig: {
89
+ generators: [
90
+ { mod: "@example/generator", outDir: "./skirout", config: {} },
91
+ ],
92
+ },
93
+ errors: [],
94
+ });
95
+ });
96
+ it("should return error for invalid YAML syntax", async () => {
97
+ const yamlCode = `
98
+ generators:
99
+ - mod: "@example/generator"
100
+ outDir: ./skirout
101
+ config:
102
+ invalid: [unclosed array
103
+ `;
104
+ const result = await parseSkirConfig(yamlCode);
105
+ expect(result).toMatch({
106
+ skirConfig: undefined,
107
+ errors: [{}], // At least one error
108
+ maybeForgotToEditAfterInit: undefined,
109
+ });
110
+ });
111
+ it("should return error for invalid YAML syntax", async () => {
112
+ const yamlCode = `
113
+ generators:
114
+ - mod: "@example/generator"
115
+ outDir: ./skirout
116
+ config:
117
+ invalid: [unclosed array
118
+ `;
119
+ const result = await parseSkirConfig(yamlCode);
120
+ expect(result).toMatch({
121
+ skirConfig: undefined,
122
+ errors: [{}], // At least one error
123
+ maybeForgotToEditAfterInit: undefined,
124
+ });
125
+ });
126
+ it("user maybe forgot to edit after init", async () => {
127
+ const yamlCode = `generators:
128
+
129
+ `;
130
+ const result = await parseSkirConfig(yamlCode);
131
+ expect(result).toMatch({
132
+ skirConfig: undefined,
133
+ errors: [
134
+ {
135
+ range: {
136
+ start: {
137
+ lineNumber: 1,
138
+ },
139
+ },
140
+ },
141
+ ],
142
+ maybeForgotToEditAfterInit: true,
143
+ });
144
+ });
145
+ it("should return error for missing required field", async () => {
146
+ const yamlCode = `
147
+ generators:
148
+ - config: {}
149
+ `;
150
+ const result = await parseSkirConfig(yamlCode);
151
+ expect(result).toMatch({
152
+ skirConfig: undefined,
153
+ errors: [
154
+ {
155
+ message: /^Missing property 'mod': /,
156
+ range: {
157
+ start: {
158
+ lineNumber: 3,
159
+ },
160
+ },
161
+ },
162
+ {
163
+ message: /^Missing property 'outDir': /,
164
+ range: {
165
+ start: {
166
+ lineNumber: 3,
167
+ },
168
+ },
169
+ },
170
+ ],
171
+ maybeForgotToEditAfterInit: false,
172
+ });
173
+ });
174
+ it("should return error for wrong type", async () => {
175
+ const yamlCode = `
176
+ generators: "not an array"
177
+ `;
178
+ const result = await parseSkirConfig(yamlCode);
179
+ expect(result).toMatch({
180
+ skirConfig: undefined,
181
+ errors: [{}], // At least one error
182
+ });
183
+ });
184
+ it("should return error with line/column for schema validation error", async () => {
185
+ const yamlCode = `
186
+ generators:
187
+ - mod: "@example/generator"
188
+ config: {}
189
+ outDir: invalid/path
190
+ `;
191
+ const result = await parseSkirConfig(yamlCode);
192
+ expect(result).toMatch({
193
+ skirConfig: undefined,
194
+ errors: [
195
+ {
196
+ message: 'Invalid string: must end with "/skirout"',
197
+ range: {
198
+ start: {
199
+ lineNumber: 5,
200
+ colNumber: 13,
201
+ offset: 70,
202
+ },
203
+ end: {
204
+ lineNumber: 5,
205
+ colNumber: 25,
206
+ offset: 82,
207
+ },
208
+ },
209
+ },
210
+ ],
211
+ });
212
+ });
213
+ it("should return error for extra fields in strict schema", async () => {
214
+ const yamlCode = `
215
+ generators:
216
+ - mod: "@example/generator"
217
+ outDir: ./skirout
218
+ config: {}
219
+ extraField: value
220
+ `;
221
+ const result = await parseSkirConfig(yamlCode);
222
+ expect(result).toMatch({
223
+ skirConfig: undefined,
224
+ errors: [
225
+ {
226
+ message: /unrecognized/i,
227
+ },
228
+ ],
229
+ });
230
+ });
231
+ it("should return error for invalid outDir pattern", async () => {
232
+ const yamlCode = `
233
+ generators:
234
+ - mod: "@example/generator"
235
+ config: {}
236
+ outDir: does/not/end/properly
237
+ `;
238
+ const result = await parseSkirConfig(yamlCode);
239
+ expect(result).toMatch({
240
+ skirConfig: undefined,
241
+ errors: [{}], // At least one error
242
+ });
243
+ });
244
+ it("should return error for invalid outDir array element", async () => {
245
+ const yamlCode = `
246
+ generators:
247
+ - mod: "@example/generator"
248
+ config: {}
249
+ outDir:
250
+ - valid/skirout
251
+ - invalid/path
252
+ `;
253
+ const result = await parseSkirConfig(yamlCode);
254
+ expect(result).toMatch({
255
+ skirConfig: undefined,
256
+ errors: [{}], // At least one error
257
+ });
258
+ });
259
+ it("should parse config with empty generators array", async () => {
260
+ const yamlCode = `
261
+ generators: []
262
+ `;
263
+ const result = await parseSkirConfig(yamlCode);
264
+ expect(result).toMatch({
265
+ skirConfig: {
266
+ generators: [],
267
+ },
268
+ errors: [],
269
+ });
270
+ });
271
+ it("should handle empty YAML document", async () => {
272
+ const yamlCode = "";
273
+ const result = await parseSkirConfig(yamlCode);
274
+ // Empty YAML parses as null/undefined, which fails schema validation
275
+ expect(result).toMatch({
276
+ skirConfig: undefined,
277
+ errors: [{}], // At least one error
278
+ });
279
+ });
280
+ it("should handle YAML with comments", async () => {
281
+ const yamlCode = `
282
+ # This is a comment
283
+ generators:
284
+ # Generator 1
285
+ - mod: "@example/generator"
286
+ outDir: ./skirout
287
+ config: {}
288
+ # Source directory
289
+ srcDir: src
290
+ `;
291
+ const result = await parseSkirConfig(yamlCode);
292
+ expect(result).toMatch({
293
+ skirConfig: {
294
+ generators: [
295
+ {
296
+ mod: "@example/generator",
297
+ outDir: "./skirout",
298
+ config: {},
299
+ },
300
+ ],
301
+ srcDir: "src",
302
+ },
303
+ errors: [],
304
+ });
305
+ });
306
+ it("should return multiple errors for multiple validation issues", async () => {
307
+ const yamlCode = `
308
+ generators:
309
+ - config: {}
310
+ - mod: "@example/gen"
311
+ extraField: invalid
312
+ `;
313
+ const result = await parseSkirConfig(yamlCode);
314
+ expect(result).toMatch({
315
+ skirConfig: undefined,
316
+ errors: [{}, {}, {}, {}], // At least four errors
317
+ });
318
+ });
319
+ it("should handle complex nested config objects", async () => {
320
+ const yamlCode = `
321
+ generators:
322
+ - mod: "@example/generator"
323
+ outDir: ./skirout
324
+ config:
325
+ nested:
326
+ deeply:
327
+ value: 123
328
+ array:
329
+ - item1
330
+ - item2
331
+ boolean: true
332
+ `;
333
+ const result = await parseSkirConfig(yamlCode);
334
+ expect(result).toMatch({
335
+ skirConfig: {
336
+ generators: [
337
+ {
338
+ mod: "@example/generator",
339
+ outDir: "./skirout",
340
+ config: {
341
+ nested: {
342
+ deeply: {
343
+ value: 123,
344
+ },
345
+ },
346
+ array: ["item1", "item2"],
347
+ boolean: true,
348
+ },
349
+ },
350
+ ],
351
+ },
352
+ errors: [],
353
+ });
354
+ });
355
+ it("should validate outDir ends with skirout", async () => {
356
+ const yamlCode = `
357
+ generators:
358
+ - mod: "@example/generator"
359
+ config: {}
360
+ outDir: path/to/skirout
361
+ `;
362
+ const result = await parseSkirConfig(yamlCode);
363
+ expect(result).toMatch({
364
+ skirConfig: {
365
+ generators: [
366
+ {
367
+ mod: "@example/generator",
368
+ config: {},
369
+ outDir: "path/to/skirout",
370
+ },
371
+ ],
372
+ },
373
+ errors: [],
374
+ });
375
+ });
376
+ it("should handle YAML with duplicate keys as warning/error", async () => {
377
+ const yamlCode = `
378
+ generators:
379
+ - mod: "@example/generator"
380
+ outDir: ./skirout
381
+ config: {}
382
+ mod: "@another/generator"
383
+ `;
384
+ const result = await parseSkirConfig(yamlCode);
385
+ // YAML library should detect duplicate keys
386
+ // The exact behavior depends on yaml library settings
387
+ if (result.errors.length > 0) {
388
+ expect(result.skirConfig).toMatch(undefined);
389
+ }
390
+ });
391
+ it("should do validation on generator's config if known", async () => {
392
+ const yamlCode = `
393
+ generators:
394
+ - mod: skir-typescript-gen
395
+ outDir: ./skirout
396
+ config:
397
+ importPathExtension: .jss
398
+ `;
399
+ const result = await parseSkirConfig(yamlCode);
400
+ expect(result).toMatch({
401
+ errors: [
402
+ {
403
+ range: {
404
+ start: {
405
+ lineNumber: 6,
406
+ colNumber: 28,
407
+ },
408
+ end: {
409
+ lineNumber: 6,
410
+ colNumber: 32,
411
+ },
412
+ },
413
+ },
414
+ ],
415
+ });
416
+ });
417
+ });
418
+ });
419
+ //# 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":"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"}
@@ -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,22 +1,29 @@
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 });
@@ -40,7 +47,7 @@ class DocCommentsParser {
40
47
  errors: this.errors,
41
48
  };
42
49
  }
43
- parseCurrentDocComment() {
50
+ parseDocComment() {
44
51
  // Matches unescaped [ or ], OR escaped [[ or ]]
45
52
  const specialCharRegex = /\[\[|\]\]|\[|\]/g;
46
53
  while (this.charIndex < this.content.length) {
@@ -84,15 +91,12 @@ class DocCommentsParser {
84
91
  this.charIndex++;
85
92
  }
86
93
  }
87
- // Add newline between comment lines (except after the last line)
88
- if (this.docCommentIndex < this.docComments.length - 1) {
89
- this.currentText += "\n";
90
- }
91
94
  }
92
95
  parseReference() {
93
96
  const { content, docComment } = this;
94
97
  const leftBracketCharIndex = this.charIndex;
95
- const startPosition = docComment.position + leftBracketCharIndex;
98
+ const contentOffset = docComment.text.length - content.length;
99
+ const startPosition = docComment.position + contentOffset + leftBracketCharIndex;
96
100
  const rightBracketCharIndex = content.indexOf("]", leftBracketCharIndex);
97
101
  // End position: right after the closing bracket or at end of the line if
98
102
  // not found.
@@ -119,7 +123,8 @@ class DocCommentsParser {
119
123
  const tokens = [];
120
124
  while (this.charIndex < endCharIndex) {
121
125
  const char = content[this.charIndex];
122
- const position = docComment.position + this.charIndex;
126
+ const contentOffset = docComment.text.length - content.length;
127
+ const position = docComment.position + contentOffset + this.charIndex;
123
128
  const makeToken = (text) => ({
124
129
  text: text,
125
130
  originalText: text,
@@ -147,7 +152,8 @@ class DocCommentsParser {
147
152
  }
148
153
  else {
149
154
  // Invalid character in reference (including whitespace)
150
- const column = this.docComment.colNumber + this.charIndex;
155
+ const contentOffset = docComment.text.length - content.length;
156
+ const column = this.docComment.colNumber + contentOffset + this.charIndex;
151
157
  hasError = true;
152
158
  this.errors.push({
153
159
  token: referenceRange,
@@ -157,25 +163,28 @@ class DocCommentsParser {
157
163
  this.charIndex = endCharIndex;
158
164
  }
159
165
  }
160
- const nameChain = hasError ? [] : this.parseNameChain(tokens);
166
+ const nameParts = hasError ? [] : this.parseNameParts(tokens);
161
167
  return {
162
168
  kind: "reference",
163
- nameChain: nameChain,
169
+ nameParts: nameParts,
164
170
  absolute: tokens[0]?.text === ".",
165
171
  referee: undefined,
166
172
  docComment: this.docComment,
167
173
  referenceRange: referenceRange,
168
174
  };
169
175
  }
170
- parseNameChain(tokens) {
171
- const nameChain = [];
176
+ parseNameParts(tokens) {
177
+ const nameParts = [];
172
178
  let expect = "identifier or '.'";
173
179
  for (const token of tokens) {
174
180
  let expected;
175
181
  if (/^[a-zA-Z]/.test(token.text)) {
176
182
  expected = expect === "identifier or '.'" || expect === "identifier";
177
183
  expect = "'.' or ']'";
178
- nameChain.push(token);
184
+ nameParts.push({
185
+ token: token,
186
+ declaration: undefined,
187
+ });
179
188
  }
180
189
  else if (token.text === ".") {
181
190
  expected = expect === "identifier or '.'" || expect === "'.' or ']'";
@@ -193,39 +202,37 @@ class DocCommentsParser {
193
202
  return [];
194
203
  }
195
204
  if (token.text === "]") {
196
- return nameChain;
205
+ return nameParts;
197
206
  }
198
207
  }
199
208
  // An error has already been pushed to signify the unterminated reference.
200
209
  return [];
201
210
  }
202
- /// The current doc comment being parsed.
203
- get docComment() {
204
- return this.docComments[this.docCommentIndex];
205
- }
206
- /// The text of the current doc comment being parsed.
207
- get content() {
208
- return this.docComment.text;
211
+ }
212
+ export function mergeDocs(docs) {
213
+ if (docs.length <= 0) {
214
+ return EMPTY_DOC;
209
215
  }
210
- nextDocComment() {
211
- if (this.docCommentIndex < this.docComments.length - 1) {
212
- this.docCommentIndex++;
213
- const { content } = this;
214
- if (content.startsWith("/// ")) {
215
- this.contentOffset = 4;
216
- }
217
- else if (content.startsWith("///")) {
218
- this.contentOffset = 3;
219
- }
220
- else {
221
- throw new Error("Expected doc comment to start with ///");
222
- }
223
- this.charIndex = this.contentOffset;
224
- return true;
225
- }
226
- else {
227
- 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
+ });
228
226
  }
227
+ doc.pieces.forEach((p) => pieces.push(p));
229
228
  }
229
+ return {
230
+ text: text,
231
+ pieces: pieces,
232
+ };
230
233
  }
234
+ const EMPTY_DOC = {
235
+ text: "",
236
+ pieces: [],
237
+ };
231
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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AActC,MAAM,UAAU,eAAe,CAAC,UAAiB;IAC/C,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,gBAAgB;IAOpB,YAA6B,UAAiB;QAAjB,eAAU,GAAV,UAAU,CAAO;QAN7B,WAAM,GAAe,EAAE,CAAC;QACxB,WAAM,GAAgB,EAAE,CAAC;QAClC,gBAAW,GAAG,EAAE,CAAC;QACjB,cAAS,GAAG,CAAC,CAAC,CAAC;QAIrB,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,yBAAyB;QACzB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM;aAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBACf,KAAK,MAAM;oBACT,OAAO,CAAC,CAAC,IAAI,CAAC;gBAChB,KAAK,WAAW;oBACd,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,OAAO;YACL,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB;YACD,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,gDAAgD;QAChD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;QAE5C,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC5C,iDAAiD;YACjD,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC5C,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAElD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,+CAA+C;gBAC/C,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvD,MAAM;YACR,CAAC;YAED,wCAAwC;YACxC,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACtE,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;YAE7B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,uBAAuB;gBACvB,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC;gBACxB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC5B,wBAAwB;gBACxB,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC;gBACxB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;gBAC3B,kDAAkD;gBAClD,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC3D,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;gBACxB,CAAC;gBAED,sBAAsB;gBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;gBAC3B,0CAA0C;gBAC1C,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC;gBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAErC,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5C,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9D,MAAM,aAAa,GACjB,UAAU,CAAC,QAAQ,GAAG,aAAa,GAAG,oBAAoB,CAAC;QAE7D,MAAM,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QAEzE,yEAAyE;QACzE,aAAa;QACb,MAAM,YAAY,GAChB,qBAAqB,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAEzE,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;QACxE,MAAM,cAAc,GAAU;YAC5B,IAAI,EAAE,aAAa;YACnB,YAAY,EAAE,aAAa;YAC3B,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,SAAS,EAAE,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ;SACpD,CAAC;QAEF,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,qBAAqB,GAAG,CAAC,EAAE,CAAC;YAC9B,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,cAAc;gBACrB,OAAO,EAAE,wBAAwB;aAClC,CAAC,CAAC;QACL,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,MAAM,SAAS,GAAG,wBAAwB,CAAC;QAE3C,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAE,CAAC;YACtC,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9D,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;YAEtE,MAAM,SAAS,GAAG,CAAC,IAAY,EAAS,EAAE,CAAC,CAAC;gBAC1C,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ;aAC/C,CAAC,CAAC;YAEH,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,YAAY;gBACZ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;iBAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,4DAA4D;gBAC5D,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBACrC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtC,MAAM,IAAI,GAAG,KAAM,CAAC,CAAC,CAAC,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;YAChC,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,mCAAmC;gBACnC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,wDAAwD;gBACxD,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC9D,MAAM,MAAM,GACV,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC7D,QAAQ,GAAG,IAAI,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,KAAK,EAAE,cAAc;oBACrB,OAAO,EAAE,4CAA4C,MAAM,GAAG,CAAC,EAAE;iBAClE,CAAC,CAAC;gBACH,YAAY;gBACZ,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;YAChC,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE9D,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG;YACjC,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,cAAc,EAAE,cAAc;SAC/B,CAAC;IACJ,CAAC;IAEO,cAAc,CACpB,MAAwB;QAExB,MAAM,SAAS,GAA8B,EAAE,CAAC;QAChD,IAAI,MAAM,GACR,mBAAmB,CAAC;QACtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,QAAiB,CAAC;YACtB,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,QAAQ,GAAG,MAAM,KAAK,mBAAmB,IAAI,MAAM,KAAK,YAAY,CAAC;gBACrE,MAAM,GAAG,YAAY,CAAC;gBACtB,SAAS,CAAC,IAAI,CAAC;oBACb,KAAK,EAAE,KAAK;oBACZ,WAAW,EAAE,SAAS;iBACvB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC9B,QAAQ,GAAG,MAAM,KAAK,mBAAmB,IAAI,MAAM,KAAK,YAAY,CAAC;gBACrE,MAAM,GAAG,YAAY,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;gBAC3B,QAAQ,GAAG,MAAM,KAAK,YAAY,CAAC;YACrC,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,KAAK,EAAE,KAAK;oBACZ,QAAQ,EAAE,MAAM;iBACjB,CAAC,CAAC;gBACH,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACvB,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,0EAA0E;QAC1E,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CAAC,IAAoB;IAC5C,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,iDAAiD;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QACL,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,MAAM;KACf,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAQ;IACrB,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,EAAE;CACX,CAAC"}