html-validate 8.20.1 → 8.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/cjs/browser.js +1 -1
  2. package/dist/cjs/cli.js.map +1 -1
  3. package/dist/cjs/core-nodejs.js.map +1 -1
  4. package/dist/cjs/core.js +1781 -1613
  5. package/dist/cjs/core.js.map +1 -1
  6. package/dist/cjs/elements.js +4 -6
  7. package/dist/cjs/elements.js.map +1 -1
  8. package/dist/cjs/html-validate.js +0 -1
  9. package/dist/cjs/html-validate.js.map +1 -1
  10. package/dist/cjs/index.js +1 -1
  11. package/dist/cjs/jest-diff.js.map +1 -1
  12. package/dist/cjs/jest.js +0 -1
  13. package/dist/cjs/jest.js.map +1 -1
  14. package/dist/cjs/matcher-utils.js.map +1 -1
  15. package/dist/cjs/matchers.js.map +1 -1
  16. package/dist/cjs/tsdoc-metadata.json +1 -1
  17. package/dist/cjs/vitest.js +0 -1
  18. package/dist/cjs/vitest.js.map +1 -1
  19. package/dist/es/browser.js +1 -2
  20. package/dist/es/browser.js.map +1 -1
  21. package/dist/es/cli.js.map +1 -1
  22. package/dist/es/core-browser.js +1 -1
  23. package/dist/es/core-nodejs.js +1 -1
  24. package/dist/es/core-nodejs.js.map +1 -1
  25. package/dist/es/core.js +1781 -1614
  26. package/dist/es/core.js.map +1 -1
  27. package/dist/es/elements.js +4 -6
  28. package/dist/es/elements.js.map +1 -1
  29. package/dist/es/html-validate.js +1 -2
  30. package/dist/es/html-validate.js.map +1 -1
  31. package/dist/es/index.js +1 -2
  32. package/dist/es/index.js.map +1 -1
  33. package/dist/es/jest-diff.js.map +1 -1
  34. package/dist/es/jest.js +0 -1
  35. package/dist/es/jest.js.map +1 -1
  36. package/dist/es/matcher-utils.js.map +1 -1
  37. package/dist/es/matchers-jestonly.js +1 -1
  38. package/dist/es/matchers.js.map +1 -1
  39. package/dist/es/vitest.js +0 -1
  40. package/dist/es/vitest.js.map +1 -1
  41. package/dist/tsdoc-metadata.json +1 -1
  42. package/dist/types/browser.d.ts +65 -18
  43. package/dist/types/index.d.ts +65 -18
  44. package/package.json +23 -27
@@ -2,14 +2,13 @@ import fs from 'fs';
2
2
  import path from 'node:path';
3
3
  import kleur from 'kleur';
4
4
  import minimist from 'minimist';
5
- import { K as name, v as version, o as SchemaValidationError, U as UserError, L as bugs } from './core.js';
5
+ import { L as name, v as version, o as SchemaValidationError, U as UserError, O as bugs } from './core.js';
6
6
  import { M as Mode, m as modeToFlag, C as CLI, l as lint, i as init, p as printConfig, d as dump, h as handleSchemaValidationError } from './cli.js';
7
7
  import 'ajv';
8
8
  import './elements.js';
9
9
  import './meta-helper.js';
10
10
  import './utils/natural-join.js';
11
11
  import '@sidvind/better-ajv-errors';
12
- import '@babel/code-frame';
13
12
  import '@html-validate/stylish';
14
13
  import 'semver';
15
14
  import './core-nodejs.js';
@@ -1 +1 @@
1
- {"version":3,"file":"html-validate.js","sources":["../../src/cli/html-validate.ts"],"sourcesContent":["/* eslint-disable no-console, n/no-process-exit, sonarjs/no-duplicate-string -- as expected from a cli app */\nimport fs from \"fs\";\nimport path from \"node:path\";\nimport kleur from \"kleur\";\nimport minimist from \"minimist\";\nimport { SchemaValidationError, UserError } from \"..\";\nimport { name, version, bugs as pkgBugs } from \"../generated/package\";\nimport { CLI } from \"./cli\";\nimport { handleSchemaValidationError } from \"./errors\";\nimport { Mode, modeToFlag } from \"./mode\";\nimport { lint } from \"./actions/lint\";\nimport { init } from \"./actions/init\";\nimport { printConfig } from \"./actions/print-config\";\nimport { dump } from \"./actions/dump\";\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\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, any>): 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: UserError): 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: [\"c\", \"config\", \"ext\", \"f\", \"formatter\", \"max-warnings\", \"rule\", \"stdin-filename\"],\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\"print-config\",\n\t\t\"stdin\",\n\t\t\"version\",\n\t],\n\talias: {\n\t\tc: \"config\",\n\t\tf: \"formatter\",\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 --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\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 (typeof argv.config !== \"undefined\") {\n\tconst checkPath = path.resolve(argv.config);\n\tif (!fs.existsSync(checkPath)) {\n\t\tconsole.log(`The file \"${String(argv.config)}\" was not found.`);\n\t\tconsole.log(`The location this file was checked for at was: \"${String(checkPath)}\"`);\n\t\tprocess.exit(1);\n\t}\n}\n\nconst cli = new CLI({\n\tconfigFile: argv.config,\n\trules: argv.rule,\n});\nconst mode = getMode(argv);\nconst formatter = cli.getFormatter(argv.formatter);\nconst maxWarnings = parseInt(argv[\"max-warnings\"] ?? \"-1\", 10);\nconst htmlvalidate = cli.getValidator();\n\n/* sanity check: ensure maxWarnings has a valid value */\nif (isNaN(maxWarnings)) {\n\tconsole.log(`Invalid value \"${String(argv[\"max-warnings\"])}\" given to --max-warnings`);\n\tprocess.exit(1);\n}\n\n/* parse extensions (used when expanding directories) */\nconst extensions = argv.ext.split(\",\").map((cur: string) => {\n\treturn cur.startsWith(\".\") ? cur.slice(1) : cur;\n});\n\nconst files = cli.expandFiles(argv._, { extensions });\nif (files.length === 0 && mode !== Mode.INIT) {\n\tconsole.error(\"No files matching patterns\", argv._);\n\tprocess.exit(1);\n}\n\nasync function run(): Promise<void> {\n\ttry {\n\t\tlet success: boolean;\n\t\tif (mode === Mode.LINT) {\n\t\t\tsuccess = await lint(htmlvalidate, process.stdout, files, {\n\t\t\t\tformatter,\n\t\t\t\tmaxWarnings,\n\t\t\t\tstdinFilename: argv[\"stdin-filename\"] ?? false,\n\t\t\t});\n\t\t} else if (mode === Mode.INIT) {\n\t\t\tsuccess = await init(cli, process.stdout, { cwd: process.cwd() });\n\t\t} else if (mode === Mode.PRINT_CONFIG) {\n\t\t\tsuccess = await printConfig(htmlvalidate, process.stdout, files);\n\t\t} else {\n\t\t\tsuccess = await dump(htmlvalidate, process.stdout, files, mode);\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 (err instanceof UserError) {\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\nrun().catch((err: unknown) => {\n\tconsole.error(err);\n\tprocess.exit(1);\n});\n"],"names":["argv","mode","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, sonarjs/no-duplicate-string -- as expected from a cli app */\nimport fs from \"fs\";\nimport path from \"node:path\";\nimport kleur from \"kleur\";\nimport minimist from \"minimist\";\nimport { SchemaValidationError, UserError } from \"..\";\nimport { name, version, bugs as pkgBugs } from \"../generated/package\";\nimport { CLI } from \"./cli\";\nimport { handleSchemaValidationError } from \"./errors\";\nimport { Mode, modeToFlag } from \"./mode\";\nimport { lint } from \"./actions/lint\";\nimport { init } from \"./actions/init\";\nimport { printConfig } from \"./actions/print-config\";\nimport { dump } from \"./actions/dump\";\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\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, any>): 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: UserError): 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: [\"c\", \"config\", \"ext\", \"f\", \"formatter\", \"max-warnings\", \"rule\", \"stdin-filename\"],\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\"print-config\",\n\t\t\"stdin\",\n\t\t\"version\",\n\t],\n\talias: {\n\t\tc: \"config\",\n\t\tf: \"formatter\",\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 --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\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 (typeof argv.config !== \"undefined\") {\n\tconst checkPath = path.resolve(argv.config);\n\tif (!fs.existsSync(checkPath)) {\n\t\tconsole.log(`The file \"${String(argv.config)}\" was not found.`);\n\t\tconsole.log(`The location this file was checked for at was: \"${String(checkPath)}\"`);\n\t\tprocess.exit(1);\n\t}\n}\n\nconst cli = new CLI({\n\tconfigFile: argv.config,\n\trules: argv.rule,\n});\nconst mode = getMode(argv);\nconst formatter = cli.getFormatter(argv.formatter);\nconst maxWarnings = parseInt(argv[\"max-warnings\"] ?? \"-1\", 10);\nconst htmlvalidate = cli.getValidator();\n\n/* sanity check: ensure maxWarnings has a valid value */\nif (isNaN(maxWarnings)) {\n\tconsole.log(`Invalid value \"${String(argv[\"max-warnings\"])}\" given to --max-warnings`);\n\tprocess.exit(1);\n}\n\n/* parse extensions (used when expanding directories) */\nconst extensions = argv.ext.split(\",\").map((cur: string) => {\n\treturn cur.startsWith(\".\") ? cur.slice(1) : cur;\n});\n\nconst files = cli.expandFiles(argv._, { extensions });\nif (files.length === 0 && mode !== Mode.INIT) {\n\tconsole.error(\"No files matching patterns\", argv._);\n\tprocess.exit(1);\n}\n\nasync function run(): Promise<void> {\n\ttry {\n\t\tlet success: boolean;\n\t\tif (mode === Mode.LINT) {\n\t\t\tsuccess = await lint(htmlvalidate, process.stdout, files, {\n\t\t\t\tformatter,\n\t\t\t\tmaxWarnings,\n\t\t\t\tstdinFilename: argv[\"stdin-filename\"] ?? false,\n\t\t\t});\n\t\t} else if (mode === Mode.INIT) {\n\t\t\tsuccess = await init(cli, process.stdout, { cwd: process.cwd() });\n\t\t} else if (mode === Mode.PRINT_CONFIG) {\n\t\t\tsuccess = await printConfig(htmlvalidate, process.stdout, files);\n\t\t} else {\n\t\t\tsuccess = await dump(htmlvalidate, process.stdout, files, mode);\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 (err instanceof UserError) {\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\nrun().catch((err: unknown) => {\n\tconsole.error(err);\n\tprocess.exit(1);\n});\n"],"names":["argv","mode","pkgBugs"],"mappings":"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"}
package/dist/es/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { F as FileSystemConfigLoader, c as cjsResolver, a as compatibilityCheck, n as nodejsResolver } from './core-nodejs.js';
2
- export { A as Attribute, C as Config, a as ConfigError, b as ConfigLoader, D as DOMNode, h as DOMTokenList, j as DOMTree, k as DynamicValue, G as EventHandler, l as HtmlElement, H as HtmlValidate, M as MetaCopyableProperty, p as MetaTable, n as NestedError, N as NodeClosed, m as NodeType, E as Parser, z as Reporter, R as ResolvedConfig, r as Rule, o as SchemaValidationError, S as Severity, f as StaticConfigLoader, u as TextClassification, q as TextContent, T as TextNode, U as UserError, V as Validator, W as WrappedError, t as ariaNaming, w as classifyNodeText, P as configPresets, c as defineConfig, B as definePlugin, g as formatterFactory, x as keywordPatternMatcher, F as ruleExists, y as sliceLocation, s as staticResolver, v as version } from './core.js';
2
+ export { A as Attribute, C as Config, a as ConfigError, b as ConfigLoader, D as DOMNode, h as DOMTokenList, j as DOMTree, k as DynamicValue, I as EventHandler, l as HtmlElement, H as HtmlValidate, M as MetaCopyableProperty, p as MetaTable, n as NestedError, N as NodeClosed, m as NodeType, E as Parser, z as Reporter, R as ResolvedConfig, r as Rule, o as SchemaValidationError, S as Severity, f as StaticConfigLoader, u as TextClassification, q as TextContent, T as TextNode, U as UserError, V as Validator, W as WrappedError, t as ariaNaming, w as classifyNodeText, P as configPresets, c as defineConfig, B as definePlugin, g as formatterFactory, x as keywordPatternMatcher, F as ruleExists, y as sliceLocation, s as staticResolver, v as version, G 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';
@@ -11,7 +11,6 @@ import './elements.js';
11
11
  import '@sidvind/better-ajv-errors';
12
12
  import './utils/natural-join.js';
13
13
  import 'fs';
14
- import '@babel/code-frame';
15
14
  import '@html-validate/stylish';
16
15
  import 'semver';
17
16
  import 'glob';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"jest-diff.js","sources":["../../src/jest/utils/diff.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment -- this code needs to work\n * with multiple different versions of jest and it does verification of which\n * one is actually present but the other variants will cause errors, as is expected */\n\nimport jestDiffDefault, * as jestDiff from \"jest-diff\";\n\n/**\n * @internal\n */\nexport interface DiffOptions {\n\taAnnotation?: string;\n\tbAnnotation?: string;\n\texpand?: boolean;\n}\n\n/**\n * @internal\n */\nexport type DiffFunction = (a: any, b: any, options?: DiffOptions) => string | null;\n\n/* ignore typing for compatibility so it will seem \"impossible\" but different\n * version will yield different source */\n/* istanbul ignore next: this is covered by integration tests */\nconst diffCandidates: Array<DiffFunction | undefined> = [\n\t// @ts-ignore\n\tjestDiffDefault?.diff,\n\t// @ts-ignore\n\tjestDiffDefault,\n\t// @ts-ignore\n\tjestDiff?.diff,\n\t// @ts-ignore\n\tjestDiff,\n];\n\nconst isFunction = (fn: unknown): boolean => typeof fn === \"function\";\n\n/* eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- assume\n * one of the candidate matches, there will be a reasonable error later on if\n * not */\nexport const diff: DiffFunction = diffCandidates.find(isFunction)!;\n"],"names":["jestDiffDefault"],"mappings":";;;AAAA,IAAA,EAAA,CAAA;AAuBA,MAAM,cAAkD,GAAA;AAAA;AAAA,EAAA,CAEvD,EAAiB,GAAAA,iBAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA;AAAA;AAAA,EAEjBA,iBAAA;AAAA;AAAA,EAEA,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,IAAA;AAAA;AAAA,EAEV,QAAA;AACD,CAAA,CAAA;AAEA,MAAM,UAAa,GAAA,CAAC,EAAyB,KAAA,OAAO,EAAO,KAAA,UAAA,CAAA;AAK9C,MAAA,IAAA,GAAqB,cAAe,CAAA,IAAA,CAAK,UAAU;;;;"}
