comment-parser 1.3.0 → 1.4.0

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 (102) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/browser/index.js +2 -5
  3. package/es6/index.d.ts +14 -14
  4. package/es6/parser/block-parser.d.ts +3 -3
  5. package/es6/parser/index.d.ts +3 -3
  6. package/es6/parser/index.js +0 -3
  7. package/es6/parser/source-parser.d.ts +2 -2
  8. package/es6/parser/spec-parser.d.ts +3 -3
  9. package/es6/parser/tokenizers/description.d.ts +4 -4
  10. package/es6/parser/tokenizers/index.d.ts +2 -2
  11. package/es6/parser/tokenizers/name.d.ts +1 -1
  12. package/es6/parser/tokenizers/tag.d.ts +2 -2
  13. package/es6/parser/tokenizers/tag.js +1 -1
  14. package/es6/parser/tokenizers/type.d.ts +3 -3
  15. package/es6/primitives.js +1 -1
  16. package/es6/stringifier/index.d.ts +2 -2
  17. package/es6/stringifier/inspect.d.ts +1 -1
  18. package/es6/transforms/align.d.ts +2 -2
  19. package/es6/transforms/crlf.d.ts +2 -2
  20. package/es6/transforms/indent.d.ts +1 -1
  21. package/es6/transforms/index.d.ts +2 -2
  22. package/es6/util.d.ts +1 -1
  23. package/jest.config.cjs +3 -1
  24. package/lib/index.cjs +39 -33
  25. package/lib/index.cjs.map +1 -1
  26. package/lib/index.d.ts +14 -14
  27. package/lib/parser/block-parser.d.ts +3 -3
  28. package/lib/parser/index.cjs +16 -20
  29. package/lib/parser/index.cjs.map +1 -1
  30. package/lib/parser/index.d.ts +3 -3
  31. package/lib/parser/source-parser.cjs +8 -8
  32. package/lib/parser/source-parser.cjs.map +1 -1
  33. package/lib/parser/source-parser.d.ts +2 -2
  34. package/lib/parser/spec-parser.cjs +2 -2
  35. package/lib/parser/spec-parser.cjs.map +1 -1
  36. package/lib/parser/spec-parser.d.ts +3 -3
  37. package/lib/parser/tokenizers/description.cjs +4 -4
  38. package/lib/parser/tokenizers/description.cjs.map +1 -1
  39. package/lib/parser/tokenizers/description.d.ts +4 -4
  40. package/lib/parser/tokenizers/index.d.ts +2 -2
  41. package/lib/parser/tokenizers/name.cjs +4 -4
  42. package/lib/parser/tokenizers/name.cjs.map +1 -1
  43. package/lib/parser/tokenizers/name.d.ts +1 -1
  44. package/lib/parser/tokenizers/tag.cjs +1 -1
  45. package/lib/parser/tokenizers/tag.cjs.map +1 -1
  46. package/lib/parser/tokenizers/tag.d.ts +2 -2
  47. package/lib/parser/tokenizers/type.cjs +2 -2
  48. package/lib/parser/tokenizers/type.cjs.map +1 -1
  49. package/lib/parser/tokenizers/type.d.ts +3 -3
  50. package/lib/stringifier/index.d.ts +2 -2
  51. package/lib/stringifier/inspect.cjs +2 -2
  52. package/lib/stringifier/inspect.cjs.map +1 -1
  53. package/lib/stringifier/inspect.d.ts +1 -1
  54. package/lib/transforms/align.cjs +5 -5
  55. package/lib/transforms/align.cjs.map +1 -1
  56. package/lib/transforms/align.d.ts +2 -2
  57. package/lib/transforms/crlf.cjs +2 -2
  58. package/lib/transforms/crlf.cjs.map +1 -1
  59. package/lib/transforms/crlf.d.ts +2 -2
  60. package/lib/transforms/indent.cjs +2 -2
  61. package/lib/transforms/indent.cjs.map +1 -1
  62. package/lib/transforms/indent.d.ts +1 -1
  63. package/lib/transforms/index.d.ts +2 -2
  64. package/lib/util.d.ts +1 -1
  65. package/package.json +4 -6
  66. package/src/index.ts +13 -13
  67. package/src/parser/block-parser.ts +1 -1
  68. package/src/parser/index.ts +10 -14
  69. package/src/parser/source-parser.ts +2 -2
  70. package/src/parser/spec-parser.ts +3 -3
  71. package/src/parser/tokenizers/description.ts +2 -2
  72. package/src/parser/tokenizers/index.ts +1 -1
  73. package/src/parser/tokenizers/name.ts +3 -3
  74. package/src/parser/tokenizers/tag.ts +3 -3
  75. package/src/parser/tokenizers/type.ts +3 -3
  76. package/src/stringifier/index.ts +1 -1
  77. package/src/stringifier/inspect.ts +2 -2
  78. package/src/transforms/align.ts +3 -3
  79. package/src/transforms/crlf.ts +3 -3
  80. package/src/transforms/indent.ts +3 -3
  81. package/src/transforms/index.ts +1 -1
  82. package/src/util.ts +1 -1
  83. package/tests/e2e/parse.spec.js +0 -9
  84. package/tests/unit/block-parser.spec.ts +3 -3
  85. package/tests/unit/inspect.spec.ts +3 -3
  86. package/tests/unit/parser.spec.ts +107 -7
  87. package/tests/unit/source-parser.spec.ts +3 -3
  88. package/tests/unit/spacer-description-joiner.spec.ts +3 -3
  89. package/tests/unit/spec-description-tokenizer.spec.ts +2 -2
  90. package/tests/unit/spec-name-tokenizer.spec.ts +2 -2
  91. package/tests/unit/spec-parser.spec.ts +7 -7
  92. package/tests/unit/spec-tag-tokenizer.spec.ts +2 -2
  93. package/tests/unit/spec-type-tokenizer.spec.ts +2 -2
  94. package/tests/unit/stringifier.spec.ts +1 -1
  95. package/tests/unit/transforms-align.spec.ts +3 -3
  96. package/tests/unit/transforms-crlf.spec.ts +3 -3
  97. package/tests/unit/transforms-indent.spec.ts +3 -3
  98. package/tests/unit/transforms.spec.ts +3 -3
  99. package/tests/unit/util-rewire.spec.ts +1 -1
  100. package/tests/unit/util.spec.ts +11 -1
  101. package/tsconfig.json +1 -2
  102. package/tsconfig.node.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["crlf.js"],"names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","defineProperty","exports","value","util_1","require","order","crlf","ending","update","line","assign","tokens","lineEnd","_a","source","fields","rewireSource","map","default"],"mappings":"AAAA;;AACA,IAAIA,MAAM,GAAI,QAAQ,KAAKA,MAAd,IAAyB,UAAUC,CAAV,EAAaC,CAAb,EAAgB;AAClD,MAAIC,CAAC,GAAG,EAAR;;AACA,OAAK,IAAIC,CAAT,IAAcH,CAAd,EAAiB,IAAII,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCP,CAArC,EAAwCG,CAAxC,KAA8CF,CAAC,CAACO,OAAF,CAAUL,CAAV,IAAe,CAAjE,EACbD,CAAC,CAACC,CAAD,CAAD,GAAOH,CAAC,CAACG,CAAD,CAAR;;AACJ,MAAIH,CAAC,IAAI,IAAL,IAAa,OAAOI,MAAM,CAACK,qBAAd,KAAwC,UAAzD,EACI,KAAK,IAAIC,CAAC,GAAG,CAAR,EAAWP,CAAC,GAAGC,MAAM,CAACK,qBAAP,CAA6BT,CAA7B,CAApB,EAAqDU,CAAC,GAAGP,CAAC,CAACQ,MAA3D,EAAmED,CAAC,EAApE,EAAwE;AACpE,QAAIT,CAAC,CAACO,OAAF,CAAUL,CAAC,CAACO,CAAD,CAAX,IAAkB,CAAlB,IAAuBN,MAAM,CAACC,SAAP,CAAiBO,oBAAjB,CAAsCL,IAAtC,CAA2CP,CAA3C,EAA8CG,CAAC,CAACO,CAAD,CAA/C,CAA3B,EACIR,CAAC,CAACC,CAAC,CAACO,CAAD,CAAF,CAAD,GAAUV,CAAC,CAACG,CAAC,CAACO,CAAD,CAAF,CAAX;AACP;AACL,SAAOR,CAAP;AACH,CAVD;;AAWAE,MAAM,CAACS,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;;AACA,MAAMC,MAAM,GAAGC,OAAH,eAAZ;;AACA,MAAMC,KAAK,GAAG,CACV,KADU,EAEV,aAFU,EAGV,UAHU,EAIV,MAJU,EAKV,UALU,EAMV,MANU,EAOV,SAPU,EAQV,KARU,EASV,eATU,EAUV,WAVU,EAWV,OAXU,CAAd;;AAaA,SAASC,IAAT,CAAcC,MAAd,EAAsB;AAClB,WAASC,MAAT,CAAgBC,IAAhB,EAAsB;AAClB,WAAOlB,MAAM,CAACmB,MAAP,CAAcnB,MAAM,CAACmB,MAAP,CAAc,EAAd,EAAkBD,IAAlB,CAAd,EAAuC;AAAEE,MAAAA,MAAM,EAAEpB,MAAM,CAACmB,MAAP,CAAcnB,MAAM,CAACmB,MAAP,CAAc,EAAd,EAAkBD,IAAI,CAACE,MAAvB,CAAd,EAA8C;AAAEC,QAAAA,OAAO,EAAEL,MAAM,KAAK,IAAX,GAAkB,EAAlB,GAAuB;AAAlC,OAA9C;AAAV,KAAvC,CAAP;AACH;;AACD,SAAQM,EAAD,IAAQ;AACX,QAAI;AAAEC,MAAAA;AAAF,QAAaD,EAAjB;AAAA,QAAqBE,MAAM,GAAG7B,MAAM,CAAC2B,EAAD,EAAK,CAAC,QAAD,CAAL,CAApC;;AACA,WAAOV,MAAM,CAACa,YAAP,CAAoBzB,MAAM,CAACmB,MAAP,CAAcnB,MAAM,CAACmB,MAAP,CAAc,EAAd,EAAkBK,MAAlB,CAAd,EAAyC;AAAED,MAAAA,MAAM,EAAEA,MAAM,CAACG,GAAP,CAAWT,MAAX;AAAV,KAAzC,CAApB,CAAP;AACH,GAHD;AAIH;;AACDP,OAAO,CAACiB,OAAR,GAAkBZ,IAAlB","sourcesContent":["\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../util\");\nconst order = [\n 'end',\n 'description',\n 'postType',\n 'type',\n 'postName',\n 'name',\n 'postTag',\n 'tag',\n 'postDelimiter',\n 'delimiter',\n 'start',\n];\nfunction crlf(ending) {\n function update(line) {\n return Object.assign(Object.assign({}, line), { tokens: Object.assign(Object.assign({}, line.tokens), { lineEnd: ending === 'LF' ? '' : '\\r' }) });\n }\n return (_a) => {\n var { source } = _a, fields = __rest(_a, [\"source\"]);\n return util_1.rewireSource(Object.assign(Object.assign({}, fields), { source: source.map(update) }));\n };\n}\nexports.default = crlf;\n"],"file":"crlf.cjs"}
