Files
shields/services/w3c/w3c-validation-helper.js
dependabot[bot] b9d96755ec chore(deps-dev): bump prettier from 2.8.8 to 3.0.0 (#9357)
* chore(deps-dev): bump prettier from 2.8.8 to 3.0.0

Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to 3.0.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.8...3.0.0)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* reformat all the things (prettier 3)

* update tests to await calls to prettier.format()

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: chris48s <git@chris-shaw.dev>
2023-07-10 09:27:51 +00:00

149 lines
5.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const html5Expression =
'^HTML\\s?,\\s?SVG\\s?1\\.1\\s?,\\s?MathML\\s?3\\.0(\\s?,\\s?((ITS\\s?2\\.0)|(RDFa\\s?Lite\\s?1\\.1)))?$'
const html4Expression =
'^HTML\\s?4\\.01\\s?(Strict|Transitional|Frameset)\\s?,\\s?URL\\s?\\/\\s?XHTML\\s?1\\.0\\s?(Strict|Transitional|Frameset)\\s?,\\s?URL$'
const xhtmlExpression =
'^(XHTML\\s?,\\s?SVG\\s?1\\.1\\s?,\\s?MathML\\s?3\\.0(\\s?,\\s?RDFa\\s?Lite\\s?1\\.1)?)|(XHTML\\s?1\\.0\\s?Strict\\s?,\\s?URL\\s?,\\s?Ruby\\s?,\\s?SVG\\s?1\\.1\\s?,\\s?MathML\\s?3\\.0)$'
const svgExpression =
'^SVG\\s?1\\.1\\s?,\\s?URL\\s?,\\s?XHTML\\s?,\\s?MathML\\s?3\\.0$'
const presetRegex = new RegExp(
`(${html5Expression})|(${html4Expression})|(${xhtmlExpression})|(${svgExpression})`,
'i',
)
const getMessage = messageTypes => {
const messageTypeKeys = Object.keys(messageTypes)
messageTypeKeys.sort() // Sort to make the order error, warning for display
if (messageTypeKeys.length === 0) {
return 'validated'
}
const messages = messageTypeKeys.map(
key => `${messageTypes[key]} ${key}${messageTypes[key] > 1 ? 's' : ''}`,
)
return messages.join(', ')
}
const getColor = messageTypes => {
if ('error' in messageTypes) {
return 'red'
}
if ('warning' in messageTypes) {
return 'yellow'
}
return 'brightgreen'
}
const getSchema = preset => {
if (!preset) return undefined
const decodedPreset = decodeURI(preset)
const schema = []
if (new RegExp(html4Expression, 'i').test(decodedPreset)) {
if (/Strict/i.test(decodedPreset)) {
schema.push('http://s.validator.nu/xhtml10/xhtml-strict.rnc')
} else if (/Transitional/i.test(decodedPreset)) {
schema.push('http://s.validator.nu/xhtml10/xhtml-transitional.rnc')
} else {
schema.push('http://s.validator.nu/xhtml10/xhtml-frameset.rnc')
}
schema.push('http://c.validator.nu/all-html4/')
} else if (/1\.0 Strict, URL, Ruby, SVG 1\.1/i.test(decodedPreset)) {
schema.push('http://s.validator.nu/xhtml1-ruby-rdf-svg-mathml.rnc')
schema.push('http://c.validator.nu/all-html4/')
} else {
if (new RegExp(html5Expression, 'i').test(decodedPreset)) {
if (/ITS 2\.0/i.test(decodedPreset)) {
schema.push('http://s.validator.nu/html5-its.rnc')
} else if (/RDFa Lite 1\.1/i.test(decodedPreset)) {
schema.push('http://s.validator.nu/html5-rdfalite.rnc')
} else {
schema.push('http://s.validator.nu/html5.rnc')
}
} else if (new RegExp(xhtmlExpression, 'i').test(decodedPreset)) {
if (/RDFa Lite 1\.1/i.test(decodedPreset)) {
schema.push('http://s.validator.nu/xhtml5-rdfalite.rnc')
} else {
schema.push('http://s.validator.nu/xhtml5.rnc')
}
} else if (new RegExp(svgExpression, 'i').test(decodedPreset)) {
schema.push('http://s.validator.nu/svg-xhtml5-rdf-mathml.rnc')
}
schema.push('http://s.validator.nu/html5/assertions.sch')
schema.push('http://c.validator.nu/all/')
}
return schema.map(url => encodeURI(url)).join(' ')
}
const documentation = `
<style>
.box {
display: flex;
justify-content: space-between;
}
.note {
font-size: smaller;
text-align: left;
}
</style>
<p>
The W3C validation badge performs validation of the HTML, SVG, MathML, ITS, RDFa Lite, XHTML documents.
The badge uses the type property of each message found in the messages from the validation results to determine to be an error or warning.
The rules are as follows:
<ul class="note">
<li>info: These messages are counted as warnings</li>
<li>error: These messages are counted as errors</li>
<li>non-document-error: These messages are counted as errors</li>
</ul>
</p>
<p>
This badge relies on the <a target="_blank" href="https://validator.nu/">https://validator.nu/</a> service to perform the validation.
Please refer to <a target="_blank" href="https://about.validator.nu/">https://about.validator.nu/</a> for the full documentation and Terms of service.
The following are required from the consumer for the badge to function.
<ul class="note">
<li>
Path:
<ul>
<li>
parser: The parser that is used for validation. This is a passthru value to the service
<ul>
<li>default <i>(This will not pass a parser to the API and make the API choose the parser based on the validated content)</i></li>
<li>html <i>(HTML)</i></li>
<li>xml <i>(XML; dont load external entities)</i></li>
<li>xmldtd <i>(XML; load external entities)</i></li>
</ul>
</li>
</ul>
</li>
<li>
Query string:
<ul>
<li>
targetUrl (Required): This is the path for the document to be validated
</li>
<li>
preset (Optional can be left as blank): This is used to determine the schema for the document to be valdiated against.
The following are the allowed values
<ul>
<li>HTML, SVG 1.1, MathML 3.0</li>
<li>HTML, SVG 1.1, MathML 3.0, ITS 2.0</li>
<li>HTML, SVG 1.1, MathML 3.0, RDFa Lite 1.1</li>
<li>HTML 4.01 Strict, URL / XHTML 1.0 Strict, URL</li>
<li>HTML 4.01 Transitional, URL / XHTML 1.0 Transitional, URL</li>
<li>HTML 4.01 Frameset, URL / XHTML 1.0 Frameset, URL</li>
<li>XHTML, SVG 1.1, MathML 3.0</li>
<li>XHTML, SVG 1.1, MathML 3.0, RDFa Lite 1.1</li>
<li>XHTML 1.0 Strict, URL, Ruby, SVG 1.1, MathML 3.0</li>
<li>SVG 1.1, URL, XHTML, MathML 3.0</li>
</ul>
</li>
</ul>
</li>
</ul>
</p>
`
export { documentation, presetRegex, getColor, getMessage, getSchema }