mirror of
https://github.com/benjaminion/upgrading-ethereum-book.git
synced 2026-01-09 14:38:08 -05:00
Refactor build checks to run async
This commit is contained in:
@@ -1,75 +1,74 @@
|
||||
import { lint } from "markdownlint/sync"
|
||||
import { lint } from 'markdownlint/promise';
|
||||
|
||||
//
|
||||
// See https://github.com/DavidAnson/markdownlint for the rules and options
|
||||
//
|
||||
|
||||
// Lint check the source markdown file.
|
||||
export const lintSourceMarkdown = (file) => {
|
||||
|
||||
export default async function (file) {
|
||||
const options = {
|
||||
'files': [ file ],
|
||||
'config': {
|
||||
'default': true,
|
||||
files: [file],
|
||||
config: {
|
||||
default: true,
|
||||
|
||||
// Start unordered lists with two spaces of indentation
|
||||
'MD007': {
|
||||
'indent': 2,
|
||||
'start_indented': true,
|
||||
'start_indent': 2,
|
||||
MD007: {
|
||||
indent: 2,
|
||||
start_indented: true,
|
||||
start_indent: 2,
|
||||
},
|
||||
|
||||
// We don't want any trailing spaces
|
||||
'MD009': {
|
||||
'strict': true,
|
||||
MD009: {
|
||||
strict: true,
|
||||
},
|
||||
|
||||
// Some headings end in ! or ?
|
||||
'MD026': {
|
||||
'punctuation': '.,;:',
|
||||
MD026: {
|
||||
punctuation: '.,;:',
|
||||
},
|
||||
|
||||
// We fence all block code with backticks
|
||||
'MD046': {
|
||||
'style': 'fenced',
|
||||
MD046: {
|
||||
style: 'fenced',
|
||||
},
|
||||
|
||||
// Emphasis style
|
||||
'MD049': {
|
||||
'style': 'underscore',
|
||||
MD049: {
|
||||
style: 'underscore',
|
||||
},
|
||||
|
||||
//
|
||||
// Disabled rules
|
||||
//
|
||||
|
||||
|
||||
// We have long lines
|
||||
'MD013': false,
|
||||
MD013: false,
|
||||
|
||||
// Duplicate headings are ok (they appear on different pages after pre-processing)
|
||||
'MD024': false,
|
||||
MD024: false,
|
||||
|
||||
// Multiple top-level titles are ok (they appear on different pages after pre-processing)
|
||||
'MD025': false,
|
||||
MD025: false,
|
||||
|
||||
// Doesn't work well with blockquoted lists
|
||||
'MD027': false,
|
||||
MD027: false,
|
||||
|
||||
// Some lists begin with other index than 1
|
||||
'MD029': false,
|
||||
MD029: false,
|
||||
|
||||
// We have inline html
|
||||
'MD033': false,
|
||||
MD033: false,
|
||||
|
||||
// link-image-reference-definitions - we use these as TODO comments
|
||||
'MD053': false,
|
||||
MD053: false,
|
||||
|
||||
// descriptive-link-text - we like using "here" from time to time
|
||||
'MD059': false,
|
||||
}
|
||||
}
|
||||
MD059: false,
|
||||
},
|
||||
};
|
||||
|
||||
const result = lint(options)
|
||||
const result = await lint(options);
|
||||
|
||||
return (result[file].length > 0) ? result.toString() : null
|
||||
return result[file].length > 0 ? result.toString() : '';
|
||||
}
|
||||
@@ -1,23 +1,23 @@
|
||||
import { execSync } from 'child_process';
|
||||
import { glob } from 'glob';
|
||||
import { lintSourceMarkdown } from './checks/lint_source_md.mjs';
|
||||
import { exec } from 'child_process';
|
||||
import { promisify } from 'node:util';
|
||||
import lintSourceMarkdown from './checks/lint_source_md.js';
|
||||
|
||||
// Performs the following prebuild tasks:
|
||||
// - Lints the source markdown
|
||||
// - Checks that internal document links look ok
|
||||
// - Checks that HTML tags are properly balanced
|
||||
// - Spellcheck
|
||||
// - Repeated words check
|
||||
// - Trailing whitespace check
|
||||
// - Linting of LaTeX expressions
|
||||
// - Lints the source markdown
|
||||
|
||||
const doSourceLint = true;
|
||||
const doInternalLinks = true;
|
||||
const doHtmlCheck = true;
|
||||
const doSpellCheck = true;
|
||||
const doRepeatCheck = true;
|
||||
const doWhitespaceCheck = true;
|
||||
const doLatexCheck = true;
|
||||
const doSourceLint = true;
|
||||
|
||||
const linkChecker = 'bin/build/checks/links.pl';
|
||||
const htmlChecker = 'bin/build/checks/html.pl';
|
||||
@@ -29,6 +29,58 @@ const latexChecker = 'bin/build/checks/latex.pl';
|
||||
const sourceMarkdown = 'src/book.md';
|
||||
const ourSpellings = 'src/spellings.en.pws';
|
||||
|
||||
async function execAsync(fn) {
|
||||
return promisify(exec)(fn).then((x) => x.stdout);
|
||||
}
|
||||
|
||||
const checks = [
|
||||
{
|
||||
name: 'markdown lint',
|
||||
enabled: doSourceLint,
|
||||
checker: () => lintSourceMarkdown(sourceMarkdown),
|
||||
},
|
||||
{
|
||||
name: 'internal links',
|
||||
enabled: doInternalLinks,
|
||||
checker: () =>
|
||||
execAsync(`${linkChecker} ${sourceMarkdown}`, { encoding: 'utf8' }),
|
||||
},
|
||||
{
|
||||
name: 'HTML',
|
||||
enabled: doHtmlCheck,
|
||||
checker: () =>
|
||||
execAsync(`${htmlChecker} ${sourceMarkdown}`, { encoding: 'utf8' }),
|
||||
},
|
||||
{
|
||||
name: 'spellings',
|
||||
enabled: doSpellCheck,
|
||||
checker: () =>
|
||||
execAsync(`${spellChecker} ${sourceMarkdown} ${ourSpellings}`, {
|
||||
encoding: 'utf8',
|
||||
}),
|
||||
},
|
||||
{
|
||||
name: 'repeated words',
|
||||
enabled: doRepeatCheck,
|
||||
checker: () =>
|
||||
execAsync(`${repeatChecker} ${sourceMarkdown}`, { encoding: 'utf8' }),
|
||||
},
|
||||
{
|
||||
name: 'trailing whitespace',
|
||||
enabled: doWhitespaceCheck,
|
||||
checker: () =>
|
||||
execAsync(`${whitespaceChecker} ${sourceMarkdown}`, {
|
||||
encoding: 'utf8',
|
||||
}),
|
||||
},
|
||||
{
|
||||
name: 'LaTex',
|
||||
enabled: doLatexCheck,
|
||||
checker: () =>
|
||||
execAsync(`${latexChecker} ${sourceMarkdown}`, { encoding: 'utf8' }),
|
||||
},
|
||||
];
|
||||
|
||||
const customReporter = {
|
||||
// https://tintin.mudhalla.net/info/xterm/
|
||||
// https://tintin.mudhalla.net/info/256color/
|
||||
@@ -44,127 +96,44 @@ const customReporter = {
|
||||
};
|
||||
|
||||
function printLines(s, reporter) {
|
||||
s.split(/\r?\n/).forEach((line, i) => line && reporter.warn(line));
|
||||
s.split(/\r?\n/).forEach((line) => line && reporter.warn(line));
|
||||
}
|
||||
|
||||
function runCheck(enabled, checker, messages, reporter) {
|
||||
async function runCheck({ name, enabled, checker }) {
|
||||
let info = '';
|
||||
let warn = '';
|
||||
let success = true;
|
||||
if (enabled) {
|
||||
reporter.info(messages.info);
|
||||
info += `Doing ${name} check`;
|
||||
try {
|
||||
const out = checker();
|
||||
const out = await checker();
|
||||
if (out !== '' && out !== null) {
|
||||
reporter.warn(messages.fail);
|
||||
printLines(out, reporter);
|
||||
warn += `Issues were found by ${name} check:\n` + out;
|
||||
success = false;
|
||||
}
|
||||
} catch (err) {
|
||||
reporter.warn(messages.error);
|
||||
printLines(err.toString(), reporter);
|
||||
warn += `An error occurred during ${name} check:\n` + err.toString();
|
||||
success = false;
|
||||
}
|
||||
} else {
|
||||
reporter.warn(messages.skip);
|
||||
warn += `Skipping ${name} check`;
|
||||
}
|
||||
return success;
|
||||
return { success: success, info: info, warn: warn };
|
||||
}
|
||||
|
||||
// Set `exitToShell` to false to continue processing after running checks (e.g. while building)
|
||||
export default function runChecks(
|
||||
export default async function runChecks(
|
||||
reporter = customReporter,
|
||||
exitToShell = true,
|
||||
) {
|
||||
var allOk = true;
|
||||
const results = await Promise.all(checks.map((check) => runCheck(check)));
|
||||
|
||||
allOk &= runCheck(
|
||||
doInternalLinks,
|
||||
() => execSync(`${linkChecker} ${sourceMarkdown}`, { encoding: 'utf8' }),
|
||||
{
|
||||
info: 'Checking internal links...',
|
||||
fail: 'Found some bad internal links:',
|
||||
error: 'Unable to check internal links:',
|
||||
skip: 'Skipping internal link check',
|
||||
},
|
||||
reporter,
|
||||
);
|
||||
|
||||
allOk &= runCheck(
|
||||
doHtmlCheck,
|
||||
() => execSync(`${htmlChecker} ${sourceMarkdown}`, { encoding: 'utf8' }),
|
||||
{
|
||||
info: 'Checking HTML...',
|
||||
fail: 'Found HTML issues:',
|
||||
error: 'Unable to check HTML:',
|
||||
skip: 'Skipping HTML check',
|
||||
},
|
||||
reporter,
|
||||
);
|
||||
|
||||
allOk &= runCheck(
|
||||
doSpellCheck,
|
||||
() =>
|
||||
execSync(`${spellChecker} ${sourceMarkdown} ${ourSpellings}`, {
|
||||
encoding: 'utf8',
|
||||
}),
|
||||
{
|
||||
info: 'Performing spellcheck...',
|
||||
fail: 'Found some misspellings:',
|
||||
error: 'Unable to perform spellcheck:',
|
||||
skip: 'Skipping spellcheck',
|
||||
},
|
||||
reporter,
|
||||
);
|
||||
|
||||
allOk &= runCheck(
|
||||
doRepeatCheck,
|
||||
() => execSync(`${repeatChecker} ${sourceMarkdown}`, { encoding: 'utf8' }),
|
||||
{
|
||||
info: 'Performing repeated words check...',
|
||||
fail: 'Found some repeated words:',
|
||||
error: 'Unable to perform repeat check:',
|
||||
skip: 'Skipping repeat check',
|
||||
},
|
||||
reporter,
|
||||
);
|
||||
|
||||
allOk &= runCheck(
|
||||
doWhitespaceCheck,
|
||||
() =>
|
||||
execSync(`${whitespaceChecker} ${sourceMarkdown}`, { encoding: 'utf8' }),
|
||||
{
|
||||
info: 'Performing trailing whitespace check...',
|
||||
fail: 'Found trailing whitespace:',
|
||||
error: 'Unable to perform whitespace check:',
|
||||
skip: 'Skipping whitespace check',
|
||||
},
|
||||
reporter,
|
||||
);
|
||||
|
||||
allOk &= runCheck(
|
||||
doLatexCheck,
|
||||
() => execSync(`${latexChecker} ${sourceMarkdown}`, { encoding: 'utf8' }),
|
||||
{
|
||||
info: 'Performing LaTeX check...',
|
||||
fail: 'Found LaTeX issues:',
|
||||
error: 'Unable to perform LaTeX check:',
|
||||
skip: 'Skipping LaTeX check',
|
||||
},
|
||||
reporter,
|
||||
);
|
||||
|
||||
allOk &= runCheck(
|
||||
doSourceLint,
|
||||
() => lintSourceMarkdown(sourceMarkdown),
|
||||
{
|
||||
info: 'Linting source markdown...',
|
||||
fail: 'Found some linting issues:',
|
||||
error: 'Unable to lint check source markdown:',
|
||||
skip: 'Skipping source markdown linting',
|
||||
},
|
||||
reporter,
|
||||
);
|
||||
results.forEach(({ info, warn }) => {
|
||||
info && reporter.info(info);
|
||||
warn && printLines(warn, reporter);
|
||||
});
|
||||
|
||||
if (exitToShell) {
|
||||
process.exit(allOk ? 0 : 2);
|
||||
process.exit(results.every(({ success }) => success) ? 0 : 2);
|
||||
}
|
||||
}
|
||||
|
||||
352
package-lock.json
generated
352
package-lock.json
generated
@@ -9,7 +9,6 @@
|
||||
"version": "0.3.0",
|
||||
"dependencies": {
|
||||
"astro": "^5.9.2",
|
||||
"glob": "^11.0.3",
|
||||
"hast-util-select": "^6.0.4",
|
||||
"hast-util-to-string": "^3.0.1",
|
||||
"loader-utils": "^3.3.1",
|
||||
@@ -1147,84 +1146,6 @@
|
||||
"url": "https://opencollective.com/libvips"
|
||||
}
|
||||
},
|
||||
"node_modules/@isaacs/balanced-match": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
|
||||
"integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
}
|
||||
},
|
||||
"node_modules/@isaacs/brace-expansion": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
|
||||
"integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@isaacs/balanced-match": "^4.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
}
|
||||
},
|
||||
"node_modules/@isaacs/cliui": {
|
||||
"version": "8.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
|
||||
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"string-width": "^5.1.2",
|
||||
"string-width-cjs": "npm:string-width@^4.2.0",
|
||||
"strip-ansi": "^7.0.1",
|
||||
"strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
|
||||
"wrap-ansi": "^8.1.0",
|
||||
"wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/@isaacs/cliui/node_modules/emoji-regex": {
|
||||
"version": "9.2.2",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
|
||||
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@isaacs/cliui/node_modules/string-width": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
|
||||
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"eastasianwidth": "^0.2.0",
|
||||
"emoji-regex": "^9.2.2",
|
||||
"strip-ansi": "^7.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
|
||||
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-styles": "^6.1.0",
|
||||
"string-width": "^5.0.1",
|
||||
"strip-ansi": "^7.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
|
||||
@@ -2424,6 +2345,7 @@
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"color-name": "~1.1.4"
|
||||
@@ -2436,6 +2358,7 @@
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/color-string": {
|
||||
@@ -2522,6 +2445,7 @@
|
||||
"version": "7.0.6",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
||||
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"path-key": "^3.1.0",
|
||||
@@ -2877,12 +2801,6 @@
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/eastasianwidth": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
||||
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/emoji-regex": {
|
||||
"version": "10.4.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
|
||||
@@ -3479,22 +3397,6 @@
|
||||
"unicode-trie": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/foreground-child": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
|
||||
"integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"cross-spawn": "^7.0.6",
|
||||
"signal-exit": "^4.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/form-data": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
|
||||
@@ -3592,29 +3494,6 @@
|
||||
"integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/glob": {
|
||||
"version": "11.0.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz",
|
||||
"integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"foreground-child": "^3.3.1",
|
||||
"jackspeak": "^4.1.1",
|
||||
"minimatch": "^10.0.3",
|
||||
"minipass": "^7.1.2",
|
||||
"package-json-from-dist": "^1.0.0",
|
||||
"path-scurry": "^2.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"glob": "dist/esm/bin.mjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/glob-parent": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||
@@ -3628,21 +3507,6 @@
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/glob/node_modules/minimatch": {
|
||||
"version": "10.0.3",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
|
||||
"integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@isaacs/brace-expansion": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/globals": {
|
||||
"version": "16.2.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz",
|
||||
@@ -4258,23 +4122,9 @@
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/jackspeak": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
|
||||
"integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
|
||||
"license": "BlueOak-1.0.0",
|
||||
"dependencies": {
|
||||
"@isaacs/cliui": "^8.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/js-yaml": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
||||
@@ -4399,15 +4249,6 @@
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/lru-cache": {
|
||||
"version": "11.1.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz",
|
||||
"integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==",
|
||||
"license": "ISC",
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
}
|
||||
},
|
||||
"node_modules/magic-string": {
|
||||
"version": "0.30.17",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
|
||||
@@ -5406,15 +5247,6 @@
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/minipass": {
|
||||
"version": "7.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
|
||||
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
|
||||
"license": "ISC",
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.17"
|
||||
}
|
||||
},
|
||||
"node_modules/mrmime": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
|
||||
@@ -5670,12 +5502,6 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/package-json-from-dist": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
|
||||
"integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
|
||||
"license": "BlueOak-1.0.0"
|
||||
},
|
||||
"node_modules/package-manager-detector": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz",
|
||||
@@ -5770,27 +5596,12 @@
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/path-scurry": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
|
||||
"integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
|
||||
"license": "BlueOak-1.0.0",
|
||||
"dependencies": {
|
||||
"lru-cache": "^11.0.0",
|
||||
"minipass": "^7.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||
@@ -6429,6 +6240,7 @@
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"shebang-regex": "^3.0.0"
|
||||
@@ -6441,6 +6253,7 @@
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
||||
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -6462,18 +6275,6 @@
|
||||
"@types/hast": "^3.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/signal-exit": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
|
||||
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
|
||||
"license": "ISC",
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/simple-swizzle": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
|
||||
@@ -6538,48 +6339,6 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/string-width-cjs": {
|
||||
"name": "string-width",
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"emoji-regex": "^8.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0",
|
||||
"strip-ansi": "^6.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/string-width-cjs/node_modules/ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/string-width-cjs/node_modules/emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/string-width-cjs/node_modules/strip-ansi": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-regex": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/stringify-entities": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
|
||||
@@ -6609,28 +6368,6 @@
|
||||
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/strip-ansi-cjs": {
|
||||
"name": "strip-ansi",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-regex": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/strip-json-comments": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
|
||||
@@ -7324,6 +7061,7 @@
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"isexe": "^2.0.0"
|
||||
@@ -7386,80 +7124,6 @@
|
||||
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/wrap-ansi-cjs": {
|
||||
"name": "wrap-ansi",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
||||
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-styles": "^4.0.0",
|
||||
"string-width": "^4.1.0",
|
||||
"strip-ansi": "^6.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"color-convert": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/wrap-ansi-cjs/node_modules/string-width": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"emoji-regex": "^8.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0",
|
||||
"strip-ansi": "^6.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-regex": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/xxhash-wasm": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz",
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"astro": "^5.9.2",
|
||||
"glob": "^11.0.3",
|
||||
"hast-util-select": "^6.0.4",
|
||||
"hast-util-to-string": "^3.0.1",
|
||||
"loader-utils": "^3.3.1",
|
||||
|
||||
Reference in New Issue
Block a user