1
+ {"version":3,"sources":["crlf.js"],"names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","defineProperty","exports","value","util_js_1","require","order","crlf","ending","update","line","assign","tokens","lineEnd","_a","source","fields","rewireSource","map","default"],"mappings":"AAAA;;AACA,IAAIA,MAAM,GAAI,QAAQ,KAAKA,MAAd,IAAyB,UAAUC,CAAV,EAAaC,CAAb,EAAgB;AAClD,MAAIC,CAAC,GAAG,EAAR;;AACA,OAAK,IAAIC,CAAT,IAAcH,CAAd,EAAiB,IAAII,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCP,CAArC,EAAwCG,CAAxC,KAA8CF,CAAC,CAACO,OAAF,CAAUL,CAAV,IAAe,CAAjE,EACbD,CAAC,CAACC,CAAD,CAAD,GAAOH,CAAC,CAACG,CAAD,CAAR;;AACJ,MAAIH,CAAC,IAAI,IAAL,IAAa,OAAOI,MAAM,CAACK,qBAAd,KAAwC,UAAzD,EACI,KAAK,IAAIC,CAAC,GAAG,CAAR,EAAWP,CAAC,GAAGC,MAAM,CAACK,qBAAP,CAA6BT,CAA7B,CAApB,EAAqDU,CAAC,GAAGP,CAAC,CAACQ,MAA3D,EAAmED,CAAC,EAApE,EAAwE;AACpE,QAAIT,CAAC,CAACO,OAAF,CAAUL,CAAC,CAACO,CAAD,CAAX,IAAkB,CAAlB,IAAuBN,MAAM,CAACC,SAAP,CAAiBO,oBAAjB,CAAsCL,IAAtC,CAA2CP,CAA3C,EAA8CG,CAAC,CAACO,CAAD,CAA/C,CAA3B,EACIR,CAAC,CAACC,CAAC,CAACO,CAAD,CAAF,CAAD,GAAUV,CAAC,CAACG,CAAC,CAACO,CAAD,CAAF,CAAX;AACP;AACL,SAAOR,CAAP;AACH,CAVD;;AAWAE,MAAM,CAACS,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;;AACA,MAAMC,SAAS,GAAGC,OAAH,eAAf;;AACA,MAAMC,KAAK,GAAG,CACV,KADU,EAEV,aAFU,EAGV,UAHU,EAIV,MAJU,EAKV,UALU,EAMV,MANU,EAOV,SAPU,EAQV,KARU,EASV,eATU,EAUV,WAVU,EAWV,OAXU,CAAd;;AAaA,SAASC,IAAT,CAAcC,MAAd,EAAsB;AAClB,WAASC,MAAT,CAAgBC,IAAhB,EAAsB;AAClB,WAAOlB,MAAM,CAACmB,MAAP,CAAcnB,MAAM,CAACmB,MAAP,CAAc,EAAd,EAAkBD,IAAlB,CAAd,EAAuC;AAAEE,MAAAA,MAAM,EAAEpB,MAAM,CAACmB,MAAP,CAAcnB,MAAM,CAACmB,MAAP,CAAc,EAAd,EAAkBD,IAAI,CAACE,MAAvB,CAAd,EAA8C;AAAEC,QAAAA,OAAO,EAAEL,MAAM,KAAK,IAAX,GAAkB,EAAlB,GAAuB;AAAlC,OAA9C;AAAV,KAAvC,CAAP;AACH;;AACD,SAAQM,EAAD,IAAQ;AACX,QAAI;AAAEC,MAAAA;AAAF,QAAaD,EAAjB;AAAA,QAAqBE,MAAM,GAAG7B,MAAM,CAAC2B,EAAD,EAAK,CAAC,QAAD,CAAL,CAApC;;AACA,WAAO,CAAC,GAAGV,SAAS,CAACa,YAAd,EAA4BzB,MAAM,CAACmB,MAAP,CAAcnB,MAAM,CAACmB,MAAP,CAAc,EAAd,EAAkBK,MAAlB,CAAd,EAAyC;AAAED,MAAAA,MAAM,EAAEA,MAAM,CAACG,GAAP,CAAWT,MAAX;AAAV,KAAzC,CAA5B,CAAP;AACH,GAHD;AAIH;;AACDP,OAAO,CAACiB,OAAR,GAAkBZ,IAAlB","sourcesContent":["\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_js_1 = require(\"../util.js\");\nconst order = [\n 'end',\n 'description',\n 'postType',\n 'type',\n 'postName',\n 'name',\n 'postTag',\n 'tag',\n 'postDelimiter',\n 'delimiter',\n 'start',\n];\nfunction crlf(ending) {\n function update(line) {\n return Object.assign(Object.assign({}, line), { tokens: Object.assign(Object.assign({}, line.tokens), { lineEnd: ending === 'LF' ? '' : '\\r' }) });\n }\n return (_a) => {\n var { source } = _a, fields = __rest(_a, [\"source\"]);\n return (0, util_js_1.rewireSource)(Object.assign(Object.assign({}, fields), { source: source.map(update) }));\n };\n}\nexports.default = crlf;\n"],"file":"crlf.cjs"}
@@ -1,3 +1,3 @@
1
- import { Transform } from './index';
2
- export declare type Ending = 'LF' | 'CRLF';
1
+ import { Transform } from './index.js';
2
+ export type Ending = 'LF' | 'CRLF';
3
3
  export default function crlf(ending: Ending): Transform;
