podlite 0.0.56 → 0.0.58
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.
- package/CHANGELOG.podlite +14 -0
- package/esm/cli.js +31 -5
- package/esm/cli.js.map +1 -1
- package/esm/index.js +10 -2
- package/esm/index.js.map +1 -1
- package/esm/lint/formatters/json.d.ts +9 -0
- package/esm/lint/formatters/json.js +5 -0
- package/esm/lint/formatters/json.js.map +1 -0
- package/esm/lint/formatters/text.d.ts +9 -0
- package/esm/lint/formatters/text.js +41 -0
- package/esm/lint/formatters/text.js.map +1 -0
- package/esm/lint/grammar/lint.d.ts +14 -0
- package/esm/lint/grammar/lint.js +910 -0
- package/esm/lint/grammar/lint.js.map +1 -0
- package/esm/lint/grammar/scan.d.ts +9 -0
- package/esm/lint/grammar/scan.js +36 -0
- package/esm/lint/grammar/scan.js.map +1 -0
- package/esm/lint/index.d.ts +7 -1
- package/esm/lint/index.js +45 -10
- package/esm/lint/index.js.map +1 -1
- package/esm/lint/loader.d.ts +5 -0
- package/esm/lint/loader.js +19 -0
- package/esm/lint/loader.js.map +1 -0
- package/esm/lint/rules/heading-hierarchy.d.ts +3 -0
- package/esm/lint/rules/heading-hierarchy.js +27 -0
- package/esm/lint/rules/heading-hierarchy.js.map +1 -0
- package/esm/lint/rules/id-unique.d.ts +10 -0
- package/esm/lint/rules/id-unique.js +41 -0
- package/esm/lint/rules/id-unique.js.map +1 -0
- package/esm/lint/rules/index.d.ts +2 -0
- package/esm/lint/rules/index.js +4 -0
- package/esm/lint/rules/index.js.map +1 -0
- package/esm/lint/rules/syntax-valid.d.ts +4 -0
- package/esm/lint/rules/syntax-valid.js +30 -0
- package/esm/lint/rules/syntax-valid.js.map +1 -0
- package/esm/lint/types.d.ts +4 -0
- package/esm/query.js +4 -1
- package/esm/query.js.map +1 -1
- package/lib/cli.js +31 -5
- package/lib/cli.js.map +1 -1
- package/lib/index.js +10 -2
- package/lib/index.js.map +1 -1
- package/lib/lint/formatters/json.d.ts +9 -0
- package/lib/lint/formatters/json.js +9 -0
- package/lib/lint/formatters/json.js.map +1 -0
- package/lib/lint/formatters/text.d.ts +9 -0
- package/lib/lint/formatters/text.js +45 -0
- package/lib/lint/formatters/text.js.map +1 -0
- package/lib/lint/grammar/lint.d.ts +14 -0
- package/lib/lint/grammar/lint.js +910 -0
- package/lib/lint/grammar/lint.js.map +1 -0
- package/lib/lint/grammar/scan.d.ts +9 -0
- package/lib/lint/grammar/scan.js +40 -0
- package/lib/lint/grammar/scan.js.map +1 -0
- package/lib/lint/index.d.ts +7 -1
- package/lib/lint/index.js +45 -10
- package/lib/lint/index.js.map +1 -1
- package/lib/lint/loader.d.ts +5 -0
- package/lib/lint/loader.js +44 -0
- package/lib/lint/loader.js.map +1 -0
- package/lib/lint/rules/heading-hierarchy.d.ts +3 -0
- package/lib/lint/rules/heading-hierarchy.js +30 -0
- package/lib/lint/rules/heading-hierarchy.js.map +1 -0
- package/lib/lint/rules/id-unique.d.ts +10 -0
- package/lib/lint/rules/id-unique.js +45 -0
- package/lib/lint/rules/id-unique.js.map +1 -0
- package/lib/lint/rules/index.d.ts +2 -0
- package/lib/lint/rules/index.js +7 -0
- package/lib/lint/rules/index.js.map +1 -0
- package/lib/lint/rules/syntax-valid.d.ts +4 -0
- package/lib/lint/rules/syntax-valid.js +34 -0
- package/lib/lint/rules/syntax-valid.js.map +1 -0
- package/lib/lint/types.d.ts +4 -0
- package/lib/query.js +4 -1
- package/lib/query.js.map +1 -1
- package/package.json +11 -8
package/CHANGELOG.podlite
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
=head1 Upcoming
|
|
4
4
|
|
|
5
|
+
=head1 0.0.58
|
|
6
|
+
|
|
7
|
+
=item C<< podlite lint >> accepts C<--strict>, C<--format text|json>, C<--config <path>>. C<runLint(files, options)> signature in C<@podlite/core>
|
|
8
|
+
=item C<< podlite lint >> adds C<syntax-valid> rule — catches parse exceptions, reports C<file:line:column: error: <msg> (syntax-valid)>. Text and JSON output. Missing files report C<io> error
|
|
9
|
+
=item C<< podlite lint >> exit codes: 0 clean, 1 violations found (or warnings under C<--strict>), 2 CLI/setup error (no files, unknown C<--format>)
|
|
10
|
+
=item C<< podlite lint >> file loader centralized — auto-detects C<.md> → markdown mode (via C<parseMd> from C<@podlite/markdown>), C<.podlite>/C<.pod6> → pod mode. Both produce the unified AST so rules apply uniformly
|
|
11
|
+
=item C<< podlite lint >> adds C<heading-hierarchy> rule (warning) — flags non-monotonic level jumps like C<head1> → C<head3>. Descending and equal levels allowed. Applies to both Markdown and Podlite headings via unified AST
|
|
12
|
+
=item C<< podlite lint >> adds C<id-unique> rule (error) — flags duplicate explicit C<:id<>> attributes in file scope. Auto-generated node ids ignored. Silent skip when the file declares no explicit ids
|
|
13
|
+
=item C<< podlite lint >> output split into C<src/lint/formatters/{text,json}.ts> modules. Text format emits a trailing summary C<N files checked, M errors, K warnings> and colours C<error>/C<warning> tokens with native ANSI when stdout is a TTY. JSON format unchanged (array of diagnostic objects)
|
|
14
|
+
=item C<< podlite lint >> adds C<attr-nested-angle> rule (error) — flags angle-delimited attributes whose value contains a nested C<E<lt>...E<gt>> (formatting code or raw angle) before the closing C<E<gt>>, which silently closes the attribute early under PEG tolerance. Suggests multi-angle / guillemet / parenthesis / bracket delimiters. Source-level scan via Pegmill C<grammar-lint.pegjs>; runs before AST parse so the rule is independent of parser tolerance
|
|
15
|
+
=item C<podlite().parse(text, opt)> dispatches to C<md2ast> from C<@podlite/markdown> when C<opt.mode === 'md'>. Default and C<opt.mode === 'pod'> use the pod grammar unchanged. Enables a single parse front-door for full-document Markdown input across consumers (C<@podlite/to-jsx>, C<@podlite/to-html>, C<@podlite/publisher>, C<@podlite/editor-react>)
|
|
16
|
+
=item C<< podlite lint >> adds C<delimited-block-balance> rule (error) — flags orphan C<=end>, mismatched C<=begin>/C<=end> pairs, C<=begin X> nested inside C<=begin X> (verbatim trap), and C<=begin> blocks left unclosed at end of file. Source-level scan via the same Pegmill grammar that hosts C<attr-nested-angle>; stack tracked through C<options._blockStack>, EOF check flushes remaining items
|
|
17
|
+
=item C<< podlite lint >> adds C<attr-continuation-dropped> rule (warning) — flags indented C<:attr<…>> lines following C<=begin X>/C<=for X> that get silently dropped by the parser (queryable only on the directive line itself). State machine clears on blank line, content line, or C<=end>. Suggests flattening attributes onto the directive line
|
|
18
|
+
|
|
5
19
|
=head1 0.0.55
|
|
6
20
|
|
|
7
21
|
=item add C<< podlite query <selector> <files...> >> subcommand. Extracts blocks matching a selector. C<--to> selects C<podlite> (default, raw source), C<md>, C<html>, C<json>. C<--fail-on-empty> sets exit 1 on empty result. Match count on stderr unless C<--quiet>. Reads stdin when piped or when C<-> is given as a file argument
|
package/esm/cli.js
CHANGED
|
@@ -9,10 +9,11 @@ const FORMATS = {
|
|
|
9
9
|
html: '.html',
|
|
10
10
|
};
|
|
11
11
|
const QUERY_FORMATS = ['podlite', 'md', 'html', 'json'];
|
|
12
|
+
const LINT_FORMATS = ['text', 'json'];
|
|
12
13
|
function usage() {
|
|
13
14
|
console.log(`Usage:
|
|
14
15
|
podlite convert <files...> --to <format> [-o <output>]
|
|
15
|
-
podlite lint <files...>
|
|
16
|
+
podlite lint <files...> [--strict] [--format <text|json>] [--config <path>]
|
|
16
17
|
podlite query <selector> <files...> [--to <format>] [--fail-on-empty] [--quiet]
|
|
17
18
|
|
|
18
19
|
Commands:
|
|
@@ -24,6 +25,9 @@ Options:
|
|
|
24
25
|
--to Output format
|
|
25
26
|
convert: md (markdown), html
|
|
26
27
|
query: podlite (default), md, html, json
|
|
28
|
+
--format lint output format: text (default), json
|
|
29
|
+
--strict lint: promote warnings to errors
|
|
30
|
+
--config lint: path to .podlitelintrc.{json,js}
|
|
27
31
|
-o Output file or directory (default: same dir, new extension)
|
|
28
32
|
--fail-on-empty query: exit 1 if no blocks matched
|
|
29
33
|
--quiet query: suppress match count on stderr
|
|
@@ -38,7 +42,8 @@ Examples:
|
|
|
38
42
|
podlite query '*[:applies-nfr~<N004>]' rules/*.podlite --fail-on-empty
|
|
39
43
|
cat doc.podlite | podlite query 'head1'
|
|
40
44
|
podlite query 'table' --to json - < report.podlite
|
|
41
|
-
podlite lint docs/*.podlite
|
|
45
|
+
podlite lint docs/*.podlite
|
|
46
|
+
podlite lint docs/ --strict --format json`);
|
|
42
47
|
}
|
|
43
48
|
function parseArgs(argv) {
|
|
44
49
|
const args = {
|
|
@@ -48,6 +53,9 @@ function parseArgs(argv) {
|
|
|
48
53
|
output: '',
|
|
49
54
|
failOnEmpty: false,
|
|
50
55
|
quiet: false,
|
|
56
|
+
strict: false,
|
|
57
|
+
format: '',
|
|
58
|
+
configPath: '',
|
|
51
59
|
};
|
|
52
60
|
if (argv.length === 0 || argv[0] === '--help' || argv[0] === '-h') {
|
|
53
61
|
return null;
|
|
@@ -68,6 +76,15 @@ function parseArgs(argv) {
|
|
|
68
76
|
else if (arg === '--quiet') {
|
|
69
77
|
args.quiet = true;
|
|
70
78
|
}
|
|
79
|
+
else if (arg === '--strict') {
|
|
80
|
+
args.strict = true;
|
|
81
|
+
}
|
|
82
|
+
else if (arg === '--format') {
|
|
83
|
+
args.format = argv[++i] || '';
|
|
84
|
+
}
|
|
85
|
+
else if (arg === '--config') {
|
|
86
|
+
args.configPath = argv[++i] || '';
|
|
87
|
+
}
|
|
71
88
|
else if (arg === '--help' || arg === '-h') {
|
|
72
89
|
return null;
|
|
73
90
|
}
|
|
@@ -193,11 +210,20 @@ function main() {
|
|
|
193
210
|
}
|
|
194
211
|
if (args.command === 'lint') {
|
|
195
212
|
if (args.files.length === 0) {
|
|
196
|
-
console.error('
|
|
213
|
+
console.error('podlite lint: no input files specified');
|
|
197
214
|
usage();
|
|
198
|
-
process.exit(
|
|
215
|
+
process.exit(2);
|
|
216
|
+
}
|
|
217
|
+
const format = (args.format || 'text');
|
|
218
|
+
if (!LINT_FORMATS.includes(format)) {
|
|
219
|
+
console.error(`podlite lint: unknown --format "${format}". Supported: ${LINT_FORMATS.join(', ')}`);
|
|
220
|
+
process.exit(2);
|
|
199
221
|
}
|
|
200
|
-
process.exit(runLint(args.files
|
|
222
|
+
process.exit(runLint(args.files, {
|
|
223
|
+
strict: args.strict,
|
|
224
|
+
format,
|
|
225
|
+
configPath: args.configPath || undefined,
|
|
226
|
+
}));
|
|
201
227
|
}
|
|
202
228
|
if (args.command !== 'convert') {
|
|
203
229
|
console.error(`Unknown command: ${args.command}`);
|
package/esm/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/esm/index.js
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import { podlitePluggable } from '@podlite/schema';
|
|
2
|
+
import { parseMd } from '@podlite/markdown';
|
|
2
3
|
import externalPlugins from './plugins/extrnal';
|
|
3
4
|
export const podlite = ({ importPlugins = true }) => {
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
const plugins = importPlugins ? externalPlugins : {};
|
|
6
|
+
const instance = podlitePluggable({ plugins });
|
|
7
|
+
const baseParse = instance.parse;
|
|
8
|
+
instance.parse = (text, opt = {}) => {
|
|
9
|
+
if (opt.mode === 'md')
|
|
10
|
+
return parseMd(text);
|
|
11
|
+
return baseParse(text, opt);
|
|
12
|
+
};
|
|
13
|
+
return instance;
|
|
6
14
|
};
|
|
7
15
|
// Cannot be `import` as it's not under TS root dir
|
|
8
16
|
// https://stackoverflow.com/questions/51070138/how-to-import-package-json-into-typescript-file-without-including-it-in-the-comp
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAsC,MAAM,iBAAiB,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAK/C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,EAAc,EAAW,EAAE;IACvE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAA;IACpD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAA;IAChC,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAY,EAAE,MAAgB,EAAE,EAAmB,EAAE;QACrE,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC,IAAI,CAA+B,CAAA;QACzE,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAA;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,mDAAmD;AACnD,gIAAgI;AAEhI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AACvD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Violation } from '../types';
|
|
2
|
+
export declare type FileReport = {
|
|
3
|
+
filePath: string;
|
|
4
|
+
violations: Violation[];
|
|
5
|
+
};
|
|
6
|
+
export declare type JsonDiagnostic = Violation & {
|
|
7
|
+
file: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function formatJson(reports: FileReport[]): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/lint/formatters/json.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,MAAM,OAAO,GAAqB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3G,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAA;AAChD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Violation } from '../types';
|
|
2
|
+
export declare type FileReport = {
|
|
3
|
+
filePath: string;
|
|
4
|
+
violations: Violation[];
|
|
5
|
+
};
|
|
6
|
+
export declare type TextFormatOptions = {
|
|
7
|
+
color: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function formatText(reports: FileReport[], opts: TextFormatOptions): string;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const ANSI = {
|
|
2
|
+
red: '\x1b[31m',
|
|
3
|
+
yellow: '\x1b[33m',
|
|
4
|
+
cyan: '\x1b[36m',
|
|
5
|
+
reset: '\x1b[0m',
|
|
6
|
+
};
|
|
7
|
+
function colourize(severity, color) {
|
|
8
|
+
if (!color)
|
|
9
|
+
return severity;
|
|
10
|
+
if (severity === 'error')
|
|
11
|
+
return `${ANSI.red}${severity}${ANSI.reset}`;
|
|
12
|
+
if (severity === 'warning')
|
|
13
|
+
return `${ANSI.yellow}${severity}${ANSI.reset}`;
|
|
14
|
+
return `${ANSI.cyan}${severity}${ANSI.reset}`;
|
|
15
|
+
}
|
|
16
|
+
function plural(n, singular, plural) {
|
|
17
|
+
return `${n} ${n === 1 ? singular : plural}`;
|
|
18
|
+
}
|
|
19
|
+
function summaryLine(reports) {
|
|
20
|
+
const totals = reports.flatMap(r => r.violations);
|
|
21
|
+
const nFiles = reports.length;
|
|
22
|
+
const nErrors = totals.filter(v => v.severity === 'error').length;
|
|
23
|
+
const nWarnings = totals.filter(v => v.severity === 'warning').length;
|
|
24
|
+
return `${plural(nFiles, 'file', 'files')} checked, ${plural(nErrors, 'error', 'errors')}, ${plural(nWarnings, 'warning', 'warnings')}`;
|
|
25
|
+
}
|
|
26
|
+
export function formatText(reports, opts) {
|
|
27
|
+
const lines = [];
|
|
28
|
+
for (const r of reports) {
|
|
29
|
+
for (const v of r.violations) {
|
|
30
|
+
const line = v.location?.start?.line ?? 1;
|
|
31
|
+
const column = v.location?.start?.column ?? 1;
|
|
32
|
+
lines.push(`${r.filePath}:${line}:${column}: ${colourize(v.severity, opts.color)}: ${v.message} (${v.rule})`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (reports.length === 0)
|
|
36
|
+
return '';
|
|
37
|
+
if (lines.length === 0)
|
|
38
|
+
return `${summaryLine(reports)}\n`;
|
|
39
|
+
return `${lines.join('\n')}\n\n${summaryLine(reports)}\n`;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/lint/formatters/text.ts"],"names":[],"mappings":"AAMA,MAAM,IAAI,GAAG;IACX,GAAG,EAAE,UAAU;IACf,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,SAAS;CACjB,CAAA;AAED,SAAS,SAAS,CAAC,QAAkB,EAAE,KAAc;IACnD,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAA;IAC3B,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;IACtE,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;IAC3E,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;AAC/C,CAAC;AAED,SAAS,MAAM,CAAC,CAAS,EAAE,QAAgB,EAAE,MAAc;IACzD,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;AAC9C,CAAC;AAED,SAAS,WAAW,CAAC,OAAqB;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAA;IACjE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;IACrE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,MAAM,CACjG,SAAS,EACT,SAAS,EACT,UAAU,CACX,EAAE,CAAA;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAqB,EAAE,IAAuB;IACvE,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;QACvB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAA;YAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;SAC9G;KACF;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAA;IAC1D,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAA;AAC3D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare function peg$SyntaxError(message: any, expected: any, found: any, location: any): void;
|
|
2
|
+
declare class peg$SyntaxError {
|
|
3
|
+
constructor(message: any, expected: any, found: any, location: any);
|
|
4
|
+
message: any;
|
|
5
|
+
expected: any;
|
|
6
|
+
found: any;
|
|
7
|
+
location: any;
|
|
8
|
+
name: string;
|
|
9
|
+
}
|
|
10
|
+
declare namespace peg$SyntaxError {
|
|
11
|
+
function buildMessage(expected: any, found: any): string;
|
|
12
|
+
}
|
|
13
|
+
declare function peg$parse(input: any, options: any): any[];
|
|
14
|
+
export { peg$SyntaxError as SyntaxError, peg$parse as parse };
|