mirror of
https://github.com/theoludwig/html-w3c-validator.git
synced 2024-12-08 00:45:37 +01:00
parent
3a44eca5b1
commit
6ca7722fcf
2
example/package-lock.json
generated
2
example/package-lock.json
generated
@ -20,6 +20,7 @@
|
|||||||
"chalk": "5.1.2",
|
"chalk": "5.1.2",
|
||||||
"clipanion": "3.1.0",
|
"clipanion": "3.1.0",
|
||||||
"html-validator": "6.0.1",
|
"html-validator": "6.0.1",
|
||||||
|
"log-symbols": "5.1.0",
|
||||||
"ora": "6.1.2",
|
"ora": "6.1.2",
|
||||||
"read-pkg": "7.1.0",
|
"read-pkg": "7.1.0",
|
||||||
"table": "6.8.0"
|
"table": "6.8.0"
|
||||||
@ -1759,6 +1760,7 @@
|
|||||||
"html-validator": "6.0.1",
|
"html-validator": "6.0.1",
|
||||||
"husky": "8.0.1",
|
"husky": "8.0.1",
|
||||||
"lint-staged": "13.0.3",
|
"lint-staged": "13.0.3",
|
||||||
|
"log-symbols": "5.1.0",
|
||||||
"markdownlint-cli": "0.32.2",
|
"markdownlint-cli": "0.32.2",
|
||||||
"mock-fs": "5.1.4",
|
"mock-fs": "5.1.4",
|
||||||
"ora": "6.1.2",
|
"ora": "6.1.2",
|
||||||
|
1
package-lock.json
generated
1
package-lock.json
generated
@ -13,6 +13,7 @@
|
|||||||
"chalk": "5.1.2",
|
"chalk": "5.1.2",
|
||||||
"clipanion": "3.1.0",
|
"clipanion": "3.1.0",
|
||||||
"html-validator": "6.0.1",
|
"html-validator": "6.0.1",
|
||||||
|
"log-symbols": "5.1.0",
|
||||||
"ora": "6.1.2",
|
"ora": "6.1.2",
|
||||||
"read-pkg": "7.1.0",
|
"read-pkg": "7.1.0",
|
||||||
"table": "6.8.0"
|
"table": "6.8.0"
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
"chalk": "5.1.2",
|
"chalk": "5.1.2",
|
||||||
"clipanion": "3.1.0",
|
"clipanion": "3.1.0",
|
||||||
"html-validator": "6.0.1",
|
"html-validator": "6.0.1",
|
||||||
|
"log-symbols": "5.1.0",
|
||||||
"ora": "6.1.2",
|
"ora": "6.1.2",
|
||||||
"read-pkg": "7.1.0",
|
"read-pkg": "7.1.0",
|
||||||
"table": "6.8.0"
|
"table": "6.8.0"
|
||||||
|
@ -4,6 +4,7 @@ import fs from 'node:fs'
|
|||||||
import { Command } from 'clipanion'
|
import { Command } from 'clipanion'
|
||||||
import chalk from 'chalk'
|
import chalk from 'chalk'
|
||||||
import ora from 'ora'
|
import ora from 'ora'
|
||||||
|
import logSymbols from 'log-symbols'
|
||||||
import type {
|
import type {
|
||||||
ValidationMessageLocationObject,
|
ValidationMessageLocationObject,
|
||||||
ParsedJsonAsValidationResults
|
ParsedJsonAsValidationResults
|
||||||
@ -26,6 +27,21 @@ interface Error {
|
|||||||
messagesTable: string[][]
|
messagesTable: string[][]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface Result {
|
||||||
|
data: string
|
||||||
|
isSuccess: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
const printResults = (results: Result[]): void => {
|
||||||
|
for (const result of results) {
|
||||||
|
if (result.isSuccess) {
|
||||||
|
console.log(logSymbols.success, result.data)
|
||||||
|
} else {
|
||||||
|
console.log(logSymbols.error, result.data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class HTMLValidatorCommand extends Command {
|
export class HTMLValidatorCommand extends Command {
|
||||||
static usage = {
|
static usage = {
|
||||||
description:
|
description:
|
||||||
@ -40,7 +56,6 @@ export class HTMLValidatorCommand extends Command {
|
|||||||
`No config file found at ${configPath}. Please create ${CONFIG_FILE_NAME}.`
|
`No config file found at ${configPath}. Please create ${CONFIG_FILE_NAME}.`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const configData = await fs.promises.readFile(configPath, {
|
const configData = await fs.promises.readFile(configPath, {
|
||||||
encoding: 'utf-8'
|
encoding: 'utf-8'
|
||||||
})
|
})
|
||||||
@ -74,8 +89,10 @@ export class HTMLValidatorCommand extends Command {
|
|||||||
const dataToValidate = [...urls, ...files]
|
const dataToValidate = [...urls, ...files]
|
||||||
const errors: Error[] = []
|
const errors: Error[] = []
|
||||||
let isValid = true
|
let isValid = true
|
||||||
for (const { data, type } of dataToValidate) {
|
const loader = ora(`Validating HTML (W3C)...`).start()
|
||||||
const loader = ora(`Validating ${data}`).start()
|
const results: Result[] = []
|
||||||
|
await Promise.all(
|
||||||
|
dataToValidate.map(async ({ data, type }) => {
|
||||||
try {
|
try {
|
||||||
const options = {
|
const options = {
|
||||||
format: 'json' as 'json' | undefined
|
format: 'json' as 'json' | undefined
|
||||||
@ -108,9 +125,9 @@ export class HTMLValidatorCommand extends Command {
|
|||||||
return message.type === 'error'
|
return message.type === 'error'
|
||||||
})
|
})
|
||||||
if (!hasErrors) {
|
if (!hasErrors) {
|
||||||
loader.succeed()
|
results.push({ data, isSuccess: true })
|
||||||
} else {
|
} else {
|
||||||
loader.fail()
|
results.push({ data, isSuccess: false })
|
||||||
const messagesTable: string[][] = []
|
const messagesTable: string[][] = []
|
||||||
for (const message of result.messages) {
|
for (const message of result.messages) {
|
||||||
if (message.type === 'error') {
|
if (message.type === 'error') {
|
||||||
@ -130,16 +147,17 @@ export class HTMLValidatorCommand extends Command {
|
|||||||
isValid = false
|
isValid = false
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
loader.fail()
|
|
||||||
isValid = false
|
isValid = false
|
||||||
if (error instanceof Error) {
|
if (error instanceof Error) {
|
||||||
const messagesTable: string[][] = [[error.message]]
|
const messagesTable: string[][] = [[error.message]]
|
||||||
errors.push({ data, messagesTable })
|
errors.push({ data, messagesTable })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
)
|
||||||
if (!isValid) {
|
if (!isValid) {
|
||||||
|
loader.fail()
|
||||||
|
printResults(results)
|
||||||
for (const error of errors) {
|
for (const error of errors) {
|
||||||
console.error(`\n${error.data}`)
|
console.error(`\n${error.data}`)
|
||||||
console.error(table(error.messagesTable))
|
console.error(table(error.messagesTable))
|
||||||
@ -148,10 +166,10 @@ export class HTMLValidatorCommand extends Command {
|
|||||||
console.error()
|
console.error()
|
||||||
throw new Error('HTML validation (W3C) failed!')
|
throw new Error('HTML validation (W3C) failed!')
|
||||||
}
|
}
|
||||||
console.log()
|
loader.succeed(
|
||||||
console.log(
|
|
||||||
`${chalk.bold.green('Success:')} HTML validation (W3C) passed! 🎉`
|
`${chalk.bold.green('Success:')} HTML validation (W3C) passed! 🎉`
|
||||||
)
|
)
|
||||||
|
printResults(results)
|
||||||
return 0
|
return 0
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error instanceof Error) {
|
if (error instanceof Error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user