@@ -15,7 +15,7 @@ Object.defineProperty(exports, "__esModule", {
15
15
  value: true
16
16
  });
17
17
 
18
- const util_1 = require("../util.cjs");
18
+ const util_js_1 = require("../util.cjs");
19
19
 
20
20
  const pull = offset => str => str.slice(offset);
21
21
 
@@ -48,7 +48,7 @@ function indent(pos) {
48
48
  } = _a,
49
49
  fields = __rest(_a, ["source"]);
50
50
 
51
- return util_1.rewireSource(Object.assign(Object.assign({}, fields), {
51
+ return (0, util_js_1.rewireSource)(Object.assign(Object.assign({}, fields), {
52
52
  source: source.map(update)
53
53
  }));
54
54
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["indent.js"],"names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","defineProperty","exports","value","util_1","require","pull","offset","str","slice","push","space","padStart","indent","pos","shift","pad","start","undefined","update","line","assign","tokens","_a","source","fields","rewireSource","map","default"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../util\");\nconst pull = (offset) => (str) => str.slice(offset);\nconst push = (offset) => {\n const space = ''.padStart(offset, ' ');\n return (str) => str + space;\n};\nfunction indent(pos) {\n let shift;\n const pad = (start) => {\n if (shift === undefined) {\n const offset = pos - start.length;\n shift = offset > 0 ? push(offset) : pull(-offset);\n }\n return shift(start);\n };\n const update = (line) => (Object.assign(Object.assign({}, line), { tokens: Object.assign(Object.assign({}, line.tokens), { start: pad(line.tokens.start) }) }));\n return (_a) => {\n var { source } = _a, fields = __rest(_a, [\"source\"]);\n return util_1.rewireSource(Object.assign(Object.assign({}, fields), { source: source.map(update) }));\n };\n}\nexports.default = indent;\n"],"file":"indent.cjs"}
1
+ {"version":3,"sources":["indent.js"],"names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","defineProperty","exports","value","util_js_1","require","pull","offset","str","slice","push","space","padStart","indent","pos","shift","pad","start","undefined","update","line","assign","tokens","_a","source","fields","rewireSource","map","default"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_js_1 = require(\"../util.js\");\nconst pull = (offset) => (str) => str.slice(offset);\nconst push = (offset) => {\n const space = ''.padStart(offset, ' ');\n return (str) => str + space;\n};\nfunction indent(pos) {\n let shift;\n const pad = (start) => {\n if (shift === undefined) {\n const offset = pos - start.length;\n shift = offset > 0 ? push(offset) : pull(-offset);\n }\n return shift(start);\n };\n const update = (line) => (Object.assign(Object.assign({}, line), { tokens: Object.assign(Object.assign({}, line.tokens), { start: pad(line.tokens.start) }) }));\n return (_a) => {\n var { source } = _a, fields = __rest(_a, [\"source\"]);\n return (0, util_js_1.rewireSource)(Object.assign(Object.assign({}, fields), { source: source.map(update) }));\n };\n}\nexports.default = indent;\n"],"file":"indent.cjs"}
@@ -1,2 +1,2 @@
1
- import { Transform } from './index';
1
+ import { Transform } from './index.js';
2
2
  export default function indent(pos: number): Transform;
@@ -1,3 +1,3 @@
1
- import { Block } from '../primitives';
2
- export declare type Transform = (Block: Block) => Block;
1
+ import { Block } from '../primitives.js';
2
+ export type Transform = (Block: Block) => Block;
3
3
  export declare function flow(...transforms: Transform[]): Transform;
package/lib/util.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Block, Tokens, Spec } from './primitives';
1
+ import { Block, Tokens, Spec } from './primitives.js';
2
2
  export declare function isSpace(source: string): boolean;
