comment-parser 1.4.0 → 1.4.2

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 (70) hide show
  1. package/CHANGELOG.md +54 -2
  2. package/es6/parser/tokenizers/name.js +11 -3
  3. package/es6/parser/tokenizers/tag.js +3 -0
  4. package/es6/parser/tokenizers/type.d.ts +1 -1
  5. package/es6/parser/tokenizers/type.js +15 -3
  6. package/es6/primitives.js +1 -1
  7. package/jest.config.cjs +5 -7
  8. package/package.json +14 -10
  9. package/src/parser/tokenizers/name.ts +13 -3
  10. package/src/parser/tokenizers/tag.ts +4 -0
  11. package/src/parser/tokenizers/type.ts +16 -3
  12. package/tests/e2e/examples.js +41 -0
  13. package/tests/unit/parser.spec.ts +234 -0
  14. package/tests/unit/spec-tag-tokenizer.spec.ts +30 -0
  15. package/tsconfig.node.json +0 -1
  16. package/browser/index.js +0 -650
  17. package/lib/index.cjs +0 -88
  18. package/lib/index.cjs.map +0 -1
  19. package/lib/index.d.ts +0 -32
  20. package/lib/parser/block-parser.cjs +0 -44
  21. package/lib/parser/block-parser.cjs.map +0 -1
  22. package/lib/parser/block-parser.d.ts +0 -24
  23. package/lib/parser/index.cjs +0 -65
  24. package/lib/parser/index.cjs.map +0 -1
  25. package/lib/parser/index.d.ts +0 -11
  26. package/lib/parser/source-parser.cjs +0 -68
  27. package/lib/parser/source-parser.cjs.map +0 -1
  28. package/lib/parser/source-parser.d.ts +0 -7
  29. package/lib/parser/spec-parser.cjs +0 -29
  30. package/lib/parser/spec-parser.cjs.map +0 -1
  31. package/lib/parser/spec-parser.d.ts +0 -7
  32. package/lib/parser/tokenizers/description.cjs +0 -62
  33. package/lib/parser/tokenizers/description.cjs.map +0 -1
  34. package/lib/parser/tokenizers/description.d.ts +0 -20
  35. package/lib/parser/tokenizers/index.cjs +0 -6
  36. package/lib/parser/tokenizers/index.cjs.map +0 -1
  37. package/lib/parser/tokenizers/index.d.ts +0 -7
  38. package/lib/parser/tokenizers/name.cjs +0 -109
  39. package/lib/parser/tokenizers/name.cjs.map +0 -1
  40. package/lib/parser/tokenizers/name.d.ts +0 -6
  41. package/lib/parser/tokenizers/tag.cjs +0 -37
  42. package/lib/parser/tokenizers/tag.cjs.map +0 -1
  43. package/lib/parser/tokenizers/tag.d.ts +0 -6
  44. package/lib/parser/tokenizers/type.cjs +0 -79
  45. package/lib/parser/tokenizers/type.cjs.map +0 -1
  46. package/lib/parser/tokenizers/type.d.ts +0 -27
  47. package/lib/primitives.cjs +0 -17
  48. package/lib/primitives.cjs.map +0 -1
  49. package/lib/primitives.d.ts +0 -54
  50. package/lib/stringifier/index.cjs +0 -18
  51. package/lib/stringifier/index.cjs.map +0 -1
  52. package/lib/stringifier/index.d.ts +0 -3
  53. package/lib/stringifier/inspect.cjs +0 -72
  54. package/lib/stringifier/inspect.cjs.map +0 -1
  55. package/lib/stringifier/inspect.d.ts +0 -2
  56. package/lib/transforms/align.cjs +0 -127
  57. package/lib/transforms/align.cjs.map +0 -1
  58. package/lib/transforms/align.d.ts +0 -3
  59. package/lib/transforms/crlf.cjs +0 -44
  60. package/lib/transforms/crlf.cjs.map +0 -1
  61. package/lib/transforms/crlf.d.ts +0 -3
  62. package/lib/transforms/indent.cjs +0 -58
  63. package/lib/transforms/indent.cjs.map +0 -1
  64. package/lib/transforms/indent.d.ts +0 -2
  65. package/lib/transforms/index.cjs +0 -13
  66. package/lib/transforms/index.cjs.map +0 -1
  67. package/lib/transforms/index.d.ts +0 -3
  68. package/lib/util.cjs +0 -113
  69. package/lib/util.cjs.map +0 -1
  70. package/lib/util.d.ts +0 -21
