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
package/lib/index.cjs DELETED
@@ -1,88 +0,0 @@
1
- "use strict";
2
-
3
- var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
-
7
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
- desc = {
9
- enumerable: true,
10
- get: function () {
11
- return m[k];
12
- }
13
- };
14
- }
15
-
16
- Object.defineProperty(o, k2, desc);
17
- } : function (o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- o[k2] = m[k];
20
- });
21
-
22
- var __exportStar = this && this.__exportStar || function (m, exports) {
23
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
24
- };
25
-
26
- Object.defineProperty(exports, "__esModule", {
27
- value: true
28
- });
29
- exports.util = exports.tokenizers = exports.transforms = exports.inspect = exports.stringify = exports.parse = void 0;
30
-
31
- const index_js_1 = require("./parser/index.cjs");
32
-
33
- const description_js_1 = require("./parser/tokenizers/description.cjs");
34
-
35
- const name_js_1 = require("./parser/tokenizers/name.cjs");
36
-
37
- const tag_js_1 = require("./parser/tokenizers/tag.cjs");
38
-
39
- const type_js_1 = require("./parser/tokenizers/type.cjs");
40
-
41
- const index_js_2 = require("./stringifier/index.cjs");
42
-
43
- const align_js_1 = require("./transforms/align.cjs");
44
-
45
- const indent_js_1 = require("./transforms/indent.cjs");
46
-
47
- const crlf_js_1 = require("./transforms/crlf.cjs");
48
-
49
- const index_js_3 = require("./transforms/index.cjs");
50
-
51
- const util_js_1 = require("./util.cjs");
52
-
53
- __exportStar(require("./primitives.cjs"), exports);
54
-
55
- function parse(source, options = {}) {
56
- return (0, index_js_1.default)(options)(source);
57
- }
58
-
59
- exports.parse = parse;
60
- exports.stringify = (0, index_js_2.default)();
61
-
62
- var inspect_js_1 = require("./stringifier/inspect.cjs");
63
-
64
- Object.defineProperty(exports, "inspect", {
65
- enumerable: true,
66
- get: function () {
67
- return inspect_js_1.default;
68
- }
69
- });
70
- exports.transforms = {
71
- flow: index_js_3.flow,
72
- align: align_js_1.default,
73
- indent: indent_js_1.default,
74
- crlf: crlf_js_1.default
75
- };
76
- exports.tokenizers = {
77
- tag: tag_js_1.default,
78
- type: type_js_1.default,
79
- name: name_js_1.default,
80
- description: description_js_1.default
81
- };
82
- exports.util = {
83
- rewireSpecs: util_js_1.rewireSpecs,
84
- rewireSource: util_js_1.rewireSource,
85
- seedBlock: util_js_1.seedBlock,
86
- seedTokens: util_js_1.seedTokens
87
- };
88
- //# sourceMappingURL=index.cjs.map
package/lib/index.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["index.js"],"names":["__createBinding","Object","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","defineProperty","__exportStar","exports","p","prototype","hasOwnProperty","call","value","util","tokenizers","transforms","inspect","stringify","parse","index_js_1","require","description_js_1","name_js_1","tag_js_1","type_js_1","index_js_2","align_js_1","indent_js_1","crlf_js_1","index_js_3","util_js_1","source","options","default","inspect_js_1","flow","align","indent","crlf","tag","type","name","description","rewireSpecs","rewireSource","seedBlock","seedTokens"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.util = exports.tokenizers = exports.transforms = exports.inspect = exports.stringify = exports.parse = void 0;\nconst index_js_1 = require(\"./parser/index.js\");\nconst description_js_1 = require(\"./parser/tokenizers/description.js\");\nconst name_js_1 = require(\"./parser/tokenizers/name.js\");\nconst tag_js_1 = require(\"./parser/tokenizers/tag.js\");\nconst type_js_1 = require(\"./parser/tokenizers/type.js\");\nconst index_js_2 = require(\"./stringifier/index.js\");\nconst align_js_1 = require(\"./transforms/align.js\");\nconst indent_js_1 = require(\"./transforms/indent.js\");\nconst crlf_js_1 = require(\"./transforms/crlf.js\");\nconst index_js_3 = require(\"./transforms/index.js\");\nconst util_js_1 = require(\"./util.js\");\n__exportStar(require(\"./primitives.js\"), exports);\nfunction parse(source, options = {}) {\n return (0, index_js_1.default)(options)(source);\n}\nexports.parse = parse;\nexports.stringify = (0, index_js_2.default)();\nvar inspect_js_1 = require(\"./stringifier/inspect.js\");\nObject.defineProperty(exports, \"inspect\", { enumerable: true, get: function () { return inspect_js_1.default; } });\nexports.transforms = {\n flow: index_js_3.flow,\n align: align_js_1.default,\n indent: indent_js_1.default,\n crlf: crlf_js_1.default,\n};\nexports.tokenizers = {\n tag: tag_js_1.default,\n type: type_js_1.default,\n name: name_js_1.default,\n description: description_js_1.default,\n};\nexports.util = { rewireSpecs: util_js_1.rewireSpecs, rewireSource: util_js_1.rewireSource, seedBlock: util_js_1.seedBlock, seedTokens: util_js_1.seedTokens };\n"],"file":"index.cjs"}
package/lib/index.d.ts DELETED
@@ -1,32 +0,0 @@
1
- import { 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 alignTransform from './transforms/align.js';
7
- import indentTransform from './transforms/indent.js';
8
- import crlfTransform from './transforms/crlf.js';
9
- import { flow as flowTransform } from './transforms/index.js';
10
- import { rewireSpecs, rewireSource, seedBlock, seedTokens } from './util.js';
11
- export * from './primitives.js';
12
- export declare function parse(source: string, options?: Partial<ParserOptions>): import("./primitives.js").Block[];
13
- export declare const stringify: import("./stringifier/index.js").Stringifier;
14
- export { default as inspect } from './stringifier/inspect.js';
15
- export declare const transforms: {
16
- flow: typeof flowTransform;
17
- align: typeof alignTransform;
18
- indent: typeof indentTransform;
19
- crlf: typeof crlfTransform;
20
- };
21
- export declare const tokenizers: {
22
- tag: typeof tagTokenizer;
23
- type: typeof typeTokenizer;
24
- name: typeof nameTokenizer;
25
- description: typeof descriptionTokenizer;
26
- };
27
- export declare const util: {
28
- rewireSpecs: typeof rewireSpecs;
29
- rewireSource: typeof rewireSource;
30
- seedBlock: typeof seedBlock;
31
- seedTokens: typeof seedTokens;
32
- };
@@ -1,44 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- const reTag = /^@\S+/;
7
- /**
8
- * Creates configured `Parser`
9
- * @param {Partial<Options>} options
10
- */
11
-
12
- function getParser({
13
- fence = '```'
14
- } = {}) {
15
- const fencer = getFencer(fence);
16
-
17
- const toggleFence = (source, isFenced) => fencer(source) ? !isFenced : isFenced;
18
-
19
- return function parseBlock(source) {
20
- // start with description section
21
- const sections = [[]];
22
- let isFenced = false;
23
-
24
- for (const line of source) {
25
- if (reTag.test(line.tokens.description) && !isFenced) {
26
- sections.push([line]);
27
- } else {
28
- sections[sections.length - 1].push(line);
29
- }
30
-
31
- isFenced = toggleFence(line.tokens.description, isFenced);
32
- }
33
-
34
- return sections;
35
- };
36
- }
37
-
38
- exports.default = getParser;
39
-
40
- function getFencer(fence) {
41
- if (typeof fence === 'string') return source => source.split(fence).length % 2 === 0;
42
- return fence;
43
- }
44
- //# sourceMappingURL=block-parser.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["block-parser.js"],"names":["Object","defineProperty","exports","value","reTag","getParser","fence","fencer","getFencer","toggleFence","source","isFenced","parseBlock","sections","line","test","tokens","description","push","length","default","split"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;AACA,MAAMC,KAAK,GAAG,OAAd;AACA;AACA;AACA;AACA;;AACA,SAASC,SAAT,CAAmB;AAAEC,EAAAA,KAAK,GAAG;AAAV,IAAqB,EAAxC,EAA4C;AACxC,QAAMC,MAAM,GAAGC,SAAS,CAACF,KAAD,CAAxB;;AACA,QAAMG,WAAW,GAAG,CAACC,MAAD,EAASC,QAAT,KAAsBJ,MAAM,CAACG,MAAD,CAAN,GAAiB,CAACC,QAAlB,GAA6BA,QAAvE;;AACA,SAAO,SAASC,UAAT,CAAoBF,MAApB,EAA4B;AAC/B;AACA,UAAMG,QAAQ,GAAG,CAAC,EAAD,CAAjB;AACA,QAAIF,QAAQ,GAAG,KAAf;;AACA,SAAK,MAAMG,IAAX,IAAmBJ,MAAnB,EAA2B;AACvB,UAAIN,KAAK,CAACW,IAAN,CAAWD,IAAI,CAACE,MAAL,CAAYC,WAAvB,KAAuC,CAACN,QAA5C,EAAsD;AAClDE,QAAAA,QAAQ,CAACK,IAAT,CAAc,CAACJ,IAAD,CAAd;AACH,OAFD,MAGK;AACDD,QAAAA,QAAQ,CAACA,QAAQ,CAACM,MAAT,GAAkB,CAAnB,CAAR,CAA8BD,IAA9B,CAAmCJ,IAAnC;AACH;;AACDH,MAAAA,QAAQ,GAAGF,WAAW,CAACK,IAAI,CAACE,MAAL,CAAYC,WAAb,EAA0BN,QAA1B,CAAtB;AACH;;AACD,WAAOE,QAAP;AACH,GAdD;AAeH;;AACDX,OAAO,CAACkB,OAAR,GAAkBf,SAAlB;;AACA,SAASG,SAAT,CAAmBF,KAAnB,EAA0B;AACtB,MAAI,OAAOA,KAAP,KAAiB,QAArB,EACI,OAAQI,MAAD,IAAYA,MAAM,CAACW,KAAP,CAAaf,KAAb,EAAoBa,MAApB,GAA6B,CAA7B,KAAmC,CAAtD;AACJ,SAAOb,KAAP;AACH","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst reTag = /^@\\S+/;\n/**\n * Creates configured `Parser`\n * @param {Partial<Options>} options\n */\nfunction getParser({ fence = '```', } = {}) {\n const fencer = getFencer(fence);\n const toggleFence = (source, isFenced) => fencer(source) ? !isFenced : isFenced;\n return function parseBlock(source) {\n // start with description section\n const sections = [[]];\n let isFenced = false;\n for (const line of source) {\n if (reTag.test(line.tokens.description) && !isFenced) {\n sections.push([line]);\n }\n else {\n sections[sections.length - 1].push(line);\n }\n isFenced = toggleFence(line.tokens.description, isFenced);\n }\n return sections;\n };\n}\nexports.default = getParser;\nfunction getFencer(fence) {\n if (typeof fence === 'string')\n return (source) => source.split(fence).length % 2 === 0;\n return fence;\n}\n"],"file":"block-parser.cjs"}
@@ -1,24 +0,0 @@
1
- import { Line } from '../primitives.js';
2
- /**
3
- * Groups source lines in sections representing tags.
4
- * First section is a block description if present. Last section captures lines starting with
5
- * the last tag to the end of the block, including dangling closing marker.
6
- * @param {Line[]} block souce lines making a single comment block
7
- */
8
- export type Parser = (block: Line[]) => Line[][];
9
- /**
10
- * Predicate telling if string contains opening/closing escaping sequence
11
- * @param {string} source raw source line
12
- */
13
- export type Fencer = (source: string) => boolean;
14
- /**
15
- * `Parser` configuration options
16
- */
17
- export interface Options {
18
- fence: string | Fencer;
19
- }
20
- /**
21
- * Creates configured `Parser`
22
- * @param {Partial<Options>} options
23
- */
24
- export default function getParser({ fence, }?: Partial<Options>): Parser;
@@ -1,65 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- const primitives_js_1 = require("../primitives.cjs");
8
-
9
- const util_js_1 = require("../util.cjs");
10
-
11
- const block_parser_js_1 = require("./block-parser.cjs");
12
-
13
- const source_parser_js_1 = require("./source-parser.cjs");
14
-
15
- const spec_parser_js_1 = require("./spec-parser.cjs");
16
-
17
- const tag_js_1 = require("./tokenizers/tag.cjs");
18
-
19
- const type_js_1 = require("./tokenizers/type.cjs");
20
-
21
- const name_js_1 = require("./tokenizers/name.cjs");
22
-
23
- const description_js_1 = require("./tokenizers/description.cjs");
24
-
25
- function getParser({
26
- startLine = 0,
27
- fence = '```',
28
- spacing = 'compact',
29
- markers = primitives_js_1.Markers,
30
- tokenizers = [(0, tag_js_1.default)(), (0, type_js_1.default)(spacing), (0, name_js_1.default)(), (0, description_js_1.default)(spacing)]
31
- } = {}) {
32
- if (startLine < 0 || startLine % 1 > 0) throw new Error('Invalid startLine');
33
- const parseSource = (0, source_parser_js_1.default)({
34
- startLine,
35
- markers
36
- });
37
- const parseBlock = (0, block_parser_js_1.default)({
38
- fence
39
- });
40
- const parseSpec = (0, spec_parser_js_1.default)({
41
- tokenizers
42
- });
43
- const joinDescription = (0, description_js_1.getJoiner)(spacing);
44
- return function (source) {
45
- const blocks = [];
46
-
47
- for (const line of (0, util_js_1.splitLines)(source)) {
48
- const lines = parseSource(line);
49
- if (lines === null) continue;
50
- const sections = parseBlock(lines);
51
- const specs = sections.slice(1).map(parseSpec);
52
- blocks.push({
53
- description: joinDescription(sections[0], markers),
54
- tags: specs,
55
- source: lines,
56
- problems: specs.reduce((acc, spec) => acc.concat(spec.problems), [])
57
- });
58
- }
59
-
60
- return blocks;
61
- };
62
- }
63
-
64
- exports.default = getParser;
65
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["index.js"],"names":["Object","defineProperty","exports","value","primitives_js_1","require","util_js_1","block_parser_js_1","source_parser_js_1","spec_parser_js_1","tag_js_1","type_js_1","name_js_1","description_js_1","getParser","startLine","fence","spacing","markers","Markers","tokenizers","default","Error","parseSource","parseBlock","parseSpec","joinDescription","getJoiner","source","blocks","line","splitLines","lines","sections","specs","slice","map","push","description","tags","problems","reduce","acc","spec","concat"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;;AACA,MAAMC,eAAe,GAAGC,OAAH,qBAArB;;AACA,MAAMC,SAAS,GAAGD,OAAH,eAAf;;AACA,MAAME,iBAAiB,GAAGF,OAAH,sBAAvB;;AACA,MAAMG,kBAAkB,GAAGH,OAAH,uBAAxB;;AACA,MAAMI,gBAAgB,GAAGJ,OAAH,qBAAtB;;AACA,MAAMK,QAAQ,GAAGL,OAAH,wBAAd;;AACA,MAAMM,SAAS,GAAGN,OAAH,yBAAf;;AACA,MAAMO,SAAS,GAAGP,OAAH,yBAAf;;AACA,MAAMQ,gBAAgB,GAAGR,OAAH,gCAAtB;;AACA,SAASS,SAAT,CAAmB;AAAEC,EAAAA,SAAS,GAAG,CAAd;AAAiBC,EAAAA,KAAK,GAAG,KAAzB;AAAgCC,EAAAA,OAAO,GAAG,SAA1C;AAAqDC,EAAAA,OAAO,GAAGd,eAAe,CAACe,OAA/E;AAAwFC,EAAAA,UAAU,GAAG,CACpH,CAAC,GAAGV,QAAQ,CAACW,OAAb,GADoH,EAEpH,CAAC,GAAGV,SAAS,CAACU,OAAd,EAAuBJ,OAAvB,CAFoH,EAGpH,CAAC,GAAGL,SAAS,CAACS,OAAd,GAHoH,EAIpH,CAAC,GAAGR,gBAAgB,CAACQ,OAArB,EAA8BJ,OAA9B,CAJoH;AAArG,IAKZ,EALP,EAKW;AACP,MAAIF,SAAS,GAAG,CAAZ,IAAiBA,SAAS,GAAG,CAAZ,GAAgB,CAArC,EACI,MAAM,IAAIO,KAAJ,CAAU,mBAAV,CAAN;AACJ,QAAMC,WAAW,GAAG,CAAC,GAAGf,kBAAkB,CAACa,OAAvB,EAAgC;AAAEN,IAAAA,SAAF;AAAaG,IAAAA;AAAb,GAAhC,CAApB;AACA,QAAMM,UAAU,GAAG,CAAC,GAAGjB,iBAAiB,CAACc,OAAtB,EAA+B;AAAEL,IAAAA;AAAF,GAA/B,CAAnB;AACA,QAAMS,SAAS,GAAG,CAAC,GAAGhB,gBAAgB,CAACY,OAArB,EAA8B;AAAED,IAAAA;AAAF,GAA9B,CAAlB;AACA,QAAMM,eAAe,GAAG,CAAC,GAAGb,gBAAgB,CAACc,SAArB,EAAgCV,OAAhC,CAAxB;AACA,SAAO,UAAUW,MAAV,EAAkB;AACrB,UAAMC,MAAM,GAAG,EAAf;;AACA,SAAK,MAAMC,IAAX,IAAmB,CAAC,GAAGxB,SAAS,CAACyB,UAAd,EAA0BH,MAA1B,CAAnB,EAAsD;AAClD,YAAMI,KAAK,GAAGT,WAAW,CAACO,IAAD,CAAzB;AACA,UAAIE,KAAK,KAAK,IAAd,EACI;AACJ,YAAMC,QAAQ,GAAGT,UAAU,CAACQ,KAAD,CAA3B;AACA,YAAME,KAAK,GAAGD,QAAQ,CAACE,KAAT,CAAe,CAAf,EAAkBC,GAAlB,CAAsBX,SAAtB,CAAd;AACAI,MAAAA,MAAM,CAACQ,IAAP,CAAY;AACRC,QAAAA,WAAW,EAAEZ,eAAe,CAACO,QAAQ,CAAC,CAAD,CAAT,EAAcf,OAAd,CADpB;AAERqB,QAAAA,IAAI,EAAEL,KAFE;AAGRN,QAAAA,MAAM,EAAEI,KAHA;AAIRQ,QAAAA,QAAQ,EAAEN,KAAK,CAACO,MAAN,CAAa,CAACC,GAAD,EAAMC,IAAN,KAAeD,GAAG,CAACE,MAAJ,CAAWD,IAAI,CAACH,QAAhB,CAA5B,EAAuD,EAAvD;AAJF,OAAZ;AAMH;;AACD,WAAOX,MAAP;AACH,GAhBD;AAiBH;;AACD3B,OAAO,CAACmB,OAAR,GAAkBP,SAAlB","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst primitives_js_1 = require(\"../primitives.js\");\nconst util_js_1 = require(\"../util.js\");\nconst block_parser_js_1 = require(\"./block-parser.js\");\nconst source_parser_js_1 = require(\"./source-parser.js\");\nconst spec_parser_js_1 = require(\"./spec-parser.js\");\nconst tag_js_1 = require(\"./tokenizers/tag.js\");\nconst type_js_1 = require(\"./tokenizers/type.js\");\nconst name_js_1 = require(\"./tokenizers/name.js\");\nconst description_js_1 = require(\"./tokenizers/description.js\");\nfunction getParser({ startLine = 0, fence = '```', spacing = 'compact', markers = primitives_js_1.Markers, tokenizers = [\n (0, tag_js_1.default)(),\n (0, type_js_1.default)(spacing),\n (0, name_js_1.default)(),\n (0, description_js_1.default)(spacing),\n], } = {}) {\n if (startLine < 0 || startLine % 1 > 0)\n throw new Error('Invalid startLine');\n const parseSource = (0, source_parser_js_1.default)({ startLine, markers });\n const parseBlock = (0, block_parser_js_1.default)({ fence });\n const parseSpec = (0, spec_parser_js_1.default)({ tokenizers });\n const joinDescription = (0, description_js_1.getJoiner)(spacing);\n return function (source) {\n const blocks = [];\n for (const line of (0, util_js_1.splitLines)(source)) {\n const lines = parseSource(line);\n if (lines === null)\n continue;\n const sections = parseBlock(lines);\n const specs = sections.slice(1).map(parseSpec);\n blocks.push({\n description: joinDescription(sections[0], markers),\n tags: specs,\n source: lines,\n problems: specs.reduce((acc, spec) => acc.concat(spec.problems), []),\n });\n }\n return blocks;\n };\n}\nexports.default = getParser;\n"],"file":"index.cjs"}
@@ -1,11 +0,0 @@
1
- import { Block, BlockMarkers } from '../primitives.js';
2
- import { Tokenizer } from './tokenizers/index.js';
3
- export interface Options {
4
- startLine: number;
5
- fence: string;
6
- spacing: 'compact' | 'preserve';
7
- markers: BlockMarkers;
8
- tokenizers: Tokenizer[];
9
- }
10
- export type Parser = (source: string) => Block[];
11
- export default function getParser({ startLine, fence, spacing, markers, tokenizers, }?: Partial<Options>): Parser;
@@ -1,68 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- const primitives_js_1 = require("../primitives.cjs");
8
-
9
- const util_js_1 = require("../util.cjs");
10
-
11
- function getParser({
12
- startLine = 0,
13
- markers = primitives_js_1.Markers
14
- } = {}) {
15
- let block = null;
16
- let num = startLine;
17
- return function parseSource(source) {
18
- let rest = source;
19
- const tokens = (0, util_js_1.seedTokens)();
20
- [tokens.lineEnd, rest] = (0, util_js_1.splitCR)(rest);
21
- [tokens.start, rest] = (0, util_js_1.splitSpace)(rest);
22
-
23
- if (block === null && rest.startsWith(markers.start) && !rest.startsWith(markers.nostart)) {
24
- block = [];
25
- tokens.delimiter = rest.slice(0, markers.start.length);
26
- rest = rest.slice(markers.start.length);
27
- [tokens.postDelimiter, rest] = (0, util_js_1.splitSpace)(rest);
28
- }
29
-
30
- if (block === null) {
31
- num++;
32
- return null;
33
- }
34
-
35
- const isClosed = rest.trimRight().endsWith(markers.end);
36
-
37
- if (tokens.delimiter === '' && rest.startsWith(markers.delim) && !rest.startsWith(markers.end)) {
38
- tokens.delimiter = markers.delim;
39
- rest = rest.slice(markers.delim.length);
40
- [tokens.postDelimiter, rest] = (0, util_js_1.splitSpace)(rest);
41
- }
42
-
43
- if (isClosed) {
44
- const trimmed = rest.trimRight();
45
- tokens.end = rest.slice(trimmed.length - markers.end.length);
46
- rest = trimmed.slice(0, -markers.end.length);
47
- }
48
-
49
- tokens.description = rest;
50
- block.push({
51
- number: num,
52
- source,
53
- tokens
54
- });
55
- num++;
56
-
57
- if (isClosed) {
58
- const result = block.slice();
59
- block = null;
60
- return result;
61
- }
62
-
63
- return null;
64
- };
65
- }
66
-
67
- exports.default = getParser;
68
- //# sourceMappingURL=source-parser.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["source-parser.js"],"names":["Object","defineProperty","exports","value","primitives_js_1","require","util_js_1","getParser","startLine","markers","Markers","block","num","parseSource","source","rest","tokens","seedTokens","lineEnd","splitCR","start","splitSpace","startsWith","nostart","delimiter","slice","length","postDelimiter","isClosed","trimRight","endsWith","end","delim","trimmed","description","push","number","result","default"],"mappings":"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","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst primitives_js_1 = require(\"../primitives.js\");\nconst util_js_1 = require(\"../util.js\");\nfunction getParser({ startLine = 0, markers = primitives_js_1.Markers, } = {}) {\n let block = null;\n let num = startLine;\n return function parseSource(source) {\n let rest = source;\n const tokens = (0, util_js_1.seedTokens)();\n [tokens.lineEnd, rest] = (0, util_js_1.splitCR)(rest);\n [tokens.start, rest] = (0, util_js_1.splitSpace)(rest);\n if (block === null &&\n rest.startsWith(markers.start) &&\n !rest.startsWith(markers.nostart)) {\n block = [];\n tokens.delimiter = rest.slice(0, markers.start.length);\n rest = rest.slice(markers.start.length);\n [tokens.postDelimiter, rest] = (0, util_js_1.splitSpace)(rest);\n }\n if (block === null) {\n num++;\n return null;\n }\n const isClosed = rest.trimRight().endsWith(markers.end);\n if (tokens.delimiter === '' &&\n rest.startsWith(markers.delim) &&\n !rest.startsWith(markers.end)) {\n tokens.delimiter = markers.delim;\n rest = rest.slice(markers.delim.length);\n [tokens.postDelimiter, rest] = (0, util_js_1.splitSpace)(rest);\n }\n if (isClosed) {\n const trimmed = rest.trimRight();\n tokens.end = rest.slice(trimmed.length - markers.end.length);\n rest = trimmed.slice(0, -markers.end.length);\n }\n tokens.description = rest;\n block.push({ number: num, source, tokens });\n num++;\n if (isClosed) {\n const result = block.slice();\n block = null;\n return result;\n }\n return null;\n };\n}\nexports.default = getParser;\n"],"file":"source-parser.cjs"}
@@ -1,7 +0,0 @@
1
- import { Line, BlockMarkers } from '../primitives.js';
2
- export interface Options {
3
- startLine: number;
4
- markers: BlockMarkers;
5
- }
6
- export type Parser = (source: string) => Line[] | null;
7
- export default function getParser({ startLine, markers, }?: Partial<Options>): Parser;
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- const util_js_1 = require("../util.cjs");
8
-
9
- function getParser({
10
- tokenizers
11
- }) {
12
- return function parseSpec(source) {
13
- var _a;
14
-
15
- let spec = (0, util_js_1.seedSpec)({
16
- source
17
- });
18
-
19
- for (const tokenize of tokenizers) {
20
- spec = tokenize(spec);
21
- if ((_a = spec.problems[spec.problems.length - 1]) === null || _a === void 0 ? void 0 : _a.critical) break;
22
- }
23
-
24
- return spec;
25
- };
26
- }
27
-
28
- exports.default = getParser;
29
- //# sourceMappingURL=spec-parser.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["spec-parser.js"],"names":["Object","defineProperty","exports","value","util_js_1","require","getParser","tokenizers","parseSpec","source","_a","spec","seedSpec","tokenize","problems","length","critical","default"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;;AACA,MAAMC,SAAS,GAAGC,OAAH,eAAf;;AACA,SAASC,SAAT,CAAmB;AAAEC,EAAAA;AAAF,CAAnB,EAAmC;AAC/B,SAAO,SAASC,SAAT,CAAmBC,MAAnB,EAA2B;AAC9B,QAAIC,EAAJ;;AACA,QAAIC,IAAI,GAAG,CAAC,GAAGP,SAAS,CAACQ,QAAd,EAAwB;AAAEH,MAAAA;AAAF,KAAxB,CAAX;;AACA,SAAK,MAAMI,QAAX,IAAuBN,UAAvB,EAAmC;AAC/BI,MAAAA,IAAI,GAAGE,QAAQ,CAACF,IAAD,CAAf;AACA,UAAI,CAACD,EAAE,GAAGC,IAAI,CAACG,QAAL,CAAcH,IAAI,CAACG,QAAL,CAAcC,MAAd,GAAuB,CAArC,CAAN,MAAmD,IAAnD,IAA2DL,EAAE,KAAK,KAAK,CAAvE,GAA2E,KAAK,CAAhF,GAAoFA,EAAE,CAACM,QAA3F,EACI;AACP;;AACD,WAAOL,IAAP;AACH,GATD;AAUH;;AACDT,OAAO,CAACe,OAAR,GAAkBX,SAAlB","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_js_1 = require(\"../util.js\");\nfunction getParser({ tokenizers }) {\n return function parseSpec(source) {\n var _a;\n let spec = (0, util_js_1.seedSpec)({ source });\n for (const tokenize of tokenizers) {\n spec = tokenize(spec);\n if ((_a = spec.problems[spec.problems.length - 1]) === null || _a === void 0 ? void 0 : _a.critical)\n break;\n }\n return spec;\n };\n}\nexports.default = getParser;\n"],"file":"spec-parser.cjs"}
@@ -1,7 +0,0 @@
1
- import { Line, Spec } from '../primitives.js';
2
- import { Tokenizer } from './tokenizers/index.js';
3
- export type Parser = (source: Line[]) => Spec;
4
- export interface Options {
5
- tokenizers: Tokenizer[];
6
- }
7
- export default function getParser({ tokenizers }: Options): Parser;
@@ -1,62 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getJoiner = void 0;
7
-
8
- const primitives_js_1 = require("../../primitives.cjs");
9
- /**
10
- * Makes no changes to `spec.lines[].tokens` but joins them into `spec.description`
11
- * following given spacing srtategy
12
- * @param {Spacing} spacing tells how to handle the whitespace
13
- * @param {BlockMarkers} markers tells how to handle comment block delimitation
14
- */
15
-
16
-
17
- function descriptionTokenizer(spacing = 'compact', markers = primitives_js_1.Markers) {
18
- const join = getJoiner(spacing);
19
- return spec => {
20
- spec.description = join(spec.source, markers);
21
- return spec;
22
- };
23
- }
24
-
25
- exports.default = descriptionTokenizer;
26
-
27
- function getJoiner(spacing) {
28
- if (spacing === 'compact') return compactJoiner;
29
- if (spacing === 'preserve') return preserveJoiner;
30
- return spacing;
31
- }
32
-
33
- exports.getJoiner = getJoiner;
34
-
35
- function compactJoiner(lines, markers = primitives_js_1.Markers) {
36
- return lines.map(({
37
- tokens: {
38
- description
39
- }
40
- }) => description.trim()).filter(description => description !== '').join(' ');
41
- }
42
-
43
- const lineNo = (num, {
44
- tokens
45
- }, i) => tokens.type === '' ? num : i;
46
-
47
- const getDescription = ({
48
- tokens
49
- }) => (tokens.delimiter === '' ? tokens.start : tokens.postDelimiter.slice(1)) + tokens.description;
50
-
51
- function preserveJoiner(lines, markers = primitives_js_1.Markers) {
52
- if (lines.length === 0) return ''; // skip the opening line with no description
53
-
54
- if (lines[0].tokens.description === '' && lines[0].tokens.delimiter === markers.start) lines = lines.slice(1); // skip the closing line with no description
55
-
56
- const lastLine = lines[lines.length - 1];
57
- if (lastLine !== undefined && lastLine.tokens.description === '' && lastLine.tokens.end.endsWith(markers.end)) lines = lines.slice(0, -1); // description starts at the last line of type definition
58
-
59
- lines = lines.slice(lines.reduce(lineNo, 0));
60
- return lines.map(getDescription).join('\n');
61
- }
62
- //# sourceMappingURL=description.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["description.js"],"names":["Object","defineProperty","exports","value","getJoiner","primitives_js_1","require","descriptionTokenizer","spacing","markers","Markers","join","spec","description","source","default","compactJoiner","preserveJoiner","lines","map","tokens","trim","filter","lineNo","num","i","type","getDescription","delimiter","start","postDelimiter","slice","length","lastLine","undefined","end","endsWith","reduce"],"mappings":"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","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getJoiner = void 0;\nconst primitives_js_1 = require(\"../../primitives.js\");\n/**\n * Makes no changes to `spec.lines[].tokens` but joins them into `spec.description`\n * following given spacing srtategy\n * @param {Spacing} spacing tells how to handle the whitespace\n * @param {BlockMarkers} markers tells how to handle comment block delimitation\n */\nfunction descriptionTokenizer(spacing = 'compact', markers = primitives_js_1.Markers) {\n const join = getJoiner(spacing);\n return (spec) => {\n spec.description = join(spec.source, markers);\n return spec;\n };\n}\nexports.default = descriptionTokenizer;\nfunction getJoiner(spacing) {\n if (spacing === 'compact')\n return compactJoiner;\n if (spacing === 'preserve')\n return preserveJoiner;\n return spacing;\n}\nexports.getJoiner = getJoiner;\nfunction compactJoiner(lines, markers = primitives_js_1.Markers) {\n return lines\n .map(({ tokens: { description } }) => description.trim())\n .filter((description) => description !== '')\n .join(' ');\n}\nconst lineNo = (num, { tokens }, i) => tokens.type === '' ? num : i;\nconst getDescription = ({ tokens }) => (tokens.delimiter === '' ? tokens.start : tokens.postDelimiter.slice(1)) +\n tokens.description;\nfunction preserveJoiner(lines, markers = primitives_js_1.Markers) {\n if (lines.length === 0)\n return '';\n // skip the opening line with no description\n if (lines[0].tokens.description === '' &&\n lines[0].tokens.delimiter === markers.start)\n lines = lines.slice(1);\n // skip the closing line with no description\n const lastLine = lines[lines.length - 1];\n if (lastLine !== undefined &&\n lastLine.tokens.description === '' &&\n lastLine.tokens.end.endsWith(markers.end))\n lines = lines.slice(0, -1);\n // description starts at the last line of type definition\n lines = lines.slice(lines.reduce(lineNo, 0));\n return lines.map(getDescription).join('\\n');\n}\n"],"file":"description.cjs"}
@@ -1,20 +0,0 @@
1
- import { Line, BlockMarkers, Markers } from '../../primitives.js';
2
- import { Tokenizer } from './index.js';
3
- /**
4
- * Walks over provided lines joining description token into a single string.
5
- * */
6
- export type Joiner = (lines: Line[], markers?: BlockMarkers) => string;
7
- /**
8
- * Shortcut for standard Joiners
9
- * compact - strip surrounding whitespace and concat lines using a single string
10
- * preserve - preserves original whitespace and line breaks as is
11
- */
12
- export type Spacing = 'compact' | 'preserve' | Joiner;
13
- /**
14
- * Makes no changes to `spec.lines[].tokens` but joins them into `spec.description`
15
- * following given spacing srtategy
16
- * @param {Spacing} spacing tells how to handle the whitespace
17
- * @param {BlockMarkers} markers tells how to handle comment block delimitation
18
- */
19
- export default function descriptionTokenizer(spacing?: Spacing, markers?: typeof Markers): Tokenizer;
20
- export declare function getJoiner(spacing: Spacing): Joiner;
@@ -1,6 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["index.js"],"names":["Object","defineProperty","exports","value"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n"],"file":"index.cjs"}
@@ -1,7 +0,0 @@
1
- import { Spec } from '../../primitives.js';
2
- /**
3
- * Splits `spect.lines[].token.description` into other tokens,
4
- * and populates the spec.{tag, name, type, description}. Invoked in a chaing
5
- * with other tokens, operations listed above can be moved to separate tokenizers
6
- */
7
- export type Tokenizer = (spec: Spec) => Spec;