1
+ {"version":3,"file":"jest-diff.js","sources":["../../src/jest/utils/diff.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unnecessary-condition --\n * this code needs to work with multiple different versions of jest and it does\n * verification of which one is actually present but the other variants will\n * cause errors, as is expected */\n\nimport jestDiffDefault, * as jestDiff from \"jest-diff\";\n\n/**\n * @internal\n */\nexport interface DiffOptions {\n\taAnnotation?: string;\n\tbAnnotation?: string;\n\texpand?: boolean;\n}\n\n/**\n * @internal\n */\nexport type DiffFunction = (a: any, b: any, options?: DiffOptions) => string | null;\n\n/* ignore typing for compatibility so it will seem \"impossible\" but different\n * version will yield different source */\n/* istanbul ignore next: this is covered by integration tests */\nconst diffCandidates: Array<DiffFunction | undefined> = [\n\t// @ts-ignore\n\tjestDiffDefault?.diff,\n\t// @ts-ignore\n\tjestDiffDefault,\n\t// @ts-ignore\n\tjestDiff?.diff,\n\t// @ts-ignore\n\tjestDiff,\n];\n\nconst isFunction = (fn: unknown): boolean => typeof fn === \"function\";\n\n/* eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- assume\n * one of the candidate matches, there will be a reasonable error later on if\n * not */\nexport const diff: DiffFunction = diffCandidates.find(isFunction)!;\n"],"names":["jestDiffDefault"],"mappings":";;;AAAA,IAAA,EAAA,CAAA;AAwBA,MAAM,cAAkD,GAAA;AAAA;AAAA,EAAA,CAEvD,EAAiB,GAAAA,iBAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA;AAAA;AAAA,EAEjBA,iBAAA;AAAA;AAAA,EAEA,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,IAAA;AAAA;AAAA,EAEV,QAAA;AACD,CAAA,CAAA;AAEA,MAAM,UAAa,GAAA,CAAC,EAAyB,KAAA,OAAO,EAAO,KAAA,UAAA,CAAA;AAK9C,MAAA,IAAA,GAAqB,cAAe,CAAA,IAAA,CAAK,UAAU;;;;"}
package/dist/es/jest.js CHANGED
@@ -9,7 +9,6 @@ import './meta-helper.js';
9
9
  import './utils/natural-join.js';
10
10
  import '@sidvind/better-ajv-errors';
11
11
  import 'fs';
12
- import '@babel/code-frame';
13
12
  import 'kleur';
14
13
  import '@html-validate/stylish';
15
14
  import 'semver';