@@ -167,6 +167,240 @@ test('block with tags', () => {
167
167
  ]);
168
168
  });
169
169
 
170
+ test('tag with name and description on second line', () => {
171
+ const parsed = getParser()(`
172
+ /**
173
+ * @param {string}
174
+ * foo The foo.
175
+ */`);
176
+ expect(parsed).toEqual([
177
+ {
178
+ description: '',
179
+ tags: [
180
+ {
181
+ tag: 'param',
182
+ name: 'foo',
183
+ type: 'string',
184
+ optional: false,
185
+ description: 'The foo.',
186
+ problems: [],
187
+ source: [
188
+ {
189
+ number: 2,
190
+ source: ' * @param {string}',
191
+ tokens: seedTokens({
192
+ start: ' ',
193
+ delimiter: '*',
194
+ postDelimiter: ' ',
195
+ tag: '@param',
196
+ postTag: ' ',
197
+ type: '{string}',
198
+ }),
199
+ },
200
+ {
201
+ number: 3,
202
+ source: ' * foo The foo.',
203
+ tokens: seedTokens({
204
+ start: ' ',
205
+ delimiter: '*',
206
+ postDelimiter: ' ',
207
+ name: 'foo',
208
+ postName: ' ',
209
+ description: 'The foo.',
210
+ }),
211
+ },
212
+ {
213
+ number: 4,
214
+ source: ' */',
215
+ tokens: seedTokens({
216
+ start: ' ',
217
+ end: '*/',
218
+ }),
219
+ },
220
+ ],
221
+ },
222
+ ],
223
+ source: [
224
+ {
225
+ number: 1,
226
+ source: ' /**',
227
+ tokens: seedTokens({
228
+ delimiter: '/**',
229
+ start: ' ',
230
+ }),
231
+ },
232
+ {
233
+ number: 2,
234
+ source: ' * @param {string}',
235
+ tokens: seedTokens({
236
+ start: ' ',
237
+ delimiter: '*',
238
+ postDelimiter: ' ',
239
+ tag: '@param',
240
+ postTag: ' ',
241
+ type: '{string}',
242
+ }),
243
+ },
244
+ {
245
+ number: 3,
246
+ source: ' * foo The foo.',
247
+ tokens: seedTokens({
248
+ start: ' ',
249
+ delimiter: '*',
250
+ postDelimiter: ' ',
251
+ name: 'foo',
252
+ postName: ' ',
253
+ description: 'The foo.',
254
+ }),
255
+ },
256
+ {
257
+ number: 4,
258
+ source: ' */',
259
+ tokens: seedTokens({
260
+ start: ' ',
261
+ end: '*/',
262
+ }),
263
+ },
264
+ ],
265
+ problems: [],
266
+ },
267
+ ]);
268
+ });
269
+
270
+ test('tag with type, name and description on subsequent lines', () => {
271
+ const parsed = getParser()(`
272
+ /**
273
+ * @param
274
+ * {string}
275
+ * foo
276
+ * The foo.
277
+ */`);
278
+ expect(parsed).toEqual([
279
+ {
280
+ description: '',
281
+ tags: [
282
+ {
283
+ tag: 'param',
284
+ name: 'foo',
285
+ type: 'string',
286
+ optional: false,
287
+ description: 'The foo.',
288
+ problems: [],
289
+ source: [
290
+ {
291
+ number: 2,
292
+ source: ' * @param',
293
+ tokens: seedTokens({
294
+ start: ' ',
295
+ delimiter: '*',
296
+ postDelimiter: ' ',
297
+ tag: '@param',
298
+ }),
299
+ },
300
+ {
301
+ number: 3,
302
+ source: ' * {string}',
303
+ tokens: seedTokens({
304
+ start: ' ',
305
+ delimiter: '*',
306
+ postDelimiter: ' ',
307
+ type: '{string}',
308
+ }),
309
+ },
310
+ {
311
+ number: 4,
312
+ source: ' * foo',
313
+ tokens: seedTokens({
314
+ start: ' ',
315
+ delimiter: '*',
316
+ postDelimiter: ' ',
317
+ name: 'foo',
318
+ }),
319
+ },
320
+ {
321
+ number: 5,
322
+ source: ' * The foo.',
323
+ tokens: seedTokens({
324
+ start: ' ',
325
+ delimiter: '*',
326
+ postDelimiter: ' ',
327
+ description: 'The foo.',
328
+ }),
329
+ },
330
+ {
331
+ number: 6,
332
+ source: ' */',
333
+ tokens: seedTokens({
334
+ start: ' ',
335
+ end: '*/',
336
+ }),
337
+ },
338
+ ],
339
+ },
340
+ ],
341
+ source: [
342
+ {
343
+ number: 1,
344
+ source: ' /**',
345
+ tokens: seedTokens({
346
+ delimiter: '/**',
347
+ start: ' ',
348
+ }),
349
+ },
350
+ {
351
+ number: 2,
352
+ source: ' * @param',
353
+ tokens: seedTokens({
354
+ start: ' ',
355
+ delimiter: '*',
356
+ postDelimiter: ' ',
357
+ tag: '@param',
358
+ }),
359
+ },
360
+ {
361
+ number: 3,
362
+ source: ' * {string}',
363
+ tokens: seedTokens({
364
+ start: ' ',
365
+ delimiter: '*',
366
+ postDelimiter: ' ',
367
+ type: '{string}',
368
+ }),
369
+ },
370
+ {
371
+ number: 4,
372
+ source: ' * foo',
373
+ tokens: seedTokens({
374
+ start: ' ',
375
+ delimiter: '*',
376
+ postDelimiter: ' ',
377
+ name: 'foo',
378
+ }),
379
+ },
380
+ {
381
+ number: 5,
382
+ source: ' * The foo.',
383
+ tokens: seedTokens({
384
+ start: ' ',
385
+ delimiter: '*',
386
+ postDelimiter: ' ',
387
+ description: 'The foo.',
388
+ }),
389
+ },
390
+ {
391
+ number: 6,
392
+ source: ' */',
393
+ tokens: seedTokens({
394
+ start: ' ',
395
+ end: '*/',
396
+ }),
397
+ },
398
+ ],
399
+ problems: [],
400
+ },
401
+ ]);
402
+ });
403
+
170
404
  test('no source cloning', () => {
171
405
  const parsed = getParser()(`
172
406
  /**
@@ -74,6 +74,36 @@ test('require @', () => {
74
74
  );
75
75
  });
76
76
 
77
+ test('disallow @npm/package format', () => {
78
+ expect(
79
+ tokenize(
80
+ seedSpec({
81
+ source: [
82
+ {
83
+ number: 42,
84
+ source: '...',
85
+ tokens: seedTokens({
86
+ description: '@npm/package',
87
+ }),
88
+ },
89
+ ],
90
+ })
91
+ )
92
+ ).toEqual(
93
+ seedSpec({
94
+ source: [
95
+ {
96
+ number: 42,
97
+ source: '...',
98
+ tokens: seedTokens({
99
+ description: '@npm/package',
100
+ }),
101
+ },
102
+ ],
103
+ })
104
+ );
105
+ });
106
+
77
107
  test.each([
78
108
  ['@+tag', '+tag'],
79
109
  ['@-tag', '-tag'],
@@ -2,7 +2,6 @@
2
2
  "compilerOptions": {
3
3
  "target": "es2015",
4
4
  "module": "commonjs",
5
- "moduleResolution": "node16",
6
5
  "declaration": true,
7
6
  "outDir": "./lib",
8
7
  "lib": ["es2016", "es5"]