3
3
  export declare function hasCR(source: string): boolean;
4
4
  export declare function splitCR(source: string): [string, string];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "comment-parser",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "Generic JSDoc-like comment parser",
5
5
  "type": "module",
6
6
  "main": "lib/index.cjs",
@@ -39,17 +39,16 @@
39
39
  "convert-extension": "^0.3.0",
40
40
  "jest": "^27.0.5",
41
41
  "prettier": "2.3.1",
42
- "replace": "^1.2.1",
43
42
  "rimraf": "^3.0.2",
44
43
  "rollup": "^2.52.2",
45
44
  "ts-jest": "^27.0.3",
46
- "typescript": "^4.3.4"
45
+ "typescript": "^4.9.5"
47
46
  },
48
47
  "engines": {
49
48
  "node": ">= 12.0.0"
50
49
  },
51
50
  "scripts": {
52
- "build": "rimraf lib es6 browser; tsc -p tsconfig.json && tsc -p tsconfig.node.json && rollup -o browser/index.js -f iife --context window -n CommentParser es6/index.js && convert-extension cjs lib/ && cd es6 && replace \"from '(\\.[^']*)'\" \"from '\\$1.js'\" * -r --include=\"*.js\"",
51
+ "build": "rimraf lib es6 browser; tsc -p tsconfig.json && tsc -p tsconfig.node.json && rollup -o browser/index.js -f iife --context window -n CommentParser es6/index.js && convert-extension cjs lib/",
53
52
  "format": "prettier --write src tests",
54
53
  "pretest": "rimraf coverage; npm run build",
55
54
  "test": "prettier --check src tests && jest --verbose",
@@ -81,6 +80,5 @@
81
80
  "bugs": {
82
81
  "url": "https://github.com/syavorsky/comment-parser/issues"
83
82
  },
84
- "homepage": "https://github.com/syavorsky/comment-parser",
85
- "dependencies": {}
83
+ "homepage": "https://github.com/syavorsky/comment-parser"
86
84
  }