@@ -1 +1 @@
1
- {"version":3,"file":"jest.js","sources":["../../src/jest/jest.ts"],"sourcesContent":["import \"./augmentation\";\n\nimport {\n\ttoBeValid,\n\ttoBeInvalid,\n\ttoHTMLValidate,\n\ttoHaveError,\n\ttoHaveErrors,\n\ttoMatchCodeframe,\n\ttoMatchInlineCodeframe,\n} from \"./matchers\";\nimport { diff } from \"./utils\";\n\nexpect.extend({\n\ttoBeValid: toBeValid(),\n\ttoBeInvalid: toBeInvalid(),\n\ttoHTMLValidate: toHTMLValidate(expect, diff),\n\ttoHaveError: toHaveError(expect, diff),\n\ttoHaveErrors: toHaveErrors(expect, diff),\n\ttoMatchCodeframe: toMatchCodeframe(),\n\ttoMatchInlineCodeframe: toMatchInlineCodeframe(),\n});\n"],"names":["toBeValid","toBeInvalid","toHTMLValidate","toHaveError","toHaveErrors","toMatchCodeframe","toMatchInlineCodeframe"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAaA,MAAA,CAAO,MAAO,CAAA;AAAA,EACb,WAAWA,aAAU,EAAA;AAAA,EACrB,aAAaC,eAAY,EAAA;AAAA,EACzB,cAAA,EAAgBC,eAAe,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,EAC3C,WAAA,EAAaC,eAAY,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,EACrC,YAAA,EAAcC,eAAa,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,EACvC,kBAAkBC,eAAiB,EAAA;AAAA,EACnC,wBAAwBC,eAAuB,EAAA;AAChD,CAAC,CAAA"}
1
+ {"version":3,"file":"jest.js","sources":["../../src/jest/jest.ts"],"sourcesContent":["import \"./augmentation\";\n\nimport {\n\ttoBeValid,\n\ttoBeInvalid,\n\ttoHTMLValidate,\n\ttoHaveError,\n\ttoHaveErrors,\n\ttoMatchCodeframe,\n\ttoMatchInlineCodeframe,\n} from \"./matchers\";\nimport { diff } from \"./utils\";\n\nexpect.extend({\n\ttoBeValid: toBeValid(),\n\ttoBeInvalid: toBeInvalid(),\n\ttoHTMLValidate: toHTMLValidate(expect, diff),\n\ttoHaveError: toHaveError(expect, diff),\n\ttoHaveErrors: toHaveErrors(expect, diff),\n\ttoMatchCodeframe: toMatchCodeframe(),\n\ttoMatchInlineCodeframe: toMatchInlineCodeframe(),\n});\n"],"names":["toBeValid","toBeInvalid","toHTMLValidate","toHaveError","toHaveErrors","toMatchCodeframe","toMatchInlineCodeframe"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAaA,MAAA,CAAO,MAAO,CAAA;AAAA,EACb,WAAWA,aAAU,EAAA;AAAA,EACrB,aAAaC,eAAY,EAAA;AAAA,EACzB,cAAA,EAAgBC,eAAe,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,EAC3C,WAAA,EAAaC,eAAY,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,EACrC,YAAA,EAAcC,eAAa,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,EACvC,kBAAkBC,eAAiB,EAAA;AAAA,EACnC,wBAAwBC,eAAuB,EAAA;AAChD,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"matcher-utils.js","sources":["../../src/jest/utils/is-thenable.ts","../../src/jest/utils/diverge.ts","../../src/jest/utils/flatten-messages.ts"],"sourcesContent":["/**\n * @internal\n */\nexport function isThenable<T>(value: T | Promise<T>): value is Promise<T> {\n\treturn value && typeof value === \"object\" && \"then\" in value && typeof value.then === \"function\";\n}\n","import { isThenable } from \"./is-thenable\";\nimport { type MatcherContext } from \"./matcher-context\";\nimport { type MatcherResult } from \"./matcher-result\";\n\ntype SyncCallback<T, TArgs extends any[]> = (\n\tthis: MatcherContext,\n\tactual: T,\n\t...args: TArgs\n) => MatcherResult;\n\n/**\n * @internal\n */\nexport interface MaybeAsyncCallback<TActual, TArgs extends any[]> {\n\t(this: MatcherContext, actual: TActual, ...args: TArgs): MatcherResult;\n\t(this: MatcherContext, actual: Promise<TActual>, ...args: TArgs): Promise<MatcherResult>;\n}\n\n/**\n * Creates a wrapped function based on the passed function.\n *\n * The returned function takes either a `T` or `Promise<T>`. If `T` the result\n * will be synchronous or if `Promise<T>` the result will be asynchronous.\n *\n * In practice this means that if you pass a synchronous object into it you will\n * maintain synchronous code but if you pass an asynchronous object you must\n * await the result.\n *\n * @internal\n */\nexport function diverge<T, TArgs extends any[]>(\n\tfn: SyncCallback<T, TArgs>,\n): MaybeAsyncCallback<T, TArgs> {\n\tfunction diverged(this: MatcherContext, actual: T, ...args: TArgs): MatcherResult;\n\tfunction diverged(\n\t\tthis: MatcherContext,\n\t\tactual: Promise<T>,\n\t\t...args: TArgs\n\t): Promise<MatcherResult>;\n\tfunction diverged(\n\t\tthis: MatcherContext,\n\t\tactual: T | Promise<T>,\n\t\t...args: TArgs\n\t): MatcherResult | Promise<MatcherResult> {\n\t\tif (isThenable(actual)) {\n\t\t\treturn actual.then((resolved) => fn.call(this, resolved, ...args));\n\t\t} else {\n\t\t\treturn fn.call(this, actual, ...args);\n\t\t}\n\t}\n\treturn diverged;\n}\n","import { type Message, type Report, type Result } from \"../../reporter\";\n\n/**\n * Takes all messages from all files and flattens to a single array.\n */\nexport function flattenMessages(report: Report): Message[] {\n\treturn report.results.reduce((aggregated: Message[], result: Result) => {\n\t\treturn aggregated.concat(result.messages);\n\t}, []);\n}\n"],"names":[],"mappings":"AAGO,SAAS,WAAc,KAA4C,EAAA;AACzE,EAAO,OAAA,KAAA,IAAS,OAAO,KAAU,KAAA,QAAA,IAAY,UAAU,KAAS,IAAA,OAAO,MAAM,IAAS,KAAA,UAAA,CAAA;AACvF;;ACyBO,SAAS,QACf,EAC+B,EAAA;AAO/B,EAAS,SAAA,QAAA,CAER,WACG,IACsC,EAAA;AACzC,IAAI,IAAA,UAAA,CAAW,MAAM,CAAG,EAAA;AACvB,MAAO,OAAA,MAAA,CAAO,IAAK,CAAA,CAAC,QAAa,KAAA,EAAA,CAAG,KAAK,IAAM,EAAA,QAAA,EAAU,GAAG,IAAI,CAAC,CAAA,CAAA;AAAA,KAC3D,MAAA;AACN,MAAA,OAAO,EAAG,CAAA,IAAA,CAAK,IAAM,EAAA,MAAA,EAAQ,GAAG,IAAI,CAAA,CAAA;AAAA,KACrC;AAAA,GACD;AACA,EAAO,OAAA,QAAA,CAAA;AACR;;AC9CO,SAAS,gBAAgB,MAA2B,EAAA;AAC1D,EAAA,OAAO,MAAO,CAAA,OAAA,CAAQ,MAAO,CAAA,CAAC,YAAuB,MAAmB,KAAA;AACvE,IAAO,OAAA,UAAA,CAAW,MAAO,CAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AAAA,GACzC,EAAG,EAAE,CAAA,CAAA;AACN;;;;"}
1
+ {"version":3,"file":"matcher-utils.js","sources":["../../src/jest/utils/is-thenable.ts","../../src/jest/utils/diverge.ts","../../src/jest/utils/flatten-messages.ts"],"sourcesContent":["/**\n * @internal\n */\nexport function isThenable<T>(value: T | Promise<T>): value is Promise<T> {\n\treturn value && typeof value === \"object\" && \"then\" in value && typeof value.then === \"function\";\n}\n","import { isThenable } from \"./is-thenable\";\nimport { type MatcherContext } from \"./matcher-context\";\nimport { type MatcherResult } from \"./matcher-result\";\n\ntype SyncCallback<T, TArgs extends any[]> = (\n\tthis: MatcherContext,\n\tactual: T,\n\t...args: TArgs\n) => MatcherResult;\n\n/**\n * @internal\n */\nexport interface MaybeAsyncCallback<TActual, TArgs extends any[]> {\n\t(this: MatcherContext, actual: TActual, ...args: TArgs): MatcherResult;\n\t(this: MatcherContext, actual: Promise<TActual>, ...args: TArgs): Promise<MatcherResult>;\n}\n\n/**\n * Creates a wrapped function based on the passed function.\n *\n * The returned function takes either a `T` or `Promise<T>`. If `T` the result\n * will be synchronous or if `Promise<T>` the result will be asynchronous.\n *\n * In practice this means that if you pass a synchronous object into it you will\n * maintain synchronous code but if you pass an asynchronous object you must\n * await the result.\n *\n * @internal\n */\nexport function diverge<T, TArgs extends any[]>(\n\tfn: SyncCallback<T, TArgs>,\n): MaybeAsyncCallback<T, TArgs> {\n\tfunction diverged(this: MatcherContext, actual: T, ...args: TArgs): MatcherResult;\n\tfunction diverged(\n\t\tthis: MatcherContext,\n\t\tactual: Promise<T>,\n\t\t...args: TArgs\n\t): Promise<MatcherResult>;\n\tfunction diverged(\n\t\tthis: MatcherContext,\n\t\tactual: T | Promise<T>,\n\t\t...args: TArgs\n\t): MatcherResult | Promise<MatcherResult> {\n\t\tif (isThenable(actual)) {\n\t\t\treturn actual.then((resolved) => fn.call(this, resolved, ...args));\n\t\t} else {\n\t\t\treturn fn.call(this, actual, ...args);\n\t\t}\n\t}\n\treturn diverged;\n}\n","import { type Message } from \"../../message\";\nimport { type Report, type Result } from \"../../reporter\";\n\n/**\n * Takes all messages from all files and flattens to a single array.\n */\nexport function flattenMessages(report: Report): Message[] {\n\treturn report.results.reduce((aggregated: Message[], result: Result) => {\n\t\treturn aggregated.concat(result.messages);\n\t}, []);\n}\n"],"names":[],"mappings":"AAGO,SAAS,WAAc,KAA4C,EAAA;AACzE,EAAO,OAAA,KAAA,IAAS,OAAO,KAAU,KAAA,QAAA,IAAY,UAAU,KAAS,IAAA,OAAO,MAAM,IAAS,KAAA,UAAA,CAAA;AACvF;;ACyBO,SAAS,QACf,EAC+B,EAAA;AAO/B,EAAS,SAAA,QAAA,CAER,WACG,IACsC,EAAA;AACzC,IAAI,IAAA,UAAA,CAAW,MAAM,CAAG,EAAA;AACvB,MAAO,OAAA,MAAA,CAAO,IAAK,CAAA,CAAC,QAAa,KAAA,EAAA,CAAG,KAAK,IAAM,EAAA,QAAA,EAAU,GAAG,IAAI,CAAC,CAAA,CAAA;AAAA,KAC3D,MAAA;AACN,MAAA,OAAO,EAAG,CAAA,IAAA,CAAK,IAAM,EAAA,MAAA,EAAQ,GAAG,IAAI,CAAA,CAAA;AAAA,KACrC;AAAA,GACD;AACA,EAAO,OAAA,QAAA,CAAA;AACR;;AC7CO,SAAS,gBAAgB,MAA2B,EAAA;AAC1D,EAAA,OAAO,MAAO,CAAA,OAAA,CAAQ,MAAO,CAAA,CAAC,YAAuB,MAAmB,KAAA;AACvE,IAAO,OAAA,UAAA,CAAW,MAAO,CAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AAAA,GACzC,EAAG,EAAE,CAAA,CAAA;AACN;;;;"}
@@ -1,6 +1,6 @@
1
1
  import kleur from 'kleur';
2
2
  import { toMatchSnapshot, toMatchInlineSnapshot } from 'jest-snapshot';
3
- import { J as codeframe } from './core.js';
3
+ import { K as codeframe } from './core.js';
4
4
  import { g as getResults } from './matchers.js';
5
5
  import { d as diverge, i as isThenable } from './matcher-utils.js';
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"matchers.js","sources":["../../src/jest/matchers/to-be-valid.ts","../../src/jest/matchers/to-be-invalid.ts","../../src/jest/matchers/to-htmlvalidate.ts","../../src/jest/matchers/to-have-error.ts","../../src/jest/matchers/to-have-errors.ts","../../src/jest/matchers/get-results.ts"],"sourcesContent":["import { type Report } from \"../../reporter\";\nimport { type MatcherResult, type MaybeAsyncCallback, diverge } from \"../utils\";\n\nfunction createMatcher(): MaybeAsyncCallback<Report, []> {\n\tfunction toBeValid(report: Report): MatcherResult {\n\t\tif (report.valid) {\n\t\t\treturn {\n\t\t\t\tpass: true,\n\t\t\t\tmessage: /* istanbul ignore next */ () => \"Result should not contain error\",\n\t\t\t};\n\t\t} else {\n\t\t\tconst firstError = report.results[0].messages[0];\n\t\t\treturn {\n\t\t\t\tpass: false,\n\t\t\t\tmessage: () => `Result should be valid but had error \"${firstError.message}\"`,\n\t\t\t};\n\t\t}\n\t}\n\treturn diverge(toBeValid);\n}\n\nexport { createMatcher as toBeValid };\n","import { type Report } from \"../../reporter\";\nimport { type MatcherResult, type MaybeAsyncCallback, diverge } from \"../utils\";\n\nfunction createMatcher(): MaybeAsyncCallback<Report, []> {\n\tfunction toBeInvalid(report: Report): MatcherResult {\n\t\tif (report.valid) {\n\t\t\treturn {\n\t\t\t\tpass: false,\n\t\t\t\tmessage: () => \"Result should be invalid but had no errors\",\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tpass: true,\n\t\t\t\tmessage: /* istanbul ignore next */ () => \"Result should not contain error\",\n\t\t\t};\n\t\t}\n\t}\n\treturn diverge(toBeInvalid);\n}\n\nexport { createMatcher as toBeInvalid };\n","import deepmerge from \"deepmerge\";\nimport { type ConfigData } from \"../../config\";\nimport { FileSystemConfigLoader } from \"../../config/loaders/file-system\";\nimport { HtmlValidate } from \"../../htmlvalidate\";\nimport { type Message } from \"../../reporter\";\nimport {\n\ttype DiffFunction,\n\ttype MatcherContext,\n\ttype MatcherExpect,\n\ttype MatcherResult,\n\ttype MaybeAsyncCallback,\n\tdiverge,\n} from \"../utils\";\n\nfunction isMessage(arg: any): arg is Partial<Message> {\n\tif (!arg) {\n\t\treturn false;\n\t}\n\treturn Boolean(\n\t\targ.ruleId ||\n\t\t\targ.severity ||\n\t\t\targ.message ||\n\t\t\targ.offset ||\n\t\t\targ.line ||\n\t\t\targ.column ||\n\t\t\targ.size ||\n\t\t\targ.selector ||\n\t\t\targ.context,\n\t);\n}\n\nfunction isConfig(arg: any): arg is ConfigData {\n\tif (!arg) {\n\t\treturn false;\n\t}\n\treturn Boolean(\n\t\targ.root || arg.extends || arg.elements || arg.plugin || arg.transform || arg.rules,\n\t);\n}\n\nfunction isString(arg: any): arg is string {\n\treturn typeof arg === \"string\";\n}\n\nfunction getMarkup(src: unknown): string {\n\tif (typeof HTMLElement !== \"undefined\" && src instanceof HTMLElement) {\n\t\treturn (src as { outerHTML: string }).outerHTML;\n\t}\n\t/* istanbul ignore else: prototype only allows string or HTMLElement */\n\tif (typeof src === \"string\") {\n\t\treturn src;\n\t} else {\n\t\tthrow new Error(`Failed to get markup from \"${typeof src}\" argument`);\n\t}\n}\n\ntype Arg1 = Partial<Message> | ConfigData | string;\ntype Arg2 = ConfigData | string;\ntype Arg3 = string;\n\nfunction createMatcher(\n\texpect: MatcherExpect,\n\tdiff: DiffFunction | undefined,\n): MaybeAsyncCallback<unknown, [Arg1?, Arg2?, Arg3?]> {\n\tfunction toHTMLValidate(\n\t\tthis: MatcherContext,\n\t\tactual: unknown,\n\t\targ0?: Arg1,\n\t\targ1?: Arg2,\n\t\targ2?: Arg3,\n\t): MatcherResult {\n\t\tconst markup = getMarkup(actual);\n\t\tconst message = isMessage(arg0) ? arg0 : undefined;\n\t\tconst config = isConfig(arg0) ? arg0 : isConfig(arg1) ? arg1 : undefined;\n\t\tconst filename = isString(arg0) ? arg0 : isString(arg1) ? arg1 : arg2;\n\t\treturn toHTMLValidateImpl.call(this, expect, diff, markup, message, config, filename);\n\t}\n\treturn diverge(toHTMLValidate);\n}\n\nfunction toHTMLValidateImpl(\n\tthis: MatcherContext,\n\texpect: MatcherExpect,\n\tdiff: DiffFunction | undefined,\n\tactual: string,\n\texpectedError?: Partial<Message>,\n\tuserConfig?: ConfigData,\n\tfilename?: string,\n): MatcherResult {\n\tconst defaultConfig = {\n\t\trules: {\n\t\t\t/* jsdom normalizes style so disabling rule when using this matcher or it\n\t\t\t * gets quite noisy when configured with self-closing */\n\t\t\t\"void-style\": \"off\",\n\t\t},\n\t};\n\tconst config = deepmerge(defaultConfig, userConfig ?? {});\n\t/* istanbul ignore next: cant figure out when this would be unset */\n\tconst actualFilename = filename ?? this.testPath ?? \"inline\";\n\tconst loader = new FileSystemConfigLoader({\n\t\textends: [\"html-validate:recommended\"],\n\t});\n\tconst htmlvalidate = new HtmlValidate(loader);\n\tconst report = htmlvalidate.validateStringSync(actual, actualFilename, config);\n\tconst pass = report.valid;\n\tconst result = report.results[0];\n\tif (pass) {\n\t\treturn { pass, message: () => \"HTML is valid when an error was expected\" };\n\t} else {\n\t\tif (expectedError) {\n\t\t\tconst actual = result.messages;\n\t\t\tconst expected = expect.arrayContaining([expect.objectContaining(expectedError)]);\n\t\t\tconst errorPass = this.equals(actual, expected);\n\t\t\tconst diffString = diff\n\t\t\t\t? diff(expected, actual, {\n\t\t\t\t\t\texpand: this.expand,\n\t\t\t\t\t\taAnnotation: \"Expected error\",\n\t\t\t\t\t\tbAnnotation: \"Actual error\",\n\t\t\t\t\t})\n\t\t\t\t: /* istanbul ignore next */ undefined;\n\t\t\tconst hint = this.utils.matcherHint(\".not.toHTMLValidate\", undefined, undefined, {\n\t\t\t\tcomment: \"expected error\",\n\t\t\t});\n\t\t\tconst expectedErrorMessage = (): string =>\n\t\t\t\t[\n\t\t\t\t\thint,\n\t\t\t\t\t\"\",\n\t\t\t\t\t\"Expected error to be present:\",\n\t\t\t\t\tthis.utils.printExpected(expectedError),\n\t\t\t\t\t/* istanbul ignore next */ diffString ? `\\n${diffString}` : \"\",\n\t\t\t\t].join(\"\\n\");\n\t\t\treturn { pass: !errorPass, message: expectedErrorMessage, actual, expected };\n\t\t}\n\n\t\tconst errors = result.messages.map((message) => ` ${message.message} [${message.ruleId}]`);\n\t\treturn {\n\t\t\tpass,\n\t\t\tmessage: () =>\n\t\t\t\t[\"Expected HTML to be valid but had the following errors:\", \"\"].concat(errors).join(\"\\n\"),\n\t\t};\n\t}\n}\n\nexport { createMatcher as toHTMLValidate };\n","import { type Message, type Report } from \"../../reporter\";\nimport {\n\ttype DiffFunction,\n\ttype MatcherContext,\n\ttype MatcherExpect,\n\ttype MatcherResult,\n\ttype MaybeAsyncCallback,\n\tdiverge,\n} from \"../utils\";\nimport { flattenMessages } from \"../utils/flatten-messages\";\n\nfunction toHaveErrorImpl(\n\tcontext: MatcherContext,\n\texpect: MatcherExpect,\n\tdiff: DiffFunction | undefined,\n\tactual: Report,\n\texpected: Partial<Message>,\n): MatcherResult {\n\tconst flattened = flattenMessages(actual);\n\tconst matcher = [expect.objectContaining(expected)];\n\tconst pass = context.equals(flattened, matcher);\n\tconst diffString = diff\n\t\t? diff(matcher, flattened, { expand: context.expand })\n\t\t: /* istanbul ignore next */ undefined;\n\tconst hint = context.utils.matcherHint(\".toHaveError\");\n\tconst prettyExpected = context.utils.printExpected(matcher);\n\tconst prettyReceived = context.utils.printReceived(flattened);\n\tconst resultMessage = (): string => {\n\t\treturn [\n\t\t\thint,\n\t\t\t\"\",\n\t\t\t\"Expected error to equal:\",\n\t\t\t` ${prettyExpected}`,\n\t\t\t\"Received:\",\n\t\t\t` ${prettyReceived}`,\n\t\t\t/* istanbul ignore next */ diffString ? `\\nDifference:\\n\\n${diffString}` : \"\",\n\t\t].join(\"\\n\");\n\t};\n\treturn { pass, message: resultMessage, actual: flattened, expected: matcher };\n}\n\nfunction createMatcher(\n\texpect: MatcherExpect,\n\tdiff: DiffFunction | undefined,\n):\n\t| MaybeAsyncCallback<Report, [Partial<Message>]>\n\t| MaybeAsyncCallback<Report, [string, string, any?]> {\n\tfunction toHaveError(\n\t\tthis: MatcherContext,\n\t\tactual: Report,\n\t\terror: Partial<Message>,\n\t): MatcherResult;\n\tfunction toHaveError(\n\t\tthis: MatcherContext,\n\t\tactual: Report,\n\t\truleId: string,\n\t\tmessage: string,\n\t\tcontext?: any,\n\t): MatcherResult;\n\tfunction toHaveError(\n\t\tthis: MatcherContext,\n\t\tactual: Report,\n\t\targ1: string | Partial<Message>,\n\t\targ2?: string,\n\t\targ3?: any,\n\t): MatcherResult {\n\t\tif (typeof arg1 === \"string\") {\n\t\t\tconst expected: Partial<Message> = {\n\t\t\t\truleId: arg1,\n\t\t\t\tmessage: arg2,\n\t\t\t};\n\t\t\tif (arg3) {\n\t\t\t\t/* eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- this is supposed to accept anything */\n\t\t\t\texpected.context = arg3;\n\t\t\t}\n\t\t\treturn toHaveErrorImpl(this, expect, diff, actual, expected);\n\t\t} else {\n\t\t\treturn toHaveErrorImpl(this, expect, diff, actual, arg1);\n\t\t}\n\t}\n\treturn diverge(toHaveError);\n}\n\nexport { createMatcher as toHaveError };\n","/* eslint-disable prefer-template -- technical debt, should be refactored */\n\nimport { type Report } from \"../../reporter\";\nimport {\n\ttype DiffFunction,\n\ttype MatcherContext,\n\ttype MatcherExpect,\n\ttype MatcherResult,\n\ttype MaybeAsyncCallback,\n\tdiverge,\n\tflattenMessages,\n} from \"../utils\";\n\nfunction createMatcher(\n\texpect: MatcherExpect,\n\tdiff: DiffFunction | undefined,\n): MaybeAsyncCallback<Report, [Array<[string, string] | Record<string, unknown>>]> {\n\tfunction toHaveErrors(\n\t\tthis: MatcherContext,\n\t\treport: Report,\n\t\terrors: Array<[string, string] | Record<string, unknown>>,\n\t): MatcherResult {\n\t\tconst flattened = flattenMessages(report);\n\t\tconst matcher = errors.map((entry) => {\n\t\t\tif (Array.isArray(entry)) {\n\t\t\t\tconst [ruleId, message] = entry;\n\t\t\t\treturn expect.objectContaining({ ruleId, message });\n\t\t\t} else {\n\t\t\t\treturn expect.objectContaining(entry);\n\t\t\t}\n\t\t});\n\t\tconst pass = this.equals(flattened, matcher);\n\t\tconst diffString = diff\n\t\t\t? diff(matcher, flattened, { expand: this.expand })\n\t\t\t: /* istanbul ignore next */ undefined;\n\t\tconst resultMessage = (): string =>\n\t\t\tthis.utils.matcherHint(\".toHaveErrors\") +\n\t\t\t\"\\n\\n\" +\n\t\t\t\"Expected error to equal:\\n\" +\n\t\t\t` ${this.utils.printExpected(matcher)}\\n` +\n\t\t\t\"Received:\\n\" +\n\t\t\t` ${this.utils.printReceived(flattened)}` +\n\t\t\t/* istanbul ignore next */ (diffString ? `\\n\\nDifference:\\n\\n${diffString}` : \"\");\n\n\t\treturn { pass, message: resultMessage };\n\t}\n\treturn diverge(toHaveErrors);\n}\n\nexport { createMatcher as toHaveErrors };\n","import { FileSystemConfigLoader } from \"../../config/loaders/file-system\";\nimport { type Report, type Result } from \"../../reporter\";\nimport { HtmlValidate } from \"../../htmlvalidate\";\n\n/**\n * @internal\n */\nexport function getResults(filename: string, value: Report | string): Result[] {\n\tif (typeof value === \"string\") {\n\t\tconst loader = new FileSystemConfigLoader({\n\t\t\textends: [\"html-validate:recommended\"],\n\t\t});\n\t\tconst htmlvalidate = new HtmlValidate(loader);\n\t\tconst report = htmlvalidate.validateStringSync(value, filename, {\n\t\t\trules: {\n\t\t\t\t\"void-style\": \"off\",\n\t\t\t},\n\t\t});\n\t\treturn report.results.map((it) => {\n\t\t\treturn { ...it, filePath: \"inline\" };\n\t\t});\n\t} else {\n\t\treturn value.results;\n\t}\n}\n"],"names":["createMatcher","actual"],"mappings":"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"}
1
+ {"version":3,"file":"matchers.js","sources":["../../src/jest/matchers/to-be-valid.ts","../../src/jest/matchers/to-be-invalid.ts","../../src/jest/matchers/to-htmlvalidate.ts","../../src/jest/matchers/to-have-error.ts","../../src/jest/matchers/to-have-errors.ts","../../src/jest/matchers/get-results.ts"],"sourcesContent":["import { type Report } from \"../../reporter\";\nimport { type MatcherResult, type MaybeAsyncCallback, diverge } from \"../utils\";\n\nfunction createMatcher(): MaybeAsyncCallback<Report, []> {\n\tfunction toBeValid(report: Report): MatcherResult {\n\t\tif (report.valid) {\n\t\t\treturn {\n\t\t\t\tpass: true,\n\t\t\t\tmessage: /* istanbul ignore next */ () => \"Result should not contain error\",\n\t\t\t};\n\t\t} else {\n\t\t\tconst firstError = report.results[0].messages[0];\n\t\t\treturn {\n\t\t\t\tpass: false,\n\t\t\t\tmessage: () => `Result should be valid but had error \"${firstError.message}\"`,\n\t\t\t};\n\t\t}\n\t}\n\treturn diverge(toBeValid);\n}\n\nexport { createMatcher as toBeValid };\n","import { type Report } from \"../../reporter\";\nimport { type MatcherResult, type MaybeAsyncCallback, diverge } from \"../utils\";\n\nfunction createMatcher(): MaybeAsyncCallback<Report, []> {\n\tfunction toBeInvalid(report: Report): MatcherResult {\n\t\tif (report.valid) {\n\t\t\treturn {\n\t\t\t\tpass: false,\n\t\t\t\tmessage: () => \"Result should be invalid but had no errors\",\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tpass: true,\n\t\t\t\tmessage: /* istanbul ignore next */ () => \"Result should not contain error\",\n\t\t\t};\n\t\t}\n\t}\n\treturn diverge(toBeInvalid);\n}\n\nexport { createMatcher as toBeInvalid };\n","import deepmerge from \"deepmerge\";\nimport { type ConfigData } from \"../../config\";\nimport { FileSystemConfigLoader } from \"../../config/loaders/file-system\";\nimport { HtmlValidate } from \"../../htmlvalidate\";\nimport { type Message } from \"../../message\";\nimport {\n\ttype DiffFunction,\n\ttype MatcherContext,\n\ttype MatcherExpect,\n\ttype MatcherResult,\n\ttype MaybeAsyncCallback,\n\tdiverge,\n} from \"../utils\";\n\nfunction isMessage(arg: any): arg is Partial<Message> {\n\tif (!arg) {\n\t\treturn false;\n\t}\n\treturn Boolean(\n\t\targ.ruleId ||\n\t\t\targ.severity ||\n\t\t\targ.message ||\n\t\t\targ.offset ||\n\t\t\targ.line ||\n\t\t\targ.column ||\n\t\t\targ.size ||\n\t\t\targ.selector ||\n\t\t\targ.context,\n\t);\n}\n\nfunction isConfig(arg: any): arg is ConfigData {\n\tif (!arg) {\n\t\treturn false;\n\t}\n\treturn Boolean(\n\t\targ.root || arg.extends || arg.elements || arg.plugin || arg.transform || arg.rules,\n\t);\n}\n\nfunction isString(arg: any): arg is string {\n\treturn typeof arg === \"string\";\n}\n\nfunction getMarkup(src: unknown): string {\n\tif (typeof HTMLElement !== \"undefined\" && src instanceof HTMLElement) {\n\t\treturn (src as { outerHTML: string }).outerHTML;\n\t}\n\t/* istanbul ignore else: prototype only allows string or HTMLElement */\n\tif (typeof src === \"string\") {\n\t\treturn src;\n\t} else {\n\t\tthrow new Error(`Failed to get markup from \"${typeof src}\" argument`);\n\t}\n}\n\ntype Arg1 = Partial<Message> | ConfigData | string;\ntype Arg2 = ConfigData | string;\ntype Arg3 = string;\n\nfunction createMatcher(\n\texpect: MatcherExpect,\n\tdiff: DiffFunction | undefined,\n): MaybeAsyncCallback<unknown, [Arg1?, Arg2?, Arg3?]> {\n\tfunction toHTMLValidate(\n\t\tthis: MatcherContext,\n\t\tactual: unknown,\n\t\targ0?: Arg1,\n\t\targ1?: Arg2,\n\t\targ2?: Arg3,\n\t): MatcherResult {\n\t\tconst markup = getMarkup(actual);\n\t\tconst message = isMessage(arg0) ? arg0 : undefined;\n\t\tconst config = isConfig(arg0) ? arg0 : isConfig(arg1) ? arg1 : undefined;\n\t\tconst filename = isString(arg0) ? arg0 : isString(arg1) ? arg1 : arg2;\n\t\treturn toHTMLValidateImpl.call(this, expect, diff, markup, message, config, filename);\n\t}\n\treturn diverge(toHTMLValidate);\n}\n\nfunction toHTMLValidateImpl(\n\tthis: MatcherContext,\n\texpect: MatcherExpect,\n\tdiff: DiffFunction | undefined,\n\tactual: string,\n\texpectedError?: Partial<Message>,\n\tuserConfig?: ConfigData,\n\tfilename?: string,\n): MatcherResult {\n\tconst defaultConfig = {\n\t\trules: {\n\t\t\t/* jsdom normalizes style so disabling rule when using this matcher or it\n\t\t\t * gets quite noisy when configured with self-closing */\n\t\t\t\"void-style\": \"off\",\n\t\t},\n\t};\n\tconst config = deepmerge(defaultConfig, userConfig ?? {});\n\t/* istanbul ignore next: cant figure out when this would be unset */\n\tconst actualFilename = filename ?? this.testPath ?? \"inline\";\n\tconst loader = new FileSystemConfigLoader({\n\t\textends: [\"html-validate:recommended\"],\n\t});\n\tconst htmlvalidate = new HtmlValidate(loader);\n\tconst report = htmlvalidate.validateStringSync(actual, actualFilename, config);\n\tconst pass = report.valid;\n\tconst result = report.results[0];\n\tif (pass) {\n\t\treturn { pass, message: () => \"HTML is valid when an error was expected\" };\n\t} else {\n\t\tif (expectedError) {\n\t\t\tconst actual = result.messages;\n\t\t\tconst expected = expect.arrayContaining([expect.objectContaining(expectedError)]);\n\t\t\tconst errorPass = this.equals(actual, expected);\n\t\t\tconst diffString = diff\n\t\t\t\t? diff(expected, actual, {\n\t\t\t\t\t\texpand: this.expand,\n\t\t\t\t\t\taAnnotation: \"Expected error\",\n\t\t\t\t\t\tbAnnotation: \"Actual error\",\n\t\t\t\t\t})\n\t\t\t\t: /* istanbul ignore next */ undefined;\n\t\t\tconst hint = this.utils.matcherHint(\".not.toHTMLValidate\", undefined, undefined, {\n\t\t\t\tcomment: \"expected error\",\n\t\t\t});\n\t\t\tconst expectedErrorMessage = (): string =>\n\t\t\t\t[\n\t\t\t\t\thint,\n\t\t\t\t\t\"\",\n\t\t\t\t\t\"Expected error to be present:\",\n\t\t\t\t\tthis.utils.printExpected(expectedError),\n\t\t\t\t\t/* istanbul ignore next */ diffString ? `\\n${diffString}` : \"\",\n\t\t\t\t].join(\"\\n\");\n\t\t\treturn { pass: !errorPass, message: expectedErrorMessage, actual, expected };\n\t\t}\n\n\t\tconst errors = result.messages.map((message) => ` ${message.message} [${message.ruleId}]`);\n\t\treturn {\n\t\t\tpass,\n\t\t\tmessage: () =>\n\t\t\t\t[\"Expected HTML to be valid but had the following errors:\", \"\"].concat(errors).join(\"\\n\"),\n\t\t};\n\t}\n}\n\nexport { createMatcher as toHTMLValidate };\n","import { type Message } from \"../../message\";\nimport { type Report } from \"../../reporter\";\nimport {\n\ttype DiffFunction,\n\ttype MatcherContext,\n\ttype MatcherExpect,\n\ttype MatcherResult,\n\ttype MaybeAsyncCallback,\n\tdiverge,\n} from \"../utils\";\nimport { flattenMessages } from \"../utils/flatten-messages\";\n\nfunction toHaveErrorImpl(\n\tcontext: MatcherContext,\n\texpect: MatcherExpect,\n\tdiff: DiffFunction | undefined,\n\tactual: Report,\n\texpected: Partial<Message>,\n): MatcherResult {\n\tconst flattened = flattenMessages(actual);\n\tconst matcher = [expect.objectContaining(expected)];\n\tconst pass = context.equals(flattened, matcher);\n\tconst diffString = diff\n\t\t? diff(matcher, flattened, { expand: context.expand })\n\t\t: /* istanbul ignore next */ undefined;\n\tconst hint = context.utils.matcherHint(\".toHaveError\");\n\tconst prettyExpected = context.utils.printExpected(matcher);\n\tconst prettyReceived = context.utils.printReceived(flattened);\n\tconst resultMessage = (): string => {\n\t\treturn [\n\t\t\thint,\n\t\t\t\"\",\n\t\t\t\"Expected error to equal:\",\n\t\t\t` ${prettyExpected}`,\n\t\t\t\"Received:\",\n\t\t\t` ${prettyReceived}`,\n\t\t\t/* istanbul ignore next */ diffString ? `\\nDifference:\\n\\n${diffString}` : \"\",\n\t\t].join(\"\\n\");\n\t};\n\treturn { pass, message: resultMessage, actual: flattened, expected: matcher };\n}\n\nfunction createMatcher(\n\texpect: MatcherExpect,\n\tdiff: DiffFunction | undefined,\n):\n\t| MaybeAsyncCallback<Report, [Partial<Message>]>\n\t| MaybeAsyncCallback<Report, [string, string, any?]> {\n\tfunction toHaveError(\n\t\tthis: MatcherContext,\n\t\tactual: Report,\n\t\terror: Partial<Message>,\n\t): MatcherResult;\n\tfunction toHaveError(\n\t\tthis: MatcherContext,\n\t\tactual: Report,\n\t\truleId: string,\n\t\tmessage: string,\n\t\tcontext?: any,\n\t): MatcherResult;\n\tfunction toHaveError(\n\t\tthis: MatcherContext,\n\t\tactual: Report,\n\t\targ1: string | Partial<Message>,\n\t\targ2?: string,\n\t\targ3?: any,\n\t): MatcherResult {\n\t\tif (typeof arg1 === \"string\") {\n\t\t\tconst expected: Partial<Message> = {\n\t\t\t\truleId: arg1,\n\t\t\t\tmessage: arg2,\n\t\t\t};\n\t\t\tif (arg3) {\n\t\t\t\t/* eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- this is supposed to accept anything */\n\t\t\t\texpected.context = arg3;\n\t\t\t}\n\t\t\treturn toHaveErrorImpl(this, expect, diff, actual, expected);\n\t\t} else {\n\t\t\treturn toHaveErrorImpl(this, expect, diff, actual, arg1);\n\t\t}\n\t}\n\treturn diverge(toHaveError);\n}\n\nexport { createMatcher as toHaveError };\n","/* eslint-disable prefer-template -- technical debt, should be refactored */\n\nimport { type Report } from \"../../reporter\";\nimport {\n\ttype DiffFunction,\n\ttype MatcherContext,\n\ttype MatcherExpect,\n\ttype MatcherResult,\n\ttype MaybeAsyncCallback,\n\tdiverge,\n\tflattenMessages,\n} from \"../utils\";\n\nfunction createMatcher(\n\texpect: MatcherExpect,\n\tdiff: DiffFunction | undefined,\n): MaybeAsyncCallback<Report, [Array<[string, string] | Record<string, unknown>>]> {\n\tfunction toHaveErrors(\n\t\tthis: MatcherContext,\n\t\treport: Report,\n\t\terrors: Array<[string, string] | Record<string, unknown>>,\n\t): MatcherResult {\n\t\tconst flattened = flattenMessages(report);\n\t\tconst matcher = errors.map((entry) => {\n\t\t\tif (Array.isArray(entry)) {\n\t\t\t\tconst [ruleId, message] = entry;\n\t\t\t\treturn expect.objectContaining({ ruleId, message });\n\t\t\t} else {\n\t\t\t\treturn expect.objectContaining(entry);\n\t\t\t}\n\t\t});\n\t\tconst pass = this.equals(flattened, matcher);\n\t\tconst diffString = diff\n\t\t\t? diff(matcher, flattened, { expand: this.expand })\n\t\t\t: /* istanbul ignore next */ undefined;\n\t\tconst resultMessage = (): string =>\n\t\t\tthis.utils.matcherHint(\".toHaveErrors\") +\n\t\t\t\"\\n\\n\" +\n\t\t\t\"Expected error to equal:\\n\" +\n\t\t\t` ${this.utils.printExpected(matcher)}\\n` +\n\t\t\t\"Received:\\n\" +\n\t\t\t` ${this.utils.printReceived(flattened)}` +\n\t\t\t/* istanbul ignore next */ (diffString ? `\\n\\nDifference:\\n\\n${diffString}` : \"\");\n\n\t\treturn { pass, message: resultMessage };\n\t}\n\treturn diverge(toHaveErrors);\n}\n\nexport { createMatcher as toHaveErrors };\n","import { FileSystemConfigLoader } from \"../../config/loaders/file-system\";\nimport { type Report, type Result } from \"../../reporter\";\nimport { HtmlValidate } from \"../../htmlvalidate\";\n\n/**\n * @internal\n */\nexport function getResults(filename: string, value: Report | string): Result[] {\n\tif (typeof value === \"string\") {\n\t\tconst loader = new FileSystemConfigLoader({\n\t\t\textends: [\"html-validate:recommended\"],\n\t\t});\n\t\tconst htmlvalidate = new HtmlValidate(loader);\n\t\tconst report = htmlvalidate.validateStringSync(value, filename, {\n\t\t\trules: {\n\t\t\t\t\"void-style\": \"off\",\n\t\t\t},\n\t\t});\n\t\treturn report.results.map((it) => {\n\t\t\treturn { ...it, filePath: \"inline\" };\n\t\t});\n\t} else {\n\t\treturn value.results;\n\t}\n}\n"],"names":["createMatcher","actual"],"mappings":"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"}
package/dist/es/vitest.js CHANGED
@@ -8,7 +8,6 @@ import './meta-helper.js';
8
8
  import './utils/natural-join.js';
9
9
  import '@sidvind/better-ajv-errors';
10
10
  import 'fs';
11
- import '@babel/code-frame';
12
11
  import 'kleur';
13
12
  import '@html-validate/stylish';
14
13
  import 'semver';
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.js","sources":["../../src/vitest/vitest.ts"],"sourcesContent":["import \"./augmentation\";\n\nimport { expect } from \"vitest\";\nimport {\n\ttoBeValid,\n\ttoBeInvalid,\n\ttoHTMLValidate,\n\ttoHaveError,\n\ttoHaveErrors,\n} from \"../jest/matchers\";\n\nexpect.extend({\n\ttoBeValid: toBeValid(),\n\ttoBeInvalid: toBeInvalid(),\n\ttoHTMLValidate: toHTMLValidate(expect, undefined),\n\ttoHaveError: toHaveError(expect, undefined),\n\ttoHaveErrors: toHaveErrors(expect, undefined),\n});\n"],"names":["toBeValid","toBeInvalid","toHTMLValidate","toHaveError","toHaveErrors"],"mappings":";;;;;;;;;;;;;;;;;;;AAWA,MAAA,CAAO,MAAO,CAAA;AAAA,EACb,WAAWA,aAAU,EAAA;AAAA,EACrB,aAAaC,eAAY,EAAA;AAAA,EACzB,cAAA,EAAgBC,eAAe,CAAA,MAAA,EAAQ,KAAS,CAAA,CAAA;AAAA,EAChD,WAAA,EAAaC,eAAY,CAAA,MAAA,EAAQ,KAAS,CAAA,CAAA;AAAA,EAC1C,YAAA,EAAcC,eAAa,CAAA,MAAA,EAAQ,KAAS,CAAA,CAAA;AAC7C,CAAC,CAAA"}
1
+ {"version":3,"file":"vitest.js","sources":["../../src/vitest/vitest.ts"],"sourcesContent":["import \"./augmentation\";\n\nimport { expect } from \"vitest\";\nimport {\n\ttoBeValid,\n\ttoBeInvalid,\n\ttoHTMLValidate,\n\ttoHaveError,\n\ttoHaveErrors,\n} from \"../jest/matchers\";\n\nexpect.extend({\n\ttoBeValid: toBeValid(),\n\ttoBeInvalid: toBeInvalid(),\n\ttoHTMLValidate: toHTMLValidate(expect, undefined),\n\ttoHaveError: toHaveError(expect, undefined),\n\ttoHaveErrors: toHaveErrors(expect, undefined),\n});\n"],"names":["toBeValid","toBeInvalid","toHTMLValidate","toHaveError","toHaveErrors"],"mappings":";;;;;;;;;;;;;;;;;;AAWA,MAAA,CAAO,MAAO,CAAA;AAAA,EACb,WAAWA,aAAU,EAAA;AAAA,EACrB,aAAaC,eAAY,EAAA;AAAA,EACzB,cAAA,EAAgBC,eAAe,CAAA,MAAA,EAAQ,KAAS,CAAA,CAAA;AAAA,EAChD,WAAA,EAAaC,eAAY,CAAA,MAAA,EAAQ,KAAS,CAAA,CAAA;AAAA,EAC1C,YAAA,EAAcC,eAAa,CAAA,MAAA,EAAQ,KAAS,CAAA,CAAA;AAC7C,CAAC,CAAA"}
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.47.0"
8
+ "packageVersion": "7.47.7"
9
9
  }
