routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
+68
@@ -0,0 +1,68 @@
|
||||
"use strict";
|
||||
|
||||
var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||
desc = {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return m[k];
|
||||
}
|
||||
};
|
||||
}
|
||||
Object.defineProperty(o, k2, desc);
|
||||
} : function (o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
});
|
||||
var __exportStar = this && this.__exportStar || function (m, exports) {
|
||||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.util = exports.tokenizers = exports.transforms = exports.inspect = exports.stringify = void 0;
|
||||
exports.parse = parse;
|
||||
const index_js_1 = require("./parser/index.cjs");
|
||||
const description_js_1 = require("./parser/tokenizers/description.cjs");
|
||||
const name_js_1 = require("./parser/tokenizers/name.cjs");
|
||||
const tag_js_1 = require("./parser/tokenizers/tag.cjs");
|
||||
const type_js_1 = require("./parser/tokenizers/type.cjs");
|
||||
const index_js_2 = require("./stringifier/index.cjs");
|
||||
const align_js_1 = require("./transforms/align.cjs");
|
||||
const indent_js_1 = require("./transforms/indent.cjs");
|
||||
const crlf_js_1 = require("./transforms/crlf.cjs");
|
||||
const index_js_3 = require("./transforms/index.cjs");
|
||||
const util_js_1 = require("./util.cjs");
|
||||
__exportStar(require("./primitives.cjs"), exports);
|
||||
function parse(source, options = {}) {
|
||||
return (0, index_js_1.default)(options)(source);
|
||||
}
|
||||
exports.stringify = (0, index_js_2.default)();
|
||||
var inspect_js_1 = require("./stringifier/inspect.cjs");
|
||||
Object.defineProperty(exports, "inspect", {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return inspect_js_1.default;
|
||||
}
|
||||
});
|
||||
exports.transforms = {
|
||||
flow: index_js_3.flow,
|
||||
align: align_js_1.default,
|
||||
indent: indent_js_1.default,
|
||||
crlf: crlf_js_1.default
|
||||
};
|
||||
exports.tokenizers = {
|
||||
tag: tag_js_1.default,
|
||||
type: type_js_1.default,
|
||||
name: name_js_1.default,
|
||||
description: description_js_1.default
|
||||
};
|
||||
exports.util = {
|
||||
rewireSpecs: util_js_1.rewireSpecs,
|
||||
rewireSource: util_js_1.rewireSource,
|
||||
seedBlock: util_js_1.seedBlock,
|
||||
seedTokens: util_js_1.seedTokens
|
||||
};
|
||||
//# sourceMappingURL=index.cjs.map
|
||||
+1
File diff suppressed because one or more lines are too long
+32
@@ -0,0 +1,32 @@
|
||||
import { Options as ParserOptions } from './parser/index.js';
|
||||
import descriptionTokenizer from './parser/tokenizers/description.js';
|
||||
import nameTokenizer from './parser/tokenizers/name.js';
|
||||
import tagTokenizer from './parser/tokenizers/tag.js';
|
||||
import typeTokenizer from './parser/tokenizers/type.js';
|
||||
import alignTransform from './transforms/align.js';
|
||||
import indentTransform from './transforms/indent.js';
|
||||
import crlfTransform from './transforms/crlf.js';
|
||||
import { flow as flowTransform } from './transforms/index.js';
|
||||
import { rewireSpecs, rewireSource, seedBlock, seedTokens } from './util.js';
|
||||
export * from './primitives.js';
|
||||
export declare function parse(source: string, options?: Partial<ParserOptions>): import("./primitives.js").Block[];
|
||||
export declare const stringify: import("./stringifier/index.js").Stringifier;
|
||||
export { default as inspect } from './stringifier/inspect.js';
|
||||
export declare const transforms: {
|
||||
flow: typeof flowTransform;
|
||||
align: typeof alignTransform;
|
||||
indent: typeof indentTransform;
|
||||
crlf: typeof crlfTransform;
|
||||
};
|
||||
export declare const tokenizers: {
|
||||
tag: typeof tagTokenizer;
|
||||
type: typeof typeTokenizer;
|
||||
name: typeof nameTokenizer;
|
||||
description: typeof descriptionTokenizer;
|
||||
};
|
||||
export declare const util: {
|
||||
rewireSpecs: typeof rewireSpecs;
|
||||
rewireSource: typeof rewireSource;
|
||||
seedBlock: typeof seedBlock;
|
||||
seedTokens: typeof seedTokens;
|
||||
};
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getParser;
|
||||
const reTag = /^@[^\s/]+(?=\s|$)/;
|
||||
/**
|
||||
* Creates configured `Parser`
|
||||
* @param {Partial<Options>} options
|
||||
*/
|
||||
function getParser({
|
||||
fence = '```'
|
||||
} = {}) {
|
||||
const fencer = getFencer(fence);
|
||||
const toggleFence = (source, isFenced) => fencer(source) ? !isFenced : isFenced;
|
||||
return function parseBlock(source) {
|
||||
// start with description section
|
||||
const sections = [[]];
|
||||
let isFenced = false;
|
||||
for (const line of source) {
|
||||
if (reTag.test(line.tokens.description) && !isFenced) {
|
||||
sections.push([line]);
|
||||
} else {
|
||||
sections[sections.length - 1].push(line);
|
||||
}
|
||||
isFenced = toggleFence(line.tokens.description, isFenced);
|
||||
}
|
||||
return sections;
|
||||
};
|
||||
}
|
||||
function getFencer(fence) {
|
||||
if (typeof fence === 'string') return source => source.split(fence).length % 2 === 0;
|
||||
return fence;
|
||||
}
|
||||
//# sourceMappingURL=block-parser.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"block-parser.cjs","names":["Object","defineProperty","exports","value","default","getParser","reTag","fence","fencer","getFencer","toggleFence","source","isFenced","parseBlock","sections","line","test","tokens","description","push","length","split"],"sources":["block-parser.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = getParser;\nconst reTag = /^@[^\\s/]+(?=\\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}\nfunction getFencer(fence) {\n if (typeof fence === 'string')\n return (source) => source.split(fence).length % 2 === 0;\n return fence;\n}\n"],"mappings":"AAAA,YAAY;;AACZA,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7DD,OAAO,CAACE,OAAO,GAAGC,SAAS;AAC3B,MAAMC,KAAK,GAAG,mBAAmB;AACjC;AACA;AACA;AACA;AACA,SAASD,SAASA,CAAC;EAAEE,KAAK,GAAG;AAAO,CAAC,GAAG,CAAC,CAAC,EAAE;EACxC,MAAMC,MAAM,GAAGC,SAAS,CAACF,KAAK,CAAC;EAC/B,MAAMG,WAAW,GAAGA,CAACC,MAAM,EAAEC,QAAQ,KAAKJ,MAAM,CAACG,MAAM,CAAC,GAAG,CAACC,QAAQ,GAAGA,QAAQ;EAC/E,OAAO,SAASC,UAAUA,CAACF,MAAM,EAAE;IAC/B;IACA,MAAMG,QAAQ,GAAG,CAAC,EAAE,CAAC;IACrB,IAAIF,QAAQ,GAAG,KAAK;IACpB,KAAK,MAAMG,IAAI,IAAIJ,MAAM,EAAE;MACvB,IAAIL,KAAK,CAACU,IAAI,CAACD,IAAI,CAACE,MAAM,CAACC,WAAW,CAAC,IAAI,CAACN,QAAQ,EAAE;QAClDE,QAAQ,CAACK,IAAI,CAAC,CAACJ,IAAI,CAAC,CAAC;MACzB,CAAC,MACI;QACDD,QAAQ,CAACA,QAAQ,CAACM,MAAM,GAAG,CAAC,CAAC,CAACD,IAAI,CAACJ,IAAI,CAAC;MAC5C;MACAH,QAAQ,GAAGF,WAAW,CAACK,IAAI,CAACE,MAAM,CAACC,WAAW,EAAEN,QAAQ,CAAC;IAC7D;IACA,OAAOE,QAAQ;EACnB,CAAC;AACL;AACA,SAASL,SAASA,CAACF,KAAK,EAAE;EACtB,IAAI,OAAOA,KAAK,KAAK,QAAQ,EACzB,OAAQI,MAAM,IAAKA,MAAM,CAACU,KAAK,CAACd,KAAK,CAAC,CAACa,MAAM,GAAG,CAAC,KAAK,CAAC;EAC3D,OAAOb,KAAK;AAChB","ignoreList":[]}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
import { Line } from '../primitives.js';
|
||||
/**
|
||||
* Groups source lines in sections representing tags.
|
||||
* First section is a block description if present. Last section captures lines starting with
|
||||
* the last tag to the end of the block, including dangling closing marker.
|
||||
* @param {Line[]} block source lines making a single comment block
|
||||
*/
|
||||
export type Parser = (block: Line[]) => Line[][];
|
||||
/**
|
||||
* Predicate telling if string contains opening/closing escaping sequence
|
||||
* @param {string} source raw source line
|
||||
*/
|
||||
export type Fencer = (source: string) => boolean;
|
||||
/**
|
||||
* `Parser` configuration options
|
||||
*/
|
||||
export interface Options {
|
||||
fence: string | Fencer;
|
||||
}
|
||||
/**
|
||||
* Creates configured `Parser`
|
||||
* @param {Partial<Options>} options
|
||||
*/
|
||||
export default function getParser({ fence, }?: Partial<Options>): Parser;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getParser;
|
||||
const primitives_js_1 = require("../primitives.cjs");
|
||||
const util_js_1 = require("../util.cjs");
|
||||
const block_parser_js_1 = require("./block-parser.cjs");
|
||||
const source_parser_js_1 = require("./source-parser.cjs");
|
||||
const spec_parser_js_1 = require("./spec-parser.cjs");
|
||||
const tag_js_1 = require("./tokenizers/tag.cjs");
|
||||
const type_js_1 = require("./tokenizers/type.cjs");
|
||||
const name_js_1 = require("./tokenizers/name.cjs");
|
||||
const description_js_1 = require("./tokenizers/description.cjs");
|
||||
function getParser({
|
||||
startLine = 0,
|
||||
fence = '```',
|
||||
spacing = 'compact',
|
||||
markers = primitives_js_1.Markers,
|
||||
tokenizers = [(0, tag_js_1.default)(), (0, type_js_1.default)(spacing), (0, name_js_1.default)(), (0, description_js_1.default)(spacing)]
|
||||
} = {}) {
|
||||
if (startLine < 0 || startLine % 1 > 0) throw new Error('Invalid startLine');
|
||||
const parseSource = (0, source_parser_js_1.default)({
|
||||
startLine,
|
||||
markers
|
||||
});
|
||||
const parseBlock = (0, block_parser_js_1.default)({
|
||||
fence
|
||||
});
|
||||
const parseSpec = (0, spec_parser_js_1.default)({
|
||||
tokenizers
|
||||
});
|
||||
const joinDescription = (0, description_js_1.getJoiner)(spacing);
|
||||
return function (source) {
|
||||
const blocks = [];
|
||||
for (const line of (0, util_js_1.splitLines)(source)) {
|
||||
const lines = parseSource(line);
|
||||
if (lines === null) continue;
|
||||
const sections = parseBlock(lines);
|
||||
const specs = sections.slice(1).map(parseSpec);
|
||||
blocks.push({
|
||||
description: joinDescription(sections[0], markers),
|
||||
tags: specs,
|
||||
source: lines,
|
||||
problems: specs.reduce((acc, spec) => acc.concat(spec.problems), [])
|
||||
});
|
||||
}
|
||||
return blocks;
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=index.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.cjs","names":["Object","defineProperty","exports","value","default","getParser","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","startLine","fence","spacing","markers","Markers","tokenizers","Error","parseSource","parseBlock","parseSpec","joinDescription","getJoiner","source","blocks","line","splitLines","lines","sections","specs","slice","map","push","description","tags","problems","reduce","acc","spec","concat"],"sources":["index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = getParser;\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}\n"],"mappings":"AAAA,YAAY;;AACZA,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7DD,OAAO,CAACE,OAAO,GAAGC,SAAS;AAC3B,MAAMC,eAAe,GAAGC,OAAO,qBAAoB;AACnD,MAAMC,SAAS,GAAGD,OAAO,eAAc;AACvC,MAAME,iBAAiB,GAAGF,OAAO,sBAAqB;AACtD,MAAMG,kBAAkB,GAAGH,OAAO,uBAAsB;AACxD,MAAMI,gBAAgB,GAAGJ,OAAO,qBAAoB;AACpD,MAAMK,QAAQ,GAAGL,OAAO,wBAAuB;AAC/C,MAAMM,SAAS,GAAGN,OAAO,yBAAwB;AACjD,MAAMO,SAAS,GAAGP,OAAO,yBAAwB;AACjD,MAAMQ,gBAAgB,GAAGR,OAAO,gCAA+B;AAC/D,SAASF,SAASA,CAAC;EAAEW,SAAS,GAAG,CAAC;EAAEC,KAAK,GAAG,KAAK;EAAEC,OAAO,GAAG,SAAS;EAAEC,OAAO,GAAGb,eAAe,CAACc,OAAO;EAAEC,UAAU,GAAG,CACpH,CAAC,CAAC,EAAET,QAAQ,CAACR,OAAO,EAAE,CAAC,EACvB,CAAC,CAAC,EAAES,SAAS,CAACT,OAAO,EAAEc,OAAO,CAAC,EAC/B,CAAC,CAAC,EAAEJ,SAAS,CAACV,OAAO,EAAE,CAAC,EACxB,CAAC,CAAC,EAAEW,gBAAgB,CAACX,OAAO,EAAEc,OAAO,CAAC;AACvC,CAAC,GAAG,CAAC,CAAC,EAAE;EACP,IAAIF,SAAS,GAAG,CAAC,IAAIA,SAAS,GAAG,CAAC,GAAG,CAAC,EAClC,MAAM,IAAIM,KAAK,CAAC,mBAAmB,CAAC;EACxC,MAAMC,WAAW,GAAG,CAAC,CAAC,EAAEb,kBAAkB,CAACN,OAAO,EAAE;IAAEY,SAAS;IAAEG;EAAQ,CAAC,CAAC;EAC3E,MAAMK,UAAU,GAAG,CAAC,CAAC,EAAEf,iBAAiB,CAACL,OAAO,EAAE;IAAEa;EAAM,CAAC,CAAC;EAC5D,MAAMQ,SAAS,GAAG,CAAC,CAAC,EAAEd,gBAAgB,CAACP,OAAO,EAAE;IAAEiB;EAAW,CAAC,CAAC;EAC/D,MAAMK,eAAe,GAAG,CAAC,CAAC,EAAEX,gBAAgB,CAACY,SAAS,EAAET,OAAO,CAAC;EAChE,OAAO,UAAUU,MAAM,EAAE;IACrB,MAAMC,MAAM,GAAG,EAAE;IACjB,KAAK,MAAMC,IAAI,IAAI,CAAC,CAAC,EAAEtB,SAAS,CAACuB,UAAU,EAAEH,MAAM,CAAC,EAAE;MAClD,MAAMI,KAAK,GAAGT,WAAW,CAACO,IAAI,CAAC;MAC/B,IAAIE,KAAK,KAAK,IAAI,EACd;MACJ,MAAMC,QAAQ,GAAGT,UAAU,CAACQ,KAAK,CAAC;MAClC,MAAME,KAAK,GAAGD,QAAQ,CAACE,KAAK,CAAC,CAAC,CAAC,CAACC,GAAG,CAACX,SAAS,CAAC;MAC9CI,MAAM,CAACQ,IAAI,CAAC;QACRC,WAAW,EAAEZ,eAAe,CAACO,QAAQ,CAAC,CAAC,CAAC,EAAEd,OAAO,CAAC;QAClDoB,IAAI,EAAEL,KAAK;QACXN,MAAM,EAAEI,KAAK;QACbQ,QAAQ,EAAEN,KAAK,CAACO,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAKD,GAAG,CAACE,MAAM,CAACD,IAAI,CAACH,QAAQ,CAAC,EAAE,EAAE;MACvE,CAAC,CAAC;IACN;IACA,OAAOX,MAAM;EACjB,CAAC;AACL","ignoreList":[]}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { Block, BlockMarkers } from '../primitives.js';
|
||||
import { Tokenizer } from './tokenizers/index.js';
|
||||
export interface Options {
|
||||
startLine: number;
|
||||
fence: string;
|
||||
spacing: 'compact' | 'preserve';
|
||||
markers: BlockMarkers;
|
||||
tokenizers: Tokenizer[];
|
||||
}
|
||||
export type Parser = (source: string) => Block[];
|
||||
export default function getParser({ startLine, fence, spacing, markers, tokenizers, }?: Partial<Options>): Parser;
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getParser;
|
||||
const primitives_js_1 = require("../primitives.cjs");
|
||||
const util_js_1 = require("../util.cjs");
|
||||
function getParser({
|
||||
startLine = 0,
|
||||
markers = primitives_js_1.Markers
|
||||
} = {}) {
|
||||
let block = null;
|
||||
let num = startLine;
|
||||
return function parseSource(source) {
|
||||
let rest = source;
|
||||
const tokens = (0, util_js_1.seedTokens)();
|
||||
[tokens.lineEnd, rest] = (0, util_js_1.splitCR)(rest);
|
||||
[tokens.start, rest] = (0, util_js_1.splitSpace)(rest);
|
||||
if (block === null && rest.startsWith(markers.start) && !rest.startsWith(markers.nostart)) {
|
||||
block = [];
|
||||
tokens.delimiter = rest.slice(0, markers.start.length);
|
||||
rest = rest.slice(markers.start.length);
|
||||
[tokens.postDelimiter, rest] = (0, util_js_1.splitSpace)(rest);
|
||||
}
|
||||
if (block === null) {
|
||||
num++;
|
||||
return null;
|
||||
}
|
||||
const isClosed = rest.trimRight().endsWith(markers.end);
|
||||
if (tokens.delimiter === '' && rest.startsWith(markers.delim) && !rest.startsWith(markers.end)) {
|
||||
tokens.delimiter = markers.delim;
|
||||
rest = rest.slice(markers.delim.length);
|
||||
[tokens.postDelimiter, rest] = (0, util_js_1.splitSpace)(rest);
|
||||
}
|
||||
if (isClosed) {
|
||||
const trimmed = rest.trimRight();
|
||||
tokens.end = rest.slice(trimmed.length - markers.end.length);
|
||||
rest = trimmed.slice(0, -markers.end.length);
|
||||
}
|
||||
tokens.description = rest;
|
||||
block.push({
|
||||
number: num,
|
||||
source,
|
||||
tokens
|
||||
});
|
||||
num++;
|
||||
if (isClosed) {
|
||||
const result = block.slice();
|
||||
block = null;
|
||||
return result;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=source-parser.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"source-parser.cjs","names":["Object","defineProperty","exports","value","default","getParser","primitives_js_1","require","util_js_1","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"],"sources":["source-parser.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = getParser;\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}\n"],"mappings":"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","ignoreList":[]}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { Line, BlockMarkers } from '../primitives.js';
|
||||
export interface Options {
|
||||
startLine: number;
|
||||
markers: BlockMarkers;
|
||||
}
|
||||
export type Parser = (source: string) => Line[] | null;
|
||||
export default function getParser({ startLine, markers, }?: Partial<Options>): Parser;
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getParser;
|
||||
const util_js_1 = require("../util.cjs");
|
||||
function getParser({
|
||||
tokenizers
|
||||
}) {
|
||||
return function parseSpec(source) {
|
||||
var _a;
|
||||
let spec = (0, util_js_1.seedSpec)({
|
||||
source
|
||||
});
|
||||
for (const tokenize of tokenizers) {
|
||||
spec = tokenize(spec);
|
||||
if ((_a = spec.problems[spec.problems.length - 1]) === null || _a === void 0 ? void 0 : _a.critical) break;
|
||||
}
|
||||
return spec;
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=spec-parser.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"spec-parser.cjs","names":["Object","defineProperty","exports","value","default","getParser","util_js_1","require","tokenizers","parseSpec","source","_a","spec","seedSpec","tokenize","problems","length","critical"],"sources":["spec-parser.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = getParser;\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}\n"],"mappings":"AAAA,YAAY;;AACZA,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7DD,OAAO,CAACE,OAAO,GAAGC,SAAS;AAC3B,MAAMC,SAAS,GAAGC,OAAO,eAAc;AACvC,SAASF,SAASA,CAAC;EAAEG;AAAW,CAAC,EAAE;EAC/B,OAAO,SAASC,SAASA,CAACC,MAAM,EAAE;IAC9B,IAAIC,EAAE;IACN,IAAIC,IAAI,GAAG,CAAC,CAAC,EAAEN,SAAS,CAACO,QAAQ,EAAE;MAAEH;IAAO,CAAC,CAAC;IAC9C,KAAK,MAAMI,QAAQ,IAAIN,UAAU,EAAE;MAC/BI,IAAI,GAAGE,QAAQ,CAACF,IAAI,CAAC;MACrB,IAAI,CAACD,EAAE,GAAGC,IAAI,CAACG,QAAQ,CAACH,IAAI,CAACG,QAAQ,CAACC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,IAAIL,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,EAAE,CAACM,QAAQ,EAC/F;IACR;IACA,OAAOL,IAAI;EACf,CAAC;AACL","ignoreList":[]}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { Line, Spec } from '../primitives.js';
|
||||
import { Tokenizer } from './tokenizers/index.js';
|
||||
export type Parser = (source: Line[]) => Spec;
|
||||
export interface Options {
|
||||
tokenizers: Tokenizer[];
|
||||
}
|
||||
export default function getParser({ tokenizers }: Options): Parser;
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = descriptionTokenizer;
|
||||
exports.getJoiner = getJoiner;
|
||||
const primitives_js_1 = require("../../primitives.cjs");
|
||||
/**
|
||||
* Makes no changes to `spec.lines[].tokens` but joins them into `spec.description`
|
||||
* following given spacing srtategy
|
||||
* @param {Spacing} spacing tells how to handle the whitespace
|
||||
* @param {BlockMarkers} markers tells how to handle comment block delimitation
|
||||
*/
|
||||
function descriptionTokenizer(spacing = 'compact', markers = primitives_js_1.Markers) {
|
||||
const join = getJoiner(spacing);
|
||||
return spec => {
|
||||
spec.description = join(spec.source, markers);
|
||||
return spec;
|
||||
};
|
||||
}
|
||||
function getJoiner(spacing) {
|
||||
if (spacing === 'compact') return compactJoiner;
|
||||
if (spacing === 'preserve') return preserveJoiner;
|
||||
return spacing;
|
||||
}
|
||||
function compactJoiner(lines, markers = primitives_js_1.Markers) {
|
||||
return lines.map(({
|
||||
tokens: {
|
||||
description
|
||||
}
|
||||
}) => description.trim()).filter(description => description !== '').join(' ');
|
||||
}
|
||||
const lineNo = (num, {
|
||||
tokens
|
||||
}, i) => tokens.type === '' ? num : i;
|
||||
const getDescription = ({
|
||||
tokens
|
||||
}) => (tokens.delimiter === '' ? tokens.start : tokens.postDelimiter.slice(1)) + tokens.description;
|
||||
function preserveJoiner(lines, markers = primitives_js_1.Markers) {
|
||||
if (lines.length === 0) return '';
|
||||
// skip the opening line with no description
|
||||
if (lines[0].tokens.description === '' && lines[0].tokens.delimiter === markers.start) lines = lines.slice(1);
|
||||
// skip the closing line with no description
|
||||
const lastLine = lines[lines.length - 1];
|
||||
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
|
||||
lines = lines.slice(lines.reduce(lineNo, 0));
|
||||
return lines.map(getDescription).join('\n');
|
||||
}
|
||||
//# sourceMappingURL=description.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"description.cjs","names":["Object","defineProperty","exports","value","default","descriptionTokenizer","getJoiner","primitives_js_1","require","spacing","markers","Markers","join","spec","description","source","compactJoiner","preserveJoiner","lines","map","tokens","trim","filter","lineNo","num","i","type","getDescription","delimiter","start","postDelimiter","slice","length","lastLine","undefined","end","endsWith","reduce"],"sources":["description.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = descriptionTokenizer;\nexports.getJoiner = getJoiner;\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}\nfunction getJoiner(spacing) {\n if (spacing === 'compact')\n return compactJoiner;\n if (spacing === 'preserve')\n return preserveJoiner;\n return spacing;\n}\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"],"mappings":"AAAA,YAAY;;AACZA,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7DD,OAAO,CAACE,OAAO,GAAGC,oBAAoB;AACtCH,OAAO,CAACI,SAAS,GAAGA,SAAS;AAC7B,MAAMC,eAAe,GAAGC,OAAO,wBAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,SAASH,oBAAoBA,CAACI,OAAO,GAAG,SAAS,EAAEC,OAAO,GAAGH,eAAe,CAACI,OAAO,EAAE;EAClF,MAAMC,IAAI,GAAGN,SAAS,CAACG,OAAO,CAAC;EAC/B,OAAQI,IAAI,IAAK;IACbA,IAAI,CAACC,WAAW,GAAGF,IAAI,CAACC,IAAI,CAACE,MAAM,EAAEL,OAAO,CAAC;IAC7C,OAAOG,IAAI;EACf,CAAC;AACL;AACA,SAASP,SAASA,CAACG,OAAO,EAAE;EACxB,IAAIA,OAAO,KAAK,SAAS,EACrB,OAAOO,aAAa;EACxB,IAAIP,OAAO,KAAK,UAAU,EACtB,OAAOQ,cAAc;EACzB,OAAOR,OAAO;AAClB;AACA,SAASO,aAAaA,CAACE,KAAK,EAAER,OAAO,GAAGH,eAAe,CAACI,OAAO,EAAE;EAC7D,OAAOO,KAAK,CACPC,GAAG,CAAC,CAAC;IAAEC,MAAM,EAAE;MAAEN;IAAY;EAAE,CAAC,KAAKA,WAAW,CAACO,IAAI,CAAC,CAAC,CAAC,CACxDC,MAAM,CAAER,WAAW,IAAKA,WAAW,KAAK,EAAE,CAAC,CAC3CF,IAAI,CAAC,GAAG,CAAC;AAClB;AACA,MAAMW,MAAM,GAAGA,CAACC,GAAG,EAAE;EAAEJ;AAAO,CAAC,EAAEK,CAAC,KAAKL,MAAM,CAACM,IAAI,KAAK,EAAE,GAAGF,GAAG,GAAGC,CAAC;AACnE,MAAME,cAAc,GAAGA,CAAC;EAAEP;AAAO,CAAC,KAAK,CAACA,MAAM,CAACQ,SAAS,KAAK,EAAE,GAAGR,MAAM,CAACS,KAAK,GAAGT,MAAM,CAACU,aAAa,CAACC,KAAK,CAAC,CAAC,CAAC,IAC1GX,MAAM,CAACN,WAAW;AACtB,SAASG,cAAcA,CAACC,KAAK,EAAER,OAAO,GAAGH,eAAe,CAACI,OAAO,EAAE;EAC9D,IAAIO,KAAK,CAACc,MAAM,KAAK,CAAC,EAClB,OAAO,EAAE;EACb;EACA,IAAId,KAAK,CAAC,CAAC,CAAC,CAACE,MAAM,CAACN,WAAW,KAAK,EAAE,IAClCI,KAAK,CAAC,CAAC,CAAC,CAACE,MAAM,CAACQ,SAAS,KAAKlB,OAAO,CAACmB,KAAK,EAC3CX,KAAK,GAAGA,KAAK,CAACa,KAAK,CAAC,CAAC,CAAC;EAC1B;EACA,MAAME,QAAQ,GAAGf,KAAK,CAACA,KAAK,CAACc,MAAM,GAAG,CAAC,CAAC;EACxC,IAAIC,QAAQ,KAAKC,SAAS,IACtBD,QAAQ,CAACb,MAAM,CAACN,WAAW,KAAK,EAAE,IAClCmB,QAAQ,CAACb,MAAM,CAACe,GAAG,CAACC,QAAQ,CAAC1B,OAAO,CAACyB,GAAG,CAAC,EACzCjB,KAAK,GAAGA,KAAK,CAACa,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC9B;EACAb,KAAK,GAAGA,KAAK,CAACa,KAAK,CAACb,KAAK,CAACmB,MAAM,CAACd,MAAM,EAAE,CAAC,CAAC,CAAC;EAC5C,OAAOL,KAAK,CAACC,GAAG,CAACQ,cAAc,CAAC,CAACf,IAAI,CAAC,IAAI,CAAC;AAC/C","ignoreList":[]}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
import { Line, BlockMarkers, Markers } from '../../primitives.js';
|
||||
import { Tokenizer } from './index.js';
|
||||
/**
|
||||
* Walks over provided lines joining description token into a single string.
|
||||
* */
|
||||
export type Joiner = (lines: Line[], markers?: BlockMarkers) => string;
|
||||
/**
|
||||
* Shortcut for standard Joiners
|
||||
* compact - strip surrounding whitespace and concat lines using a single string
|
||||
* preserve - preserves original whitespace and line breaks as is
|
||||
*/
|
||||
export type Spacing = 'compact' | 'preserve' | Joiner;
|
||||
/**
|
||||
* Makes no changes to `spec.lines[].tokens` but joins them into `spec.description`
|
||||
* following given spacing srtategy
|
||||
* @param {Spacing} spacing tells how to handle the whitespace
|
||||
* @param {BlockMarkers} markers tells how to handle comment block delimitation
|
||||
*/
|
||||
export default function descriptionTokenizer(spacing?: Spacing, markers?: typeof Markers): Tokenizer;
|
||||
export declare function getJoiner(spacing: Spacing): Joiner;
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
//# sourceMappingURL=index.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.cjs","names":["Object","defineProperty","exports","value"],"sources":["index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n"],"mappings":"AAAA,YAAY;;AACZA,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC","ignoreList":[]}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { Spec } from '../../primitives.js';
|
||||
/**
|
||||
* Splits `spect.lines[].token.description` into other tokens,
|
||||
* and populates the spec.{tag, name, type, description}. Invoked in a chaing
|
||||
* with other tokens, operations listed above can be moved to separate tokenizers
|
||||
*/
|
||||
export type Tokenizer = (spec: Spec) => Spec;
|
||||
+143
@@ -0,0 +1,143 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = nameTokenizer;
|
||||
const util_js_1 = require("../../util.cjs");
|
||||
const isQuoted = s => s && s.startsWith('"') && s.endsWith('"');
|
||||
/**
|
||||
* Splits remaining `spec.lines[].tokens.description` into `name` and `descriptions` tokens,
|
||||
* and populates the `spec.name`
|
||||
*/
|
||||
function nameTokenizer() {
|
||||
const typeEnd = (num, {
|
||||
tokens
|
||||
}, i) => tokens.type === '' ? num : i;
|
||||
return spec => {
|
||||
// look for the name starting in the line where {type} ends
|
||||
let finalTypeLine = spec.source.reduce(typeEnd, 0);
|
||||
let tokens;
|
||||
if (spec.type) {
|
||||
do {
|
||||
({
|
||||
tokens
|
||||
} = spec.source[finalTypeLine]);
|
||||
if (tokens.description.trim()) {
|
||||
break;
|
||||
}
|
||||
finalTypeLine++;
|
||||
} while (spec.source[finalTypeLine]);
|
||||
} else {
|
||||
({
|
||||
tokens
|
||||
} = spec.source[finalTypeLine]);
|
||||
}
|
||||
const source = tokens.description.trimStart();
|
||||
const quotedGroups = source.split('"');
|
||||
// if it starts with quoted group, assume it is a literal
|
||||
if (quotedGroups.length > 1 && quotedGroups[0] === '' && quotedGroups.length % 2 === 1) {
|
||||
spec.name = quotedGroups[1];
|
||||
tokens.name = `"${quotedGroups[1]}"`;
|
||||
[tokens.postName, tokens.description] = (0, util_js_1.splitSpace)(source.slice(tokens.name.length));
|
||||
return spec;
|
||||
}
|
||||
let brackets = 0;
|
||||
let name = '';
|
||||
let optional = false;
|
||||
let defaultValue;
|
||||
// assume name is non-space string or anything wrapped into brackets
|
||||
for (const ch of source) {
|
||||
if (brackets === 0 && (0, util_js_1.isSpace)(ch)) break;
|
||||
if (ch === '[') brackets++;
|
||||
if (ch === ']') brackets--;
|
||||
name += ch;
|
||||
}
|
||||
if (brackets !== 0) {
|
||||
spec.problems.push({
|
||||
code: 'spec:name:unpaired-brackets',
|
||||
message: 'unpaired brackets',
|
||||
line: spec.source[0].number,
|
||||
critical: true
|
||||
});
|
||||
return spec;
|
||||
}
|
||||
const nameToken = name;
|
||||
if (name[0] === '[' && name[name.length - 1] === ']') {
|
||||
optional = true;
|
||||
name = name.slice(1, -1);
|
||||
const parts = name.split('=');
|
||||
name = parts[0].trim();
|
||||
if (parts[1] !== undefined) defaultValue = parts.slice(1).join('=').trim();
|
||||
if (name === '') {
|
||||
spec.problems.push({
|
||||
code: 'spec:name:empty-name',
|
||||
message: 'empty name',
|
||||
line: spec.source[0].number,
|
||||
critical: true
|
||||
});
|
||||
return spec;
|
||||
}
|
||||
if (defaultValue === '') {
|
||||
spec.problems.push({
|
||||
code: 'spec:name:empty-default',
|
||||
message: 'empty default value',
|
||||
line: spec.source[0].number,
|
||||
critical: true
|
||||
});
|
||||
return spec;
|
||||
}
|
||||
// has "=" and is not a string, except for "=>"
|
||||
if (!isQuoted(defaultValue) && /=(?!>)/.test(defaultValue)) {
|
||||
spec.problems.push({
|
||||
code: 'spec:name:invalid-default',
|
||||
message: 'invalid default value syntax',
|
||||
line: spec.source[0].number,
|
||||
critical: true
|
||||
});
|
||||
return spec;
|
||||
}
|
||||
}
|
||||
if (!optional) {
|
||||
const eqIndex = name.search(/=(?!>)/);
|
||||
if (eqIndex !== -1) {
|
||||
defaultValue = name.slice(eqIndex + 1).trim();
|
||||
name = name.slice(0, eqIndex).trim();
|
||||
if (name === '') {
|
||||
spec.problems.push({
|
||||
code: 'spec:name:empty-name',
|
||||
message: 'empty name',
|
||||
line: spec.source[0].number,
|
||||
critical: true
|
||||
});
|
||||
return spec;
|
||||
}
|
||||
if (defaultValue === '') {
|
||||
spec.problems.push({
|
||||
code: 'spec:name:empty-default',
|
||||
message: 'empty default value',
|
||||
line: spec.source[0].number,
|
||||
critical: true
|
||||
});
|
||||
return spec;
|
||||
}
|
||||
if (!isQuoted(defaultValue) && /=(?!>)/.test(defaultValue)) {
|
||||
spec.problems.push({
|
||||
code: 'spec:name:invalid-default',
|
||||
message: 'invalid default value syntax',
|
||||
line: spec.source[0].number,
|
||||
critical: true
|
||||
});
|
||||
return spec;
|
||||
}
|
||||
}
|
||||
}
|
||||
spec.optional = optional;
|
||||
spec.name = name;
|
||||
tokens.name = nameToken;
|
||||
if (defaultValue !== undefined) spec.default = defaultValue;
|
||||
[tokens.postName, tokens.description] = (0, util_js_1.splitSpace)(source.slice(tokens.name.length));
|
||||
return spec;
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=name.cjs.map
|
||||
+1
File diff suppressed because one or more lines are too long
+6
@@ -0,0 +1,6 @@
|
||||
import { Tokenizer } from './index.js';
|
||||
/**
|
||||
* Splits remaining `spec.lines[].tokens.description` into `name` and `descriptions` tokens,
|
||||
* and populates the `spec.name`
|
||||
*/
|
||||
export default function nameTokenizer(): Tokenizer;
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = tagTokenizer;
|
||||
/**
|
||||
* Splits the `@prefix` from remaining `Spec.lines[].token.description` into the `tag` token,
|
||||
* and populates `spec.tag`
|
||||
*/
|
||||
function tagTokenizer() {
|
||||
return spec => {
|
||||
const {
|
||||
tokens
|
||||
} = spec.source[0];
|
||||
const match = tokens.description.match(/\s*(@(\S+))(\s*)/);
|
||||
if (match === null) {
|
||||
spec.problems.push({
|
||||
code: 'spec:tag:prefix',
|
||||
message: 'tag should start with "@" symbol',
|
||||
line: spec.source[0].number,
|
||||
critical: true
|
||||
});
|
||||
return spec;
|
||||
}
|
||||
if (match[1].includes('/')) {
|
||||
return spec;
|
||||
}
|
||||
tokens.tag = match[1];
|
||||
tokens.postTag = match[3];
|
||||
tokens.description = tokens.description.slice(match[0].length);
|
||||
spec.tag = match[2];
|
||||
return spec;
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=tag.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"tag.cjs","names":["Object","defineProperty","exports","value","default","tagTokenizer","spec","tokens","source","match","description","problems","push","code","message","line","number","critical","includes","tag","postTag","slice","length"],"sources":["tag.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = tagTokenizer;\n/**\n * Splits the `@prefix` from remaining `Spec.lines[].token.description` into the `tag` token,\n * and populates `spec.tag`\n */\nfunction tagTokenizer() {\n return (spec) => {\n const { tokens } = spec.source[0];\n const match = tokens.description.match(/\\s*(@(\\S+))(\\s*)/);\n if (match === null) {\n spec.problems.push({\n code: 'spec:tag:prefix',\n message: 'tag should start with \"@\" symbol',\n line: spec.source[0].number,\n critical: true,\n });\n return spec;\n }\n if (match[1].includes('/')) {\n return spec;\n }\n tokens.tag = match[1];\n tokens.postTag = match[3];\n tokens.description = tokens.description.slice(match[0].length);\n spec.tag = match[2];\n return spec;\n };\n}\n"],"mappings":"AAAA,YAAY;;AACZA,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7DD,OAAO,CAACE,OAAO,GAAGC,YAAY;AAC9B;AACA;AACA;AACA;AACA,SAASA,YAAYA,CAAA,EAAG;EACpB,OAAQC,IAAI,IAAK;IACb,MAAM;MAAEC;IAAO,CAAC,GAAGD,IAAI,CAACE,MAAM,CAAC,CAAC,CAAC;IACjC,MAAMC,KAAK,GAAGF,MAAM,CAACG,WAAW,CAACD,KAAK,CAAC,kBAAkB,CAAC;IAC1D,IAAIA,KAAK,KAAK,IAAI,EAAE;MAChBH,IAAI,CAACK,QAAQ,CAACC,IAAI,CAAC;QACfC,IAAI,EAAE,iBAAiB;QACvBC,OAAO,EAAE,kCAAkC;QAC3CC,IAAI,EAAET,IAAI,CAACE,MAAM,CAAC,CAAC,CAAC,CAACQ,MAAM;QAC3BC,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOX,IAAI;IACf;IACA,IAAIG,KAAK,CAAC,CAAC,CAAC,CAACS,QAAQ,CAAC,GAAG,CAAC,EAAE;MACxB,OAAOZ,IAAI;IACf;IACAC,MAAM,CAACY,GAAG,GAAGV,KAAK,CAAC,CAAC,CAAC;IACrBF,MAAM,CAACa,OAAO,GAAGX,KAAK,CAAC,CAAC,CAAC;IACzBF,MAAM,CAACG,WAAW,GAAGH,MAAM,CAACG,WAAW,CAACW,KAAK,CAACZ,KAAK,CAAC,CAAC,CAAC,CAACa,MAAM,CAAC;IAC9DhB,IAAI,CAACa,GAAG,GAAGV,KAAK,CAAC,CAAC,CAAC;IACnB,OAAOH,IAAI;EACf,CAAC;AACL","ignoreList":[]}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
import { Tokenizer } from './index.js';
|
||||
/**
|
||||
* Splits the `@prefix` from remaining `Spec.lines[].token.description` into the `tag` token,
|
||||
* and populates `spec.tag`
|
||||
*/
|
||||
export default function tagTokenizer(): Tokenizer;
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = typeTokenizer;
|
||||
const util_js_1 = require("../../util.cjs");
|
||||
/**
|
||||
* Sets splits remaining `Spec.lines[].tokens.description` into `type` and `description`
|
||||
* tokens and populates Spec.type`
|
||||
*
|
||||
* @param {Spacing} spacing tells how to deal with a whitespace
|
||||
* for type values going over multiple lines
|
||||
*/
|
||||
function typeTokenizer(spacing = 'compact') {
|
||||
const join = getJoiner(spacing);
|
||||
return spec => {
|
||||
let curlies = 0;
|
||||
let lines = [];
|
||||
let descriptionBegun = false;
|
||||
let firstTypeIteration = true;
|
||||
for (const {
|
||||
tokens
|
||||
} of spec.source.values()) {
|
||||
let type = '';
|
||||
if (!descriptionBegun && tokens.description.trim()) {
|
||||
descriptionBegun = true;
|
||||
} else if (!descriptionBegun) {
|
||||
continue;
|
||||
}
|
||||
if (firstTypeIteration && tokens.description[0] !== '{') return spec;
|
||||
firstTypeIteration = false;
|
||||
for (const ch of tokens.description) {
|
||||
if (ch === '{') curlies++;
|
||||
if (ch === '}') curlies--;
|
||||
type += ch;
|
||||
if (curlies === 0) break;
|
||||
}
|
||||
lines.push([tokens, type]);
|
||||
if (curlies === 0) break;
|
||||
}
|
||||
if (!descriptionBegun) {
|
||||
return spec;
|
||||
}
|
||||
if (curlies !== 0) {
|
||||
spec.problems.push({
|
||||
code: 'spec:type:unpaired-curlies',
|
||||
message: 'unpaired curlies',
|
||||
line: spec.source[0].number,
|
||||
critical: true
|
||||
});
|
||||
return spec;
|
||||
}
|
||||
const parts = [];
|
||||
const offset = lines[0][0].postDelimiter.length;
|
||||
for (const [i, [tokens, type]] of lines.entries()) {
|
||||
tokens.type = type;
|
||||
if (i > 0) {
|
||||
tokens.type = tokens.postDelimiter.slice(offset) + type;
|
||||
tokens.postDelimiter = tokens.postDelimiter.slice(0, offset);
|
||||
}
|
||||
[tokens.postType, tokens.description] = (0, util_js_1.splitSpace)(tokens.description.slice(type.length));
|
||||
parts.push(tokens.type);
|
||||
}
|
||||
parts[0] = parts[0].slice(1);
|
||||
parts[parts.length - 1] = parts[parts.length - 1].slice(0, -1);
|
||||
spec.type = join(parts);
|
||||
return spec;
|
||||
};
|
||||
}
|
||||
const trim = x => x.trim();
|
||||
function getJoiner(spacing) {
|
||||
if (spacing === 'compact') return t => t.map(trim).join('');else if (spacing === 'preserve') return t => t.join('\n');else return spacing;
|
||||
}
|
||||
//# sourceMappingURL=type.cjs.map
|
||||
+1
File diff suppressed because one or more lines are too long
+27
@@ -0,0 +1,27 @@
|
||||
import { Tokenizer } from './index.js';
|
||||
/**
|
||||
* Joiner is a function taking collected type token string parts,
|
||||
* and joining them together. In most of the cases this will be
|
||||
* a single piece like {type-name}, but type may go over multipe line
|
||||
* ```
|
||||
* @tag {function(
|
||||
* number,
|
||||
* string
|
||||
* )}
|
||||
* ```
|
||||
*/
|
||||
export type Joiner = (parts: string[]) => string;
|
||||
/**
|
||||
* Shortcut for standard Joiners
|
||||
* compact - trim surrounding space, replace line breaks with a single space
|
||||
* preserve - concat as is
|
||||
*/
|
||||
export type Spacing = 'compact' | 'preserve' | Joiner;
|
||||
/**
|
||||
* Sets splits remaining `Spec.lines[].tokens.description` into `type` and `description`
|
||||
* tokens and populates Spec.type`
|
||||
*
|
||||
* @param {Spacing} spacing tells how to deal with a whitespace
|
||||
* for type values going over multiple lines
|
||||
*/
|
||||
export default function typeTokenizer(spacing?: Spacing): Tokenizer;
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.Markers = void 0;
|
||||
/** @deprecated */
|
||||
var Markers;
|
||||
(function (Markers) {
|
||||
Markers["start"] = "/**";
|
||||
Markers["nostart"] = "/***";
|
||||
Markers["delim"] = "*";
|
||||
Markers["end"] = "*/";
|
||||
})(Markers || (exports.Markers = Markers = {}));
|
||||
//# sourceMappingURL=primitives.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"primitives.cjs","names":["Object","defineProperty","exports","value","Markers"],"sources":["primitives.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Markers = void 0;\n/** @deprecated */\nvar Markers;\n(function (Markers) {\n Markers[\"start\"] = \"/**\";\n Markers[\"nostart\"] = \"/***\";\n Markers[\"delim\"] = \"*\";\n Markers[\"end\"] = \"*/\";\n})(Markers || (exports.Markers = Markers = {}));\n"],"mappings":"AAAA,YAAY;;AACZA,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7DD,OAAO,CAACE,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,IAAIA,OAAO;AACX,CAAC,UAAUA,OAAO,EAAE;EAChBA,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK;EACxBA,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM;EAC3BA,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG;EACtBA,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI;AACzB,CAAC,EAAEA,OAAO,KAAKF,OAAO,CAACE,OAAO,GAAGA,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC","ignoreList":[]}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
/** @deprecated */
|
||||
export declare enum Markers {
|
||||
start = "/**",
|
||||
nostart = "/***",
|
||||
delim = "*",
|
||||
end = "*/"
|
||||
}
|
||||
export interface BlockMarkers {
|
||||
start: string;
|
||||
nostart: string;
|
||||
delim: string;
|
||||
end: string;
|
||||
}
|
||||
export interface Block {
|
||||
description: string;
|
||||
tags: Spec[];
|
||||
source: Line[];
|
||||
problems: Problem[];
|
||||
}
|
||||
export interface Spec {
|
||||
tag: string;
|
||||
name: string;
|
||||
default?: string;
|
||||
type: string;
|
||||
optional: boolean;
|
||||
description: string;
|
||||
problems: Problem[];
|
||||
source: Line[];
|
||||
}
|
||||
export interface Line {
|
||||
number: number;
|
||||
source: string;
|
||||
tokens: Tokens;
|
||||
}
|
||||
export interface Tokens {
|
||||
start: string;
|
||||
delimiter: string;
|
||||
postDelimiter: string;
|
||||
tag: string;
|
||||
postTag: string;
|
||||
name: string;
|
||||
postName: string;
|
||||
type: string;
|
||||
postType: string;
|
||||
description: string;
|
||||
end: string;
|
||||
lineEnd: string;
|
||||
}
|
||||
export interface Problem {
|
||||
code: 'unhandled' | 'custom' | 'source:startline' | 'spec:tag:prefix' | 'spec:type:unpaired-curlies' | 'spec:name:unpaired-brackets' | 'spec:name:empty-name' | 'spec:name:invalid-default' | 'spec:name:empty-default';
|
||||
message: string;
|
||||
line: number;
|
||||
critical: boolean;
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getStringifier;
|
||||
function join(tokens) {
|
||||
return tokens.start + tokens.delimiter + tokens.postDelimiter + tokens.tag + tokens.postTag + tokens.type + tokens.postType + tokens.name + tokens.postName + tokens.description + tokens.end + tokens.lineEnd;
|
||||
}
|
||||
function getStringifier() {
|
||||
return block => block.source.map(({
|
||||
tokens
|
||||
}) => join(tokens)).join('\n');
|
||||
}
|
||||
//# sourceMappingURL=index.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.cjs","names":["Object","defineProperty","exports","value","default","getStringifier","join","tokens","start","delimiter","postDelimiter","tag","postTag","type","postType","name","postName","description","end","lineEnd","block","source","map"],"sources":["index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = getStringifier;\nfunction join(tokens) {\n return (tokens.start +\n tokens.delimiter +\n tokens.postDelimiter +\n tokens.tag +\n tokens.postTag +\n tokens.type +\n tokens.postType +\n tokens.name +\n tokens.postName +\n tokens.description +\n tokens.end +\n tokens.lineEnd);\n}\nfunction getStringifier() {\n return (block) => block.source.map(({ tokens }) => join(tokens)).join('\\n');\n}\n"],"mappings":"AAAA,YAAY;;AACZA,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7DD,OAAO,CAACE,OAAO,GAAGC,cAAc;AAChC,SAASC,IAAIA,CAACC,MAAM,EAAE;EAClB,OAAQA,MAAM,CAACC,KAAK,GAChBD,MAAM,CAACE,SAAS,GAChBF,MAAM,CAACG,aAAa,GACpBH,MAAM,CAACI,GAAG,GACVJ,MAAM,CAACK,OAAO,GACdL,MAAM,CAACM,IAAI,GACXN,MAAM,CAACO,QAAQ,GACfP,MAAM,CAACQ,IAAI,GACXR,MAAM,CAACS,QAAQ,GACfT,MAAM,CAACU,WAAW,GAClBV,MAAM,CAACW,GAAG,GACVX,MAAM,CAACY,OAAO;AACtB;AACA,SAASd,cAAcA,CAAA,EAAG;EACtB,OAAQe,KAAK,IAAKA,KAAK,CAACC,MAAM,CAACC,GAAG,CAAC,CAAC;IAAEf;EAAO,CAAC,KAAKD,IAAI,CAACC,MAAM,CAAC,CAAC,CAACD,IAAI,CAAC,IAAI,CAAC;AAC/E","ignoreList":[]}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { Block } from '../primitives.js';
|
||||
export type Stringifier = (block: Block) => string;
|
||||
export default function getStringifier(): Stringifier;
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = inspect;
|
||||
const util_js_1 = require("../util.cjs");
|
||||
const zeroWidth = {
|
||||
line: 0,
|
||||
start: 0,
|
||||
delimiter: 0,
|
||||
postDelimiter: 0,
|
||||
tag: 0,
|
||||
postTag: 0,
|
||||
name: 0,
|
||||
postName: 0,
|
||||
type: 0,
|
||||
postType: 0,
|
||||
description: 0,
|
||||
end: 0,
|
||||
lineEnd: 0
|
||||
};
|
||||
const headers = {
|
||||
lineEnd: 'CR'
|
||||
};
|
||||
const fields = Object.keys(zeroWidth);
|
||||
const repr = x => (0, util_js_1.isSpace)(x) ? `{${x.length}}` : x;
|
||||
const frame = line => '|' + line.join('|') + '|';
|
||||
const align = (width, tokens) => Object.keys(tokens).map(k => repr(tokens[k]).padEnd(width[k]));
|
||||
function inspect({
|
||||
source
|
||||
}) {
|
||||
var _a, _b;
|
||||
if (source.length === 0) return '';
|
||||
const width = Object.assign({}, zeroWidth);
|
||||
for (const f of fields) width[f] = ((_a = headers[f]) !== null && _a !== void 0 ? _a : f).length;
|
||||
for (const {
|
||||
number,
|
||||
tokens
|
||||
} of source) {
|
||||
width.line = Math.max(width.line, number.toString().length);
|
||||
for (const k in tokens) width[k] = Math.max(width[k], repr(tokens[k]).length);
|
||||
}
|
||||
const lines = [[], []];
|
||||
for (const f of fields) lines[0].push(((_b = headers[f]) !== null && _b !== void 0 ? _b : f).padEnd(width[f]));
|
||||
for (const f of fields) lines[1].push('-'.padEnd(width[f], '-'));
|
||||
for (const {
|
||||
number,
|
||||
tokens
|
||||
} of source) {
|
||||
const line = number.toString().padStart(width.line);
|
||||
lines.push([line, ...align(width, tokens)]);
|
||||
}
|
||||
return lines.map(frame).join('\n');
|
||||
}
|
||||
//# sourceMappingURL=inspect.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"inspect.cjs","names":["Object","defineProperty","exports","value","default","inspect","util_js_1","require","zeroWidth","line","start","delimiter","postDelimiter","tag","postTag","name","postName","type","postType","description","end","lineEnd","headers","fields","keys","repr","x","isSpace","length","frame","join","align","width","tokens","map","k","padEnd","source","_a","_b","assign","f","number","Math","max","toString","lines","push","padStart"],"sources":["inspect.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = inspect;\nconst util_js_1 = require(\"../util.js\");\nconst zeroWidth = {\n line: 0,\n start: 0,\n delimiter: 0,\n postDelimiter: 0,\n tag: 0,\n postTag: 0,\n name: 0,\n postName: 0,\n type: 0,\n postType: 0,\n description: 0,\n end: 0,\n lineEnd: 0,\n};\nconst headers = { lineEnd: 'CR' };\nconst fields = Object.keys(zeroWidth);\nconst repr = (x) => ((0, util_js_1.isSpace)(x) ? `{${x.length}}` : x);\nconst frame = (line) => '|' + line.join('|') + '|';\nconst align = (width, tokens) => Object.keys(tokens).map((k) => repr(tokens[k]).padEnd(width[k]));\nfunction inspect({ source }) {\n var _a, _b;\n if (source.length === 0)\n return '';\n const width = Object.assign({}, zeroWidth);\n for (const f of fields)\n width[f] = ((_a = headers[f]) !== null && _a !== void 0 ? _a : f).length;\n for (const { number, tokens } of source) {\n width.line = Math.max(width.line, number.toString().length);\n for (const k in tokens)\n width[k] = Math.max(width[k], repr(tokens[k]).length);\n }\n const lines = [[], []];\n for (const f of fields)\n lines[0].push(((_b = headers[f]) !== null && _b !== void 0 ? _b : f).padEnd(width[f]));\n for (const f of fields)\n lines[1].push('-'.padEnd(width[f], '-'));\n for (const { number, tokens } of source) {\n const line = number.toString().padStart(width.line);\n lines.push([line, ...align(width, tokens)]);\n }\n return lines.map(frame).join('\\n');\n}\n"],"mappings":"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","ignoreList":[]}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
import { Block } from '../primitives.js';
|
||||
export default function inspect({ source }: Block): string;
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
"use strict";
|
||||
|
||||
var __rest = this && this.__rest || function (s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = align;
|
||||
const primitives_js_1 = require("../primitives.cjs");
|
||||
const util_js_1 = require("../util.cjs");
|
||||
const zeroWidth = {
|
||||
start: 0,
|
||||
tag: 0,
|
||||
type: 0,
|
||||
name: 0
|
||||
};
|
||||
const getWidth = (markers = primitives_js_1.Markers) => (w, {
|
||||
tokens: t
|
||||
}) => ({
|
||||
start: t.delimiter === markers.start ? t.start.length : w.start,
|
||||
tag: Math.max(w.tag, t.tag.length),
|
||||
type: Math.max(w.type, t.type.length),
|
||||
name: Math.max(w.name, t.name.length)
|
||||
});
|
||||
const space = len => ''.padStart(len, ' ');
|
||||
function align(markers = primitives_js_1.Markers) {
|
||||
let intoTags = false;
|
||||
let w;
|
||||
function update(line) {
|
||||
const tokens = Object.assign({}, line.tokens);
|
||||
if (tokens.tag !== '') intoTags = true;
|
||||
const isEmpty = tokens.tag === '' && tokens.name === '' && tokens.type === '' && tokens.description === '';
|
||||
// dangling '*/'
|
||||
if (tokens.end === markers.end && isEmpty) {
|
||||
tokens.start = space(w.start + 1);
|
||||
return Object.assign(Object.assign({}, line), {
|
||||
tokens
|
||||
});
|
||||
}
|
||||
switch (tokens.delimiter) {
|
||||
case markers.start:
|
||||
tokens.start = space(w.start);
|
||||
break;
|
||||
case markers.delim:
|
||||
tokens.start = space(w.start + 1);
|
||||
break;
|
||||
default:
|
||||
tokens.delimiter = '';
|
||||
tokens.start = space(w.start + 2);
|
||||
// compensate delimiter
|
||||
}
|
||||
if (!intoTags) {
|
||||
tokens.postDelimiter = tokens.description === '' ? '' : ' ';
|
||||
return Object.assign(Object.assign({}, line), {
|
||||
tokens
|
||||
});
|
||||
}
|
||||
const nothingAfter = {
|
||||
delim: false,
|
||||
tag: false,
|
||||
type: false,
|
||||
name: false
|
||||
};
|
||||
if (tokens.description === '') {
|
||||
nothingAfter.name = true;
|
||||
tokens.postName = '';
|
||||
if (tokens.name === '') {
|
||||
nothingAfter.type = true;
|
||||
tokens.postType = '';
|
||||
if (tokens.type === '') {
|
||||
nothingAfter.tag = true;
|
||||
tokens.postTag = '';
|
||||
if (tokens.tag === '') {
|
||||
nothingAfter.delim = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
tokens.postDelimiter = nothingAfter.delim ? '' : ' ';
|
||||
if (!nothingAfter.tag) tokens.postTag = space(w.tag - tokens.tag.length + 1);
|
||||
if (!nothingAfter.type) tokens.postType = space(w.type - tokens.type.length + 1);
|
||||
if (!nothingAfter.name) tokens.postName = space(w.name - tokens.name.length + 1);
|
||||
return Object.assign(Object.assign({}, line), {
|
||||
tokens
|
||||
});
|
||||
}
|
||||
return _a => {
|
||||
var {
|
||||
source
|
||||
} = _a,
|
||||
fields = __rest(_a, ["source"]);
|
||||
w = source.reduce(getWidth(markers), Object.assign({}, zeroWidth));
|
||||
return (0, util_js_1.rewireSource)(Object.assign(Object.assign({}, fields), {
|
||||
source: source.map(update)
|
||||
}));
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=align.cjs.map
|
||||
+1
File diff suppressed because one or more lines are too long
+3
@@ -0,0 +1,3 @@
|
||||
import { Transform } from './index.js';
|
||||
import { Markers } from '../primitives.js';
|
||||
export default function align(markers?: typeof Markers): Transform;
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
|
||||
var __rest = this && this.__rest || function (s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = crlf;
|
||||
const util_js_1 = require("../util.cjs");
|
||||
const order = ['end', 'description', 'postType', 'type', 'postName', 'name', 'postTag', 'tag', 'postDelimiter', 'delimiter', 'start'];
|
||||
function crlf(ending) {
|
||||
function update(line) {
|
||||
return Object.assign(Object.assign({}, line), {
|
||||
tokens: Object.assign(Object.assign({}, line.tokens), {
|
||||
lineEnd: ending === 'LF' ? '' : '\r'
|
||||
})
|
||||
});
|
||||
}
|
||||
return _a => {
|
||||
var {
|
||||
source
|
||||
} = _a,
|
||||
fields = __rest(_a, ["source"]);
|
||||
return (0, util_js_1.rewireSource)(Object.assign(Object.assign({}, fields), {
|
||||
source: source.map(update)
|
||||
}));
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=crlf.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"crlf.cjs","names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","defineProperty","exports","value","default","crlf","util_js_1","require","order","ending","update","line","assign","tokens","lineEnd","_a","source","fields","rewireSource","map"],"sources":["crlf.js"],"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 });\nexports.default = crlf;\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}\n"],"mappings":"AAAA,YAAY;;AACZ,IAAIA,MAAM,GAAI,IAAI,IAAI,IAAI,CAACA,MAAM,IAAK,UAAUC,CAAC,EAAEC,CAAC,EAAE;EAClD,IAAIC,CAAC,GAAG,CAAC,CAAC;EACV,KAAK,IAAIC,CAAC,IAAIH,CAAC,EAAE,IAAII,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACP,CAAC,EAAEG,CAAC,CAAC,IAAIF,CAAC,CAACO,OAAO,CAACL,CAAC,CAAC,GAAG,CAAC,EAC/ED,CAAC,CAACC,CAAC,CAAC,GAAGH,CAAC,CAACG,CAAC,CAAC;EACf,IAAIH,CAAC,IAAI,IAAI,IAAI,OAAOI,MAAM,CAACK,qBAAqB,KAAK,UAAU,EAC/D,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEP,CAAC,GAAGC,MAAM,CAACK,qBAAqB,CAACT,CAAC,CAAC,EAAEU,CAAC,GAAGP,CAAC,CAACQ,MAAM,EAAED,CAAC,EAAE,EAAE;IACpE,IAAIT,CAAC,CAACO,OAAO,CAACL,CAAC,CAACO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAIN,MAAM,CAACC,SAAS,CAACO,oBAAoB,CAACL,IAAI,CAACP,CAAC,EAAEG,CAAC,CAACO,CAAC,CAAC,CAAC,EAC1ER,CAAC,CAACC,CAAC,CAACO,CAAC,CAAC,CAAC,GAAGV,CAAC,CAACG,CAAC,CAACO,CAAC,CAAC,CAAC;EACzB;EACJ,OAAOR,CAAC;AACZ,CAAC;AACDE,MAAM,CAACS,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7DD,OAAO,CAACE,OAAO,GAAGC,IAAI;AACtB,MAAMC,SAAS,GAAGC,OAAO,eAAc;AACvC,MAAMC,KAAK,GAAG,CACV,KAAK,EACL,aAAa,EACb,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,eAAe,EACf,WAAW,EACX,OAAO,CACV;AACD,SAASH,IAAIA,CAACI,MAAM,EAAE;EAClB,SAASC,MAAMA,CAACC,IAAI,EAAE;IAClB,OAAOnB,MAAM,CAACoB,MAAM,CAACpB,MAAM,CAACoB,MAAM,CAAC,CAAC,CAAC,EAAED,IAAI,CAAC,EAAE;MAAEE,MAAM,EAAErB,MAAM,CAACoB,MAAM,CAACpB,MAAM,CAACoB,MAAM,CAAC,CAAC,CAAC,EAAED,IAAI,CAACE,MAAM,CAAC,EAAE;QAAEC,OAAO,EAAEL,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG;MAAK,CAAC;IAAE,CAAC,CAAC;EACtJ;EACA,OAAQM,EAAE,IAAK;IACX,IAAI;QAAEC;MAAO,CAAC,GAAGD,EAAE;MAAEE,MAAM,GAAG9B,MAAM,CAAC4B,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC,EAAET,SAAS,CAACY,YAAY,EAAE1B,MAAM,CAACoB,MAAM,CAACpB,MAAM,CAACoB,MAAM,CAAC,CAAC,CAAC,EAAEK,MAAM,CAAC,EAAE;MAAED,MAAM,EAAEA,MAAM,CAACG,GAAG,CAACT,MAAM;IAAE,CAAC,CAAC,CAAC;EAChH,CAAC;AACL","ignoreList":[]}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { Transform } from './index.js';
|
||||
export type Ending = 'LF' | 'CRLF';
|
||||
export default function crlf(ending: Ending): Transform;
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
"use strict";
|
||||
|
||||
var __rest = this && this.__rest || function (s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = indent;
|
||||
const util_js_1 = require("../util.cjs");
|
||||
const pull = offset => str => str.slice(offset);
|
||||
const push = offset => {
|
||||
const space = ''.padStart(offset, ' ');
|
||||
return str => str + space;
|
||||
};
|
||||
function indent(pos) {
|
||||
let shift;
|
||||
const pad = start => {
|
||||
if (shift === undefined) {
|
||||
const offset = pos - start.length;
|
||||
shift = offset > 0 ? push(offset) : pull(-offset);
|
||||
}
|
||||
return shift(start);
|
||||
};
|
||||
const update = line => Object.assign(Object.assign({}, line), {
|
||||
tokens: Object.assign(Object.assign({}, line.tokens), {
|
||||
start: pad(line.tokens.start)
|
||||
})
|
||||
});
|
||||
return _a => {
|
||||
var {
|
||||
source
|
||||
} = _a,
|
||||
fields = __rest(_a, ["source"]);
|
||||
return (0, util_js_1.rewireSource)(Object.assign(Object.assign({}, fields), {
|
||||
source: source.map(update)
|
||||
}));
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=indent.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"indent.cjs","names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","defineProperty","exports","value","default","indent","util_js_1","require","pull","offset","str","slice","push","space","padStart","pos","shift","pad","start","undefined","update","line","assign","tokens","_a","source","fields","rewireSource","map"],"sources":["indent.js"],"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 });\nexports.default = indent;\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}\n"],"mappings":"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","ignoreList":[]}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
import { Transform } from './index.js';
|
||||
export default function indent(pos: number): Transform;
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.flow = flow;
|
||||
function flow(...transforms) {
|
||||
return block => transforms.reduce((block, t) => t(block), block);
|
||||
}
|
||||
//# sourceMappingURL=index.cjs.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.cjs","names":["Object","defineProperty","exports","value","flow","transforms","block","reduce","t"],"sources":["index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flow = flow;\nfunction flow(...transforms) {\n return (block) => transforms.reduce((block, t) => t(block), block);\n}\n"],"mappings":"AAAA,YAAY;;AACZA,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7DD,OAAO,CAACE,IAAI,GAAGA,IAAI;AACnB,SAASA,IAAIA,CAAC,GAAGC,UAAU,EAAE;EACzB,OAAQC,KAAK,IAAKD,UAAU,CAACE,MAAM,CAAC,CAACD,KAAK,EAAEE,CAAC,KAAKA,CAAC,CAACF,KAAK,CAAC,EAAEA,KAAK,CAAC;AACtE","ignoreList":[]}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { Block } from '../primitives.js';
|
||||
export type Transform = (Block: Block) => Block;
|
||||
export declare function flow(...transforms: Transform[]): Transform;
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.isSpace = isSpace;
|
||||
exports.hasCR = hasCR;
|
||||
exports.splitCR = splitCR;
|
||||
exports.splitSpace = splitSpace;
|
||||
exports.splitLines = splitLines;
|
||||
exports.seedBlock = seedBlock;
|
||||
exports.seedSpec = seedSpec;
|
||||
exports.seedTokens = seedTokens;
|
||||
exports.rewireSource = rewireSource;
|
||||
exports.rewireSpecs = rewireSpecs;
|
||||
function isSpace(source) {
|
||||
return /^\s+$/.test(source);
|
||||
}
|
||||
function hasCR(source) {
|
||||
return /\r$/.test(source);
|
||||
}
|
||||
function splitCR(source) {
|
||||
const matches = source.match(/\r+$/);
|
||||
return matches == null ? ['', source] : [source.slice(-matches[0].length), source.slice(0, -matches[0].length)];
|
||||
}
|
||||
function splitSpace(source) {
|
||||
const matches = source.match(/^\s+/);
|
||||
return matches == null ? ['', source] : [source.slice(0, matches[0].length), source.slice(matches[0].length)];
|
||||
}
|
||||
function splitLines(source) {
|
||||
return source.split(/\n/);
|
||||
}
|
||||
function seedBlock(block = {}) {
|
||||
return Object.assign({
|
||||
description: '',
|
||||
tags: [],
|
||||
source: [],
|
||||
problems: []
|
||||
}, block);
|
||||
}
|
||||
function seedSpec(spec = {}) {
|
||||
return Object.assign({
|
||||
tag: '',
|
||||
name: '',
|
||||
type: '',
|
||||
optional: false,
|
||||
description: '',
|
||||
problems: [],
|
||||
source: []
|
||||
}, spec);
|
||||
}
|
||||
function seedTokens(tokens = {}) {
|
||||
return Object.assign({
|
||||
start: '',
|
||||
delimiter: '',
|
||||
postDelimiter: '',
|
||||
tag: '',
|
||||
postTag: '',
|
||||
name: '',
|
||||
postName: '',
|
||||
type: '',
|
||||
postType: '',
|
||||
description: '',
|
||||
end: '',
|
||||
lineEnd: ''
|
||||
}, tokens);
|
||||
}
|
||||
/**
|
||||
* Assures Block.tags[].source contains references to the Block.source items,
|
||||
* using Block.source as a source of truth. This is a counterpart of rewireSpecs
|
||||
* @param block parsed coments block
|
||||
*/
|
||||
function rewireSource(block) {
|
||||
const source = block.source.reduce((acc, line) => acc.set(line.number, line), new Map());
|
||||
for (const spec of block.tags) {
|
||||
spec.source = spec.source.map(line => source.get(line.number));
|
||||
}
|
||||
return block;
|
||||
}
|
||||
/**
|
||||
* Assures Block.source contains references to the Block.tags[].source items,
|
||||
* using Block.tags[].source as a source of truth. This is a counterpart of rewireSource
|
||||
* @param block parsed coments block
|
||||
*/
|
||||
function rewireSpecs(block) {
|
||||
const source = block.tags.reduce((acc, spec) => spec.source.reduce((acc, line) => acc.set(line.number, line), acc), new Map());
|
||||
block.source = block.source.map(line => source.get(line.number) || line);
|
||||
return block;
|
||||
}
|
||||
//# sourceMappingURL=util.cjs.map
|
||||
+1
File diff suppressed because one or more lines are too long
+21
@@ -0,0 +1,21 @@
|
||||
import { Block, Tokens, Spec } from './primitives.js';
|
||||
export declare function isSpace(source: string): boolean;
|
||||
export declare function hasCR(source: string): boolean;
|
||||
export declare function splitCR(source: string): [string, string];
|
||||
export declare function splitSpace(source: string): [string, string];
|
||||
export declare function splitLines(source: string): string[];
|
||||
export declare function seedBlock(block?: Partial<Block>): Block;
|
||||
export declare function seedSpec(spec?: Partial<Spec>): Spec;
|
||||
export declare function seedTokens(tokens?: Partial<Tokens>): Tokens;
|
||||
/**
|
||||
* Assures Block.tags[].source contains references to the Block.source items,
|
||||
* using Block.source as a source of truth. This is a counterpart of rewireSpecs
|
||||
* @param block parsed coments block
|
||||
*/
|
||||
export declare function rewireSource(block: Block): Block;
|
||||
/**
|
||||
* Assures Block.source contains references to the Block.tags[].source items,
|
||||
* using Block.tags[].source as a source of truth. This is a counterpart of rewireSource
|
||||
* @param block parsed coments block
|
||||
*/
|
||||
export declare function rewireSpecs(block: Block): Block;
|
||||
Reference in New Issue
Block a user