package/src/index.ts CHANGED
@@ -1,23 +1,23 @@
1
- import getParser, { Options as ParserOptions } from './parser/index';
2
- import descriptionTokenizer from './parser/tokenizers/description';
3
- import nameTokenizer from './parser/tokenizers/name';
4
- import tagTokenizer from './parser/tokenizers/tag';
5
- import typeTokenizer from './parser/tokenizers/type';
6
- import getStringifier from './stringifier/index';
7
- import alignTransform from './transforms/align';
8
- import indentTransform from './transforms/indent';
9
- import crlfTransform from './transforms/crlf';
10
- import { flow as flowTransform } from './transforms/index';
11
- import { rewireSpecs, rewireSource, seedBlock, seedTokens } from './util';
1
+ import getParser, { Options as ParserOptions } from './parser/index.js';
2
+ import descriptionTokenizer from './parser/tokenizers/description.js';
3
+ import nameTokenizer from './parser/tokenizers/name.js';
4
+ import tagTokenizer from './parser/tokenizers/tag.js';
5
+ import typeTokenizer from './parser/tokenizers/type.js';
6
+ import getStringifier from './stringifier/index.js';
7
+ import alignTransform from './transforms/align.js';
8
+ import indentTransform from './transforms/indent.js';
9
+ import crlfTransform from './transforms/crlf.js';
10
+ import { flow as flowTransform } from './transforms/index.js';
11
+ import { rewireSpecs, rewireSource, seedBlock, seedTokens } from './util.js';
12
12
 
13
- export * from './primitives';
13
+ export * from './primitives.js';
14
14
 
15
15
  export function parse(source: string, options: Partial<ParserOptions> = {}) {
16
16
  return getParser(options)(source);
17
17
  }
18
18
 
19
19
  export const stringify = getStringifier();
20
- export { default as inspect } from './stringifier/inspect';
20
+ export { default as inspect } from './stringifier/inspect.js';
21
21
 
22
22
  export const transforms = {
23
23
  flow: flowTransform,
@@ -1,4 +1,4 @@
1
- import { Line } from '../primitives';
1
+ import { Line } from '../primitives.js';
2
2
 
3
3
  const reTag = /^@\S+/;
4
4
 
@@ -1,15 +1,15 @@
1
- import { Block, Line, Problem, BlockMarkers, Markers } from '../primitives';
2
- import { splitLines } from '../util';
3
- import blockParser from './block-parser';
4
- import sourceParser from './source-parser';
5
- import specParser from './spec-parser';
6
- import { Tokenizer } from './tokenizers/index';
7
- import tokenizeTag from './tokenizers/tag';
8
- import tokenizeType from './tokenizers/type';
9
- import tokenizeName from './tokenizers/name';
1
+ import { Block, Line, Problem, BlockMarkers, Markers } from '../primitives.js';
2
+ import { splitLines } from '../util.js';
3
+ import blockParser from './block-parser.js';
4
+ import sourceParser from './source-parser.js';
5
+ import specParser from './spec-parser.js';
6
+ import { Tokenizer } from './tokenizers/index.js';
7
+ import tokenizeTag from './tokenizers/tag.js';
8
+ import tokenizeType from './tokenizers/type.js';
9
+ import tokenizeName from './tokenizers/name.js';
10
10
  import tokenizeDescription, {
11
11
  getJoiner as getDescriptionJoiner,
12
- } from './tokenizers/description';
12
+ } from './tokenizers/description.js';
13
13
 