10
10
  ]
11
11
  }
@@ -517,15 +517,7 @@ export declare class DOMNode {
517
517
  * Rules blocked by using directives are added here.
518
518
  */
519
519
  private blockedRules;
520
- /**
521
- * Create a new DOMNode.
522
- *
523
- * @param nodeType - What node type to create.
524
- * @param nodeName - What node name to use. For `HtmlElement` this corresponds
525
- * to the tagName but other node types have specific predefined values.
526
- * @param location - Source code location of this node.
527
- */
528
- constructor(nodeType: NodeType, nodeName: string | undefined, location: Location_2);
520
+ /* Excluded from this release type: __constructor */
529
521
  /* Excluded from this release type: cacheEnable */
530
522
  /**
531
523
  * Fetch cached value from this DOM node.
@@ -636,17 +628,28 @@ export { DOMTokenList_2 as DOMTokenList }
636
628
  export declare class DOMTree {
637
629
  readonly root: HtmlElement;
638
630
  private active;
631
+ private _readyState;
639
632
  doctype: string | null;
640
- constructor(location: Location_2);
641
- pushActive(node: HtmlElement): void;
642
- popActive(): void;
643
- getActive(): HtmlElement;
633
+ /* Excluded from this release type: __constructor */
634
+ /* Excluded from this release type: pushActive */
635
+ /* Excluded from this release type: popActive */
636
+ /* Excluded from this release type: getActive */
644
637
  /**
645
- * Resolve dynamic meta expressions.
638
+ * Describes the loading state of the document.
639
+ *
640
+ * When `"loading"` it is still not safe to use functions such as
641
+ * `querySelector` or presence of attributes, child nodes, etc.
646
642
  */
647
- resolveMeta(table: MetaTable): void;
643
+ get readyState(): "loading" | "complete";
644
+ /* Excluded from this release type: resolveMeta */
648
645
  getElementsByTagName(tagName: string): HtmlElement[];
646
+ /**
647
+ * @deprecated use utility function `walk.depthFirst(..)` instead (since 8.21.0).
648
+ */
649
649
  visitDepthFirst(callback: (node: HtmlElement) => void): void;
650
+ /**
651
+ * @deprecated use `querySelector(..)` instead (since 8.21.0)
652
+ */
650
653
  find(callback: (node: HtmlElement) => boolean): HtmlElement | null;
651
654
  querySelector(selector: string): HtmlElement | null;
652
655
  querySelectorAll(selector: string): HtmlElement[];
@@ -757,7 +760,26 @@ export declare class HtmlElement extends DOMNode {
757
760
  private metaElement;
758
761
  private annotation;
759
762
  /* Excluded from this release type: _adapter */
760
- constructor(tagName: string | undefined, parent: HtmlElement | null, closed: NodeClosed, meta: MetaElement | null, location: Location_2);
763
+ private constructor();
764
+ /**
765
+ * Manually create a new element. This is primary useful for test-cases. While
766
+ * the API is public it is not meant for general consumption and is not
767
+ * guaranteed to be stable across versions.
768
+ *
769
+ * Use at your own risk. Prefer to use [[Parser]] to parse a string of markup
770
+ * instead.
771
+ *
772
+ * @public
773
+ * @since 8.22.0
774
+ * @param tagName - Element tagname.
775
+ * @param location - Element location.
776
+ * @param details - Additional element details.
777
+ */
778
+ static createElement(tagName: string, location: Location_2, details?: {
779
+ closed?: NodeClosed;
780
+ meta?: MetaElement | null;
781
+ parent?: HtmlElement;
782
+ }): HtmlElement;
761
783
  /* Excluded from this release type: rootNode */
762
784
  /* Excluded from this release type: fromTokens */
763
785
  /**
@@ -940,7 +962,6 @@ export declare class HtmlElement extends DOMNode {
940
962
  querySelector(selector: string): HtmlElement | null;
941
963
  querySelectorAll(selector: string): HtmlElement[];
942
964
  private querySelectorImpl;
943
- /* Excluded from this release type: visitDepthFirst */
944
965
  /* Excluded from this release type: someChildren */
945
966
  /* Excluded from this release type: everyChildren */
946
967
  /* Excluded from this release type: find */
@@ -1663,6 +1684,7 @@ export declare class MetaTable {
1663
1684
  * @public
1664
1685
  */
1665
1686
  getJSONSchema(): SchemaObject;
1687
+ /* Excluded from this release type: entries */
1666
1688
  /**
1667
1689
  * Finds the global element definition and merges each known element with the
1668
1690
  * global, e.g. to assign global attributes.
@@ -2810,7 +2832,7 @@ export declare class Validator {
2810
2832
  * @param rules - Element attribute metadta.
2811
2833
  * @returns `true` if attribute passes all tests.
2812
2834
  */
2813
- static validateAttribute(attr: Attribute, rules: Record<string, MetaAttribute>): boolean;
2835
+ static validateAttribute(attr: Attribute, rules: Record<string, MetaAttribute | undefined>): boolean;
2814
2836
  private static validateAttributeValue;
2815
2837
  private static validatePermittedRule;
2816
2838
  /**
@@ -2831,6 +2853,31 @@ export declare class Validator {
2831
2853
  /** @public */
2832
2854
  export declare const version: string;
2833
2855
 
2856
+ /**
2857
+ * @public
2858
+ * @since 8.21.0
2859
+ */
2860
+ export declare interface Walk {
2861
+ /**
2862
+ * Visits all nodes in the tree starting at node or document in a depth-first
2863
+ * (in-order) manner, i.e. any children will be visited before its parent.
2864
+ *
2865
+ * @public
2866
+ * @since 8.21.0
2867
+ * @param root - Element or document to visit nodes from.
2868
+ * @param callback - Callback executed for each node.
2869
+ */
2870
+ depthFirst(this: void, root: HtmlElement | DOMTree, callback: (node: HtmlElement) => void): void;
2871
+ }
2872
+
2873
+ /**
2874
+ * Helper functions to walk the DOM tree.
2875
+ *
2876
+ * @public
2877
+ * @since 8.21.0
2878
+ */
2879
+ export declare const walk: Walk;
2880
+
2834
2881
  /**
2835
2882
  * Event emitted when whitespace content is parsed.
2836
2883
  *
@@ -613,15 +613,7 @@ export declare class DOMNode {
613
613
  * Rules blocked by using directives are added here.
614
614
  */
615
615
  private blockedRules;
616
- /**
617
- * Create a new DOMNode.
618
- *
619
- * @param nodeType - What node type to create.
620
- * @param nodeName - What node name to use. For `HtmlElement` this corresponds
621
- * to the tagName but other node types have specific predefined values.
622
- * @param location - Source code location of this node.
623
- */
624
- constructor(nodeType: NodeType, nodeName: string | undefined, location: Location_2);
616
+ /* Excluded from this release type: __constructor */
625
617
  /* Excluded from this release type: cacheEnable */
626
618
  /**
627
619
  * Fetch cached value from this DOM node.
@@ -732,17 +724,28 @@ export { DOMTokenList_2 as DOMTokenList }
732
724
  export declare class DOMTree {
733
725
  readonly root: HtmlElement;
734
726
  private active;
727
+ private _readyState;
735
728
  doctype: string | null;
736
- constructor(location: Location_2);
737
- pushActive(node: HtmlElement): void;
738
- popActive(): void;
739
- getActive(): HtmlElement;
729
+ /* Excluded from this release type: __constructor */
730
+ /* Excluded from this release type: pushActive */
731
+ /* Excluded from this release type: popActive */
732
+ /* Excluded from this release type: getActive */
740
733
  /**
741
- * Resolve dynamic meta expressions.
734
+ * Describes the loading state of the document.
735
+ *
736
+ * When `"loading"` it is still not safe to use functions such as
737
+ * `querySelector` or presence of attributes, child nodes, etc.
742
738
  */
743
- resolveMeta(table: MetaTable): void;
739
+ get readyState(): "loading" | "complete";
740
+ /* Excluded from this release type: resolveMeta */
744
741
  getElementsByTagName(tagName: string): HtmlElement[];
742
+ /**
743
+ * @deprecated use utility function `walk.depthFirst(..)` instead (since 8.21.0).
744
+ */
745
745
  visitDepthFirst(callback: (node: HtmlElement) => void): void;
746
+ /**
747
+ * @deprecated use `querySelector(..)` instead (since 8.21.0)
748
+ */
746
749
  find(callback: (node: HtmlElement) => boolean): HtmlElement | null;
747
750
  querySelector(selector: string): HtmlElement | null;
748
751
  querySelectorAll(selector: string): HtmlElement[];
@@ -975,7 +978,26 @@ export declare class HtmlElement extends DOMNode {
975
978
  private metaElement;
976
979
  private annotation;
977
980
  /* Excluded from this release type: _adapter */
978
- constructor(tagName: string | undefined, parent: HtmlElement | null, closed: NodeClosed, meta: MetaElement | null, location: Location_2);
981
+ private constructor();
982
+ /**
983
+ * Manually create a new element. This is primary useful for test-cases. While
984
+ * the API is public it is not meant for general consumption and is not
985
+ * guaranteed to be stable across versions.
986
+ *
987
+ * Use at your own risk. Prefer to use [[Parser]] to parse a string of markup
988
+ * instead.
989
+ *
990
+ * @public
991
+ * @since 8.22.0
992
+ * @param tagName - Element tagname.
993
+ * @param location - Element location.
994
+ * @param details - Additional element details.
995
+ */
996
+ static createElement(tagName: string, location: Location_2, details?: {
997
+ closed?: NodeClosed;
998
+ meta?: MetaElement | null;
999
+ parent?: HtmlElement;
1000
+ }): HtmlElement;
979
1001
  /* Excluded from this release type: rootNode */
980
1002
  /* Excluded from this release type: fromTokens */
981
1003
  /**
@@ -1158,7 +1180,6 @@ export declare class HtmlElement extends DOMNode {
1158
1180
  querySelector(selector: string): HtmlElement | null;
1159
1181
  querySelectorAll(selector: string): HtmlElement[];
1160
1182
  private querySelectorImpl;
1161
- /* Excluded from this release type: visitDepthFirst */
1162
1183
  /* Excluded from this release type: someChildren */
1163
1184
  /* Excluded from this release type: everyChildren */
1164
1185
  /* Excluded from this release type: find */
@@ -1888,6 +1909,7 @@ export declare class MetaTable {
1888
1909
  * @public
1889
1910
  */
1890
1911
  getJSONSchema(): SchemaObject;
1912
+ /* Excluded from this release type: entries */
1891
1913
  /**
1892
1914
  * Finds the global element definition and merges each known element with the
1893
1915
  * global, e.g. to assign global attributes.
@@ -3060,7 +3082,7 @@ export declare class Validator {
3060
3082
  * @param rules - Element attribute metadta.
3061
3083
  * @returns `true` if attribute passes all tests.
3062
3084
  */
3063
- static validateAttribute(attr: Attribute, rules: Record<string, MetaAttribute>): boolean;
3085
+ static validateAttribute(attr: Attribute, rules: Record<string, MetaAttribute | undefined>): boolean;
3064
3086
  private static validateAttributeValue;
3065
3087
  private static validatePermittedRule;
3066
3088
  /**
@@ -3081,6 +3103,31 @@ export declare class Validator {
3081
3103
  /** @public */
3082
3104
  export declare const version: string;
3083
3105
 
3106
+ /**
3107
+ * @public
3108
+ * @since 8.21.0
3109
+ */
3110
+ export declare interface Walk {
3111
+ /**
3112
+ * Visits all nodes in the tree starting at node or document in a depth-first
3113
+ * (in-order) manner, i.e. any children will be visited before its parent.
3114
+ *
3115
+ * @public
3116
+ * @since 8.21.0
3117
+ * @param root - Element or document to visit nodes from.
3118
+ * @param callback - Callback executed for each node.
3119
+ */
3120
+ depthFirst(this: void, root: HtmlElement | DOMTree, callback: (node: HtmlElement) => void): void;
3121
+ }
3122
+
3123
+ /**
3124
+ * Helper functions to walk the DOM tree.
3125
+ *
3126
+ * @public
3127
+ * @since 8.21.0
3128
+ */
3129
+ export declare const walk: Walk;
3130
+
3084
3131
  /**
3085
3132
  * Event emitted when whitespace content is parsed.
3086
3133
  *