html-validate 10.17.0 → 11.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/browser.js +1 -3
- package/dist/cjs/browser.js.map +1 -1
- package/dist/cjs/cli.js +1 -2
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/core-browser.js +2 -2
- package/dist/cjs/core-browser.js.map +1 -1
- package/dist/cjs/core-nodejs.js +2 -6
- package/dist/cjs/core-nodejs.js.map +1 -1
- package/dist/cjs/core.js +50 -65
- package/dist/cjs/core.js.map +1 -1
- package/dist/cjs/html-validate.js +35 -50
- package/dist/cjs/html-validate.js.map +1 -1
- package/dist/cjs/index.js +1 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/browser.js +1 -1
- package/dist/esm/cli.js +2 -3
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/core-browser.js +2 -2
- package/dist/esm/core-browser.js.map +1 -1
- package/dist/esm/core-nodejs.js +3 -6
- package/dist/esm/core-nodejs.js.map +1 -1
- package/dist/esm/core.js +50 -63
- package/dist/esm/core.js.map +1 -1
- package/dist/esm/html-validate.js +36 -50
- package/dist/esm/html-validate.js.map +1 -1
- package/dist/esm/index.js +2 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/matcher-utils.js +1 -1
- package/dist/esm/matchers.js +1 -1
- package/dist/types/browser.d.ts +40 -156
- package/dist/types/index.d.ts +36 -177
- package/package.json +9 -11
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
+
import { parseArgs } from 'node:util';
|
|
3
4
|
import kleur from 'kleur';
|
|
4
|
-
import
|
|
5
|
-
import { a5 as name, v as version, z as SchemaValidationError, Q as isUserError, a6 as bugs } from './core.js';
|
|
5
|
+
import { a3 as name, v as version, y as SchemaValidationError, O as isUserError, a4 as bugs } from './core.js';
|
|
6
6
|
import { M as Mode, m as modeToFlag, C as CLI, h as haveImportMetaResolve, I as ImportResolveMissingError, d as dump, p as printConfig, i as init, l as lint, a as handleSchemaValidationError } from './cli.js';
|
|
7
7
|
import 'ajv';
|
|
8
8
|
import './elements.js';
|
|
@@ -17,7 +17,6 @@ import 'node:fs/promises';
|
|
|
17
17
|
import 'node:url';
|
|
18
18
|
import 'node:module';
|
|
19
19
|
import 'node:path/posix';
|
|
20
|
-
import 'glob';
|
|
21
20
|
import 'prompts';
|
|
22
21
|
|
|
23
22
|
function getMode(argv2) {
|
|
@@ -88,51 +87,38 @@ function handleUnknownError(err) {
|
|
|
88
87
|
)
|
|
89
88
|
);
|
|
90
89
|
}
|
|
91
|
-
const argv =
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
f: "formatter",
|
|
120
|
-
p: "preset",
|
|
121
|
-
h: "help"
|
|
122
|
-
},
|
|
123
|
-
default: {
|
|
124
|
-
ext: "html",
|
|
125
|
-
formatter: "stylish"
|
|
126
|
-
},
|
|
127
|
-
unknown: (opt) => {
|
|
128
|
-
if (opt.startsWith("-")) {
|
|
129
|
-
process.stderr.write(`unknown option ${opt}
|
|
90
|
+
const { values: argv, positionals } = (() => {
|
|
91
|
+
try {
|
|
92
|
+
return parseArgs({
|
|
93
|
+
args: process.argv.slice(2),
|
|
94
|
+
options: {
|
|
95
|
+
config: { type: "string", short: "c" },
|
|
96
|
+
"dump-events": { type: "boolean", default: false },
|
|
97
|
+
"dump-source": { type: "boolean", default: false },
|
|
98
|
+
"dump-tokens": { type: "boolean", default: false },
|
|
99
|
+
"dump-tree": { type: "boolean", default: false },
|
|
100
|
+
ext: { type: "string", default: "html" },
|
|
101
|
+
formatter: { type: "string", short: "f", default: "stylish" },
|
|
102
|
+
help: { type: "boolean", short: "h", default: false },
|
|
103
|
+
init: { type: "boolean", default: false },
|
|
104
|
+
"max-warnings": { type: "string" },
|
|
105
|
+
performance: { type: "boolean", default: false },
|
|
106
|
+
preset: { type: "string", short: "p" },
|
|
107
|
+
"print-config": { type: "boolean", default: false },
|
|
108
|
+
rule: { type: "string" },
|
|
109
|
+
stdin: { type: "boolean", default: false },
|
|
110
|
+
"stdin-filename": { type: "string" },
|
|
111
|
+
version: { type: "boolean", default: false }
|
|
112
|
+
},
|
|
113
|
+
allowPositionals: true,
|
|
114
|
+
strict: true
|
|
115
|
+
});
|
|
116
|
+
} catch (err) {
|
|
117
|
+
process.stderr.write(`${err.message}
|
|
130
118
|
`);
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
return true;
|
|
119
|
+
process.exit(1);
|
|
134
120
|
}
|
|
135
|
-
});
|
|
121
|
+
})();
|
|
136
122
|
function showUsage() {
|
|
137
123
|
process.stdout.write(`${name}-${version}
|
|
138
124
|
Usage: html-validate [OPTIONS] [FILENAME..] [DIR..]
|
|
@@ -177,7 +163,7 @@ function showVersion() {
|
|
|
177
163
|
`);
|
|
178
164
|
}
|
|
179
165
|
if (argv.stdin) {
|
|
180
|
-
|
|
166
|
+
positionals.push("-");
|
|
181
167
|
}
|
|
182
168
|
if (argv.version) {
|
|
183
169
|
showVersion();
|
|
@@ -187,7 +173,7 @@ if (argv.help) {
|
|
|
187
173
|
showUsage();
|
|
188
174
|
process.exit();
|
|
189
175
|
}
|
|
190
|
-
if (
|
|
176
|
+
if (positionals.length === 0) {
|
|
191
177
|
const mode = getMode(argv);
|
|
192
178
|
if (mode === Mode.LINT) {
|
|
193
179
|
showUsage();
|
|
@@ -223,9 +209,9 @@ async function run() {
|
|
|
223
209
|
const extensions = argv.ext.split(",").map((cur) => {
|
|
224
210
|
return cur.startsWith(".") ? cur.slice(1) : cur;
|
|
225
211
|
});
|
|
226
|
-
const files = await cli.expandFiles(
|
|
212
|
+
const files = await cli.expandFiles(positionals, { extensions });
|
|
227
213
|
if (files.length === 0 && mode !== Mode.INIT) {
|
|
228
|
-
console.error("No files matching patterns",
|
|
214
|
+
console.error("No files matching patterns", positionals);
|
|
229
215
|
process.exit(1);
|
|
230
216
|
}
|
|
231
217
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-validate.js","sources":["../../src/cli/html-validate.ts"],"sourcesContent":["/* eslint-disable no-console, n/no-process-exit -- as expected from a cli app */\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport kleur from \"kleur\";\nimport minimist from \"minimist\";\nimport { type UserErrorData, SchemaValidationError, isUserError } from \"..\";\nimport { bugs as pkgBugs, name, version } from \"../generated/package-json\";\nimport { dump } from \"./actions/dump\";\nimport { init } from \"./actions/init\";\nimport { lint } from \"./actions/lint\";\nimport { printConfig } from \"./actions/print-config\";\nimport { CLI } from \"./cli\";\nimport { ImportResolveMissingError, handleSchemaValidationError } from \"./errors\";\nimport { haveImportMetaResolve } from \"./have-import-meta-resolve\";\nimport { Mode, modeToFlag } from \"./mode\";\n\ninterface ParsedArgs {\n\tconfig?: string;\n\t\"dump-events\": boolean;\n\t\"dump-source\": boolean;\n\t\"dump-tokens\": boolean;\n\t\"dump-tree\": boolean;\n\text: string;\n\tformatter: string;\n\thelp: boolean;\n\tinit: boolean;\n\t\"max-warnings\"?: string;\n\tperformance: boolean;\n\tpreset?: string;\n\t\"print-config\": boolean;\n\trule?: string;\n\tstdin: boolean;\n\t\"stdin-filename\"?: string;\n\tversion: boolean;\n}\n\nfunction getMode(argv: Record<string, unknown>): Mode {\n\tif (argv[\"init\"]) {\n\t\treturn Mode.INIT;\n\t}\n\n\tif (argv[\"dump-events\"]) {\n\t\treturn Mode.DUMP_EVENTS;\n\t}\n\n\tif (argv[\"dump-source\"]) {\n\t\treturn Mode.DUMP_SOURCE;\n\t}\n\n\tif (argv[\"dump-tokens\"]) {\n\t\treturn Mode.DUMP_TOKENS;\n\t}\n\n\tif (argv[\"dump-tree\"]) {\n\t\treturn Mode.DUMP_TREE;\n\t}\n\n\tif (argv[\"print-config\"]) {\n\t\treturn Mode.PRINT_CONFIG;\n\t}\n\n\treturn Mode.LINT;\n}\n\nfunction requiresFilename(mode: Mode): boolean {\n\tswitch (mode) {\n\t\tcase Mode.LINT:\n\t\t\treturn true;\n\t\tcase Mode.INIT:\n\t\t\treturn false;\n\t\tcase Mode.DUMP_EVENTS:\n\t\tcase Mode.DUMP_TOKENS:\n\t\tcase Mode.DUMP_TREE:\n\t\tcase Mode.DUMP_SOURCE:\n\t\tcase Mode.PRINT_CONFIG:\n\t\t\treturn true;\n\t}\n}\n\nfunction handleUserError(err: UserErrorData): void {\n\tconst formatted = err.prettyFormat();\n\tif (formatted) {\n\t\tconsole.error(); /* blank line */\n\t\tconsole.error(formatted);\n\t\treturn;\n\t}\n\n\tconsole.error(kleur.red(\"Caught exception:\"));\n\tconsole.group();\n\t{\n\t\tconsole.error(err.prettyFormat() ?? err);\n\t}\n\tconsole.groupEnd();\n}\n\nfunction handleUnknownError(err: unknown): void {\n\tconsole.error(kleur.red(\"Caught exception:\"));\n\tconsole.group();\n\t{\n\t\tconsole.error(err);\n\t}\n\tconsole.groupEnd();\n\tconst bugUrl = `${pkgBugs}?issuable_template=Bug`;\n\tconsole.error(kleur.red(`This is a bug in ${name}-${version}.`));\n\tconsole.error(\n\t\tkleur.red(\n\t\t\t[\n\t\t\t\t`Please file a bug at ${bugUrl}`,\n\t\t\t\t`and include this message in full and if possible the content of the`,\n\t\t\t\t`file being parsed (or a reduced testcase).`,\n\t\t\t].join(\"\\n\"),\n\t\t),\n\t);\n}\n\nconst argv = minimist<ParsedArgs>(process.argv.slice(2), {\n\tstring: [\n\t\t\"c\",\n\t\t\"config\",\n\t\t\"ext\",\n\t\t\"f\",\n\t\t\"formatter\",\n\t\t\"max-warnings\",\n\t\t\"p\",\n\t\t\"preset\",\n\t\t\"rule\",\n\t\t\"stdin-filename\",\n\t],\n\tboolean: [\n\t\t\"init\",\n\t\t\"dump-events\",\n\t\t\"dump-source\",\n\t\t\"dump-tokens\",\n\t\t\"dump-tree\",\n\t\t\"h\",\n\t\t\"help\",\n\t\t\"performance\",\n\t\t\"print-config\",\n\t\t\"stdin\",\n\t\t\"version\",\n\t],\n\talias: {\n\t\tc: \"config\",\n\t\tf: \"formatter\",\n\t\tp: \"preset\",\n\t\th: \"help\",\n\t},\n\tdefault: {\n\t\text: \"html\",\n\t\tformatter: \"stylish\",\n\t},\n\tunknown: (opt: string) => {\n\t\tif (opt.startsWith(\"-\")) {\n\t\t\tprocess.stderr.write(`unknown option ${opt}\\n`);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\treturn true;\n\t},\n});\n\nfunction showUsage(): void {\n\tprocess.stdout.write(`${name}-${version}\nUsage: html-validate [OPTIONS] [FILENAME..] [DIR..]\n\nCommon options:\n --ext=STRING specify file extensions (commaseparated).\n -f, --formatter=FORMATTER specify the formatter to use.\n --max-warnings=INT number of warnings to trigger nonzero exit code\n -p, --preset=STRING configuration preset to use, use\n comma-separator for multiple presets. (default:\n \"recommended\")\n --rule=RULE:SEVERITY set additional rule, use comma separator for\n multiple.\n --stdin process markup from stdin.\n --stdin-filename=STRING specify filename to report when using stdin\n\nMiscellaneous:\n -c, --config=STRING use custom configuration file.\n --init initialize project with a new configuration\n --print-config output configuration for given file.\n -h, --help show help.\n --version show version.\n\nDebugging options:\n --dump-events output events during parsing.\n --dump-source output post-transformed source data.\n --dump-tokens output tokens from lexing stage.\n --dump-tree output nodes from the dom tree.\n --performance output performance data after validation.\n\nFormatters:\n\nMultiple formatters can be specified with a comma-separated list,\ne.g. \"json,checkstyle\" to enable both.\n\nTo capture output to a file use \"formatter=/path/to/file\",\ne.g. \"checkstyle=dist/html-validate.xml\"\n`);\n}\n\nfunction showVersion(): void {\n\tprocess.stdout.write(`${name}-${version}\\n`);\n}\n\nif (argv.stdin) {\n\targv._.push(\"-\");\n}\n\nif (argv.version) {\n\tshowVersion();\n\tprocess.exit();\n}\n\nif (argv.help) {\n\tshowUsage();\n\tprocess.exit();\n}\n\nif (argv._.length === 0) {\n\tconst mode = getMode(argv);\n\tif (mode === Mode.LINT) {\n\t\tshowUsage();\n\t\tprocess.exit(0);\n\t} else if (requiresFilename(mode)) {\n\t\tconst flag = modeToFlag(mode);\n\t\tconsole.error(`\\`${flag}\\` requires a filename.`);\n\t\tprocess.exit(1);\n\t}\n}\n\n/* check that supplied config file exists before creating CLI */\nif (argv.config !== undefined) {\n\tconst checkPath = path.resolve(argv.config);\n\tif (!fs.existsSync(checkPath)) {\n\t\tconsole.error(`The file \"${argv.config}\" was not found.`);\n\t\tconsole.error(`The location this file was checked for at was: \"${checkPath}\"`);\n\t\tprocess.exit(1);\n\t}\n}\n\n/* eslint-disable-next-line complexity -- for now */\nasync function run(): Promise<void> {\n\tconst cli = new CLI({\n\t\tconfigFile: argv.config,\n\t\tpreset: argv.preset,\n\t\trules: argv.rule,\n\t});\n\tconst mode = getMode(argv);\n\tconst formatter = await cli.getFormatter(argv.formatter);\n\tconst maxWarnings = Number.parseInt(argv[\"max-warnings\"] ?? \"-1\", 10);\n\tconst htmlvalidate = await cli.getValidator();\n\n\t/* sanity check: ensure maxWarnings has a valid value */\n\tif (Number.isNaN(maxWarnings)) {\n\t\tconsole.error(`Invalid value \"${String(argv[\"max-warnings\"])}\" given to --max-warnings`);\n\t\tprocess.exit(1);\n\t}\n\n\t/* parse extensions (used when expanding directories) */\n\tconst extensions = argv.ext.split(\",\").map((cur: string) => {\n\t\treturn cur.startsWith(\".\") ? cur.slice(1) : cur;\n\t});\n\n\tconst files = await cli.expandFiles(argv._, { extensions });\n\tif (files.length === 0 && mode !== Mode.INIT) {\n\t\tconsole.error(\"No files matching patterns\", argv._);\n\t\tprocess.exit(1);\n\t}\n\n\ttry {\n\t\t/* istanbul ignore next -- not tested with unittests */\n\t\tif (!haveImportMetaResolve()) {\n\t\t\tthrow new ImportResolveMissingError();\n\t\t}\n\n\t\tlet success: boolean;\n\t\tswitch (mode) {\n\t\t\tcase Mode.LINT: {\n\t\t\t\tsuccess = await lint(htmlvalidate, process.stdout, process.stderr, files, {\n\t\t\t\t\tformatter,\n\t\t\t\t\tmaxWarnings,\n\t\t\t\t\tperformance: argv.performance,\n\t\t\t\t\tstdinFilename: argv[\"stdin-filename\"] ?? false,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase Mode.INIT: {\n\t\t\t\tsuccess = await init(cli, process.stdout, { cwd: process.cwd() });\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase Mode.PRINT_CONFIG: {\n\t\t\t\tsuccess = await printConfig(htmlvalidate, process.stdout, files);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tsuccess = await dump(htmlvalidate, process.stdout, files, mode);\n\t\t\t}\n\t\t}\n\t\tprocess.exit(success ? 0 : 1);\n\t} catch (err) {\n\t\tif (err instanceof SchemaValidationError) {\n\t\t\thandleSchemaValidationError(console, err);\n\t\t} else if (isUserError(err)) {\n\t\t\thandleUserError(err);\n\t\t} else {\n\t\t\thandleUnknownError(err);\n\t\t}\n\t\tprocess.exit(1);\n\t}\n}\n\n/* eslint-disable-next-line unicorn/prefer-top-level-await -- technical debt, as long as we bundle and ship commonjs we cannot use TLA here */\nrun().catch((err: unknown) => {\n\tconsole.error(err);\n\tprocess.exit(1);\n});\n"],"names":["argv","pkgBugs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"html-validate.js","sources":["../../src/cli/html-validate.ts"],"sourcesContent":["/* eslint-disable no-console, n/no-process-exit -- as expected from a cli app */\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { parseArgs } from \"node:util\";\nimport kleur from \"kleur\";\nimport { type UserErrorData, SchemaValidationError, isUserError } from \"..\";\nimport { bugs as pkgBugs, name, version } from \"../generated/package-json\";\nimport { dump } from \"./actions/dump\";\nimport { init } from \"./actions/init\";\nimport { lint } from \"./actions/lint\";\nimport { printConfig } from \"./actions/print-config\";\nimport { CLI } from \"./cli\";\nimport { ImportResolveMissingError, handleSchemaValidationError } from \"./errors\";\nimport { haveImportMetaResolve } from \"./have-import-meta-resolve\";\nimport { Mode, modeToFlag } from \"./mode\";\n\nfunction getMode(argv: Record<string, unknown>): Mode {\n\tif (argv[\"init\"]) {\n\t\treturn Mode.INIT;\n\t}\n\n\tif (argv[\"dump-events\"]) {\n\t\treturn Mode.DUMP_EVENTS;\n\t}\n\n\tif (argv[\"dump-source\"]) {\n\t\treturn Mode.DUMP_SOURCE;\n\t}\n\n\tif (argv[\"dump-tokens\"]) {\n\t\treturn Mode.DUMP_TOKENS;\n\t}\n\n\tif (argv[\"dump-tree\"]) {\n\t\treturn Mode.DUMP_TREE;\n\t}\n\n\tif (argv[\"print-config\"]) {\n\t\treturn Mode.PRINT_CONFIG;\n\t}\n\n\treturn Mode.LINT;\n}\n\nfunction requiresFilename(mode: Mode): boolean {\n\tswitch (mode) {\n\t\tcase Mode.LINT:\n\t\t\treturn true;\n\t\tcase Mode.INIT:\n\t\t\treturn false;\n\t\tcase Mode.DUMP_EVENTS:\n\t\tcase Mode.DUMP_TOKENS:\n\t\tcase Mode.DUMP_TREE:\n\t\tcase Mode.DUMP_SOURCE:\n\t\tcase Mode.PRINT_CONFIG:\n\t\t\treturn true;\n\t}\n}\n\nfunction handleUserError(err: UserErrorData): void {\n\tconst formatted = err.prettyFormat();\n\tif (formatted) {\n\t\tconsole.error(); /* blank line */\n\t\tconsole.error(formatted);\n\t\treturn;\n\t}\n\n\tconsole.error(kleur.red(\"Caught exception:\"));\n\tconsole.group();\n\t{\n\t\tconsole.error(err.prettyFormat() ?? err);\n\t}\n\tconsole.groupEnd();\n}\n\nfunction handleUnknownError(err: unknown): void {\n\tconsole.error(kleur.red(\"Caught exception:\"));\n\tconsole.group();\n\t{\n\t\tconsole.error(err);\n\t}\n\tconsole.groupEnd();\n\tconst bugUrl = `${pkgBugs}?issuable_template=Bug`;\n\tconsole.error(kleur.red(`This is a bug in ${name}-${version}.`));\n\tconsole.error(\n\t\tkleur.red(\n\t\t\t[\n\t\t\t\t`Please file a bug at ${bugUrl}`,\n\t\t\t\t`and include this message in full and if possible the content of the`,\n\t\t\t\t`file being parsed (or a reduced testcase).`,\n\t\t\t].join(\"\\n\"),\n\t\t),\n\t);\n}\n\nconst { values: argv, positionals } = (() => {\n\ttry {\n\t\treturn parseArgs({\n\t\t\targs: process.argv.slice(2),\n\t\t\toptions: {\n\t\t\t\tconfig: { type: \"string\" as const, short: \"c\" },\n\t\t\t\t\"dump-events\": { type: \"boolean\" as const, default: false },\n\t\t\t\t\"dump-source\": { type: \"boolean\" as const, default: false },\n\t\t\t\t\"dump-tokens\": { type: \"boolean\" as const, default: false },\n\t\t\t\t\"dump-tree\": { type: \"boolean\" as const, default: false },\n\t\t\t\text: { type: \"string\" as const, default: \"html\" },\n\t\t\t\tformatter: { type: \"string\" as const, short: \"f\", default: \"stylish\" },\n\t\t\t\thelp: { type: \"boolean\" as const, short: \"h\", default: false },\n\t\t\t\tinit: { type: \"boolean\" as const, default: false },\n\t\t\t\t\"max-warnings\": { type: \"string\" as const },\n\t\t\t\tperformance: { type: \"boolean\" as const, default: false },\n\t\t\t\tpreset: { type: \"string\" as const, short: \"p\" },\n\t\t\t\t\"print-config\": { type: \"boolean\" as const, default: false },\n\t\t\t\trule: { type: \"string\" as const },\n\t\t\t\tstdin: { type: \"boolean\" as const, default: false },\n\t\t\t\t\"stdin-filename\": { type: \"string\" as const },\n\t\t\t\tversion: { type: \"boolean\" as const, default: false },\n\t\t\t},\n\t\t\tallowPositionals: true,\n\t\t\tstrict: true,\n\t\t});\n\t} catch (err) {\n\t\tprocess.stderr.write(`${(err as Error).message}\\n`);\n\t\tprocess.exit(1);\n\t}\n})();\n\nfunction showUsage(): void {\n\tprocess.stdout.write(`${name}-${version}\nUsage: html-validate [OPTIONS] [FILENAME..] [DIR..]\n\nCommon options:\n --ext=STRING specify file extensions (commaseparated).\n -f, --formatter=FORMATTER specify the formatter to use.\n --max-warnings=INT number of warnings to trigger nonzero exit code\n -p, --preset=STRING configuration preset to use, use\n comma-separator for multiple presets. (default:\n \"recommended\")\n --rule=RULE:SEVERITY set additional rule, use comma separator for\n multiple.\n --stdin process markup from stdin.\n --stdin-filename=STRING specify filename to report when using stdin\n\nMiscellaneous:\n -c, --config=STRING use custom configuration file.\n --init initialize project with a new configuration\n --print-config output configuration for given file.\n -h, --help show help.\n --version show version.\n\nDebugging options:\n --dump-events output events during parsing.\n --dump-source output post-transformed source data.\n --dump-tokens output tokens from lexing stage.\n --dump-tree output nodes from the dom tree.\n --performance output performance data after validation.\n\nFormatters:\n\nMultiple formatters can be specified with a comma-separated list,\ne.g. \"json,checkstyle\" to enable both.\n\nTo capture output to a file use \"formatter=/path/to/file\",\ne.g. \"checkstyle=dist/html-validate.xml\"\n`);\n}\n\nfunction showVersion(): void {\n\tprocess.stdout.write(`${name}-${version}\\n`);\n}\n\nif (argv.stdin) {\n\tpositionals.push(\"-\");\n}\n\nif (argv.version) {\n\tshowVersion();\n\tprocess.exit();\n}\n\nif (argv.help) {\n\tshowUsage();\n\tprocess.exit();\n}\n\nif (positionals.length === 0) {\n\tconst mode = getMode(argv);\n\tif (mode === Mode.LINT) {\n\t\tshowUsage();\n\t\tprocess.exit(0);\n\t} else if (requiresFilename(mode)) {\n\t\tconst flag = modeToFlag(mode);\n\t\tconsole.error(`\\`${flag}\\` requires a filename.`);\n\t\tprocess.exit(1);\n\t}\n}\n\n/* check that supplied config file exists before creating CLI */\nif (argv.config !== undefined) {\n\tconst checkPath = path.resolve(argv.config);\n\tif (!fs.existsSync(checkPath)) {\n\t\tconsole.error(`The file \"${argv.config}\" was not found.`);\n\t\tconsole.error(`The location this file was checked for at was: \"${checkPath}\"`);\n\t\tprocess.exit(1);\n\t}\n}\n\n/* eslint-disable-next-line complexity -- for now */\nasync function run(): Promise<void> {\n\tconst cli = new CLI({\n\t\tconfigFile: argv.config,\n\t\tpreset: argv.preset,\n\t\trules: argv.rule,\n\t});\n\tconst mode = getMode(argv);\n\tconst formatter = await cli.getFormatter(argv.formatter);\n\tconst maxWarnings = Number.parseInt(argv[\"max-warnings\"] ?? \"-1\", 10);\n\tconst htmlvalidate = await cli.getValidator();\n\n\t/* sanity check: ensure maxWarnings has a valid value */\n\tif (Number.isNaN(maxWarnings)) {\n\t\tconsole.error(`Invalid value \"${String(argv[\"max-warnings\"])}\" given to --max-warnings`);\n\t\tprocess.exit(1);\n\t}\n\n\t/* parse extensions (used when expanding directories) */\n\tconst extensions = argv.ext.split(\",\").map((cur: string) => {\n\t\treturn cur.startsWith(\".\") ? cur.slice(1) : cur;\n\t});\n\n\tconst files = await cli.expandFiles(positionals, { extensions });\n\tif (files.length === 0 && mode !== Mode.INIT) {\n\t\tconsole.error(\"No files matching patterns\", positionals);\n\t\tprocess.exit(1);\n\t}\n\n\ttry {\n\t\t/* istanbul ignore next -- not tested with unittests */\n\t\tif (!haveImportMetaResolve()) {\n\t\t\tthrow new ImportResolveMissingError();\n\t\t}\n\n\t\tlet success: boolean;\n\t\tswitch (mode) {\n\t\t\tcase Mode.LINT: {\n\t\t\t\tsuccess = await lint(htmlvalidate, process.stdout, process.stderr, files, {\n\t\t\t\t\tformatter,\n\t\t\t\t\tmaxWarnings,\n\t\t\t\t\tperformance: argv.performance,\n\t\t\t\t\tstdinFilename: argv[\"stdin-filename\"] ?? false,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase Mode.INIT: {\n\t\t\t\tsuccess = await init(cli, process.stdout, { cwd: process.cwd() });\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase Mode.PRINT_CONFIG: {\n\t\t\t\tsuccess = await printConfig(htmlvalidate, process.stdout, files);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tsuccess = await dump(htmlvalidate, process.stdout, files, mode);\n\t\t\t}\n\t\t}\n\t\tprocess.exit(success ? 0 : 1);\n\t} catch (err) {\n\t\tif (err instanceof SchemaValidationError) {\n\t\t\thandleSchemaValidationError(console, err);\n\t\t} else if (isUserError(err)) {\n\t\t\thandleUserError(err);\n\t\t} else {\n\t\t\thandleUnknownError(err);\n\t\t}\n\t\tprocess.exit(1);\n\t}\n}\n\n/* eslint-disable-next-line unicorn/prefer-top-level-await -- technical debt, as long as we bundle and ship commonjs we cannot use TLA here */\nrun().catch((err: unknown) => {\n\tconsole.error(err);\n\tprocess.exit(1);\n});\n"],"names":["argv","pkgBugs"],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { F as FileSystemConfigLoader, H as HtmlValidate, c as cjsResolver, a as compatibilityCheck, e as esmResolver
|
|
2
|
-
export { A as Attribute, g as Config, f as ConfigError, C as ConfigLoader, D as DOMNode, o as DOMTokenList, p as DOMTree, q as DynamicValue, r as EventHandler, H as HtmlElement, M as MetaCopyableProperty, s as MetaTable, N as NestedError, u as
|
|
1
|
+
export { F as FileSystemConfigLoader, H as HtmlValidate, c as cjsResolver, a as compatibilityCheck, e as esmResolver } from './core-nodejs.js';
|
|
2
|
+
export { A as Attribute, g as Config, f as ConfigError, C as ConfigLoader, D as DOMNode, o as DOMTokenList, p as DOMTree, q as DynamicValue, r as EventHandler, H as HtmlElement, M as MetaCopyableProperty, s as MetaTable, N as NestedError, u as Node, a as Parser, P as PerformanceTracker, R as Reporter, w as ResolvedConfig, x as Rule, y as SchemaValidationError, z as Severity, S as StaticConfigLoader, T as TextClassification, B as TextContent, F as TextNode, U as UserError, W as WrappedError, G as ariaNaming, I as classifyNodeText, J as configPresets, K as defineConfig, L as definePlugin, k as formatterFactory, O as isUserError, Q as keywordPatternMatcher, V as ruleExists, X as sliceLocation, Y as staticResolver, v as version, Z as walk } from './core.js';
|
|
3
3
|
export { C as CLI } from './cli.js';
|
|
4
4
|
export { d as defineMetadata, m as metadataHelper } from './meta-helper.js';
|
|
5
5
|
import 'node:fs';
|
|
@@ -16,6 +16,5 @@ import './utils/natural-join.js';
|
|
|
16
16
|
import '@html-validate/stylish';
|
|
17
17
|
import 'semver';
|
|
18
18
|
import 'node:path/posix';
|
|
19
|
-
import 'glob';
|
|
20
19
|
import 'prompts';
|
|
21
20
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $ as codeFrameColumns, a0 as getEndLocation, a1 as getStartLocation } from './core.js';
|
|
2
2
|
import { MessageChannel, Worker, receiveMessageOnPort } from 'node:worker_threads';
|
|
3
3
|
import { l as legacyRequire } from './core-nodejs.js';
|
|
4
4
|
|
package/dist/esm/matchers.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { d as diverge, c as createSyncFn, f as flattenMessages } from './matcher-utils.js';
|
|
2
|
-
import { l as deepmerge,
|
|
2
|
+
import { l as deepmerge, a2 as workerPath } from './core.js';
|
|
3
3
|
|
|
4
4
|
function createMatcher$4() {
|
|
5
5
|
function toBeValid(report) {
|
package/dist/types/browser.d.ts
CHANGED
|
@@ -638,14 +638,6 @@ export declare class DOMTree {
|
|
|
638
638
|
get readyState(): "loading" | "complete";
|
|
639
639
|
/* Excluded from this release type: resolveMeta */
|
|
640
640
|
getElementsByTagName(tagName: string): HtmlElement[];
|
|
641
|
-
/**
|
|
642
|
-
* @deprecated use utility function `walk.depthFirst(..)` instead (since 8.21.0).
|
|
643
|
-
*/
|
|
644
|
-
visitDepthFirst(callback: (node: HtmlElement) => void): void;
|
|
645
|
-
/**
|
|
646
|
-
* @deprecated use `querySelector(..)` instead (since 8.21.0)
|
|
647
|
-
*/
|
|
648
|
-
find(callback: (node: HtmlElement) => boolean): HtmlElement | null;
|
|
649
641
|
querySelector(selector: string): HtmlElement | null;
|
|
650
642
|
querySelectorAll(selector: string): HtmlElement[];
|
|
651
643
|
}
|
|
@@ -1246,56 +1238,8 @@ export declare class HtmlValidate {
|
|
|
1246
1238
|
* @returns Contextual documentation or `null` if the rule does not exist.
|
|
1247
1239
|
*/
|
|
1248
1240
|
getContextualDocumentationSync(message: Pick<Message, "ruleId" | "context">, config: ResolvedConfig): RuleDocumentation | null;
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
*
|
|
1252
|
-
* Typical usage:
|
|
1253
|
-
*
|
|
1254
|
-
* ```js
|
|
1255
|
-
* const report = await htmlvalidate.validateFile("my-file.html");
|
|
1256
|
-
* for (const result of report.results){
|
|
1257
|
-
* const config = await htmlvalidate.getConfigFor(result.filePath);
|
|
1258
|
-
* for (const message of result.messages){
|
|
1259
|
-
* const documentation = await htmlvalidate.getRuleDocumentation(message.ruleId, config, message.context);
|
|
1260
|
-
* // do something with documentation
|
|
1261
|
-
* }
|
|
1262
|
-
* }
|
|
1263
|
-
* ```
|
|
1264
|
-
*
|
|
1265
|
-
* @public
|
|
1266
|
-
* @deprecated Deprecated since 8.0.0, use [[getContextualDocumentation]] instead.
|
|
1267
|
-
* @param ruleId - Rule to get documentation for.
|
|
1268
|
-
* @param config - If set it provides more accurate description by using the
|
|
1269
|
-
* correct configuration for the file.
|
|
1270
|
-
* @param context - If set to `Message.context` some rules can provide
|
|
1271
|
-
* contextual details and suggestions.
|
|
1272
|
-
*/
|
|
1273
|
-
getRuleDocumentation(ruleId: string, config?: ResolvedConfig | Promise<ResolvedConfig> | null, context?: unknown | null): Promise<RuleDocumentation | null>;
|
|
1274
|
-
/**
|
|
1275
|
-
* Get contextual documentation for the given rule.
|
|
1276
|
-
*
|
|
1277
|
-
* Typical usage:
|
|
1278
|
-
*
|
|
1279
|
-
* ```js
|
|
1280
|
-
* const report = htmlvalidate.validateFileSync("my-file.html");
|
|
1281
|
-
* for (const result of report.results){
|
|
1282
|
-
* const config = htmlvalidate.getConfigForSync(result.filePath);
|
|
1283
|
-
* for (const message of result.messages){
|
|
1284
|
-
* const documentation = htmlvalidate.getRuleDocumentationSync(message.ruleId, config, message.context);
|
|
1285
|
-
* // do something with documentation
|
|
1286
|
-
* }
|
|
1287
|
-
* }
|
|
1288
|
-
* ```
|
|
1289
|
-
*
|
|
1290
|
-
* @public
|
|
1291
|
-
* @deprecated Deprecated since 8.0.0, use [[getContextualDocumentationSync]] instead.
|
|
1292
|
-
* @param ruleId - Rule to get documentation for.
|
|
1293
|
-
* @param config - If set it provides more accurate description by using the
|
|
1294
|
-
* correct configuration for the file.
|
|
1295
|
-
* @param context - If set to `Message.context` some rules can provide
|
|
1296
|
-
* contextual details and suggestions.
|
|
1297
|
-
*/
|
|
1298
|
-
getRuleDocumentationSync(ruleId: string, config?: ResolvedConfig | null, context?: unknown | null): RuleDocumentation | null;
|
|
1241
|
+
/* Excluded from this release type: getRuleDocumentation */
|
|
1242
|
+
/* Excluded from this release type: getRuleDocumentationSync */
|
|
1299
1243
|
/* Excluded from this release type: getParserFor */
|
|
1300
1244
|
/**
|
|
1301
1245
|
* Get configuration for given filename.
|
|
@@ -1633,8 +1577,6 @@ export declare interface MetaData {
|
|
|
1633
1577
|
* does not directly affect the DOM tree.
|
|
1634
1578
|
*/
|
|
1635
1579
|
templateRoot?: boolean;
|
|
1636
|
-
/** @deprecated use {@link MetaAria.implicitRole} instead */
|
|
1637
|
-
implicitRole?: MetaImplicitRoleCallback;
|
|
1638
1580
|
/** WAI-ARIA attributes */
|
|
1639
1581
|
aria?: MetaAria;
|
|
1640
1582
|
deprecatedAttributes?: string[];
|
|
@@ -1705,8 +1647,6 @@ export declare interface MetaElement extends Omit<MetaData, "deprecatedAttribute
|
|
|
1705
1647
|
* does not directly affect the DOM tree.
|
|
1706
1648
|
*/
|
|
1707
1649
|
templateRoot: boolean;
|
|
1708
|
-
/** @deprecated Use {@link MetaAria.implicitRole} instead */
|
|
1709
|
-
implicitRole: MetaImplicitRoleCallback;
|
|
1710
1650
|
/** WAI-ARIA attributes */
|
|
1711
1651
|
aria: NormalizedMetaAria;
|
|
1712
1652
|
attributes: Record<string, MetaAttribute>;
|
|
@@ -1836,22 +1776,48 @@ export declare class NestedError extends Error {
|
|
|
1836
1776
|
/**
|
|
1837
1777
|
* @public
|
|
1838
1778
|
*/
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
}
|
|
1779
|
+
declare const Node_2: {
|
|
1780
|
+
readonly ELEMENT_NODE: 1 & {
|
|
1781
|
+
NODE_TYPE: 1;
|
|
1782
|
+
};
|
|
1783
|
+
readonly TEXT_NODE: 3 & {
|
|
1784
|
+
NODE_TYPE: 3;
|
|
1785
|
+
};
|
|
1786
|
+
readonly DOCUMENT_NODE: 9 & {
|
|
1787
|
+
NODE_TYPE: 9;
|
|
1788
|
+
};
|
|
1789
|
+
/** element wasn't closed */
|
|
1790
|
+
readonly CLOSED_OPEN: 0 & {
|
|
1791
|
+
CLOSED: 0;
|
|
1792
|
+
};
|
|
1793
|
+
/** element closed with end tag <p>...</p> */
|
|
1794
|
+
readonly CLOSED_END_TAG: 1 & {
|
|
1795
|
+
CLOSED: 1;
|
|
1796
|
+
};
|
|
1797
|
+
/** void element with omitted end tag <input> */
|
|
1798
|
+
readonly CLOSED_VOID_OMITTED: 2 & {
|
|
1799
|
+
CLOSED: 2;
|
|
1800
|
+
};
|
|
1801
|
+
/** self-closed void element <input/> */
|
|
1802
|
+
readonly CLOSED_VOID_SELF_CLOSED: 3 & {
|
|
1803
|
+
CLOSED: 3;
|
|
1804
|
+
};
|
|
1805
|
+
/** element with optional end tag <li>foo<li>bar */
|
|
1806
|
+
readonly CLOSED_IMPLICIT_CLOSED: 4 & {
|
|
1807
|
+
CLOSED: 4;
|
|
1808
|
+
};
|
|
1809
|
+
};
|
|
1810
|
+
export { Node_2 as Node }
|
|
1846
1811
|
|
|
1847
1812
|
/**
|
|
1848
1813
|
* @public
|
|
1849
1814
|
*/
|
|
1850
|
-
export declare
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1815
|
+
export declare type NodeClosed = typeof Node_2.CLOSED_OPEN | typeof Node_2.CLOSED_END_TAG | typeof Node_2.CLOSED_VOID_OMITTED | typeof Node_2.CLOSED_VOID_SELF_CLOSED | typeof Node_2.CLOSED_IMPLICIT_CLOSED;
|
|
1816
|
+
|
|
1817
|
+
/**
|
|
1818
|
+
* @public
|
|
1819
|
+
*/
|
|
1820
|
+
export declare type NodeType = typeof Node_2.ELEMENT_NODE | typeof Node_2.TEXT_NODE | typeof Node_2.DOCUMENT_NODE;
|
|
1855
1821
|
|
|
1856
1822
|
/**
|
|
1857
1823
|
* Element ARIA metadata.
|
|
@@ -2967,88 +2933,6 @@ export declare interface UserErrorData extends Error {
|
|
|
2967
2933
|
prettyFormat(): string | undefined;
|
|
2968
2934
|
}
|
|
2969
2935
|
|
|
2970
|
-
/**
|
|
2971
|
-
* Helper class to validate elements against metadata rules.
|
|
2972
|
-
*
|
|
2973
|
-
* @public
|
|
2974
|
-
*/
|
|
2975
|
-
export declare class Validator {
|
|
2976
|
-
/**
|
|
2977
|
-
* Test if element is used in a proper context.
|
|
2978
|
-
*
|
|
2979
|
-
* @param node - Element to test.
|
|
2980
|
-
* @param rules - List of rules.
|
|
2981
|
-
* @returns `true` if element passes all tests.
|
|
2982
|
-
*/
|
|
2983
|
-
static validatePermitted(node: HtmlElement, rules: Permitted | null): boolean;
|
|
2984
|
-
/**
|
|
2985
|
-
* Test if an element is used the correct amount of times.
|
|
2986
|
-
*
|
|
2987
|
-
* For instance, a `<table>` element can only contain a single `<tbody>`
|
|
2988
|
-
* child. If multiple `<tbody>` exists this test will fail both nodes.
|
|
2989
|
-
* Note that this is called on the parent but will fail the children violating
|
|
2990
|
-
* the rule.
|
|
2991
|
-
*
|
|
2992
|
-
* @param children - Array of children to validate.
|
|
2993
|
-
* @param rules - List of rules of the parent element.
|
|
2994
|
-
* @returns `true` if the parent element of the children passes the test.
|
|
2995
|
-
*/
|
|
2996
|
-
static validateOccurrences(children: HtmlElement[], rules: Permitted | null, cb: (node: HtmlElement, category: string) => void): boolean;
|
|
2997
|
-
/**
|
|
2998
|
-
* Validate elements order.
|
|
2999
|
-
*
|
|
3000
|
-
* Given a parent element with children and metadata containing permitted
|
|
3001
|
-
* order it will validate each children and ensure each one exists in the
|
|
3002
|
-
* specified order.
|
|
3003
|
-
*
|
|
3004
|
-
* For instance, for a `<table>` element the `<caption>` element must come
|
|
3005
|
-
* before a `<thead>` which must come before `<tbody>`.
|
|
3006
|
-
*
|
|
3007
|
-
* @param children - Array of children to validate.
|
|
3008
|
-
*/
|
|
3009
|
-
static validateOrder(children: HtmlElement[], rules: PermittedOrder | null, cb: (node: HtmlElement, prev: HtmlElement) => void): boolean;
|
|
3010
|
-
/**
|
|
3011
|
-
* Validate element ancestors.
|
|
3012
|
-
*
|
|
3013
|
-
* Check if an element has the required set of elements. At least one of the
|
|
3014
|
-
* selectors must match.
|
|
3015
|
-
*/
|
|
3016
|
-
static validateAncestors(node: HtmlElement, rules: RequiredAncestors | null): boolean;
|
|
3017
|
-
/**
|
|
3018
|
-
* Validate element required content.
|
|
3019
|
-
*
|
|
3020
|
-
* Check if an element has the required set of elements. At least one of the
|
|
3021
|
-
* selectors must match.
|
|
3022
|
-
*
|
|
3023
|
-
* Returns `[]` when valid or a list of required but missing tagnames or
|
|
3024
|
-
* categories.
|
|
3025
|
-
*/
|
|
3026
|
-
static validateRequiredContent(node: HtmlElement, rules: RequiredContent | null): CategoryOrTag[];
|
|
3027
|
-
/**
|
|
3028
|
-
* Test if an attribute has an allowed value and/or format.
|
|
3029
|
-
*
|
|
3030
|
-
* @param attr - Attribute to test.
|
|
3031
|
-
* @param rules - Element attribute metadta.
|
|
3032
|
-
* @returns `true` if attribute passes all tests.
|
|
3033
|
-
*/
|
|
3034
|
-
static validateAttribute(attr: Attribute, rules: Record<string, MetaAttribute | undefined>): boolean;
|
|
3035
|
-
private static validateAttributeValue;
|
|
3036
|
-
private static validatePermittedRule;
|
|
3037
|
-
/**
|
|
3038
|
-
* Validate node against a content category.
|
|
3039
|
-
*
|
|
3040
|
-
* When matching parent nodes against permitted parents use the superset
|
|
3041
|
-
* parameter to also match for `@flow`. E.g. if a node expects a `@phrasing`
|
|
3042
|
-
* parent it should also allow `@flow` parent since `@phrasing` is a subset of
|
|
3043
|
-
* `@flow`.
|
|
3044
|
-
*
|
|
3045
|
-
* @param node - The node to test against
|
|
3046
|
-
* @param category - Name of category with `@` prefix or tag name.
|
|
3047
|
-
* @param defaultMatch - The default return value when node categories is not known.
|
|
3048
|
-
*/
|
|
3049
|
-
static validatePermittedCategory(node: HtmlElement, category: string, defaultMatch: boolean): boolean;
|
|
3050
|
-
}
|
|
3051
|
-
|
|
3052
2936
|
/** @public */
|
|
3053
2937
|
export declare const version: string;
|
|
3054
2938
|
|