14
14
  export interface Options {
15
15
  // start count for source line numbers
@@ -45,16 +45,12 @@ export default function getParser({
45
45
  const parseSpec = specParser({ tokenizers });
46
46
  const joinDescription = getDescriptionJoiner(spacing);
47
47
 
48
- const notEmpty = (line: Line): boolean =>
49
- line.tokens.description.trim() != '';
50
-
51
48
  return function (source: string): Block[] {
52
49
  const blocks: Block[] = [];
53
50
  for (const line of splitLines(source)) {
54
51
  const lines = parseSource(line);
55
52
 
56
53
  if (lines === null) continue;
57
- if (lines.find(notEmpty) === undefined) continue;
58
54
 
59
55
  const sections = parseBlock(lines);
60
56
  const specs = sections.slice(1).map(parseSpec);
@@ -1,5 +1,5 @@
1
- import { Line, Tokens, BlockMarkers, Markers } from '../primitives';
2
- import { seedTokens, splitSpace, splitCR } from '../util';
1
+ import { Line, Tokens, BlockMarkers, Markers } from '../primitives.js';
2
+ import { seedTokens, splitSpace, splitCR } from '../util.js';
3
3
 
4
4
  export interface Options {
5
5
  startLine: number;
@@ -1,6 +1,6 @@
1
- import { Line, Spec } from '../primitives';
2
- import { seedSpec } from '../util';
3
- import { Tokenizer } from './tokenizers/index';
1
+ import { Line, Spec } from '../primitives.js';
2
+ import { seedSpec } from '../util.js';
3
+ import { Tokenizer } from './tokenizers/index.js';
4
4
 
5
5
  export type Parser = (source: Line[]) => Spec;
6
6
 
@@ -1,5 +1,5 @@
1
- import { Spec, Line, BlockMarkers, Markers } from '../../primitives';
2
- import { Tokenizer } from './index';
1
+ import { Spec, Line, BlockMarkers, Markers } from '../../primitives.js';
2
+ import { Tokenizer } from './index.js';
3
3
 
4
4
  /**
5
5
  * Walks over provided lines joining description token into a single string.
@@ -1,4 +1,4 @@
1
- import { Spec } from '../../primitives';
1
+ import { Spec } from '../../primitives.js';
2
2
 
3
3
  /**
4
4
  * Splits `spect.lines[].token.description` into other tokens,
@@ -1,6 +1,6 @@
1
- import { Spec, Line } from '../../primitives';
2
- import { splitSpace, isSpace } from '../../util';
3
- import { Tokenizer } from './index';
1
+ import { Spec, Line } from '../../primitives.js';
2
+ import { splitSpace, isSpace } from '../../util.js';
3
+ import { Tokenizer } from './index.js';
4
4
 
5
5
  const isQuoted = (s: string) => s && s.startsWith('"') && s.endsWith('"');
6
6
 
@@ -1,8 +1,8 @@
1
- import { Spec } from '../../primitives';
2
- import { Tokenizer } from './index';
1
+ import { Spec } from '../../primitives.js';
2
+ import { Tokenizer } from './index.js';
3
3
 
4
4
  /**
5
- * Splits the `@prefix` from remaining `Spec.lines[].token.descrioption` into the `tag` token,
5
+ * Splits the `@prefix` from remaining `Spec.lines[].token.description` into the `tag` token,
6
6
  * and populates `spec.tag`
7
7
  */
8
8
  export default function tagTokenizer(): Tokenizer {
@@ -1,6 +1,6 @@
1
- import { Spec, Tokens } from '../../primitives';
2
- import { splitSpace } from '../../util';
3
- import { Tokenizer } from './index';
1
+ import { Spec, Tokens } from '../../primitives.js';
2
+ import { splitSpace } from '../../util.js';
3
+ import { Tokenizer } from './index.js';
4
4
 
5
5
  /**
6
6
  * Joiner is a function taking collected type token string parts,
@@ -1,4 +1,4 @@
1
- import { Block, Tokens } from '../primitives';
1
+ import { Block, Tokens } from '../primitives.js';
2
2
 
3
3
  export type Stringifier = (block: Block) => string;
4
4
 
@@ -1,5 +1,5 @@
1
- import { Block, Tokens } from '../primitives';
2
- import { isSpace } from '../util';
1
+ import { Block, Tokens } from '../primitives.js';
2
+ import { isSpace } from '../util.js';
3
3
 
4
4
  interface Width {
5
5
  line: number;
@@ -1,6 +1,6 @@
1
- import { Transform } from './index';
2
- import { BlockMarkers, Block, Line, Markers } from '../primitives';
3
- import { rewireSource } from '../util';
1
+ import { Transform } from './index.js';
2
+ import { BlockMarkers, Block, Line, Markers } from '../primitives.js';
3
+ import { rewireSource } from '../util.js';
4
4
 
5
5
  interface Width {
6
6
  start: number;
@@ -1,6 +1,6 @@
1
- import { Transform } from './index';
2
- import { Block, Line } from '../primitives';
3
- import { rewireSource } from '../util';
1
+ import { Transform } from './index.js';
2
+ import { Block, Line } from '../primitives.js';
3
+ import { rewireSource } from '../util.js';
4
4
 
5
5
  const order = [
6
6
  'end',
@@ -1,6 +1,6 @@
1
- import { Transform } from './index';
2
- import { Block, Line } from '../primitives';
3
- import { rewireSource } from '../util';
1
+ import { Transform } from './index.js';
2
+ import { Block, Line } from '../primitives.js';
3
+ import { rewireSource } from '../util.js';
4
4
 
5
5
  const pull = (offset: number) => (str) => str.slice(offset);
6
6
  const push = (offset: number) => {
@@ -1,4 +1,4 @@
1
- import { Block } from '../primitives';
1
+ import { Block } from '../primitives.js';
2
2
 
3
3
  export type Transform = (Block: Block) => Block;
4
4
 
package/src/util.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Block, Tokens, Spec, Line } from './primitives';
1
+ import { Block, Tokens, Spec, Line } from './primitives.js';
2
2
 
3
3
  export function isSpace(source: string): boolean {
4
4
  return /^\s+$/.test(source);
@@ -480,15 +480,6 @@ test('description on the first line', () => {
480
480
  ]);
481
481
  });
482
482
 
483
- test('skip empty blocks', () => {
484
- const parsed = parse(`
485
- /**
486
- *
487
- */
488
- var a`);
489
- expect(parsed).toHaveLength(0);
490
- });
491
-
492
483
  test('multiple blocks', () => {
493
484
  const parsed = parse(`
494
485
  /**
@@ -1,6 +1,6 @@
1
- import getParser from '../../src/parser/block-parser';
2
- import { Line } from '../../src/primitives';
3
- import { seedTokens } from '../../src/util';
1
+ import getParser from '../../src/parser/block-parser.js';
2
+ import { Line } from '../../src/primitives.js';
3
+ import { seedTokens } from '../../src/util.js';
4
4
 
5
5
  let source: Line[];
6
6
 
@@ -1,6 +1,6 @@
1
- import getParser from '../../src/parser/index';
2
- import inspect from '../../src/stringifier/inspect';
3
- import { seedBlock } from '../../src/util';
1
+ import getParser from '../../src/parser/index.js';
2
+ import inspect from '../../src/stringifier/inspect.js';
3
+ import { seedBlock } from '../../src/util.js';
4
4
 
5
5
  test('multiple lines', () => {
6
6
  const source = `
@@ -1,10 +1,10 @@
1
- import getParser from '../../src/parser';
2
- import { seedTokens } from '../../src/util';
1
+ import getParser from '../../src/parser/index.js';
2
+ import { seedTokens } from '../../src/util.js';
3
3
 
4
4
  test('block with tags', () => {
5
5
  const parsed = getParser()(`
6
6
  /**
7
- * Description may go
7
+ * Description may go\x20
8
8
  * over few lines followed by @tags
9
9
  * @param {string} name name parameter
10
10
  *
@@ -167,10 +167,10 @@ test('block with tags', () => {
167
167
  ]);
168
168
  });
169
169
 
170
- test('no source clonning', () => {
170
+ test('no source cloning', () => {
171
171
  const parsed = getParser()(`
172
172
  /**
173
- * Description may go
173
+ * Description may go\x20
174
174
  * over few lines followed by @tags
175
175
  * @param {string} name name parameter
176
176
  *
@@ -179,11 +179,111 @@ test('no source clonning', () => {
179
179
  expect(parsed[0].tags[0].source[0] === parsed[0].source[3]).toBe(true);
180
180
  });
181
181
 
182
+ test('empty multi-line block', () => {
183
+ const parsed = getParser()(`
184
+ /**
185
+ *
186
+ */`);
187
+ expect(parsed).toEqual([
188
+ {
189
+ description: '',
190
+ tags: [],
191
+ source: [
192
+ {
193
+ number: 1,
194
+ source: ' /**',
195
+ tokens: {
196
+ delimiter: '/**',
197
+ description: '',
198
+ end: '',
199
+ lineEnd: '',
200
+ name: '',
201
+ postDelimiter: '',
202
+ postName: '',
203
+ postTag: '',
204
+ postType: '',
205
+ start: ' ',
206
+ tag: '',
207
+ type: '',
208
+ },
209
+ },
210
+ {
211
+ number: 2,
212
+ source: ' *',
213
+ tokens: {
214
+ delimiter: '*',
215
+ description: '',
216
+ end: '',
217
+ lineEnd: '',
218
+ name: '',
219
+ postDelimiter: '',
220
+ postName: '',
221
+ postTag: '',
222
+ postType: '',
223
+ start: ' ',
224
+ tag: '',
225
+ type: '',
226
+ },
227
+ },
228
+ {
229
+ number: 3,
230
+ source: ' */',
231
+ tokens: {
232
+ delimiter: '',
233
+ description: '',
234
+ end: '*/',
235
+ lineEnd: '',
236
+ name: '',
237
+ postDelimiter: '',
238
+ postName: '',
239
+ postTag: '',
240
+ postType: '',
241
+ start: ' ',
242
+ tag: '',
243
+ type: '',
244
+ },
245
+ },
246
+ ],
247
+ problems: [],
248
+ },
249
+ ]);
250
+ });
251
+
252
+ test('empty one-line block', () => {
253
+ const parsed = getParser()(`
254
+ /** */`);
255
+ expect(parsed).toEqual([
256
+ {
257
+ description: '',
258
+ tags: [],
259
+ source: [
260
+ {
261
+ number: 1,
262
+ source: ' /** */',
263
+ tokens: {
264
+ delimiter: '/**',
265
+ description: '',
266
+ end: '*/',
267
+ lineEnd: '',
268
+ name: '',
269
+ postDelimiter: ' ',
270
+ postName: '',
271
+ postTag: '',
272
+ postType: '',
273
+ start: ' ',
274
+ tag: '',
275
+ type: '',
276
+ },
277
+ },
278
+ ],
279
+ problems: [],
280
+ },
281
+ ]);
282
+ });
283
+
182
284
  test.each([
183
- ['empty', '/**\n*\n*/'],
184
285
  ['one-star', '/*\n*\n*/'],
185
286
  ['three-star', '/***\n*\n*/'],
186
- ['empty one-liner', '/** */'],
187
287
  ['one-star oneliner', '/* */'],
188
288
  ['three-star oneliner', '/*** */'],
189
289
  ])('skip block - %s', (name, source) => {
@@ -1,6 +1,6 @@
1
- import getParser, { Parser } from '../../src/parser/source-parser';
2
- import { Line } from '../../src/primitives';
3
- import { splitLines, seedBlock, seedTokens } from '../../src/util';
1
+ import getParser, { Parser } from '../../src/parser/source-parser.js';
2
+ import { Line } from '../../src/primitives.js';
3
+ import { splitLines, seedBlock, seedTokens } from '../../src/util.js';
4
4
 
5
5
  let _parse: Parser;
6
6
 
@@ -1,6 +1,6 @@
1
- import { getJoiner } from '../../src/parser/tokenizers/description';
2
- import { Line } from '../../src/primitives';
3
- import { seedTokens } from '../../src/util';
1
+ import { getJoiner } from '../../src/parser/tokenizers/description.js';
2
+ import { Line } from '../../src/primitives.js';
3
+ import { seedTokens } from '../../src/util.js';
4
4
 
5
5
  const source: Line[] = [
6
6
  {
@@ -1,5 +1,5 @@
1
- import descriptionTokenizer from '../../src/parser/tokenizers/description';
2
- import { seedSpec, seedTokens } from '../../src/util';
1
+ import descriptionTokenizer from '../../src/parser/tokenizers/description.js';
2
+ import { seedSpec, seedTokens } from '../../src/util.js';
3
3
 
4
4
  const sourceSingle = [
5
5
  {
@@ -1,5 +1,5 @@
1
- import nameTokenizer from '../../src/parser/tokenizers/name';
2
- import { seedTokens, seedSpec } from '../../src/util';
1
+ import nameTokenizer from '../../src/parser/tokenizers/name.js';
2
+ import { seedTokens, seedSpec } from '../../src/util.js';
3
3
 
4
4
  const tokenize = nameTokenizer();
5
5
 
@@ -1,10 +1,10 @@
1
- import descriptionTokenizer from '../../src/parser/tokenizers/description';
2
- import nameTokenizer from '../../src/parser/tokenizers/name';
3
- import tagTokenizer from '../../src/parser/tokenizers/tag';
4
- import typeTokenizer from '../../src/parser/tokenizers/type';
5
- import getParser from '../../src/parser/spec-parser';
6
- import { seedTokens, seedSpec } from '../../src/util';
7
- import { Spec, Problem } from '../../src/primitives';
1
+ import descriptionTokenizer from '../../src/parser/tokenizers/description.js';
2
+ import nameTokenizer from '../../src/parser/tokenizers/name.js';
3
+ import tagTokenizer from '../../src/parser/tokenizers/tag.js';
4
+ import typeTokenizer from '../../src/parser/tokenizers/type.js';
5
+ import getParser from '../../src/parser/spec-parser.js';
6
+ import { seedTokens, seedSpec } from '../../src/util.js';
7
+ import { Spec, Problem } from '../../src/primitives.js';
8
8
 
9
9
  const parse = getParser({
10
10
  tokenizers: [
@@ -1,5 +1,5 @@
1
- import tagTokenizer from '../../src/parser/tokenizers/tag';
2
- import { seedTokens, seedSpec } from '../../src/util';
1
+ import tagTokenizer from '../../src/parser/tokenizers/tag.js';
2
+ import { seedTokens, seedSpec } from '../../src/util.js';
3
3
 
4
4
  const tokenize = tagTokenizer();
5
5
 
@@ -1,5 +1,5 @@
1
- import typeTokenizer, { Joiner } from '../../src/parser/tokenizers/type';
2
- import { seedTokens, seedSpec } from '../../src/util';
1
+ import typeTokenizer, { Joiner } from '../../src/parser/tokenizers/type.js';
2
+ import { seedTokens, seedSpec } from '../../src/util.js';
3
3
 
4
4
  const tokenize = typeTokenizer();
5
5
 
@@ -1,4 +1,4 @@
1
- import getStringifier from '../../src/stringifier';
1
+ import getStringifier from '../../src/stringifier/index.js';
2
2
 
3
3
  const source = [
4
4
  {
@@ -1,6 +1,6 @@
1
- import align from '../../src/transforms/align';
2
- import getParser, { Parser } from '../../src/parser/index';
3
- import getStringifier, { Stringifier } from '../../src/stringifier/index';
1
+ import align from '../../src/transforms/align.js';
2
+ import getParser, { Parser } from '../../src/parser/index.js';
3
+ import getStringifier, { Stringifier } from '../../src/stringifier/index.js';
4
4
 
5
5
  let parse: Parser;
6
6
  let stringify: Stringifier;