From 1832a681026ac3db6e62aa90cb5ed75886ea69ac Mon Sep 17 00:00:00 2001
From: Patrick Kollitsch <davidsneighbourdev+gh@gmail.com>
Date: Sun, 27 Sep 2026 00:00:49 +0000
Subject: [PATCH] build(deps): onboard dnbhq configurations and linting fixes
---
ananke.code-workspace | 102
package-lock.json | 10682 +++++++++++++++++++++--------------------
playwright.config.ts | 44
renovate.json5 | 7
scripts/synch-social-icons.ts | 1238 ++--
.github/scripts/posterboy.mjs | 63
tests/support/dev-server.mjs | 68
.vscode/instructions/shortcodes.instructions.md | 17
assets/ananke/css/_code.css | 9
tests/e2e/accessibility.spec.ts | 42
biome.json | 11
.vscode/prompts/test-hugo-versions.prompt.md | 300 +
.github/rulesets/protect-main.json | 72
.release-it.ts | 206
lint-staged.config.ts | 22
scripts/test-hugo-quickstart.ts | 1854 +++---
tests/coverage-gate.mjs | 88
tests/e2e/copy-button.spec.ts | 72
.github/rulesets/protect-development.json | 78
assets/ananke/css/_styles.css | 5
.vscode/settings.json | 66
assets/ananke/css/_hugo-internal-templates.css | 8
tests/support/prepare-site.mjs | 56
/dev/null | 133
assets/ananke/css/_social-icons.css | 6
tsconfig.json | 38
package.json | 177
27 files changed, 7,923 insertions(+), 7,541 deletions(-)
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index 4cb74d9..0000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,64 +0,0 @@
-################################################################################
-# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
-################################################################################
-version: 2
-updates:
- - package-ecosystem: npm
- directory: /
- schedule:
- interval: monthly
- day: friday
- time: "18:00"
- timezone: Asia/Bangkok
- cooldown:
- default-days: 14
- semver-major-days: 14
- semver-minor-days: 7
- semver-patch-days: 4
- assignees:
- - davidsneighbour
- target-branch: development
- open-pull-requests-limit: 999
- pull-request-branch-name:
- separator: /
- labels:
- - type:dependencies
-
- - package-ecosystem: gomod
- directory: /
- schedule:
- interval: monthly
- day: friday
- time: "18:00"
- timezone: Asia/Bangkok
- cooldown:
- default-days: 14
- semver-major-days: 14
- semver-minor-days: 7
- semver-patch-days: 4
- assignees:
- - davidsneighbour
- target-branch: development
- open-pull-requests-limit: 999
- pull-request-branch-name:
- separator: /
- labels:
- - type:dependencies
-
- - package-ecosystem: github-actions
- directory: /
- schedule:
- interval: monthly
- day: friday
- time: "18:00"
- timezone: Asia/Bangkok
- cooldown:
- default-days: 7
- assignees:
- - davidsneighbour
- target-branch: development
- open-pull-requests-limit: 999
- pull-request-branch-name:
- separator: /
- labels:
- - type:dependencies
diff --git a/.github/rulesets/protect-development.json b/.github/rulesets/protect-development.json
index 4e89536..c34f0f4 100644
--- a/.github/rulesets/protect-development.json
+++ b/.github/rulesets/protect-development.json
@@ -1,41 +1,41 @@
{
- "id": 15502619,
- "name": "protect-development",
- "target": "branch",
- "source_type": "Repository",
- "source": "gohugo-ananke/ananke",
- "enforcement": "active",
- "conditions": {
- "ref_name": {
- "exclude": [],
- "include": ["refs/heads/development"]
- }
- },
- "rules": [
- {
- "type": "deletion"
- },
- {
- "type": "non_fast_forward"
- },
- {
- "type": "pull_request",
- "parameters": {
- "required_approving_review_count": 0,
- "dismiss_stale_reviews_on_push": true,
- "required_reviewers": [],
- "require_code_owner_review": false,
- "require_last_push_approval": false,
- "required_review_thread_resolution": true,
- "allowed_merge_methods": ["squash"]
- }
- }
- ],
- "bypass_actors": [
- {
- "actor_id": 17174680,
- "actor_type": "Team",
- "bypass_mode": "always"
- }
- ]
+ "id": 15502619,
+ "name": "protect-development",
+ "target": "branch",
+ "source_type": "Repository",
+ "source": "gohugo-ananke/ananke",
+ "enforcement": "active",
+ "conditions": {
+ "ref_name": {
+ "exclude": [],
+ "include": ["refs/heads/development"]
+ }
+ },
+ "rules": [
+ {
+ "type": "deletion"
+ },
+ {
+ "type": "non_fast_forward"
+ },
+ {
+ "type": "pull_request",
+ "parameters": {
+ "required_approving_review_count": 0,
+ "dismiss_stale_reviews_on_push": true,
+ "required_reviewers": [],
+ "require_code_owner_review": false,
+ "require_last_push_approval": false,
+ "required_review_thread_resolution": true,
+ "allowed_merge_methods": ["squash"]
+ }
+ }
+ ],
+ "bypass_actors": [
+ {
+ "actor_id": 17174680,
+ "actor_type": "Team",
+ "bypass_mode": "always"
+ }
+ ]
}
diff --git a/.github/rulesets/protect-main.json b/.github/rulesets/protect-main.json
index 8a1ed17..3e76c8d 100644
--- a/.github/rulesets/protect-main.json
+++ b/.github/rulesets/protect-main.json
@@ -1,38 +1,38 @@
{
- "id": 15502478,
- "name": "protect-main",
- "target": "branch",
- "source_type": "Repository",
- "source": "gohugo-ananke/ananke",
- "enforcement": "active",
- "conditions": {
- "ref_name": {
- "exclude": [],
- "include": ["refs/heads/main"]
- }
- },
- "rules": [
- {
- "type": "deletion"
- },
- {
- "type": "non_fast_forward"
- },
- {
- "type": "pull_request",
- "parameters": {
- "required_approving_review_count": 0,
- "dismiss_stale_reviews_on_push": false,
- "required_reviewers": [],
- "require_code_owner_review": false,
- "require_last_push_approval": false,
- "required_review_thread_resolution": false,
- "allowed_merge_methods": ["merge", "squash", "rebase"]
- }
- },
- {
- "type": "required_linear_history"
- }
- ],
- "bypass_actors": []
+ "id": 15502478,
+ "name": "protect-main",
+ "target": "branch",
+ "source_type": "Repository",
+ "source": "gohugo-ananke/ananke",
+ "enforcement": "active",
+ "conditions": {
+ "ref_name": {
+ "exclude": [],
+ "include": ["refs/heads/main"]
+ }
+ },
+ "rules": [
+ {
+ "type": "deletion"
+ },
+ {
+ "type": "non_fast_forward"
+ },
+ {
+ "type": "pull_request",
+ "parameters": {
+ "required_approving_review_count": 0,
+ "dismiss_stale_reviews_on_push": false,
+ "required_reviewers": [],
+ "require_code_owner_review": false,
+ "require_last_push_approval": false,
+ "required_review_thread_resolution": false,
+ "allowed_merge_methods": ["merge", "squash", "rebase"]
+ }
+ },
+ {
+ "type": "required_linear_history"
+ }
+ ],
+ "bypass_actors": []
}
diff --git a/.github/scripts/posterboy.mjs b/.github/scripts/posterboy.mjs
index b55febd..a5f5808 100644
--- a/.github/scripts/posterboy.mjs
+++ b/.github/scripts/posterboy.mjs
@@ -1,14 +1,14 @@
-import { readFile, writeFile, access, mkdir } from 'node:fs/promises';
-import path from 'node:path';
-import fs from 'node:fs';
-import dotenv from 'dotenv';
-import { homedir } from 'node:os';
+import fs from "node:fs";
+import { access, mkdir, readFile, writeFile } from "node:fs/promises";
+import { homedir } from "node:os";
+import path from "node:path";
+import dotenv from "dotenv";
const userHomeDir = homedir();
// Load .env files
-const GLOBAL_ENV_PATH = path.join(userHomeDir, '.env');
-const LOCAL_ENV_PATH = path.resolve('.env');
+const GLOBAL_ENV_PATH = path.join(userHomeDir, ".env");
+const LOCAL_ENV_PATH = path.resolve(".env");
/**
* Load environment variables from a file if it exists.
@@ -28,13 +28,14 @@
process.env = { ...globalEnv, ...process.env, ...localEnv };
// Configurable values
-const DISCORD_WEBHOOK = process.env.DISCORD_WEBHOOK || '';
-const GITHUB_DEV_TOKEN = process.env.GITHUB_DEV_TOKEN || '';
-const GITHUB_REPO = process.env.GITHUB_REPO || 'gohugo-ananke/ananke';
-const DEFAULT_MESSAGE_TEMPLATE = 'New release: {{tag_name}} - {{html_url}}';
-const MESSAGE_TEMPLATE = process.env.MESSAGE_TEMPLATE || DEFAULT_MESSAGE_TEMPLATE;
-const CACHE_DIR = './cache';
-const CACHE_FILE = 'github-releases.json';
+const DISCORD_WEBHOOK = process.env.DISCORD_WEBHOOK || "";
+const GITHUB_DEV_TOKEN = process.env.GITHUB_DEV_TOKEN || "";
+const GITHUB_REPO = process.env.GITHUB_REPO || "gohugo-ananke/ananke";
+const DEFAULT_MESSAGE_TEMPLATE = "New release: {{tag_name}} - {{html_url}}";
+const MESSAGE_TEMPLATE =
+ process.env.MESSAGE_TEMPLATE || DEFAULT_MESSAGE_TEMPLATE;
+const CACHE_DIR = "./cache";
+const CACHE_FILE = "github-releases.json";
const CACHE_FILE_PATH = path.join(CACHE_DIR, CACHE_FILE);
/**
@@ -60,7 +61,7 @@
*/
async function readCache() {
try {
- const data = await readFile(CACHE_FILE_PATH, 'utf8');
+ const data = await readFile(CACHE_FILE_PATH, "utf8");
return JSON.parse(data) || [];
} catch {
return [];
@@ -81,11 +82,14 @@
*/
async function fetchLatestRelease() {
try {
- const response = await fetch('https://api.github.com/repos/' + GITHUB_REPO + '/releases', {
- headers: {
- Authorization: `token ${GITHUB_DEV_TOKEN}`,
+ const response = await fetch(
+ "https://api.github.com/repos/" + GITHUB_REPO + "/releases",
+ {
+ headers: {
+ Authorization: `token ${GITHUB_DEV_TOKEN}`,
+ },
},
- });
+ );
if (!response.ok) {
throw new Error(`GitHub API request failed: ${response.statusText}`);
@@ -93,13 +97,13 @@
const releases = await response.json();
if (!Array.isArray(releases) || releases.length === 0) {
- console.log('No releases found.');
+ console.log("No releases found.");
return null;
}
return releases[0];
} catch (err) {
- console.error('Failed to fetch releases:', err.message);
+ console.error("Failed to fetch releases:", err.message);
return null;
}
}
@@ -111,8 +115,8 @@
async function postToDiscord(message) {
try {
const response = await fetch(DISCORD_WEBHOOK, {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
body: JSON.stringify({ content: message }),
});
@@ -120,9 +124,9 @@
throw new Error(`Failed to post to Discord: ${response.statusText}`);
}
- console.log('Posted to Discord successfully.');
+ console.log("Posted to Discord successfully.");
} catch (err) {
- console.error('Failed to post to Discord:', err.message);
+ console.error("Failed to post to Discord:", err.message);
}
}
@@ -132,7 +136,10 @@
* @returns {string}
*/
function formatMessage(releaseData) {
- return MESSAGE_TEMPLATE.replace(/{{\s*(\w+)\s*}}/g, (_, key) => releaseData[key] || '');
+ return MESSAGE_TEMPLATE.replace(
+ /{{\s*(\w+)\s*}}/g,
+ (_, key) => releaseData[key] || "",
+ );
}
/**
@@ -152,10 +159,10 @@
cachedIds.push(latestRelease.tag_name);
await writeCache(cachedIds);
} else {
- console.log('No new releases to post.');
+ console.log("No new releases to post.");
}
} catch (err) {
- console.error('Error:', err.message);
+ console.error("Error:", err.message);
}
}
diff --git a/.lintstagedrc.js b/.lintstagedrc.js
deleted file mode 100644
index 15b4004..0000000
--- a/.lintstagedrc.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// @see https://github.com/lint-staged/lint-staged
-
-/**
- * @filename: .lintstagedrc.js
- * @type {import('lint-staged').Configuration}
- */
-export default {
- "*.{json,jsonc}": ["biome check --write --staged"],
- ".github/{workflows/**/*.y(a?)ml,dependabot.yml}": ["zizmor --no-exit-codes"],
- "package-lock.json": [
- "lockfile-lint --path package-lock.json --validate-https --allowed-hosts npm",
- ],
- "*.{ts,tsx,(m|c)js,jsx}": (/** @type {string[]} */ files) => {
- return [`biome check --write --no-errors-on-unmatched ${files.join(" ")}`];
- },
- "*.yaml": ["yamllint -c .yamllint.yml"],
- // '*.{scss,css}': ['stylelint --fix', "prettier --write"],
- // '*.{png,jpeg,jpg,gif,svg}': [
- // 'imagemin-lint-staged' // @davidsneighbour/imagemin-lint-staged
- // ],
- "!(CHANGELOG)**/*.{md,markdown}": [
- // 'npm run lint:links',
- "npm run lint:markdown:fix",
- ],
- // 'layouts/**/*.*': [
- // './bin/hugo/refactor layouts'
- // ],
-};
diff --git a/.markdownlint.jsonc b/.markdownlint.jsonc
deleted file mode 100644
index 6bb66af..0000000
--- a/.markdownlint.jsonc
+++ /dev/null
@@ -1,133 +0,0 @@
-{
- "$schema": "https://github.com/DavidAnson/markdownlint/blob/main/schema/markdownlint-config-schema.json",
- "$id": "https://raw.githubusercontent.com/davidsneighbour/kollitsch.dev/refs/heads/main/src/config/.markdownlint.jsonc",
- "default": true,
- "customRules": [
- "@github/markdownlint-github",
- "markdownlint-rule-relative-links",
- "markdownlint-rule-search-replace",
- "markdownlint-rule-extended-ascii",
- "markdownlint-rule-title-case-style",
- "markdownlint-rule-list-duplicates"
- ],
- // Rules
- // unlisted rules are using default settings (usually "true")
- // @see https://github.com/DavidAnson/markdownlint/#rules--aliases
- "MD001": {
- "severity": "error",
- "front_matter_title": "^\\s*title\\s*[:=]"
- },
- "MD003": {
- "style": "atx"
- },
- "MD004": {
- "style": "asterisk"
- },
- "MD005": true,
- "MD007": {
- "indent": 2
- },
- // NO limitation on line length
- "MD013": false,
- // ignored rule for closed atx headings
- "MD020": false,
- // ignored rule for closed atx headings
- "MD021": false,
- // disallow multiple headings with the same content within the same level structure
- "MD024": {
- "siblings_only": true,
- "allow_different_nesting": true
- },
- // no inline HTML elements, except for the allowed ones. in tables only the explicit allowed ones
- "MD033": {
- "allowed_elements": ["lite-youtube", "color-grid", "date-diff", "kbd"],
- "table_allowed_elements": ["kbd"]
- },
- // use consistent rule markers (`---`)
- "MD035": {
- "style": "---"
- },
- // unused header structure rule
- "MD043": false,
- // unused spelling enforcement
- "MD044": false,
- // fenced code blocks style
- "MD046": {
- "style": "fenced"
- },
- // code blocks must use backticks instead of tildes
- "MD048": {
- "style": "backtick"
- },
- // emphasis must use asterisks `*` instead of underscores `_`
- "MD049": {
- "style": "asterisk"
- },
- // strong style must use double asterisks `**` instead of double underscores `__`
- "MD050": {
- "style": "asterisk"
- },
- // links must not be auto links, all other link formats are allowed
- "MD054": {
- "autolink": false
- },
- // table pipes must be used before and after each table row
- "MD055": {
- "style": "leading_and_trailing"
- },
- // generic linktexts are prohibited
- "MD059": {
- "prohibited_texts": ["click here", "here", "link", "more"]
- },
- // table style must be compact (single spaces around cell content)
- "MD060": {
- "style": "compact"
- },
- // @see https://www.npmjs.com/package/@github/markdownlint-github
- // images should not contain default alternate texts
- "GH001": true,
- // links should not contain generic text ('click here', 'read more', etc.)
- "GH002": {
- "additional_banned_texts": ["Something", "Click here"]
- },
- // no empty alt texts for images
- "GH003": true,
- // @see https://www.npmjs.com/package/markdownlint-rule-relative-links
- "relative-links": {
- "root_path": "../.."
- },
- // @see https://www.npmjs.com/package/markdownlint-rule-search-replace
- "search-replace": {
- "rules": [
- {
- "name": "ellipsis",
- "message": "Do not use three dots '...' for ellipsis.",
- "information": "https://example.com/rules/ellipsis",
- "search": "...",
- "replace": "…",
- "searchScope": "text"
- },
- {
- "name": "curly-double-quotes",
- "message": "Do not use curly double quotes.",
- "searchPattern": "/“|”/g",
- "replace": "\""
- }
- ]
- },
- // @see https://www.npmjs.com/package/markdownlint-rule-extended-ascii
- "extended-ascii": {
- "ascii-only": true
- },
- // @see https://www.npmjs.com/package/markdownlint-rule-title-case-style
- "title-case-style": {
- // letter case style to apply
- //
- // "sentence" or "title" (default: sentence)
- "case": "sentence",
- // words to ignore when applying letter case.
- //
- // string[] (default: [])
- "ignore": ["JavaScript"]
- }
-}
diff --git a/.release-it.ts b/.release-it.ts
index c0e791d..583766c 100644
--- a/.release-it.ts
+++ b/.release-it.ts
@@ -1,154 +1,92 @@
import { execSync } from "node:child_process";
+import { createReleaseConfig } from "@dnbhq/release-config";
import type { Config } from "release-it";
-interface ConventionalCommitLike {
- type?: string;
- notes?: unknown[];
-}
-
function getCurrentBranch(): string {
- try {
- return execSync("git rev-parse --abbrev-ref HEAD", {
- encoding: "utf8",
- stdio: ["ignore", "pipe", "pipe"],
- }).trim();
- } catch (error: unknown) {
- console.error("Failed to determine the current Git branch.");
- console.error(error);
- process.exit(1);
- }
+ try {
+ return execSync("git rev-parse --abbrev-ref HEAD", {
+ encoding: "utf8",
+ stdio: ["ignore", "pipe", "pipe"],
+ }).trim();
+ } catch (error: unknown) {
+ console.error("Failed to determine the current Git branch.");
+ console.error(error);
+ process.exit(1);
+ }
}
function isPreReleaseRun(argv: string[]): boolean {
- return argv.some((argument) => {
- return (
- argument === "--preRelease" ||
- argument.startsWith("--preRelease=") ||
- argument === "--preReleaseId" ||
- argument.startsWith("--preReleaseId=")
- );
- });
+ return argv.some((argument) => {
+ return (
+ argument === "--preRelease" ||
+ argument.startsWith("--preRelease=") ||
+ argument === "--preReleaseId" ||
+ argument.startsWith("--preReleaseId=")
+ );
+ });
}
const currentBranch = getCurrentBranch();
const preReleaseRun = isPreReleaseRun(process.argv);
if (preReleaseRun && currentBranch !== "development") {
- console.error(
- `Pre-releases are only allowed on "development". Current branch: "${currentBranch}".`,
- );
- process.exit(1);
+ console.error(
+ `Pre-releases are only allowed on "development". Current branch: "${currentBranch}".`,
+ );
+ process.exit(1);
}
if (!preReleaseRun && currentBranch !== "main") {
- console.error(
- `Stable releases are only allowed on "main". Current branch: "${currentBranch}".`,
- );
- process.exit(1);
+ console.error(
+ `Stable releases are only allowed on "main". Current branch: "${currentBranch}".`,
+ );
+ process.exit(1);
}
-const config = {
- npm: {
- publish: false,
- },
- git: {
- requireCleanWorkingDir: true,
- requireBranch: currentBranch,
- commit: true,
- commitMessage: "chore(release): v${version}",
- commitArgs: ["--no-verify"],
- tag: true,
- tagName: "v${version}",
- push: true,
- pushArgs: ["--follow-tags"],
- },
- github: {
- release: true,
- releaseName: "Release v${version}",
- skipChecks: true,
- tokenRef: "GITHUB_ANANKE_TOKEN_ADMIN_PRIVATE",
- comments: {
- submit: true,
- },
- discussionCategoryName: "1-release-notes",
- },
- plugins: {
- "@release-it/conventional-changelog": {
- infile: "CHANGELOG.md",
- preset: {
- name: "conventionalcommits",
- commitUrlFormat:
- "https://github.com/gohugo-ananke/ananke/commit/{{hash}}",
- compareUrlFormat:
- "https://github.com/gohugo-ananke/ananke/compare/{{previousTag}}...{{currentTag}}",
- types: [
- { type: "feat", section: "Features" },
- { type: "fix", section: "Bug Fixes" },
- { type: "build", section: "Build" },
- { type: "chore", section: "Chores" },
- { type: "ci", section: "CI" },
- { type: "docs", section: "Documentation" },
- { type: "perf", section: "Performance" },
- { type: "refactor", section: "Refactoring" },
- { type: "revert", section: "Reverts" },
- { type: "style", section: "Styles" },
- { type: "test", section: "Tests" },
- { type: "ai", section: "AI Instruction Files" },
- ],
- },
- whatBump(commits: ConventionalCommitLike[]) {
- let level: 2 | 1 | 0 | null = null;
-
- for (const commit of commits) {
- const notes = Array.isArray(commit.notes) ? commit.notes : [];
- const type = typeof commit.type === "string" ? commit.type : "";
-
- if (notes.length > 0) {
- return {
- level: 0,
- reason: "There are BREAKING CHANGES.",
- };
- }
-
- if (type === "feat") {
- level = 1;
- continue;
- }
-
- if (
- level === null &&
- [
- "fix",
- "build",
- "chore",
- "ci",
- "docs",
- "perf",
- "refactor",
- "revert",
- "style",
- "test",
- "ai",
- ].includes(type)
- ) {
- level = 2;
- }
- }
-
- if (level === null) {
- return false;
- }
-
- return {
- level,
- reason:
- level === 1
- ? "There are feature commits."
- : "There are patch-level changes.",
- };
- },
- },
- },
-} satisfies Config;
+const config: Config = createReleaseConfig({
+ githubTokenRef: "GITHUB_ANANKE_TOKEN_ADMIN_PRIVATE",
+ scopes: {
+ minorTypes: ["feat"],
+ patchTypes: [
+ "fix",
+ "build",
+ "chore",
+ "ci",
+ "docs",
+ "perf",
+ "refactor",
+ "revert",
+ "style",
+ "test",
+ "ai",
+ ],
+ },
+ overrides: {
+ git: {
+ requireCleanWorkingDir: true,
+ requireBranch: currentBranch,
+ commit: true,
+ // biome-ignore lint/suspicious/noTemplateCurlyInString: release-it expands this placeholder.
+ commitMessage: "chore(release): v${version}",
+ commitArgs: ["--no-verify"],
+ tag: true,
+ // biome-ignore lint/suspicious/noTemplateCurlyInString: release-it expands this placeholder.
+ tagName: "v${version}",
+ push: true,
+ pushArgs: ["--follow-tags"],
+ },
+ github: {
+ release: true,
+ // biome-ignore lint/suspicious/noTemplateCurlyInString: release-it expands this placeholder.
+ releaseName: "Release v${version}",
+ skipChecks: true,
+ tokenRef: "GITHUB_ANANKE_TOKEN_ADMIN_PRIVATE",
+ comments: {
+ submit: true,
+ },
+ discussionCategoryName: "1-release-notes",
+ },
+ },
+});
export default config;
diff --git a/.vscode/instructions/shortcodes.instructions.md b/.vscode/instructions/shortcodes.instructions.md
new file mode 100644
index 0000000..95c4121
--- /dev/null
+++ b/.vscode/instructions/shortcodes.instructions.md
@@ -0,0 +1,17 @@
+---
+title: "Shortcodes"
+applyTo: "layouts/_shortcodes/**/*.html"
+description: This file describes the code style for shortcodes in the project.
+---
+
+* DO use [InnerDeindent](https://gohugo.io/functions/innerdeindent/) to format the content of shortcodes. This will remove any common leading whitespace from the content, making it easier to read and maintain. Markdown linting will warn/error on indented code blocks and force the user to use backticks instead.
+
+* DO accept both named and positional parameters in the shortcode.
+
+* DO use [IsNamedParams](https://gohugo.io/methods/shortcode/isnamedparams/) to check if the shortcode is being called with named parameters. This will allow you to handle both named and positional parameters in your shortcode.
+
+* DO use [Page](https://gohugo.io/methods/shortcode/page/) and [Site](https://gohugo.io/methods/shortcode/site/) from the shortcode context to access page and site variables.
+
+* DO NOT add any strings that are part of the output to the shortcode. These strings must be defined ino the i18n/en.toml file and accessed using the [`language.Translate`](https://gohugo.io/functions/lang/translate/) function.
+
+* DO add documentation of all new or changed features in shortcodes in the documentation repository.
diff --git a/.vscode/prompts/test-hugo-versions.prompt.md b/.vscode/prompts/test-hugo-versions.prompt.md
new file mode 100644
index 0000000..45185f6
--- /dev/null
+++ b/.vscode/prompts/test-hugo-versions.prompt.md
@@ -0,0 +1,300 @@
+---
+description: Test an Ananke website against multiple local Hugo versions
+---
+
+# Test ananke websites with local hugo versions
+
+Use these instructions when testing an Ananke-based website against multiple local Hugo binaries.
+
+The goal is to verify that the website builds correctly across a requested Hugo version range, collect full logs per Hugo version, and compare output differences, warnings, and errors.
+
+## Hugo executable location
+
+Assume Hugo binaries are stored in:
+
+`~/github.com/davidsneighbour/hugov/executables/`
+
+The binary names follow this pattern:
+
+```text
+hugo-v0.162.1
+hugo-v0.162.1-extended
+```
+
+Only use the **non-extended** Hugo binaries for these tests.
+
+Do not use binaries ending in:
+
+```text
+-extended
+```
+
+## Version range interpretation
+
+When the user says something like:
+
+```text
+test between 160 and 162
+```
+
+interpret it as:
+
+```text
+v0.160.0 <= version < v0.163.0
+```
+
+In other words:
+
+* `160` means all available `v0.160.x` versions.
+* `161` means all available `v0.161.x` versions.
+* `162` means all available `v0.162.x` versions.
+* Include every patch version found locally in that range.
+* Do not invent missing versions.
+* Do not download Hugo versions.
+* Only test versions that exist as local non-extended binaries.
+
+Examples:
+
+```text
+test between 160 and 162
+```
+
+should include binaries such as:
+
+```text
+hugo-v0.160.0
+hugo-v0.160.1
+hugo-v0.161.0
+hugo-v0.162.0
+hugo-v0.162.1
+```
+
+but only if they exist locally.
+
+It must exclude:
+
+```text
+hugo-v0.160.0-extended
+hugo-v0.162.1-extended
+```
+
+## Required test workflow
+
+Run the test from the root of the Ananke website repository unless the user explicitly gives another path.
+
+For each matching Hugo binary:
+
+1. Resolve the absolute path of the Hugo binary.
+2. Extract the semantic version from the filename.
+3. Run the Hugo build command using that binary.
+4. Capture stdout and stderr.
+5. Store the full output in a log file.
+6. Record the exit status.
+7. Record warnings.
+8. Record errors.
+9. Compare the generated output and command output across all tested versions.
+10. Summarise differences.
+
+## Log directory
+
+Store logs in:
+
+```text
+~/.logs/ananke-hugo-tests/
+```
+
+Create the directory if it does not exist.
+
+Each test run should create a timestamped run directory:
+
+```text
+~/.logs/ananke-hugo-tests/YYYYMMDD-HHMMSS/
+```
+
+Inside that directory, write one log file per Hugo version.
+
+Use filenames sorted naturally by version:
+
+```text
+hugo-v0.160.0.log
+hugo-v0.160.1.log
+hugo-v0.161.0.log
+hugo-v0.162.1.log
+```
+
+Also create a summary file:
+
+```text
+summary.md
+```
+
+The summary file must include:
+
+* tested repository path
+* test timestamp
+* requested version range
+* resolved Hugo binaries
+* command used per version
+* exit status per version
+* warning count per version
+* error count per version
+* output differences
+* build output differences
+* final judgement
+
+## Hugo command
+
+Use this default command unless the user requests another one:
+
+```bash
+hugo --gc --minify
+```
+
+Before each Hugo run, remove the generated output directory if it exists.
+
+Default output directory:
+
+```text
+public/
+```
+
+This prevents stale output from one version affecting another version.
+
+## Build output isolation
+
+Each Hugo version must build into its own output directory so that generated files can be compared.
+
+Use this pattern:
+
+```text
+.tmp/hugo-version-tests/v0.162.1/public/
+```
+
+Run Hugo with:
+
+```bash
+hugo --gc --minify --destination ".tmp/hugo-version-tests/v0.162.1/public"
+```
+
+Before each run, remove that version's output directory.
+
+Do not remove unrelated folders.
+
+## Comparison requirements
+
+After all builds finish, compare:
+
+1. Exit status
+2. stdout and stderr
+3. warnings
+4. errors
+5. generated file lists
+6. generated file contents
+
+The comparison must identify:
+
+* versions that failed
+* versions that passed
+* warnings that appear only in specific versions
+* errors that appear only in specific versions
+* files generated by one version but missing in another
+* files with changed contents
+* relevant differences in generated HTML, CSS, JS, XML, JSON, and text files
+
+Ignore irrelevant noise where appropriate, such as:
+
+* timestamps generated by the build
+* absolute temporary paths
+* known cache paths
+* ordering differences that do not change generated output
+
+Do not hide real build differences.
+
+## Warning and error detection
+
+Scan logs case-insensitively for lines containing:
+
+```text
+warning
+warn
+error
+failed
+deprecated
+panic
+timeout
+```
+
+List matching lines grouped by Hugo version.
+
+When warnings or errors repeat across all versions, list them once and mark them as shared.
+
+When warnings or errors only happen in some versions, highlight the affected versions.
+
+## Required final response format
+
+When reporting results, use this structure:
+
+```markdown
+## Hugo version test summary
+
+Repository: `...`
+
+Requested range: `...`
+
+Resolved Hugo versions:
+
+* `v0.160.0` - passed
+* `v0.160.1` - passed
+* `v0.161.0` - failed
+* `v0.162.1` - passed
+
+## Issues
+
+### Errors
+
+* `v0.161.0`: ...
+
+### Warnings
+
+* Shared across all versions: ...
+* `v0.162.1` only: ...
+
+## Output differences
+
+### File list differences
+
+* `v0.160.0` generated `...`, but `v0.162.1` did not.
+
+### File content differences
+
+* `public/index.html` differs between `v0.160.0` and `v0.162.1`.
+ * Difference: ...
+
+## Logs
+
+Logs were written to:
+
+`~/.logs/ananke-hugo-tests/YYYYMMDD-HHMMSS/`
+
+Summary file:
+
+`~/.logs/ananke-hugo-tests/YYYYMMDD-HHMMSS/summary.md`
+
+## Final judgement
+
+...
+```
+
+## Behaviour rules
+
+* Do not use Hugo extended binaries.
+* Do not download missing Hugo versions.
+* Do not assume a patch version exists.
+* Do not stop after the first failing version.
+* Continue testing all resolved versions.
+* Always keep the full log output.
+* Always compare results after all runs.
+* Always list the tested Hugo binary paths.
+* Always show when no matching Hugo versions were found.
+* Always distinguish between command output differences and generated site output differences.
+* Always use explicit version numbers in the final summary.
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 01a5e45..dbc544b 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,35 +1,33 @@
{
- "editor.formatOnSave": true,
- "files.autoSave": "afterDelay",
- "files.autoSaveWhenNoErrors": true,
- "files.autoSaveWorkspaceFilesOnly": true,
- "cSpell.language": "en-GB",
- "cSpell.dictionaryDefinitions": [
- {
- "name": "workspace",
- "path": "./.vscode/custom-dictionary.txt",
- "addWords": true
- }
- ],
- "cSpell.dictionaries": [
- "workspace"
- ],
- "cSpell.enabledFileTypes": {
- "markdown": true,
- "plaintext": true,
- "json": true,
- "yaml": true,
- "yml": true,
- "typescript": true,
- "javascript": true
- },
- "explorer.fileNesting.enabled": true,
- "explorer.fileNesting.patterns": {
- "package.json": "package-lock.json, netlify.toml, .lintstagedrc.js, .release-it.ts, .markdownlint*, .nvmrc, lychee.toml, tsconfig.json, .coderabbit.yaml",
- "theme.toml": "go.mod, go.sum",
- "README.md": "CHANGELOG.md, LICENSE.md, CONTRIBUTING.md, RELEASES.md, DESIGN.md",
- "*.ts": "$(capture).md, $(capture).test.ts, $(capture).spec.ts, $(capture).d.ts, $(capture).map, $(capture).js, $(capture).jsx, $(capture).tsx"
- },
- "window.autoDetectColorScheme": false,
- "markdown.extension.tableFormatter.enabled": false
-}
\ No newline at end of file
+ "editor.formatOnSave": true,
+ "files.autoSave": "afterDelay",
+ "files.autoSaveWhenNoErrors": true,
+ "files.autoSaveWorkspaceFilesOnly": true,
+ "cSpell.language": "en-GB",
+ "cSpell.dictionaryDefinitions": [
+ {
+ "name": "workspace",
+ "path": "./.vscode/custom-dictionary.txt",
+ "addWords": true
+ }
+ ],
+ "cSpell.dictionaries": ["workspace"],
+ "cSpell.enabledFileTypes": {
+ "markdown": true,
+ "plaintext": true,
+ "json": true,
+ "yaml": true,
+ "yml": true,
+ "typescript": true,
+ "javascript": true
+ },
+ "explorer.fileNesting.enabled": true,
+ "explorer.fileNesting.patterns": {
+ "package.json": "package-lock.json, netlify.toml, lint-staged.config.ts, .release-it.ts, biome.json, renovate.json5, .nvmrc, lychee.toml, tsconfig.json, .coderabbit.yaml",
+ "theme.toml": "go.mod, go.sum",
+ "README.md": "CHANGELOG.md, LICENSE.md, CONTRIBUTING.md, RELEASES.md, DESIGN.md",
+ "*.ts": "$(capture).md, $(capture).test.ts, $(capture).spec.ts, $(capture).d.ts, $(capture).map, $(capture).js, $(capture).jsx, $(capture).tsx"
+ },
+ "window.autoDetectColorScheme": false,
+ "markdown.extension.tableFormatter.enabled": false
+}
diff --git a/ananke.code-workspace b/ananke.code-workspace
index a93e278..f16eac1 100644
--- a/ananke.code-workspace
+++ b/ananke.code-workspace
@@ -1,52 +1,52 @@
{
- "folders": [
- {
- "path": "."
- },
- {
- "path": "../documentation"
- },
- {
- "path": "../template-git-submod"
- },
- {
- "path": "../template-hugo-mod"
- }
- ],
- "settings": {
- "window.autoDetectColorScheme": false,
- "markdown.extension.tableFormatter.enabled": false,
- "chat.tools.terminal.autoApprove": {
- "git fetch": true,
- "git worktree": true,
- "git add": true,
- "git push": true
- },
- "markdown.extension.toc.unorderedList.marker": "*",
- "markdown.extension.toc.levels": "2..6"
- },
- "extensions": {
- "recommendations": [
- "ms-vscode.vscode-github-issue-notebooks",
- "github.vscode-pull-request-github",
- "pkief.material-icon-theme",
- "yzhang.markdown-all-in-one",
- "davidanson.vscode-markdownlint",
- "zizmor.zizmor-vscode",
- "streetsidesoftware.code-spell-checker-cspell-bundled-dictionaries",
- "budparr.language-hugo-vscode",
- "jinliming2.vscode-go-template",
- "gohugoio.gotmplfmt",
- "casualjim.gotemplate",
- "streetsidesoftware.code-spell-checker",
- "streetsidesoftware.code-spell-checker-british-english",
- "gohugoio.gotmplfmt",
- "anthropic.claude-code",
- "aaron-bond.better-comments",
- "redhat.vscode-xml",
- "redhat.vscode-yaml",
- "google.wireit",
- "dunstontc.vscode-go-syntax"
- ]
- }
-}
\ No newline at end of file
+ "folders": [
+ {
+ "path": "."
+ },
+ {
+ "path": "../documentation"
+ },
+ {
+ "path": "../template-git-submod"
+ },
+ {
+ "path": "../template-hugo-mod"
+ }
+ ],
+ "settings": {
+ "window.autoDetectColorScheme": false,
+ "markdown.extension.tableFormatter.enabled": false,
+ "chat.tools.terminal.autoApprove": {
+ "git fetch": true,
+ "git worktree": true,
+ "git add": true,
+ "git push": true
+ },
+ "markdown.extension.toc.unorderedList.marker": "*",
+ "markdown.extension.toc.levels": "2..6"
+ },
+ "extensions": {
+ "recommendations": [
+ "ms-vscode.vscode-github-issue-notebooks",
+ "github.vscode-pull-request-github",
+ "pkief.material-icon-theme",
+ "yzhang.markdown-all-in-one",
+ "davidanson.vscode-markdownlint",
+ "zizmor.zizmor-vscode",
+ "streetsidesoftware.code-spell-checker-cspell-bundled-dictionaries",
+ "budparr.language-hugo-vscode",
+ "jinliming2.vscode-go-template",
+ "gohugoio.gotmplfmt",
+ "casualjim.gotemplate",
+ "streetsidesoftware.code-spell-checker",
+ "streetsidesoftware.code-spell-checker-british-english",
+ "gohugoio.gotmplfmt",
+ "anthropic.claude-code",
+ "aaron-bond.better-comments",
+ "redhat.vscode-xml",
+ "redhat.vscode-yaml",
+ "google.wireit",
+ "dunstontc.vscode-go-syntax"
+ ]
+ }
+}
diff --git a/assets/ananke/css/_code.css b/assets/ananke/css/_code.css
index a41ef5d..e1db178 100644
--- a/assets/ananke/css/_code.css
+++ b/assets/ananke/css/_code.css
@@ -1,4 +1,5 @@
-pre, .pre {
+pre,
+.pre {
overflow-x: auto;
overflow-y: hidden;
}
@@ -47,7 +48,9 @@
border-radius: 4px;
cursor: pointer;
opacity: 0;
- transition: opacity 0.15s ease-in-out, background-color 0.15s ease-in-out;
+ transition:
+ opacity 0.15s ease-in-out,
+ background-color 0.15s ease-in-out;
}
/* Reveal on hover and when focused for keyboard users. */
@@ -77,4 +80,4 @@
.code-block .code-copy {
transition: none;
}
-}
\ No newline at end of file
+}
diff --git a/assets/ananke/css/_hugo-internal-templates.css b/assets/ananke/css/_hugo-internal-templates.css
index 6beead1..f41b483 100644
--- a/assets/ananke/css/_hugo-internal-templates.css
+++ b/assets/ananke/css/_hugo-internal-templates.css
@@ -5,18 +5,18 @@
.pagination li {
display: inline-block;
- margin-right: .375rem;
- font-size: .875rem;
+ margin-right: 0.375rem;
+ font-size: 0.875rem;
margin-bottom: 2.5em;
}
[dir="rtl"] .pagination li {
- margin-left: .375rem;
+ margin-left: 0.375rem;
margin-right: 0;
}
.pagination li a {
- padding: .5rem .625rem;
+ padding: 0.5rem 0.625rem;
background-color: white;
color: #333;
border: 1px solid #ddd;
diff --git a/assets/ananke/css/_social-icons.css b/assets/ananke/css/_social-icons.css
index 516047b..cb648d1 100644
--- a/assets/ananke/css/_social-icons.css
+++ b/assets/ananke/css/_social-icons.css
@@ -1,10 +1,10 @@
-.ananke-socials a{
+.ananke-socials a {
display: inline-block;
vertical-align: middle;
- color: #BABABA;
+ color: #bababa;
fill: currentColor;
}
-.ananke-socials a .icon svg{
+.ananke-socials a .icon svg {
width: 32px;
height: 32px;
}
diff --git a/assets/ananke/css/_styles.css b/assets/ananke/css/_styles.css
index 9db98a7..bf144a4 100644
--- a/assets/ananke/css/_styles.css
+++ b/assets/ananke/css/_styles.css
@@ -6,15 +6,14 @@
.lh-copy blockquote {
display: block;
- font-size: .875em;
+ font-size: 0.875em;
margin-left: 2rem;
margin-top: 2rem;
margin-bottom: 2rem;
border-left: 4px solid #ccc;
padding-left: 1rem;
-
}
-.nested-links a{
+.nested-links a {
overflow-wrap: break-word;
}
diff --git a/biome.json b/biome.json
new file mode 100644
index 0000000..6f1bebc
--- /dev/null
+++ b/biome.json
@@ -0,0 +1,11 @@
+{
+ "$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
+ "extends": ["./node_modules/@dnbhq/biome-config/config.json"],
+ "files": {
+ "includes": [
+ "!!**/*.html",
+ "!!assets/ananke/css/_tachyons.css",
+ "!!assets/ananke/dist"
+ ]
+ }
+}
diff --git a/lint-staged.config.ts b/lint-staged.config.ts
new file mode 100644
index 0000000..c8d7f6d
--- /dev/null
+++ b/lint-staged.config.ts
@@ -0,0 +1,22 @@
+import { createLintStagedConfig } from "@dnbhq/lintstaged-config";
+import type { Configuration } from "lint-staged";
+
+const config: Configuration = createLintStagedConfig({
+ secrets: { enabled: false },
+ markdown: {
+ configPath:
+ "./node_modules/@dnbhq/markdownlint-config/.markdownlint-cli2.jsonc",
+ },
+ yaml: {
+ enabled: true,
+ configPath: ".yamllint.yml",
+ },
+ overrides: {
+ ".github/workflows/**/*.y(a?)ml": ["zizmor --no-exit-codes"],
+ "package-lock.json": [
+ "lockfile-lint --path package-lock.json --validate-https --allowed-hosts npm",
+ ],
+ },
+});
+
+export default config;
diff --git a/package-lock.json b/package-lock.json
index 974f94d..6d604ee 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,5225 +1,5461 @@
{
- "name": "@gohugo-ananke/ananke",
- "version": "2.19.1",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "@gohugo-ananke/ananke",
- "version": "2.19.1",
- "license": "MIT",
- "devDependencies": {
- "@axe-core/playwright": "4.13.0",
- "@biomejs/biome": "2.5.14",
- "@github/markdownlint-github": "0.8.4",
- "@playwright/test": "1.63.0",
- "@release-it/conventional-changelog": "12.0.2",
- "@types/node": "26.6.3",
- "dotenv": "18.0.4",
- "lint-staged": "17.6.0",
- "lockfile-lint": "5.0.1",
- "markdownlint": "0.41.1",
- "markdownlint-cli2": "0.23.3",
- "markdownlint-rule-extended-ascii": "0.2.1",
- "markdownlint-rule-list-duplicates": "0.0.1",
- "markdownlint-rule-relative-links": "5.1.3",
- "markdownlint-rule-search-replace": "1.2.0",
- "markdownlint-rule-title-case-style": "0.4.3",
- "release-it": "21.1.0",
- "simple-git-hooks": "2.14.0",
- "typescript": "7.0.2",
- "yaml": "2.9.1"
- }
- },
- "node_modules/@axe-core/playwright": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.13.0.tgz",
- "integrity": "sha512-6YLx+kxXu5GJceG4ozFg+33a2EMTdjYwWGloJ3sb9Kta5pp+ZNS53uxGVog5JetIY8s++P5UrtX+cri+u0VAVg==",
- "dev": true,
- "license": "MPL-2.0",
- "dependencies": {
- "axe-core": "~4.13.0"
- },
- "peerDependencies": {
- "playwright-core": ">= 1.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
- "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.28.5",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.1.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
- "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@biomejs/biome": {
- "version": "2.5.14",
- "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.5.14.tgz",
- "integrity": "sha512-0FabLIjd4M/dm8VFI86RMaLLdgepzbdfiAL2R8cr7V81OYYrP1w7Z73KfAwPK5h9SrEBXTzNG2y+mBwPo9xRnw==",
- "dev": true,
- "license": "MIT OR Apache-2.0",
- "bin": {
- "biome": "bin/biome"
- },
- "engines": {
- "node": ">=14.21.3"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/biome"
- },
- "optionalDependencies": {
- "@biomejs/cli-darwin-arm64": "2.5.14",
- "@biomejs/cli-darwin-x64": "2.5.14",
- "@biomejs/cli-linux-arm64": "2.5.14",
- "@biomejs/cli-linux-arm64-musl": "2.5.14",
- "@biomejs/cli-linux-x64": "2.5.14",
- "@biomejs/cli-linux-x64-musl": "2.5.14",
- "@biomejs/cli-win32-arm64": "2.5.14",
- "@biomejs/cli-win32-x64": "2.5.14"
- }
- },
- "node_modules/@biomejs/cli-darwin-arm64": {
- "version": "2.5.14",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.5.14.tgz",
- "integrity": "sha512-UnzaXO65L4tsZimFITFP2M121GyhDcWFrT3pL5ZJ5U4XcS/0L5VHYytVohdCf/gnDUFHgl2I9xnt5bV/J1kxHQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT OR Apache-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=14.21.3"
- }
- },
- "node_modules/@biomejs/cli-darwin-x64": {
- "version": "2.5.14",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.5.14.tgz",
- "integrity": "sha512-kiy8qA16K93J7uvFfWi4LgjqDpnRKyePAna6A0Y4jxyUga35SYpIZ2cNWlhy0lsfgqRenCpfymnJWEZ6mgpRgA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT OR Apache-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=14.21.3"
- }
- },
- "node_modules/@biomejs/cli-linux-arm64": {
- "version": "2.5.14",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.5.14.tgz",
- "integrity": "sha512-vO/9BaU1n30CiFNLx49gMTMtbCAAqlo/EqFoG0BU3deQInTbJrmXSmTQ9e3FoDZIKQnvSLDVNL4lx1ci7y1T1Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "libc": [
- "glibc"
- ],
- "license": "MIT OR Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=14.21.3"
- }
- },
- "node_modules/@biomejs/cli-linux-arm64-musl": {
- "version": "2.5.14",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.5.14.tgz",
- "integrity": "sha512-SJ9PrZkBnnH9dHJDnxk34vKs0GB2dbsioaft6/hPhWJ7AHpwYH83Isnhj0FSRpFkGgpVfJ1lds23ApB2czUDLQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "libc": [
- "musl"
- ],
- "license": "MIT OR Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=14.21.3"
- }
- },
- "node_modules/@biomejs/cli-linux-x64": {
- "version": "2.5.14",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.5.14.tgz",
- "integrity": "sha512-VHZRa7CCQBUWKxNwUvHJeuW03WFRgN5NWO//SDGOitc9QIeNyfA42V9zlKm+x82xFSG9Bzi5fi+hbhm9anO8yA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "libc": [
- "glibc"
- ],
- "license": "MIT OR Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=14.21.3"
- }
- },
- "node_modules/@biomejs/cli-linux-x64-musl": {
- "version": "2.5.14",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.5.14.tgz",
- "integrity": "sha512-2kI5PrMgW5dcEZYrstLPmUmCwkUwZY39rP4BN93Vxbwcs2O57LDQOktUZZYPvvspN5i0mhGr3TJtF5sU26NUWg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "libc": [
- "musl"
- ],
- "license": "MIT OR Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=14.21.3"
- }
- },
- "node_modules/@biomejs/cli-win32-arm64": {
- "version": "2.5.14",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.5.14.tgz",
- "integrity": "sha512-pHgAFffmZtaYoxavEsWEYNvcA7NwOIjLyqw2HXyLbt16xYryX0L4fMV2u0G9ag6LNYPIoqWaWqzUcnc6rLGGXg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT OR Apache-2.0",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=14.21.3"
- }
- },
- "node_modules/@biomejs/cli-win32-x64": {
- "version": "2.5.14",
- "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.5.14.tgz",
- "integrity": "sha512-oJWmBhoHsnhUKIke+0gXDX0mltJrWHA1UyHsrTlXwX0TL64ilVZAo+TYZm97baecV0esBdpzy3k96q+09JaZUQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT OR Apache-2.0",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=14.21.3"
- }
- },
- "node_modules/@conventional-changelog/git-client": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-3.1.2.tgz",
- "integrity": "sha512-jZqwnJwf7nboIlAcw/mkOjVa6DexCcUOgT2oOQgkoi3z9vR8tGFkcMy2BFcYwjhL9sYcDDXkRQDayiDieCoW7A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@simple-libs/child-process-utils": "^2.0.0",
- "@simple-libs/stream-utils": "^2.0.0",
- "semver": "^7.5.2"
- },
- "engines": {
- "node": ">=22"
- },
- "peerDependencies": {
- "conventional-commits-filter": "^6.0.1",
- "conventional-commits-parser": "^7.1.2"
- },
- "peerDependenciesMeta": {
- "conventional-commits-filter": {
- "optional": true
- },
- "conventional-commits-parser": {
- "optional": true
- }
- }
- },
- "node_modules/@conventional-changelog/template": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@conventional-changelog/template/-/template-1.4.0.tgz",
- "integrity": "sha512-aalGyl7dbB5PArRebDIX43ZvBlXrYm9uWzGJ26t+4SzJVPsOuvfILGGbw5X4yX7i50YEmJ8zvbiWnqH/AAnZqg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=22"
- }
- },
- "node_modules/@github/markdownlint-github": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/@github/markdownlint-github/-/markdownlint-github-0.8.4.tgz",
- "integrity": "sha512-dPBvvCPonvJkP+1AKZ7qu8kODmFkuo8zEhSWxbcjj4PZjMoDDbz7Z0d+GXG2So598B0zfv29Av26kB0SrrqSiw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lodash-es": "^4.17.21",
- "markdown-it": "15.0.2"
- },
- "engines": {
- "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
- }
- },
- "node_modules/@inquirer/ansi": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.8.tgz",
- "integrity": "sha512-WpQM+Ti6Z40EFwwt+uL2p4UabT+W179zHp6HhLVOzfbwnVn05IPO/eXIZXGNqcT1jbQ15SujNLzQ39k4QPPxBQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- }
- },
- "node_modules/@inquirer/checkbox": {
- "version": "5.2.5",
- "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.2.5.tgz",
- "integrity": "sha512-bRt8J8m+Fot9CXv+zNQGXUq2ET0MggR1fPz7v6edN6MFYmsbfGnMmkmWZJEegMKqrAC8ej/o1sqisHZXZJMAfQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/ansi": "^2.0.8",
- "@inquirer/core": "^12.0.3",
- "@inquirer/figures": "^2.0.9",
- "@inquirer/type": "4.1.1"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/confirm": {
- "version": "6.3.2",
- "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.3.2.tgz",
- "integrity": "sha512-Xvr/0HggjddPtGppuqVmxhTw+Hr8PvsZ/k0HmOEaAqQEt80OITNkFWnsdNmyT0/eM4Ab+iJLx2R8rctlEyfSVg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^12.0.3",
- "@inquirer/type": "4.1.1"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/core": {
- "version": "12.0.3",
- "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-12.0.3.tgz",
- "integrity": "sha512-wsSy0sznmXwkty+2PzZwx00Cazc/E0r0B7mAzdGROz2Ct+DFZXaK7WDjGZvgjRldxH5ZhFVfF2lgkYrqgOw2KA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/ansi": "^2.0.8",
- "@inquirer/figures": "^2.0.9",
- "@inquirer/type": "4.1.1",
- "cli-width": "^4.1.0",
- "fast-wrap-ansi": "^0.2.0",
- "mute-stream": "^3.0.0",
- "signal-exit": "^4.1.0"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/editor": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.3.3.tgz",
- "integrity": "sha512-YsKkS2q63IiLtaDK/9nqzdComN97SDQrmKiyNggN+ceP4ty+Z6VwyTz3FpjeUWeW1Efss2xHFKCC9sx7hnrsxg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^12.0.3",
- "@inquirer/external-editor": "^3.0.5",
- "@inquirer/type": "4.1.1"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/expand": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.1.5.tgz",
- "integrity": "sha512-uHuXLmXW+TtIfT/9vSBotypAkqn1n34Ul+CLGPos/xANyO4Ff5xZzkYhbKR4NEcfVK4a9mHQOpwVZzluSHFRGw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^12.0.3",
- "@inquirer/type": "4.1.1"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/external-editor": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.5.tgz",
- "integrity": "sha512-f3QQJRIX5ZEneBHNUIuPjmbdzHnmRFJA8r2dkcb8q+OM5Uv5KtnuAttQumnrjcBVBM3mcTX1CkmtAkU58VRZxg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chardet": "^2.1.1",
- "iconv-lite": "^0.7.2"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/figures": {
- "version": "2.0.9",
- "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.9.tgz",
- "integrity": "sha512-EAWgUTGQ/Umgga51dE3B2PUHbufuXarDfg86uVgoSgNHNNQnyFKcOrQLWVqYMghuSyHh8+2HUH0Js9cTC1WAdg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- }
- },
- "node_modules/@inquirer/input": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.6.tgz",
- "integrity": "sha512-HtcJhB2QFVXbLuJ5S3syhNbTUVxYvwqV4VRBDkQceBloC9bmTViUoRFP5PbSaDZb3HzfPmpuU/gG4ybVBz4FHA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^12.0.3",
- "@inquirer/type": "4.1.1"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/number": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.2.3.tgz",
- "integrity": "sha512-6Yuwh1NGSbu1Lo4N1EWjXs1jKRntLg/ZCwhmeorEHde90v1XxAozdbd4Iu30eOQLW+6h1hp2O9ujNfLSbTPJnA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^12.0.3",
- "@inquirer/type": "4.1.1"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/password": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.2.2.tgz",
- "integrity": "sha512-W9zYdyzogK+6110mqwaSJWCBu2yA5Q/OfnGSjjZB1bNpHlmUozXxTl0+QOZBNeVd6Qo81/qT75gW05gLAtITxw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/ansi": "^2.0.8",
- "@inquirer/core": "^12.0.3",
- "@inquirer/type": "4.1.1"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/prompts": {
- "version": "8.7.2",
- "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.7.2.tgz",
- "integrity": "sha512-QoRB4wFIjgH5iOhSjoIKMkTvSHDuV+O3OITlIqAYO0oK5x364GJILXiMBvlPiE+klg7Xx9tq5XVqQHcGUDYYPA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/checkbox": "^5.2.5",
- "@inquirer/confirm": "^6.3.2",
- "@inquirer/editor": "^5.3.3",
- "@inquirer/expand": "^5.1.5",
- "@inquirer/input": "^5.1.6",
- "@inquirer/number": "^4.2.3",
- "@inquirer/password": "^5.2.2",
- "@inquirer/rawlist": "^5.3.5",
- "@inquirer/search": "^4.3.3",
- "@inquirer/select": "^5.2.5"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/rawlist": {
- "version": "5.3.5",
- "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.3.5.tgz",
- "integrity": "sha512-1oHky1ONfCOwNrnkQGDE1oaSij/3fI6HFMSf2H/WsGO2lEyDX9My82iggITSy9ddSZ8yk8j9v41OI0fVoSIoaA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^12.0.3",
- "@inquirer/type": "4.1.1"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/search": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.3.3.tgz",
- "integrity": "sha512-fyuIU1Nbpvwlikjg3gXwJFDI11+EFjqQ7P+iByfmivIKQ1vmaykNrD/vy5unHuUqUpsOsnvJ25//tPF7E/RBRA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^12.0.3",
- "@inquirer/figures": "^2.0.9",
- "@inquirer/type": "4.1.1"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/select": {
- "version": "5.2.5",
- "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.5.tgz",
- "integrity": "sha512-9kc15hr8r/kI+3DO/xLog5nOzTz1jqsHXa6JBFzmQKhkoJ8Slda1I1L/uD8ZSZ9tF1yp79wwXe7mclvX1rqR2Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/ansi": "^2.0.8",
- "@inquirer/core": "^12.0.3",
- "@inquirer/figures": "^2.0.9",
- "@inquirer/type": "4.1.1"
- },
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/type": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.1.1.tgz",
- "integrity": "sha512-yJoHYrMnxIsJZCY+0Vb66Dy3he3kL3e2wOBKhoSwWWAzZAY82emlxwgprCtp6yRixvNRNq9ztfRWQYPNr3Go7A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@octokit/auth-token": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz",
- "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@octokit/core": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz",
- "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/auth-token": "^6.0.0",
- "@octokit/graphql": "^9.0.3",
- "@octokit/request": "^10.0.6",
- "@octokit/request-error": "^7.0.2",
- "@octokit/types": "^16.0.0",
- "before-after-hook": "^4.0.0",
- "universal-user-agent": "^7.0.0"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@octokit/endpoint": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz",
- "integrity": "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^16.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@octokit/graphql": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz",
- "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/request": "^10.0.6",
- "@octokit/types": "^16.0.0",
- "universal-user-agent": "^7.0.0"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@octokit/openapi-types": {
- "version": "27.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz",
- "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@octokit/plugin-paginate-rest": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz",
- "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^16.0.0"
- },
- "engines": {
- "node": ">= 20"
- },
- "peerDependencies": {
- "@octokit/core": ">=6"
- }
- },
- "node_modules/@octokit/plugin-request-log": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz",
- "integrity": "sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20"
- },
- "peerDependencies": {
- "@octokit/core": ">=6"
- }
- },
- "node_modules/@octokit/plugin-rest-endpoint-methods": {
- "version": "17.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz",
- "integrity": "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^16.0.0"
- },
- "engines": {
- "node": ">= 20"
- },
- "peerDependencies": {
- "@octokit/core": ">=6"
- }
- },
- "node_modules/@octokit/request": {
- "version": "10.0.8",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.8.tgz",
- "integrity": "sha512-SJZNwY9pur9Agf7l87ywFi14W+Hd9Jg6Ifivsd33+/bGUQIjNujdFiXII2/qSlN2ybqUHfp5xpekMEjIBTjlSw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/endpoint": "^11.0.3",
- "@octokit/request-error": "^7.0.2",
- "@octokit/types": "^16.0.0",
- "fast-content-type-parse": "^3.0.0",
- "json-with-bigint": "^3.5.3",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@octokit/request-error": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz",
- "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^16.0.0"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@octokit/rest": {
- "version": "22.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.1.tgz",
- "integrity": "sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/core": "^7.0.6",
- "@octokit/plugin-paginate-rest": "^14.0.0",
- "@octokit/plugin-request-log": "^6.0.0",
- "@octokit/plugin-rest-endpoint-methods": "^17.0.0"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@octokit/types": {
- "version": "16.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz",
- "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^27.0.0"
- }
- },
- "node_modules/@phun-ky/typeof": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@phun-ky/typeof/-/typeof-2.0.3.tgz",
- "integrity": "sha512-oeQJs1aa8Ghke8JIK9yuq/+KjMiaYeDZ38jx7MhkXncXlUKjqQ3wEm2X3qCKyjo+ZZofZj+WsEEiqkTtRuE2xQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^20.9.0 || >=22.0.0",
- "npm": ">=10.8.2"
- },
- "funding": {
- "url": "https://github.com/phun-ky/typeof?sponsor=1"
- }
- },
- "node_modules/@playwright/test": {
- "version": "1.63.0",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.63.0.tgz",
- "integrity": "sha512-oxMK4vllB9RK5NQ2l1pq1IfOf2AvnEuj/vYGDj0H2nMtmtZpKtCwt/l00GEO6xjGfpBNAvjovvYdCm50dRQkpQ==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "playwright": "1.63.0"
- },
- "bin": {
- "playwright": "cli.js"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@release-it/conventional-changelog": {
- "version": "12.0.2",
- "resolved": "https://registry.npmjs.org/@release-it/conventional-changelog/-/conventional-changelog-12.0.2.tgz",
- "integrity": "sha512-mJsfycScVqud9O+GzVLT1wQBsIR2WO3kEe6Xm7ucf9yP9KyKRTY9yqoFe/kjLCNSu0lP0PzpuOooUYyzHm1oFw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@conventional-changelog/git-client": "^3.1.2",
- "concat-stream": "^2.0.0",
- "conventional-changelog": "^8.1.3",
- "conventional-changelog-angular": "^9.4.0",
- "conventional-changelog-conventionalcommits": "^10.4.0",
- "conventional-recommended-bump": "^12.1.0",
- "semver": "^7.8.5"
- },
- "engines": {
- "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
- },
- "peerDependencies": {
- "release-it": "^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0"
- }
- },
- "node_modules/@simple-libs/child-process-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@simple-libs/child-process-utils/-/child-process-utils-2.0.0.tgz",
- "integrity": "sha512-dvNoRKLijXnD0XoJAz94pbNuB5GQgDr55UhpSPhffDkTT0Cmcqh9jSCOtwfT2d4H6MI9E7c4SgtMuJXZ6F3c6A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@simple-libs/stream-utils": "^2.0.0"
- },
- "engines": {
- "node": ">=22"
- },
- "funding": {
- "url": "https://ko-fi.com/dangreen"
- }
- },
- "node_modules/@simple-libs/hosted-git-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@simple-libs/hosted-git-info/-/hosted-git-info-2.0.0.tgz",
- "integrity": "sha512-55XwK/GYgV58PuN8lZFhI1qRxdKoMLJocXl/yM1EPqazFDmM4QWY7q6BxPCPDNKTNunj794DSD4h0H7SrqUdMg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=22"
- },
- "funding": {
- "url": "https://ko-fi.com/dangreen"
- }
- },
- "node_modules/@simple-libs/normalize-package-data": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@simple-libs/normalize-package-data/-/normalize-package-data-1.0.0.tgz",
- "integrity": "sha512-/EOmFBekV9tGee8gac/k+5Ox3twkypNqh5TfxA9vTkmcJkjm6f1xqrlstDNOrEhTvnYyVtU6Du2ZhY/IV1+9GA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@simple-libs/hosted-git-info": "^2.0.0",
- "semver": "^7.8.5"
- },
- "engines": {
- "node": ">=22"
- },
- "funding": {
- "url": "https://ko-fi.com/dangreen"
- }
- },
- "node_modules/@simple-libs/stream-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@simple-libs/stream-utils/-/stream-utils-2.0.0.tgz",
- "integrity": "sha512-fCTuZK4QBa+39Oz9l4OGfJfz+GpwCp3AqO7Zch3to99xHPgstVsRFpeQ8LNd2o1Gv8raL2mCFwiaHh7bFSp5DQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=22"
- },
- "funding": {
- "url": "https://ko-fi.com/dangreen"
- }
- },
- "node_modules/@sindresorhus/merge-streams": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
- "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@types/debug": {
- "version": "4.1.13",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz",
- "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/ms": "*"
- }
- },
- "node_modules/@types/katex": {
- "version": "0.16.8",
- "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz",
- "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/ms": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
- "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/node": {
- "version": "26.6.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.3.tgz",
- "integrity": "sha512-dsqMQQoeTLqu9wynDD00q573mNzso3IdQOAfHRJqLCcmCFPoGo9A1bDpUcv/9tnKpErQWv9uKeGfl37EIS02Yg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "undici-types": "~8.9.0"
- }
- },
- "node_modules/@types/parse-path": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/@types/parse-path/-/parse-path-7.0.3.tgz",
- "integrity": "sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/unist": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
- "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@typescript/typescript-aix-ppc64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz",
- "integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-darwin-arm64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz",
- "integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-darwin-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz",
- "integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-freebsd-arm64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz",
- "integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-freebsd-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz",
- "integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-arm": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz",
- "integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-arm64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz",
- "integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-loong64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz",
- "integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-mips64el": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz",
- "integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-ppc64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz",
- "integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-riscv64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz",
- "integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-s390x": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz",
- "integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-linux-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz",
- "integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-netbsd-arm64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz",
- "integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-netbsd-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz",
- "integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-openbsd-arm64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz",
- "integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-openbsd-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz",
- "integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-sunos-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz",
- "integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-win32-arm64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz",
- "integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@typescript/typescript-win32-x64": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz",
- "integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/@yarnpkg/parsers": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.3.tgz",
- "integrity": "sha512-mQZgUSgFurUtA07ceMjxrWkYz8QtDuYkvPlu0ZqncgjopQ0t6CNEo/OSealkmnagSUx8ZD5ewvezUwUuMqutQg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "js-yaml": "^3.10.0",
- "tslib": "^2.4.0"
- },
- "engines": {
- "node": ">=18.12.0"
- }
- },
- "node_modules/@yarnpkg/parsers/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/@yarnpkg/parsers/node_modules/js-yaml": {
- "version": "3.15.2",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.2.tgz",
- "integrity": "sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/agent-base": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz",
- "integrity": "sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/ansi-regex": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
- "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true,
- "license": "Python-2.0"
- },
- "node_modules/argue-cli": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/argue-cli/-/argue-cli-3.2.0.tgz",
- "integrity": "sha512-VipTB0gXgGIFO2Rg9yEVN5wLt2AurJcZqDbgmYSwPwsykhLrQhs240/bfceev4w68lI8JshoOJIk9uW7tFzROw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=22"
- },
- "funding": {
- "url": "https://ko-fi.com/dangreen"
- }
- },
- "node_modules/ast-types": {
- "version": "0.13.4",
- "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
- "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/async-retry": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
- "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "retry": "0.13.1"
- }
- },
- "node_modules/axe-core": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.13.0.tgz",
- "integrity": "sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==",
- "dev": true,
- "license": "MPL-2.0",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/basic-ftp": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.1.tgz",
- "integrity": "sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/before-after-hook": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz",
- "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==",
- "dev": true,
- "license": "Apache-2.0"
- },
- "node_modules/braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/bundle-name": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.1.tgz",
- "integrity": "sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "run-applescript": "^7.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/c12": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.4.tgz",
- "integrity": "sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chokidar": "^5.0.0",
- "confbox": "^0.2.4",
- "defu": "^6.1.6",
- "dotenv": "^17.3.1",
- "exsolve": "^1.0.8",
- "giget": "^3.2.0",
- "jiti": "^2.6.1",
- "ohash": "^2.0.11",
- "pathe": "^2.0.3",
- "perfect-debounce": "^2.1.0",
- "pkg-types": "^2.3.0",
- "rc9": "^3.0.1"
- },
- "peerDependencies": {
- "magicast": "*"
- },
- "peerDependenciesMeta": {
- "magicast": {
- "optional": true
- }
- }
- },
- "node_modules/c12/node_modules/dotenv": {
- "version": "17.4.2",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz",
- "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://dotenvx.com"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/chalk": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
- "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.17.0 || ^14.13 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/character-entities": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
- "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-legacy": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
- "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-reference-invalid": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
- "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/chardet": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.2.0.tgz",
- "integrity": "sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/chokidar": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
- "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "readdirp": "^5.0.0"
- },
- "engines": {
- "node": ">= 20.19.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/ci-info": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz",
- "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-cursor": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
- "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "restore-cursor": "^5.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cli-spinners": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.4.0.tgz",
- "integrity": "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18.20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cli-width": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
- "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/cliui/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==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui/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==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/cliui/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui/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==",
- "dev": true,
- "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/cliui/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==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui/node_modules/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==",
- "dev": true,
- "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/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/concat-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
- "dev": true,
- "engines": [
- "node >= 6.0"
- ],
- "license": "MIT",
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/confbox": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz",
- "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/conventional-changelog": {
- "version": "8.1.3",
- "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-8.1.3.tgz",
- "integrity": "sha512-fOMwLCxm46znJKPB08jLxl1FD8SOZOQHktlzCVhvhhVUfq0KgQSryoYXsRRHs1aRlZPR1/QK5wztnY8sBNC2AA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@conventional-changelog/git-client": "^3.1.2",
- "@simple-libs/hosted-git-info": "^2.0.0",
- "@simple-libs/normalize-package-data": "^1.0.0",
- "argue-cli": "^3.1.0",
- "conventional-changelog-preset-loader": "^6.0.1",
- "conventional-changelog-writer": "^9.2.1",
- "conventional-commits-filter": "^6.0.1",
- "conventional-commits-parser": "^7.1.2",
- "fd-package-json": "^2.0.0"
- },
- "bin": {
- "conventional-changelog": "dist/cli/index.js"
- },
- "engines": {
- "node": ">=22"
- }
- },
- "node_modules/conventional-changelog-angular": {
- "version": "9.4.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-9.4.0.tgz",
- "integrity": "sha512-HdxRxuS8bBXVIuo4V82gvSwAXT0vYQUizrjs/izmPg5JdDstr8v8I5hduGL3iQbG+o310dUDxC4+LetuS5hu9w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@conventional-changelog/template": "^1.4.0"
- },
- "engines": {
- "node": ">=22"
- }
- },
- "node_modules/conventional-changelog-conventionalcommits": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-10.4.0.tgz",
- "integrity": "sha512-Rriac6ZrAlVm6cy9Bz4NSp+WMHpwNXoPIYex+HjCgduAVUSbnew29DQjQw0C4g9u3HtSYzGiGY+pdBXAZo+4aA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@conventional-changelog/template": "^1.4.0"
- },
- "engines": {
- "node": ">=22"
- }
- },
- "node_modules/conventional-changelog-preset-loader": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-6.0.1.tgz",
- "integrity": "sha512-GZ8E3RQzXQb3JFy0pKl8oeSf7ENIhvAMvJr+PlWkavZOesLHHdhkfNJ4SvW35eo1Fu2+EyVxWQ1tVvtzAG2iWg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=22"
- }
- },
- "node_modules/conventional-changelog-writer": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-9.2.1.tgz",
- "integrity": "sha512-StlYSmW3wLedRaqohJMpP3YuWiAqtgD0/cpsai9frdDkXv7rxj0hRbpJrubPYvJxJsjplONsOobEQnPuS9UgCg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@conventional-changelog/template": "^1.3.0",
- "@simple-libs/stream-utils": "^2.0.0",
- "argue-cli": "^3.1.0",
- "conventional-commits-filter": "^6.0.1",
- "semver": "^7.5.2"
- },
- "bin": {
- "conventional-changelog-writer": "dist/cli/index.js"
- },
- "engines": {
- "node": ">=22"
- }
- },
- "node_modules/conventional-commits-filter": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-6.0.1.tgz",
- "integrity": "sha512-cs+LadpH7Kpw0M3k8wurk+sOVVDAENA0iK4OBOrkL94j5lEVYRJ4j3zd2bhY9qgzyrPqthdcYT3axzRN7AliMg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=22"
- }
- },
- "node_modules/conventional-commits-parser": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-7.1.2.tgz",
- "integrity": "sha512-O+x4N2yH+ijvqWlIyTHsXTAP+algNWgGbjY2duCe8w2vUMvUB95cLRslCPfTMQyLAKlet3bhZTdu6ozn4M+QJQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@simple-libs/stream-utils": "^2.0.0",
- "argue-cli": "^3.1.0"
- },
- "bin": {
- "conventional-commits-parser": "dist/cli/index.js"
- },
- "engines": {
- "node": ">=22"
- }
- },
- "node_modules/conventional-recommended-bump": {
- "version": "12.1.0",
- "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-12.1.0.tgz",
- "integrity": "sha512-HTNG3kEZXOOfKwrEx54ljURU9bG4nVPQzXMyCSeUcA/PE8EpNpQNujSrbXNBI8QZyN35zM+pVw+FuQk4KqHSHg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@conventional-changelog/git-client": "^3.1.0",
- "argue-cli": "^3.1.0",
- "conventional-changelog-preset-loader": "^6.0.1",
- "conventional-commits-filter": "^6.0.1",
- "conventional-commits-parser": "^7.1.0"
- },
- "bin": {
- "conventional-recommended-bump": "dist/cli/index.js"
- },
- "engines": {
- "node": ">=22"
- }
- },
- "node_modules/cosmiconfig": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz",
- "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "env-paths": "^2.2.1",
- "import-fresh": "^3.3.0",
- "js-yaml": "^4.1.0",
- "parse-json": "^5.2.0"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/d-fischer"
- },
- "peerDependencies": {
- "typescript": ">=4.9.5"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/data-uri-to-buffer": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-8.0.0.tgz",
- "integrity": "sha512-6UHfyCux51b8PTGDgveqtz1tvphBku5DrMKKJbFAZAJOI2zsjDpDoYE1+QGj7FOMS4BdTFNJsJiR3zEB0xH0yQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/debug": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decode-named-character-reference": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz",
- "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "character-entities": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/default-browser": {
- "version": "5.5.1",
- "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.1.tgz",
- "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bundle-name": "^4.1.0",
- "default-browser-id": "^5.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/default-browser-id": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
- "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/define-lazy-prop": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
- "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/defu": {
- "version": "6.1.7",
- "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz",
- "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/degenerator": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-7.0.1.tgz",
- "integrity": "sha512-ABErK0IefDSyHjlPH7WUEenIAX2rPPnrDcDM+TS3z3+zu9TfyKKi07BQM+8rmxpdE2y1v5fjjdoAS/x4D2U60w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ast-types": "^0.13.4",
- "escodegen": "^2.1.0",
- "esprima": "^4.0.1"
- },
- "engines": {
- "node": ">= 20"
- },
- "peerDependencies": {
- "quickjs-wasi": "^2.2.0"
- }
- },
- "node_modules/dequal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/destr": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
- "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/devlop": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
- "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "dequal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/dotenv": {
- "version": "18.0.4",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-18.0.4.tgz",
- "integrity": "sha512-jGt9uI5BIxpVO15kvy+iEFqNAwxYClKWnkptLjSNPnFLC003Imd0ofr3aEVsbpHdSBdSsbcApNIlz4nbyGMwdA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "bin": {
- "dotenv": "dist/index.cjs"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://dotenvx.com"
- }
- },
- "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==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/entities": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz",
- "integrity": "sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=20.19.0"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/error-ex": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
- "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escodegen": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
- "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
- },
- "engines": {
- "node": ">=6.0"
- },
- "optionalDependencies": {
- "source-map": "~0.6.1"
- }
- },
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true,
- "license": "BSD-2-Clause",
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eta": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/eta/-/eta-4.6.0.tgz",
- "integrity": "sha512-lW6is4T1NFOYnmqGZIfvixqj7A7sSvScF+DN8EK6K58xI5MZ5UvYe0GjopxOXQtZvUn4eDdVuZ8XSoYWTMEKwA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/bgub/eta?sponsor=1"
- }
- },
- "node_modules/exsolve": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.1.1.tgz",
- "integrity": "sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/fast-content-type-parse": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz",
- "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "license": "MIT"
- },
- "node_modules/fast-glob": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
- "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.8"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-string-truncated-width": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz",
- "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/fast-string-width": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz",
- "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-string-truncated-width": "^3.0.2"
- }
- },
- "node_modules/fast-wrap-ansi": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz",
- "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-string-width": "^3.0.2"
- }
- },
- "node_modules/fastq": {
- "version": "1.20.3",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz",
- "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/fd-package-json": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-2.0.0.tgz",
- "integrity": "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "walk-up-path": "^4.0.0"
- }
- },
- "node_modules/fdir": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
- "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "picomatch": "^3 || ^4"
- },
- "peerDependenciesMeta": {
- "picomatch": {
- "optional": true
- }
- }
- },
- "node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/get-east-asian-width": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz",
- "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/get-uri": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-8.0.1.tgz",
- "integrity": "sha512-/5N/P4Lrh0p/mDwlDRi7Y1+P2o/OyzZI3l6Iz1Ov6XXwwm1y3RlZLuo3gVgML99djrEDtV980bBxSuOeHLk8ww==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "basic-ftp": "^5.3.1",
- "data-uri-to-buffer": "8.0.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/giget": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/giget/-/giget-3.3.1.tgz",
- "integrity": "sha512-r+mvuDjrjMpsdw46Kmeydb8bdHm7wOKw8wNBtTndkjbPjgAp5oUJUxRE76wZFknxIPokfWvep2qSXK37aXE6zg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "giget": "dist/cli.mjs"
- }
- },
- "node_modules/git-up": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/git-up/-/git-up-8.1.1.tgz",
- "integrity": "sha512-FDenSF3fVqBYSaJoYy1KSc2wosx0gCvKP+c+PRBht7cAaiCeQlBtfBDX9vgnNOHmdePlSFITVcn4pFfcgNvx3g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-ssh": "^1.4.0",
- "parse-url": "^9.2.0"
- }
- },
- "node_modules/git-url-parse": {
- "version": "16.1.0",
- "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-16.1.0.tgz",
- "integrity": "sha512-cPLz4HuK86wClEW7iDdeAKcCVlWXmrLpb2L+G9goW0Z1dtpNS6BXXSOckUTlJT/LDQViE1QZKstNORzHsLnobw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "git-up": "^8.1.0"
- }
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/globby": {
- "version": "16.2.4",
- "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.4.tgz",
- "integrity": "sha512-c8B/VNLmxRcmqqenRA9t+9IyOjf9+V6lTxPaUJLqOCONdQkWZ0ETYgX0qbtJqPsgCNusT9MZ5Jeidw8Eb9tn2g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@sindresorhus/merge-streams": "^4.0.0",
- "fast-glob": "^3.3.3",
- "ignore": "^7.0.5",
- "is-path-inside": "^4.0.0",
- "micromatch": "^4.0.8",
- "slash": "^5.1.0",
- "unicorn-magic": "^0.4.0"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/http-proxy-agent": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-9.1.0.tgz",
- "integrity": "sha512-2NxoveTT58mjYT4n3RPTEfCZGLMbidoO8XEieXfpSYxu+PQJ1qpx4ypwH6N+uF9twBPIvRRgvkvW5HUTYWENig==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "9.0.0",
- "debug": "^4.3.4",
- "proxy-agent-negotiate": "1.1.0"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-9.1.0.tgz",
- "integrity": "sha512-ag87y7cJJ9/3+GxFr8Oy4O5faDsGRGnBGsJj/YjOSsSx/5eadKLYTMPlzuR6obgoCDDm0abAAZitXXQkMOPSpA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "9.0.0",
- "debug": "^4.3.4",
- "proxy-agent-negotiate": "1.1.0"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz",
- "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/ignore": {
- "version": "7.0.10",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.10.tgz",
- "integrity": "sha512-HpbUakT7xp5miBUywCHf36ZEuAJNklBJDDsGpUIjMzOSmM8ELSfA9Sa/QDPeNeqeoN31u+UTCkL4klCOVvRm4Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/import-fresh": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
- "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/ip-address": {
- "version": "10.7.2",
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.2.tgz",
- "integrity": "sha512-7H/2gFSIitxc0hG3nOI1glS8QLo/EHBFFLk8vEUjXY/xu0AdL8jZ9U1IzO2PUm0d2D/ofQcAifb0g6OBkt8U7w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/is-alphabetical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
- "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-alphanumerical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
- "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-alphabetical": "^2.0.0",
- "is-decimal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/is-decimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
- "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-docker": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
- "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-hexadecimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
- "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-in-ssh": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz",
- "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-inside-container": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
- "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-docker": "^3.0.0"
- },
- "bin": {
- "is-inside-container": "cli.js"
- },
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-interactive": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
- "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-path-inside": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz",
- "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-ssh": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz",
- "integrity": "sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "protocols": "^2.0.1"
- }
- },
- "node_modules/is-unicode-supported": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
- "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-wsl": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz",
- "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-inside-container": "^1.0.0"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/issue-parser": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.2.tgz",
- "integrity": "sha512-7atWPjhGEIX3JEtMrOYd8TKzboYlq+5sNbdl9POiLYOI14G5HZiQbZP0Xj5EZdrufQVXfJlpTV0hys0CuxwxZw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lodash.capitalize": "^4.2.1",
- "lodash.escaperegexp": "^4.1.2",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.uniqby": "^4.7.0"
- },
- "engines": {
- "node": "^18.17 || >=20.6.1"
- }
- },
- "node_modules/jiti": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz",
- "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jiti": "lib/jiti-cli.mjs"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/js-yaml": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz",
- "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/puzrin"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/nodeca"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-with-bigint": {
- "version": "3.5.8",
- "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.8.tgz",
- "integrity": "sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jsonc-parser": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
- "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jsonpointer": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
- "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/katex": {
- "version": "0.16.45",
- "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.45.tgz",
- "integrity": "sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==",
- "dev": true,
- "funding": [
- "https://opencollective.com/katex",
- "https://github.com/sponsors/katex"
- ],
- "license": "MIT",
- "dependencies": {
- "commander": "^8.3.0"
- },
- "bin": {
- "katex": "cli.js"
- }
- },
- "node_modules/katex/node_modules/commander": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
- "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/linkify-it": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-6.1.0.tgz",
- "integrity": "sha512-wJ/TwpSDTLepCrQoYWYIExIKg5Zchex2Nn5yk2mFnB+6PtdkHtyLx742md9csRjjOnGkKIS/RrbY7l8D6gT9Vw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/puzrin"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/markdown-it"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "uc.micro": "^3.0.0"
- }
- },
- "node_modules/lint-staged": {
- "version": "17.6.0",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-17.6.0.tgz",
- "integrity": "sha512-nOhBfYkZEwkFtNzD5pK9s9LkcWoxJ+whLzEnhqi9nl7zTB5n7tg8+9iYgMGx2Wm3VlLu8cbNj0RACzY+nWi5iQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "picomatch": "^4.0.7",
- "string-argv": "^0.3.2",
- "tinyexec": "^1.3.1"
- },
- "bin": {
- "lint-staged": "bin/lint-staged.js"
- },
- "engines": {
- "node": ">=22.22.1"
- },
- "funding": {
- "url": "https://opencollective.com/lint-staged"
- },
- "optionalDependencies": {
- "yaml": "^2.9.1"
- }
- },
- "node_modules/lockfile-lint": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/lockfile-lint/-/lockfile-lint-5.0.1.tgz",
- "integrity": "sha512-Ukjf5yGBQwfl7L2niV3in7bU5wEww3+4Dkw89JGTzOuq18tzS7jaszl2oO7M6u+jcim080MfX5E4Gokt1KhRHQ==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "cosmiconfig": "^9.0.0",
- "debug": "^4.3.4",
- "lockfile-lint-api": "^5.9.2",
- "tinyglobby": "^0.2.15",
- "yargs": "^17.7.2"
- },
- "bin": {
- "lockfile-lint": "bin/lockfile-lint.js"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/lockfile-lint-api": {
- "version": "5.9.2",
- "resolved": "https://registry.npmjs.org/lockfile-lint-api/-/lockfile-lint-api-5.9.2.tgz",
- "integrity": "sha512-3QhxWxl3jT9GcMxuCnTsU8Tz5U6U1lKBlKBu2zOYOz/x3ONUoojEtky3uzoaaDgExcLqIX0Aqv2I7TZXE383CQ==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@yarnpkg/parsers": "^3.0.0-rc.48.1",
- "debug": "^4.3.4",
- "object-hash": "^3.0.0"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/lodash-es": {
- "version": "4.18.1",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz",
- "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.capitalize": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz",
- "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.escaperegexp": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
- "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.uniqby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
- "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/log-symbols": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz",
- "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-unicode-supported": "^2.0.0",
- "yoctocolors": "^2.1.1"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lru-cache": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/macos-release": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.4.0.tgz",
- "integrity": "sha512-wpGPwyg/xrSp4H4Db4xYSeAr6+cFQGHfspHzDUdYxswDnUW0L5Ov63UuJiSr8NMSpyaChO4u1n0MXUvVPtrN6A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/markdown-it": {
- "version": "15.0.2",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-15.0.2.tgz",
- "integrity": "sha512-q4IGxMv56jCqT4OCRCADBoDP3LO4MhmTXjFbphHPXs4g3j9Xg5RDnxqN8IF/3vIWEU+VCnUq+7JUg/cfy2E6Qw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/puzrin"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/markdown-it"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "argparse": "^3.0.0",
- "entities": "^8.0.0",
- "linkify-it": "^6.0.0",
- "mdurl": "^2.1.0",
- "punycode.js": "^2.3.1",
- "uc.micro": "^3.0.0"
- },
- "bin": {
- "markdown-it": "bin/markdown-it.mjs"
- }
- },
- "node_modules/markdown-it/node_modules/argparse": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-3.0.2.tgz",
- "integrity": "sha512-mFdDM6WqWKraGLsVb+C9CahPnzTXOefAOLq3jYcca2YZ8bEWpr++Tzj+zSaKW9+X9L5uSxcm1AZ3Y6aZJ09OhQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/puzrin"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/nodeca"
- }
- ],
- "license": "PSF-2.0"
- },
- "node_modules/markdownlint": {
- "version": "0.41.1",
- "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.41.1.tgz",
- "integrity": "sha512-qHKeU2E1bdyNAT077go2FVTNXvYcktN5IHtF6XyeD1l0PClxzSp2tUApAV14ORI8DGX4H9bNKZEzelZp4qn8IA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "micromark": "4.0.2",
- "micromark-core-commonmark": "2.0.3",
- "micromark-extension-directive": "4.0.0",
- "micromark-extension-gfm-autolink-literal": "2.1.0",
- "micromark-extension-gfm-footnote": "2.1.0",
- "micromark-extension-gfm-table": "2.1.1",
- "micromark-extension-math": "3.1.0",
- "micromark-util-types": "2.0.2",
- "string-width": "8.2.1"
- },
- "engines": {
- "node": ">=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/DavidAnson"
- }
- },
- "node_modules/markdownlint-cli2": {
- "version": "0.23.3",
- "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.23.3.tgz",
- "integrity": "sha512-xAr5o/TGpC3v6lE6cKIW4b5eOFRrRX5u7Vtjae9ix3RALv8nNOd94XMkD/1OXXBtpMcJ4uQGbpSo3hv5UqS4uQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "globby": "16.2.4",
- "js-yaml": "5.4.1",
- "jsonc-parser": "3.3.1",
- "jsonpointer": "5.0.1",
- "markdown-it": "15.0.1",
- "markdownlint": "0.41.1",
- "markdownlint-cli2-formatter-default": "0.0.6",
- "micromatch": "4.0.8",
- "smol-toml": "1.8.0"
- },
- "bin": {
- "markdownlint-cli2": "markdownlint-cli2-bin.mjs"
- },
- "engines": {
- "node": ">=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/DavidAnson"
- }
- },
- "node_modules/markdownlint-cli2-formatter-default": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.6.tgz",
- "integrity": "sha512-VVDGKsq9sgzu378swJ0fcHfSicUnMxnL8gnLm/Q4J/xsNJ4e5bA6lvAz7PCzIl0/No0lHyaWdqVD2jotxOSFMQ==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/DavidAnson"
- },
- "peerDependencies": {
- "markdownlint-cli2": ">=0.0.4"
- }
- },
- "node_modules/markdownlint-cli2/node_modules/js-yaml": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.4.1.tgz",
- "integrity": "sha512-28R/k+NAjeuf7+CKlTxWZVExJGwVVLwY06DgEnOMz2gEpfNkDcD7QvyiVPT0xy0XXhU8vHsd4Ot42OOPdJG7dQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/puzrin"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/nodeca"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.mjs"
- }
- },
- "node_modules/markdownlint-cli2/node_modules/markdown-it": {
- "version": "15.0.1",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-15.0.1.tgz",
- "integrity": "sha512-9/7gE95FNPkfUWrjJIoHZza2iLmuJlPD0UNMxPi7bxUrbCR525YZY0r+zyfes0dZI5ZZ/uNIXUJca0pJvtw41g==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/puzrin"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/markdown-it"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "argparse": "^3.0.0",
- "entities": "^8.0.0",
- "linkify-it": "^6.0.0",
- "mdurl": "^2.1.0",
- "punycode.js": "^2.3.1",
- "uc.micro": "^3.0.0"
- },
- "bin": {
- "markdown-it": "bin/markdown-it.mjs"
- }
- },
- "node_modules/markdownlint-cli2/node_modules/markdown-it/node_modules/argparse": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-3.0.2.tgz",
- "integrity": "sha512-mFdDM6WqWKraGLsVb+C9CahPnzTXOefAOLq3jYcca2YZ8bEWpr++Tzj+zSaKW9+X9L5uSxcm1AZ3Y6aZJ09OhQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/puzrin"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/nodeca"
- }
- ],
- "license": "PSF-2.0"
- },
- "node_modules/markdownlint-micromark": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.2.tgz",
- "integrity": "sha512-jRxlQg8KpOfM2IbCL9RXM8ZiYWz2rv6DlZAnGv8ASJQpUh6byTBnEsbuMZ6T2/uIgntyf7SKg/mEaEBo1164fQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.18.0"
- }
- },
- "node_modules/markdownlint-rule-extended-ascii": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/markdownlint-rule-extended-ascii/-/markdownlint-rule-extended-ascii-0.2.1.tgz",
- "integrity": "sha512-R7ED3LfGk87Jv2lx2a4BwkSAR3dYtlXmLR+taBYyVMttAu8j6Xq/W/rDU9UUaMAMEGYpUwvCzxIAyEDrRyU/9A==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/DavidAnson"
- }
- },
- "node_modules/markdownlint-rule-helpers": {
- "version": "0.21.0",
- "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.21.0.tgz",
- "integrity": "sha512-27WM6H76t79EZjEl3jSabV0ZzXsC5QaSslI/5N1XuXV0mJRA6i3BPMGFrtZUbhlCNgtY6oC9h5JhtpDMv95tKg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "markdownlint-micromark": "0.1.2"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/markdownlint-rule-list-duplicates": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/markdownlint-rule-list-duplicates/-/markdownlint-rule-list-duplicates-0.0.1.tgz",
- "integrity": "sha512-0dNOduVGbipS0YuUIX9OcLzojBxl/q+bXV1wRdYll2vyOVYekPdtm2fSrAKTnimOxNkQax7Qu2flOxxl+tXWkQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "string-strip-html": "^8.3.0"
- }
- },
- "node_modules/markdownlint-rule-relative-links": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/markdownlint-rule-relative-links/-/markdownlint-rule-relative-links-5.1.3.tgz",
- "integrity": "sha512-1ZRV3OyApUoYm4YVdLNZIN6vUVLzacD74n+yKx9ZL4H5yTmiLP2nKTwQMfOla158gblVL0jbB7QLLh3nmKUqvA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "markdown-it": "15.0.1",
- "mime": "4.1.0"
- },
- "engines": {
- "node": ">=22.0.0"
- }
- },
- "node_modules/markdownlint-rule-relative-links/node_modules/argparse": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-3.0.2.tgz",
- "integrity": "sha512-mFdDM6WqWKraGLsVb+C9CahPnzTXOefAOLq3jYcca2YZ8bEWpr++Tzj+zSaKW9+X9L5uSxcm1AZ3Y6aZJ09OhQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/puzrin"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/nodeca"
- }
- ],
- "license": "PSF-2.0"
- },
- "node_modules/markdownlint-rule-relative-links/node_modules/markdown-it": {
- "version": "15.0.1",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-15.0.1.tgz",
- "integrity": "sha512-9/7gE95FNPkfUWrjJIoHZza2iLmuJlPD0UNMxPi7bxUrbCR525YZY0r+zyfes0dZI5ZZ/uNIXUJca0pJvtw41g==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/puzrin"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/markdown-it"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "argparse": "^3.0.0",
- "entities": "^8.0.0",
- "linkify-it": "^6.0.0",
- "mdurl": "^2.1.0",
- "punycode.js": "^2.3.1",
- "uc.micro": "^3.0.0"
- },
- "bin": {
- "markdown-it": "bin/markdown-it.mjs"
- }
- },
- "node_modules/markdownlint-rule-search-replace": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/markdownlint-rule-search-replace/-/markdownlint-rule-search-replace-1.2.0.tgz",
- "integrity": "sha512-l2eeVjb0ijxO+dO1ZrODcht+qnJ0VuiAAdBx1J8oa2kAugXl3NhxAGjfNuTfEJae5OQbdSGT+NjMczyzBXvWMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "markdownlint-rule-helpers": "0.21.0"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/markdownlint-rule-title-case-style": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/markdownlint-rule-title-case-style/-/markdownlint-rule-title-case-style-0.4.3.tgz",
- "integrity": "sha512-BM6kedlbhMTP4wTrQ20IBf0UgwSE330JaEuexkPqz8cDDng0gFwjD8YO85hkF/NKTUBg3cA5wVFQlFsWtL1Yuw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "markdownlint": "^0.31.1",
- "title-case": "^4.1.2"
- }
- },
- "node_modules/mdurl": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz",
- "integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromark": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
- "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-combine-extensions": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-core-commonmark": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
- "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-factory-destination": "^2.0.0",
- "micromark-factory-label": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-factory-title": "^2.0.0",
- "micromark-factory-whitespace": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-html-tag-name": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-extension-directive": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-4.0.0.tgz",
- "integrity": "sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-factory-whitespace": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "parse-entities": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-autolink-literal": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz",
- "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-footnote": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
- "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-table": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
- "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-math": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz",
- "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/katex": "^0.16.0",
- "devlop": "^1.0.0",
- "katex": "^0.16.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-factory-destination": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
- "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-label": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
- "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-space": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
- "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-title": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
- "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-whitespace": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
- "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-character": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
- "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-chunked": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
- "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-classify-character": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
- "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-combine-extensions": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
- "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-decode-numeric-character-reference": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
- "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-encode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
- "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-html-tag-name": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
- "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-normalize-identifier": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
- "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-resolve-all": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
- "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-sanitize-uri": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
- "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-subtokenize": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
- "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-symbol": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
- "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-types": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
- "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromatch": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.3",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/micromatch/node_modules/picomatch": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
- "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/mime": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz",
- "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==",
- "dev": true,
- "funding": [
- "https://github.com/sponsors/broofa"
- ],
- "license": "MIT",
- "bin": {
- "mime": "bin/cli.js"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/mime-db": {
- "version": "1.54.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
- "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
- "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mime-db": "^1.54.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/mimic-function": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
- "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/mute-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz",
- "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
- "node_modules/netmask": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.1.1.tgz",
- "integrity": "sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/new-github-release-url": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz",
- "integrity": "sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^2.5.1"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/object-hash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
- "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/ohash": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.12.tgz",
- "integrity": "sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/onetime": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
- "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-function": "^5.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/open": {
- "version": "11.0.4",
- "resolved": "https://registry.npmjs.org/open/-/open-11.0.4.tgz",
- "integrity": "sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "default-browser": "^5.5.1",
- "define-lazy-prop": "^3.0.0",
- "is-in-ssh": "^1.0.0",
- "is-inside-container": "^1.0.0",
- "powershell-utils": "^0.2.1",
- "wsl-utils": "^1.0.0"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ora": {
- "version": "9.4.1",
- "resolved": "https://registry.npmjs.org/ora/-/ora-9.4.1.tgz",
- "integrity": "sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "^5.6.2",
- "cli-cursor": "^5.0.0",
- "cli-spinners": "^3.2.0",
- "is-interactive": "^2.0.0",
- "is-unicode-supported": "^2.1.0",
- "log-symbols": "^7.0.1",
- "stdin-discarder": "^0.3.2",
- "string-width": "^8.1.0"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/os-name": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/os-name/-/os-name-7.0.0.tgz",
- "integrity": "sha512-/HfRU/lPPr4T2VigM+cvM3cU77es+XF4OEAa4aE5zpdvrxHGD2NmH0AFIWpMNAb+CsZL45rlcIO49Re0ZcRseg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "macos-release": "^3.4.0",
- "windows-release": "^7.1.0"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pac-proxy-agent": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-9.1.0.tgz",
- "integrity": "sha512-1aU+1mpj3DrQPfo3gh+3Gap3G5x+axnMx1P/y0ZF2ch7kb2meyOCAH8K2k9d27ROsTE7TnAerzxqF9aon2jqnA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "9.0.0",
- "debug": "^4.3.4",
- "get-uri": "8.0.1",
- "http-proxy-agent": "9.1.0",
- "https-proxy-agent": "9.1.0",
- "pac-resolver": "9.0.1",
- "quickjs-wasi": "^2.2.0",
- "socks-proxy-agent": "10.1.0"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/pac-resolver": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-9.0.1.tgz",
- "integrity": "sha512-lJbS008tmkj08VhoM8Hzuv/VE5tK9MS0OIQ/7+s0lIF+BYhiQWFYzkSpML7lXs9iBu2jfmzBTLzhe9n6BX+dYw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "degenerator": "7.0.1",
- "netmask": "^2.0.2"
- },
- "engines": {
- "node": ">= 20"
- },
- "peerDependencies": {
- "quickjs-wasi": "^2.2.0"
- }
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parse-entities": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
- "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "character-entities-legacy": "^3.0.0",
- "character-reference-invalid": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "is-alphanumerical": "^2.0.0",
- "is-decimal": "^2.0.0",
- "is-hexadecimal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parse-path": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.1.0.tgz",
- "integrity": "sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "protocols": "^2.0.0"
- }
- },
- "node_modules/parse-url": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-9.2.0.tgz",
- "integrity": "sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/parse-path": "^7.0.0",
- "parse-path": "^7.0.0"
- },
- "engines": {
- "node": ">=14.13.0"
- }
- },
- "node_modules/pathe": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
- "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/perfect-debounce": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz",
- "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/picomatch": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
- "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pkg-types": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.3.tgz",
- "integrity": "sha512-j/lCFdcppV0JxWpCEITdbDltBxPP6cHT+yNJ6Go2OgoSA9518X847X9z0p6LtA4Nc16+eQzCZjRrWanTGvHJ5w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "confbox": "^0.3.1",
- "exsolve": "^1.1.1",
- "pathe": "^2.0.3"
- }
- },
- "node_modules/pkg-types/node_modules/confbox": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.3.1.tgz",
- "integrity": "sha512-cKUSoKa8YxFZZSmraVi7onONx3amu77ngK3kGpsYHDH7drPwCRkQE1RYMPlLRrMtnciRj274XNRxcHxnKmDSnA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/playwright": {
- "version": "1.63.0",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.63.0.tgz",
- "integrity": "sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "playwright-core": "1.63.0"
- },
- "bin": {
- "playwright": "cli.js"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/playwright-core": {
- "version": "1.63.0",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz",
- "integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "playwright-core": "cli.js"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/powershell-utils": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.2.1.tgz",
- "integrity": "sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/protocols": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.2.tgz",
- "integrity": "sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/proxy-agent": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-8.0.2.tgz",
- "integrity": "sha512-idLLRewuemWd7GH/BDJzGiB0dWGfT2SQs3jy6NtZtGWU9uPTTSdeC1/cdbqLwgzhfv027daGFuXX426e2Eg20A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "9.0.0",
- "debug": "^4.3.4",
- "http-proxy-agent": "9.1.0",
- "https-proxy-agent": "9.1.0",
- "lru-cache": "^7.14.1",
- "pac-proxy-agent": "9.1.0",
- "proxy-from-env": "^2.0.0",
- "socks-proxy-agent": "10.1.0"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/proxy-agent-negotiate": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-agent-negotiate/-/proxy-agent-negotiate-1.1.0.tgz",
- "integrity": "sha512-N8IBcM3UgCVzz2L2Lqv8DVntDnnC8/hiV4nEDUPkqq72TPUgYWjQc+bdZlBPZK9LzPAvOY//gAt0S0DApoOXWQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20"
- },
- "peerDependencies": {
- "kerberos": "^2.0.0"
- },
- "peerDependenciesMeta": {
- "kerberos": {
- "optional": true
- }
- }
- },
- "node_modules/proxy-from-env": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
- "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/punycode.js": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
- "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/quickjs-wasi": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/quickjs-wasi/-/quickjs-wasi-2.2.0.tgz",
- "integrity": "sha512-zQxXmQMrEoD3S+jQdYsloq4qAuaxKFHZj6hHqOYGwB2iQZH+q9e/lf5zQPXCKOk0WJuAjzRFbO4KwHIp2D05Iw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/rc9": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/rc9/-/rc9-3.1.0.tgz",
- "integrity": "sha512-ufjkNVzbRHKcCOmTahZkmVsyc3W+MSk3jY03m+a7tGHkIsdVMG9l10/3HvFbWkkKzY5VFp3pkRsIo/UYgmFL7Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "defu": "^6.1.7",
- "destr": "^2.0.5"
- }
- },
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/readdirp": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz",
- "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20.19.0"
- },
- "funding": {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/release-it": {
- "version": "21.1.0",
- "resolved": "https://registry.npmjs.org/release-it/-/release-it-21.1.0.tgz",
- "integrity": "sha512-jR179wu8Z9BKfhd0wVmUmzjshCnezUkULdHW5rSCjKTXApdr6mAJjw/R339uXS43mLCz6iAFO6ffS27+N1dy8A==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/webpro"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/webpro"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@inquirer/prompts": "8.7.2",
- "@octokit/rest": "22.0.1",
- "@phun-ky/typeof": "2.0.3",
- "async-retry": "1.3.3",
- "c12": "3.3.4",
- "ci-info": "^4.4.0",
- "defu": "^6.1.7",
- "eta": "4.6.0",
- "git-url-parse": "16.1.0",
- "issue-parser": "7.0.2",
- "lodash.merge": "4.6.2",
- "mime-types": "3.0.2",
- "new-github-release-url": "2.0.0",
- "open": "11.0.4",
- "ora": "9.4.1",
- "os-name": "7.0.0",
- "proxy-agent": "8.0.2",
- "tinyglobby": "0.2.17",
- "undici": "7.29.0",
- "url-join": "5.0.0",
- "verkit": "0.4.0",
- "wildcard-match": "5.1.4"
- },
- "bin": {
- "release-it": "bin/release-it.js"
- },
- "engines": {
- "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
- }
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/restore-cursor": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
- "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "onetime": "^7.0.0",
- "signal-exit": "^4.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/retry": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
- "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/reusify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
- "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/run-applescript": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
- "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "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==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/simple-git-hooks": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/simple-git-hooks/-/simple-git-hooks-2.14.0.tgz",
- "integrity": "sha512-kkTORPAuxQz2g1QUuN0J8yGWT28tjGBfPOdJ4xT7Vbeu30veKUZQIoID2qGgCDAakaQn59UeZJJ4cFGB8PVP2A==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "simple-git-hooks": "cli.js"
- }
- },
- "node_modules/slash": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
- "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/smart-buffer": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
- "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6.0.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/smol-toml": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.8.0.tgz",
- "integrity": "sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">= 18"
- },
- "funding": {
- "url": "https://github.com/sponsors/cyyynthia"
- }
- },
- "node_modules/socks": {
- "version": "2.8.10",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.10.tgz",
- "integrity": "sha512-e0VyvkVTwVYViNovRkZ9aodhxVlyoMn7eJhVUPxZ+eK9P/7CBkxvvsBOHqFPEH416726W8tLXXXjKwqgTErrCQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ip-address": "^10.1.1",
- "smart-buffer": "^4.2.0"
- },
- "engines": {
- "node": ">= 10.0.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/socks-proxy-agent": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-10.1.0.tgz",
- "integrity": "sha512-WlMj/67cEJ6MDI1OcsnjuYKDNDoyPCCYZ249kuuXPiMDw9F8PXkVaQ7YWu3siTydfQ/4BEZcvGzu+aYvz7dDCQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "9.0.0",
- "debug": "^4.3.4",
- "socks": "^2.8.3"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "node_modules/stdin-discarder": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.3.2.tgz",
- "integrity": "sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string-argv": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz",
- "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.6.19"
- }
- },
- "node_modules/string-strip-html": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/string-strip-html/-/string-strip-html-8.5.0.tgz",
- "integrity": "sha512-5ICsK1B1j0A3AF1d45m0sqQCcmi1Q+t1QpF+b794LO5FTHV+ITkGR5C+UCDJQZgs5LMuRruqr6j48PxQVIurJQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/string-width": {
- "version": "8.2.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz",
- "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-east-asian-width": "^1.5.0",
- "strip-ansi": "^7.1.2"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/strip-ansi": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
- "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^6.2.2"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/tinyexec": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz",
- "integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tinyglobby": {
- "version": "0.2.17",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
- "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fdir": "^6.5.0",
- "picomatch": "^4.0.4"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/SuperchupuDev"
- }
- },
- "node_modules/title-case": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/title-case/-/title-case-4.3.2.tgz",
- "integrity": "sha512-I/nkcBo73mO42Idfv08jhInV61IMb61OdIFxk+B4Gu1oBjWBPOLmhZdsli+oJCVaD+86pYQA93cJfFt224ZFAA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/tslib": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
- "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "dev": true,
- "license": "0BSD"
- },
- "node_modules/type-fest": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
- "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=12.20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/typescript": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz",
- "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc"
- },
- "engines": {
- "node": ">=16.20.0"
- },
- "optionalDependencies": {
- "@typescript/typescript-aix-ppc64": "7.0.2",
- "@typescript/typescript-darwin-arm64": "7.0.2",
- "@typescript/typescript-darwin-x64": "7.0.2",
- "@typescript/typescript-freebsd-arm64": "7.0.2",
- "@typescript/typescript-freebsd-x64": "7.0.2",
- "@typescript/typescript-linux-arm": "7.0.2",
- "@typescript/typescript-linux-arm64": "7.0.2",
- "@typescript/typescript-linux-loong64": "7.0.2",
- "@typescript/typescript-linux-mips64el": "7.0.2",
- "@typescript/typescript-linux-ppc64": "7.0.2",
- "@typescript/typescript-linux-riscv64": "7.0.2",
- "@typescript/typescript-linux-s390x": "7.0.2",
- "@typescript/typescript-linux-x64": "7.0.2",
- "@typescript/typescript-netbsd-arm64": "7.0.2",
- "@typescript/typescript-netbsd-x64": "7.0.2",
- "@typescript/typescript-openbsd-arm64": "7.0.2",
- "@typescript/typescript-openbsd-x64": "7.0.2",
- "@typescript/typescript-sunos-x64": "7.0.2",
- "@typescript/typescript-win32-arm64": "7.0.2",
- "@typescript/typescript-win32-x64": "7.0.2"
- }
- },
- "node_modules/uc.micro": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-3.0.0.tgz",
- "integrity": "sha512-U3PppEkleoTnIfi8BozMx3yju3qc/L6SwqWo2Sw+54PX+PX0q9I+r1Um5HCmqD7n9VDX5/v3vQH/AjA6deDdtw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/undici": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz",
- "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=20.18.1"
- }
- },
- "node_modules/undici-types": {
- "version": "8.9.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz",
- "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/unicorn-magic": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.1.tgz",
- "integrity": "sha512-lzlXPoVB0Uy/FvTaUgX39RbixYiSKoc3JSoSf01+0c2B6FR3qdYIPN7Qjo/AV7n6sqLCk0509cT3LRj1oSZ1+A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/universal-user-agent": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz",
- "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/url-join": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz",
- "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/verkit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/verkit/-/verkit-0.4.0.tgz",
- "integrity": "sha512-sXMwN6DMHeouPfCxkxWkKAmxphWKEenHYY5H1nIBzU3PmDsmJp6kBXJdshjVdpMZuWCmL9SH7KFRx29AylpP6g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18.12.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sxzz"
- }
- },
- "node_modules/walk-up-path": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz",
- "integrity": "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "20 || >=22"
- }
- },
- "node_modules/wildcard-match": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.4.tgz",
- "integrity": "sha512-wldeCaczs8XXq7hj+5d/F38JE2r7EXgb6WQDM84RVwxy81T/sxB5e9+uZLK9Q9oNz1mlvjut+QtvgaOQFPVq/g==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/windows-release": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-7.1.1.tgz",
- "integrity": "sha512-0GBwC9WmR8Bm3WYiz3FC391054BsFHZ2gzBVdYj9uj5eIVYzbn/YPYCYW9SWdh9vwnLuzpn1UGwJKiMG4F236w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "powershell-utils": "^0.2.0"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/wsl-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-1.0.0.tgz",
- "integrity": "sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-wsl": "^3.1.0",
- "powershell-utils": "^0.1.0"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/wsl-utils/node_modules/powershell-utils": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz",
- "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yaml": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz",
- "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "yaml": "bin.mjs"
- },
- "engines": {
- "node": ">= 14.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/eemeli"
- }
- },
- "node_modules/yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs/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==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/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==",
- "dev": true,
- "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/yargs/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==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yoctocolors": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.2.0.tgz",
- "integrity": "sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- }
- }
+ "name": "@gohugo-ananke/ananke",
+ "version": "2.19.1",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "@gohugo-ananke/ananke",
+ "version": "2.19.1",
+ "license": "MIT",
+ "devDependencies": {
+ "@axe-core/playwright": "4.13.0",
+ "@biomejs/biome": "2.5.14",
+ "@dnbhq/biome-config": "0.3.1",
+ "@dnbhq/lintstaged-config": "0.2.1",
+ "@dnbhq/markdownlint-config": "0.2.11",
+ "@dnbhq/release-config": "1.1.3",
+ "@dnbhq/tsconfig": "0.1.6",
+ "@playwright/test": "1.63.0",
+ "@release-it/conventional-changelog": "12.0.2",
+ "@types/node": "26.6.3",
+ "dotenv": "18.0.4",
+ "lint-staged": "17.6.0",
+ "lockfile-lint": "5.0.1",
+ "release-it": "21.1.0",
+ "simple-git-hooks": "2.14.0",
+ "typescript": "7.0.2",
+ "yaml": "2.9.1"
+ }
+ },
+ "node_modules/@axe-core/playwright": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.13.0.tgz",
+ "integrity": "sha512-6YLx+kxXu5GJceG4ozFg+33a2EMTdjYwWGloJ3sb9Kta5pp+ZNS53uxGVog5JetIY8s++P5UrtX+cri+u0VAVg==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "dependencies": {
+ "axe-core": "~4.13.0"
+ },
+ "peerDependencies": {
+ "playwright-core": ">= 1.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@biomejs/biome": {
+ "version": "2.5.14",
+ "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.5.14.tgz",
+ "integrity": "sha512-0FabLIjd4M/dm8VFI86RMaLLdgepzbdfiAL2R8cr7V81OYYrP1w7Z73KfAwPK5h9SrEBXTzNG2y+mBwPo9xRnw==",
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "bin": {
+ "biome": "bin/biome"
+ },
+ "engines": {
+ "node": ">=14.21.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/biome"
+ },
+ "optionalDependencies": {
+ "@biomejs/cli-darwin-arm64": "2.5.14",
+ "@biomejs/cli-darwin-x64": "2.5.14",
+ "@biomejs/cli-linux-arm64": "2.5.14",
+ "@biomejs/cli-linux-arm64-musl": "2.5.14",
+ "@biomejs/cli-linux-x64": "2.5.14",
+ "@biomejs/cli-linux-x64-musl": "2.5.14",
+ "@biomejs/cli-win32-arm64": "2.5.14",
+ "@biomejs/cli-win32-x64": "2.5.14"
+ }
+ },
+ "node_modules/@biomejs/cli-darwin-arm64": {
+ "version": "2.5.14",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.5.14.tgz",
+ "integrity": "sha512-UnzaXO65L4tsZimFITFP2M121GyhDcWFrT3pL5ZJ5U4XcS/0L5VHYytVohdCf/gnDUFHgl2I9xnt5bV/J1kxHQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-darwin-x64": {
+ "version": "2.5.14",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.5.14.tgz",
+ "integrity": "sha512-kiy8qA16K93J7uvFfWi4LgjqDpnRKyePAna6A0Y4jxyUga35SYpIZ2cNWlhy0lsfgqRenCpfymnJWEZ6mgpRgA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-linux-arm64": {
+ "version": "2.5.14",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.5.14.tgz",
+ "integrity": "sha512-vO/9BaU1n30CiFNLx49gMTMtbCAAqlo/EqFoG0BU3deQInTbJrmXSmTQ9e3FoDZIKQnvSLDVNL4lx1ci7y1T1Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-linux-arm64-musl": {
+ "version": "2.5.14",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.5.14.tgz",
+ "integrity": "sha512-SJ9PrZkBnnH9dHJDnxk34vKs0GB2dbsioaft6/hPhWJ7AHpwYH83Isnhj0FSRpFkGgpVfJ1lds23ApB2czUDLQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-linux-x64": {
+ "version": "2.5.14",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.5.14.tgz",
+ "integrity": "sha512-VHZRa7CCQBUWKxNwUvHJeuW03WFRgN5NWO//SDGOitc9QIeNyfA42V9zlKm+x82xFSG9Bzi5fi+hbhm9anO8yA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-linux-x64-musl": {
+ "version": "2.5.14",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.5.14.tgz",
+ "integrity": "sha512-2kI5PrMgW5dcEZYrstLPmUmCwkUwZY39rP4BN93Vxbwcs2O57LDQOktUZZYPvvspN5i0mhGr3TJtF5sU26NUWg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-win32-arm64": {
+ "version": "2.5.14",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.5.14.tgz",
+ "integrity": "sha512-pHgAFffmZtaYoxavEsWEYNvcA7NwOIjLyqw2HXyLbt16xYryX0L4fMV2u0G9ag6LNYPIoqWaWqzUcnc6rLGGXg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-win32-x64": {
+ "version": "2.5.14",
+ "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.5.14.tgz",
+ "integrity": "sha512-oJWmBhoHsnhUKIke+0gXDX0mltJrWHA1UyHsrTlXwX0TL64ilVZAo+TYZm97baecV0esBdpzy3k96q+09JaZUQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@conventional-changelog/git-client": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-3.1.2.tgz",
+ "integrity": "sha512-jZqwnJwf7nboIlAcw/mkOjVa6DexCcUOgT2oOQgkoi3z9vR8tGFkcMy2BFcYwjhL9sYcDDXkRQDayiDieCoW7A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@simple-libs/child-process-utils": "^2.0.0",
+ "@simple-libs/stream-utils": "^2.0.0",
+ "semver": "^7.5.2"
+ },
+ "engines": {
+ "node": ">=22"
+ },
+ "peerDependencies": {
+ "conventional-commits-filter": "^6.0.1",
+ "conventional-commits-parser": "^7.1.2"
+ },
+ "peerDependenciesMeta": {
+ "conventional-commits-filter": {
+ "optional": true
+ },
+ "conventional-commits-parser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@conventional-changelog/template": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@conventional-changelog/template/-/template-1.4.0.tgz",
+ "integrity": "sha512-aalGyl7dbB5PArRebDIX43ZvBlXrYm9uWzGJ26t+4SzJVPsOuvfILGGbw5X4yX7i50YEmJ8zvbiWnqH/AAnZqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=22"
+ }
+ },
+ "node_modules/@dnbhq/biome-config": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@dnbhq/biome-config/-/biome-config-0.3.1.tgz",
+ "integrity": "sha512-G8ZlvwEOUewSkTVIGOXUV/xtecpSHOK352ik5hps9YI9hA2vI1vMN3xxsLMWnmhcnlF98z2dc4LuQPSc96cLBQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=26"
+ },
+ "peerDependencies": {
+ "@biomejs/biome": ">=2.5.0"
+ }
+ },
+ "node_modules/@dnbhq/lintstaged-config": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@dnbhq/lintstaged-config/-/lintstaged-config-0.2.1.tgz",
+ "integrity": "sha512-gvgSQsilzd41iqTfSxfDKY+SJEpPpmww+3rM0GNJNOOqM/rX5EISobivUc36TSujjx1GX9sAn5LYdbX5oeHiaA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "lintstaged-config": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=22"
+ },
+ "peerDependencies": {
+ "lint-staged": ">=15.0.0"
+ }
+ },
+ "node_modules/@dnbhq/markdownlint-config": {
+ "version": "0.2.11",
+ "resolved": "https://registry.npmjs.org/@dnbhq/markdownlint-config/-/markdownlint-config-0.2.11.tgz",
+ "integrity": "sha512-toc1enTCmp8+99kvs2danCsL8iO5mS02cIaGTA66HkdCIpJ/WESQkzamgubA1rz/J4V3hVbZsoRe9M8djfAzxg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@github/markdownlint-github": "0.8.3",
+ "markdownlint": "0.41.1",
+ "markdownlint-cli2": "0.23.1",
+ "markdownlint-rule-extended-ascii": "0.2.1",
+ "markdownlint-rule-relative-links": "5.1.1",
+ "markdownlint-rule-search-replace": "1.2.0",
+ "markdownlint-rule-title-case-style": "0.4.3"
+ },
+ "engines": {
+ "node": ">=26"
+ }
+ },
+ "node_modules/@dnbhq/markdownlint-config/node_modules/@github/markdownlint-github": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/@github/markdownlint-github/-/markdownlint-github-0.8.3.tgz",
+ "integrity": "sha512-8DqM9t0frFpQCFYMqH2iyic/zB7budSONWfxMjUG8k4JTIJu+L5PaOpp+/xzNHQtb26WYIcc0aTpPWzXRO9J2Q==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lodash-es": "^4.17.21",
+ "markdown-it": "14.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@dnbhq/markdownlint-config/node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/@dnbhq/markdownlint-config/node_modules/globby": {
+ "version": "16.2.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.1.tgz",
+ "integrity": "sha512-JmsqJalahxxgW8V2ecSQ2G7UjPlI9cpKdrkG9KoNiXhd/YslXOTEB0cViENWUznuovIuNT+FkMbraDGjr4FCUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "fast-glob": "^3.3.3",
+ "ignore": "^7.0.5",
+ "is-path-inside": "^4.0.0",
+ "slash": "^5.1.0",
+ "unicorn-magic": "^0.4.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@dnbhq/markdownlint-config/node_modules/js-yaml": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.2.1.tgz",
+ "integrity": "sha512-zfLtNfQqxVqq3uaTqSkh4x4hZw3KHobGUA0fJUj4wawW8bsQLTVqpHdXSIzidh7o+4lEW36tANuAGdaFx6Zgnw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.mjs"
+ }
+ },
+ "node_modules/@dnbhq/markdownlint-config/node_modules/linkify-it": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz",
+ "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/markdown-it"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "uc.micro": "^2.0.0"
+ }
+ },
+ "node_modules/@dnbhq/markdownlint-config/node_modules/markdown-it": {
+ "version": "14.2.0",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz",
+ "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/markdown-it"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "^4.4.0",
+ "linkify-it": "^5.0.1",
+ "mdurl": "^2.0.0",
+ "punycode.js": "^2.3.1",
+ "uc.micro": "^2.1.0"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.mjs"
+ }
+ },
+ "node_modules/@dnbhq/markdownlint-config/node_modules/markdownlint-cli2": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.23.1.tgz",
+ "integrity": "sha512-20JPI5W+HpV1OA+pUM712wgvL4GzYNUvbmhLU8KlEYJ1kCDx4soZ4/Xqd+WkLrPTOKMAn8SfO3zYFrK8GLlwQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "globby": "16.2.1",
+ "js-yaml": "5.2.1",
+ "jsonc-parser": "3.3.1",
+ "jsonpointer": "5.0.1",
+ "markdown-it": "14.3.0",
+ "markdownlint": "0.41.1",
+ "markdownlint-cli2-formatter-default": "0.0.6",
+ "micromatch": "4.0.8",
+ "smol-toml": "1.7.0"
+ },
+ "bin": {
+ "markdownlint-cli2": "markdownlint-cli2-bin.mjs"
+ },
+ "engines": {
+ "node": ">=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/DavidAnson"
+ }
+ },
+ "node_modules/@dnbhq/markdownlint-config/node_modules/markdownlint-cli2/node_modules/markdown-it": {
+ "version": "14.3.0",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz",
+ "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/markdown-it"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "^4.5.0",
+ "linkify-it": "^5.0.2",
+ "mdurl": "^2.0.0",
+ "punycode.js": "^2.3.1",
+ "uc.micro": "^2.1.0"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.mjs"
+ }
+ },
+ "node_modules/@dnbhq/markdownlint-config/node_modules/markdownlint-rule-relative-links": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/markdownlint-rule-relative-links/-/markdownlint-rule-relative-links-5.1.1.tgz",
+ "integrity": "sha512-XgpNzADiFLxbDE6vbGRoauRgbE34YXAesFzTuWSxMxsdJwmcKCNnlkzjZITcb3/sP0SHx3t57Vq9/Q/WK9sU4w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "markdown-it": "14.2.0",
+ "mime": "4.1.0"
+ },
+ "engines": {
+ "node": ">=22.0.0"
+ }
+ },
+ "node_modules/@dnbhq/markdownlint-config/node_modules/smol-toml": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.7.0.tgz",
+ "integrity": "sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/cyyynthia"
+ }
+ },
+ "node_modules/@dnbhq/markdownlint-config/node_modules/uc.micro": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
+ "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@dnbhq/release-config": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@dnbhq/release-config/-/release-config-1.1.3.tgz",
+ "integrity": "sha512-AOj3a7haQAULAreCf9gF5E061UVQyErLCzlVWr9SzlxZr2NnOH2K50H9cD5yf1tj03kn9mIP8DXeyy4feN/wxA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^22.22.2 || ^24.15.0 || ^26.0.0",
+ "npm": ">=11.0.0"
+ },
+ "peerDependencies": {
+ "@release-it/conventional-changelog": "^11.0.0 || ^12.0.0",
+ "release-it": "^20.0.0 || ^21.0.0"
+ }
+ },
+ "node_modules/@dnbhq/tsconfig": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/@dnbhq/tsconfig/-/tsconfig-0.1.6.tgz",
+ "integrity": "sha512-cxMn8+hfnM9mYiOKx4hK6qDTCxm+HPK/y3EGmIdivrxg0YlH4JAGoeoTtKR0dxFnLCU6x6yMmuu/i+lb2c4GmA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=25"
+ },
+ "peerDependencies": {
+ "@types/node": ">=24",
+ "typescript": ">=5.8"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/ansi": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.8.tgz",
+ "integrity": "sha512-WpQM+Ti6Z40EFwwt+uL2p4UabT+W179zHp6HhLVOzfbwnVn05IPO/eXIZXGNqcT1jbQ15SujNLzQ39k4QPPxBQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ }
+ },
+ "node_modules/@inquirer/checkbox": {
+ "version": "5.2.5",
+ "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.2.5.tgz",
+ "integrity": "sha512-bRt8J8m+Fot9CXv+zNQGXUq2ET0MggR1fPz7v6edN6MFYmsbfGnMmkmWZJEegMKqrAC8ej/o1sqisHZXZJMAfQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^2.0.8",
+ "@inquirer/core": "^12.0.3",
+ "@inquirer/figures": "^2.0.9",
+ "@inquirer/type": "4.1.1"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/confirm": {
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.3.2.tgz",
+ "integrity": "sha512-Xvr/0HggjddPtGppuqVmxhTw+Hr8PvsZ/k0HmOEaAqQEt80OITNkFWnsdNmyT0/eM4Ab+iJLx2R8rctlEyfSVg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^12.0.3",
+ "@inquirer/type": "4.1.1"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/core": {
+ "version": "12.0.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-12.0.3.tgz",
+ "integrity": "sha512-wsSy0sznmXwkty+2PzZwx00Cazc/E0r0B7mAzdGROz2Ct+DFZXaK7WDjGZvgjRldxH5ZhFVfF2lgkYrqgOw2KA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^2.0.8",
+ "@inquirer/figures": "^2.0.9",
+ "@inquirer/type": "4.1.1",
+ "cli-width": "^4.1.0",
+ "fast-wrap-ansi": "^0.2.0",
+ "mute-stream": "^3.0.0",
+ "signal-exit": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/editor": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.3.3.tgz",
+ "integrity": "sha512-YsKkS2q63IiLtaDK/9nqzdComN97SDQrmKiyNggN+ceP4ty+Z6VwyTz3FpjeUWeW1Efss2xHFKCC9sx7hnrsxg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^12.0.3",
+ "@inquirer/external-editor": "^3.0.5",
+ "@inquirer/type": "4.1.1"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/expand": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.1.5.tgz",
+ "integrity": "sha512-uHuXLmXW+TtIfT/9vSBotypAkqn1n34Ul+CLGPos/xANyO4Ff5xZzkYhbKR4NEcfVK4a9mHQOpwVZzluSHFRGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^12.0.3",
+ "@inquirer/type": "4.1.1"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/external-editor": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.5.tgz",
+ "integrity": "sha512-f3QQJRIX5ZEneBHNUIuPjmbdzHnmRFJA8r2dkcb8q+OM5Uv5KtnuAttQumnrjcBVBM3mcTX1CkmtAkU58VRZxg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chardet": "^2.1.1",
+ "iconv-lite": "^0.7.2"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/figures": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.9.tgz",
+ "integrity": "sha512-EAWgUTGQ/Umgga51dE3B2PUHbufuXarDfg86uVgoSgNHNNQnyFKcOrQLWVqYMghuSyHh8+2HUH0Js9cTC1WAdg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ }
+ },
+ "node_modules/@inquirer/input": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.6.tgz",
+ "integrity": "sha512-HtcJhB2QFVXbLuJ5S3syhNbTUVxYvwqV4VRBDkQceBloC9bmTViUoRFP5PbSaDZb3HzfPmpuU/gG4ybVBz4FHA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^12.0.3",
+ "@inquirer/type": "4.1.1"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/number": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.2.3.tgz",
+ "integrity": "sha512-6Yuwh1NGSbu1Lo4N1EWjXs1jKRntLg/ZCwhmeorEHde90v1XxAozdbd4Iu30eOQLW+6h1hp2O9ujNfLSbTPJnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^12.0.3",
+ "@inquirer/type": "4.1.1"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/password": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.2.2.tgz",
+ "integrity": "sha512-W9zYdyzogK+6110mqwaSJWCBu2yA5Q/OfnGSjjZB1bNpHlmUozXxTl0+QOZBNeVd6Qo81/qT75gW05gLAtITxw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^2.0.8",
+ "@inquirer/core": "^12.0.3",
+ "@inquirer/type": "4.1.1"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/prompts": {
+ "version": "8.7.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.7.2.tgz",
+ "integrity": "sha512-QoRB4wFIjgH5iOhSjoIKMkTvSHDuV+O3OITlIqAYO0oK5x364GJILXiMBvlPiE+klg7Xx9tq5XVqQHcGUDYYPA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/checkbox": "^5.2.5",
+ "@inquirer/confirm": "^6.3.2",
+ "@inquirer/editor": "^5.3.3",
+ "@inquirer/expand": "^5.1.5",
+ "@inquirer/input": "^5.1.6",
+ "@inquirer/number": "^4.2.3",
+ "@inquirer/password": "^5.2.2",
+ "@inquirer/rawlist": "^5.3.5",
+ "@inquirer/search": "^4.3.3",
+ "@inquirer/select": "^5.2.5"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/rawlist": {
+ "version": "5.3.5",
+ "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.3.5.tgz",
+ "integrity": "sha512-1oHky1ONfCOwNrnkQGDE1oaSij/3fI6HFMSf2H/WsGO2lEyDX9My82iggITSy9ddSZ8yk8j9v41OI0fVoSIoaA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^12.0.3",
+ "@inquirer/type": "4.1.1"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/search": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.3.3.tgz",
+ "integrity": "sha512-fyuIU1Nbpvwlikjg3gXwJFDI11+EFjqQ7P+iByfmivIKQ1vmaykNrD/vy5unHuUqUpsOsnvJ25//tPF7E/RBRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^12.0.3",
+ "@inquirer/figures": "^2.0.9",
+ "@inquirer/type": "4.1.1"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/select": {
+ "version": "5.2.5",
+ "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.5.tgz",
+ "integrity": "sha512-9kc15hr8r/kI+3DO/xLog5nOzTz1jqsHXa6JBFzmQKhkoJ8Slda1I1L/uD8ZSZ9tF1yp79wwXe7mclvX1rqR2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^2.0.8",
+ "@inquirer/core": "^12.0.3",
+ "@inquirer/figures": "^2.0.9",
+ "@inquirer/type": "4.1.1"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/type": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.1.1.tgz",
+ "integrity": "sha512-yJoHYrMnxIsJZCY+0Vb66Dy3he3kL3e2wOBKhoSwWWAzZAY82emlxwgprCtp6yRixvNRNq9ztfRWQYPNr3Go7A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@octokit/auth-token": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz",
+ "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/core": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz",
+ "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-token": "^6.0.0",
+ "@octokit/graphql": "^9.0.3",
+ "@octokit/request": "^10.0.6",
+ "@octokit/request-error": "^7.0.2",
+ "@octokit/types": "^16.0.0",
+ "before-after-hook": "^4.0.0",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/endpoint": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz",
+ "integrity": "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^16.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/graphql": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz",
+ "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/request": "^10.0.6",
+ "@octokit/types": "^16.0.0",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/openapi-types": {
+ "version": "27.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz",
+ "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@octokit/plugin-paginate-rest": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz",
+ "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^16.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ }
+ },
+ "node_modules/@octokit/plugin-request-log": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz",
+ "integrity": "sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ }
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz",
+ "integrity": "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^16.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ }
+ },
+ "node_modules/@octokit/request": {
+ "version": "10.0.8",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.8.tgz",
+ "integrity": "sha512-SJZNwY9pur9Agf7l87ywFi14W+Hd9Jg6Ifivsd33+/bGUQIjNujdFiXII2/qSlN2ybqUHfp5xpekMEjIBTjlSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^11.0.3",
+ "@octokit/request-error": "^7.0.2",
+ "@octokit/types": "^16.0.0",
+ "fast-content-type-parse": "^3.0.0",
+ "json-with-bigint": "^3.5.3",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/request-error": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz",
+ "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^16.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/rest": {
+ "version": "22.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.1.tgz",
+ "integrity": "sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/core": "^7.0.6",
+ "@octokit/plugin-paginate-rest": "^14.0.0",
+ "@octokit/plugin-request-log": "^6.0.0",
+ "@octokit/plugin-rest-endpoint-methods": "^17.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/types": {
+ "version": "16.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz",
+ "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/openapi-types": "^27.0.0"
+ }
+ },
+ "node_modules/@phun-ky/typeof": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@phun-ky/typeof/-/typeof-2.0.3.tgz",
+ "integrity": "sha512-oeQJs1aa8Ghke8JIK9yuq/+KjMiaYeDZ38jx7MhkXncXlUKjqQ3wEm2X3qCKyjo+ZZofZj+WsEEiqkTtRuE2xQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^20.9.0 || >=22.0.0",
+ "npm": ">=10.8.2"
+ },
+ "funding": {
+ "url": "https://github.com/phun-ky/typeof?sponsor=1"
+ }
+ },
+ "node_modules/@playwright/test": {
+ "version": "1.63.0",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.63.0.tgz",
+ "integrity": "sha512-oxMK4vllB9RK5NQ2l1pq1IfOf2AvnEuj/vYGDj0H2nMtmtZpKtCwt/l00GEO6xjGfpBNAvjovvYdCm50dRQkpQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright": "1.63.0"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@release-it/conventional-changelog": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/@release-it/conventional-changelog/-/conventional-changelog-12.0.2.tgz",
+ "integrity": "sha512-mJsfycScVqud9O+GzVLT1wQBsIR2WO3kEe6Xm7ucf9yP9KyKRTY9yqoFe/kjLCNSu0lP0PzpuOooUYyzHm1oFw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@conventional-changelog/git-client": "^3.1.2",
+ "concat-stream": "^2.0.0",
+ "conventional-changelog": "^8.1.3",
+ "conventional-changelog-angular": "^9.4.0",
+ "conventional-changelog-conventionalcommits": "^10.4.0",
+ "conventional-recommended-bump": "^12.1.0",
+ "semver": "^7.8.5"
+ },
+ "engines": {
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
+ },
+ "peerDependencies": {
+ "release-it": "^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0"
+ }
+ },
+ "node_modules/@simple-libs/child-process-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@simple-libs/child-process-utils/-/child-process-utils-2.0.0.tgz",
+ "integrity": "sha512-dvNoRKLijXnD0XoJAz94pbNuB5GQgDr55UhpSPhffDkTT0Cmcqh9jSCOtwfT2d4H6MI9E7c4SgtMuJXZ6F3c6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@simple-libs/stream-utils": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=22"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/dangreen"
+ }
+ },
+ "node_modules/@simple-libs/hosted-git-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@simple-libs/hosted-git-info/-/hosted-git-info-2.0.0.tgz",
+ "integrity": "sha512-55XwK/GYgV58PuN8lZFhI1qRxdKoMLJocXl/yM1EPqazFDmM4QWY7q6BxPCPDNKTNunj794DSD4h0H7SrqUdMg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=22"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/dangreen"
+ }
+ },
+ "node_modules/@simple-libs/normalize-package-data": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@simple-libs/normalize-package-data/-/normalize-package-data-1.0.0.tgz",
+ "integrity": "sha512-/EOmFBekV9tGee8gac/k+5Ox3twkypNqh5TfxA9vTkmcJkjm6f1xqrlstDNOrEhTvnYyVtU6Du2ZhY/IV1+9GA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@simple-libs/hosted-git-info": "^2.0.0",
+ "semver": "^7.8.5"
+ },
+ "engines": {
+ "node": ">=22"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/dangreen"
+ }
+ },
+ "node_modules/@simple-libs/stream-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@simple-libs/stream-utils/-/stream-utils-2.0.0.tgz",
+ "integrity": "sha512-fCTuZK4QBa+39Oz9l4OGfJfz+GpwCp3AqO7Zch3to99xHPgstVsRFpeQ8LNd2o1Gv8raL2mCFwiaHh7bFSp5DQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=22"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/dangreen"
+ }
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@types/debug": {
+ "version": "4.1.13",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz",
+ "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/ms": "*"
+ }
+ },
+ "node_modules/@types/katex": {
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz",
+ "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/ms": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
+ "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "26.6.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.3.tgz",
+ "integrity": "sha512-dsqMQQoeTLqu9wynDD00q573mNzso3IdQOAfHRJqLCcmCFPoGo9A1bDpUcv/9tnKpErQWv9uKeGfl37EIS02Yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~8.9.0"
+ }
+ },
+ "node_modules/@types/parse-path": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/@types/parse-path/-/parse-path-7.0.3.tgz",
+ "integrity": "sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/unist": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+ "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@typescript/typescript-aix-ppc64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz",
+ "integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-darwin-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz",
+ "integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-darwin-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz",
+ "integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-freebsd-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz",
+ "integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-freebsd-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz",
+ "integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-arm": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz",
+ "integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz",
+ "integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-loong64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz",
+ "integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-mips64el": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz",
+ "integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-ppc64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz",
+ "integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-riscv64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz",
+ "integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-s390x": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz",
+ "integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-linux-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz",
+ "integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-netbsd-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz",
+ "integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-netbsd-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz",
+ "integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-openbsd-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz",
+ "integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-openbsd-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz",
+ "integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-sunos-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz",
+ "integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-win32-arm64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz",
+ "integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@typescript/typescript-win32-x64": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz",
+ "integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/@yarnpkg/parsers": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.3.tgz",
+ "integrity": "sha512-mQZgUSgFurUtA07ceMjxrWkYz8QtDuYkvPlu0ZqncgjopQ0t6CNEo/OSealkmnagSUx8ZD5ewvezUwUuMqutQg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "js-yaml": "^3.10.0",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ }
+ },
+ "node_modules/@yarnpkg/parsers/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/@yarnpkg/parsers/node_modules/js-yaml": {
+ "version": "3.15.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.2.tgz",
+ "integrity": "sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz",
+ "integrity": "sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
+ "license": "Python-2.0"
+ },
+ "node_modules/argue-cli": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/argue-cli/-/argue-cli-3.2.0.tgz",
+ "integrity": "sha512-VipTB0gXgGIFO2Rg9yEVN5wLt2AurJcZqDbgmYSwPwsykhLrQhs240/bfceev4w68lI8JshoOJIk9uW7tFzROw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=22"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/dangreen"
+ }
+ },
+ "node_modules/ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/async-retry": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
+ "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "retry": "0.13.1"
+ }
+ },
+ "node_modules/axe-core": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.13.0.tgz",
+ "integrity": "sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/basic-ftp": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.1.tgz",
+ "integrity": "sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/before-after-hook": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz",
+ "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/bundle-name": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.1.tgz",
+ "integrity": "sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "run-applescript": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/c12": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.4.tgz",
+ "integrity": "sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^5.0.0",
+ "confbox": "^0.2.4",
+ "defu": "^6.1.6",
+ "dotenv": "^17.3.1",
+ "exsolve": "^1.0.8",
+ "giget": "^3.2.0",
+ "jiti": "^2.6.1",
+ "ohash": "^2.0.11",
+ "pathe": "^2.0.3",
+ "perfect-debounce": "^2.1.0",
+ "pkg-types": "^2.3.0",
+ "rc9": "^3.0.1"
+ },
+ "peerDependencies": {
+ "magicast": "*"
+ },
+ "peerDependenciesMeta": {
+ "magicast": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/c12/node_modules/dotenv": {
+ "version": "17.4.2",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz",
+ "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/character-entities": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
+ "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
+ "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
+ "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chardet": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.2.0.tgz",
+ "integrity": "sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/chokidar": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
+ "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz",
+ "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-cursor": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
+ "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.4.0.tgz",
+ "integrity": "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-width": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
+ "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/cliui/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/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==",
+ "dev": true,
+ "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/cliui/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/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==",
+ "dev": true,
+ "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/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "dev": true,
+ "engines": [
+ "node >= 6.0"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/confbox": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz",
+ "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/conventional-changelog": {
+ "version": "8.1.3",
+ "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-8.1.3.tgz",
+ "integrity": "sha512-fOMwLCxm46znJKPB08jLxl1FD8SOZOQHktlzCVhvhhVUfq0KgQSryoYXsRRHs1aRlZPR1/QK5wztnY8sBNC2AA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@conventional-changelog/git-client": "^3.1.2",
+ "@simple-libs/hosted-git-info": "^2.0.0",
+ "@simple-libs/normalize-package-data": "^1.0.0",
+ "argue-cli": "^3.1.0",
+ "conventional-changelog-preset-loader": "^6.0.1",
+ "conventional-changelog-writer": "^9.2.1",
+ "conventional-commits-filter": "^6.0.1",
+ "conventional-commits-parser": "^7.1.2",
+ "fd-package-json": "^2.0.0"
+ },
+ "bin": {
+ "conventional-changelog": "dist/cli/index.js"
+ },
+ "engines": {
+ "node": ">=22"
+ }
+ },
+ "node_modules/conventional-changelog-angular": {
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-9.4.0.tgz",
+ "integrity": "sha512-HdxRxuS8bBXVIuo4V82gvSwAXT0vYQUizrjs/izmPg5JdDstr8v8I5hduGL3iQbG+o310dUDxC4+LetuS5hu9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@conventional-changelog/template": "^1.4.0"
+ },
+ "engines": {
+ "node": ">=22"
+ }
+ },
+ "node_modules/conventional-changelog-conventionalcommits": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-10.4.0.tgz",
+ "integrity": "sha512-Rriac6ZrAlVm6cy9Bz4NSp+WMHpwNXoPIYex+HjCgduAVUSbnew29DQjQw0C4g9u3HtSYzGiGY+pdBXAZo+4aA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@conventional-changelog/template": "^1.4.0"
+ },
+ "engines": {
+ "node": ">=22"
+ }
+ },
+ "node_modules/conventional-changelog-preset-loader": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-6.0.1.tgz",
+ "integrity": "sha512-GZ8E3RQzXQb3JFy0pKl8oeSf7ENIhvAMvJr+PlWkavZOesLHHdhkfNJ4SvW35eo1Fu2+EyVxWQ1tVvtzAG2iWg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=22"
+ }
+ },
+ "node_modules/conventional-changelog-writer": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-9.2.1.tgz",
+ "integrity": "sha512-StlYSmW3wLedRaqohJMpP3YuWiAqtgD0/cpsai9frdDkXv7rxj0hRbpJrubPYvJxJsjplONsOobEQnPuS9UgCg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@conventional-changelog/template": "^1.3.0",
+ "@simple-libs/stream-utils": "^2.0.0",
+ "argue-cli": "^3.1.0",
+ "conventional-commits-filter": "^6.0.1",
+ "semver": "^7.5.2"
+ },
+ "bin": {
+ "conventional-changelog-writer": "dist/cli/index.js"
+ },
+ "engines": {
+ "node": ">=22"
+ }
+ },
+ "node_modules/conventional-commits-filter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-6.0.1.tgz",
+ "integrity": "sha512-cs+LadpH7Kpw0M3k8wurk+sOVVDAENA0iK4OBOrkL94j5lEVYRJ4j3zd2bhY9qgzyrPqthdcYT3axzRN7AliMg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=22"
+ }
+ },
+ "node_modules/conventional-commits-parser": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-7.1.2.tgz",
+ "integrity": "sha512-O+x4N2yH+ijvqWlIyTHsXTAP+algNWgGbjY2duCe8w2vUMvUB95cLRslCPfTMQyLAKlet3bhZTdu6ozn4M+QJQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@simple-libs/stream-utils": "^2.0.0",
+ "argue-cli": "^3.1.0"
+ },
+ "bin": {
+ "conventional-commits-parser": "dist/cli/index.js"
+ },
+ "engines": {
+ "node": ">=22"
+ }
+ },
+ "node_modules/conventional-recommended-bump": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-12.1.0.tgz",
+ "integrity": "sha512-HTNG3kEZXOOfKwrEx54ljURU9bG4nVPQzXMyCSeUcA/PE8EpNpQNujSrbXNBI8QZyN35zM+pVw+FuQk4KqHSHg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@conventional-changelog/git-client": "^3.1.0",
+ "argue-cli": "^3.1.0",
+ "conventional-changelog-preset-loader": "^6.0.1",
+ "conventional-commits-filter": "^6.0.1",
+ "conventional-commits-parser": "^7.1.0"
+ },
+ "bin": {
+ "conventional-recommended-bump": "dist/cli/index.js"
+ },
+ "engines": {
+ "node": ">=22"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz",
+ "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/data-uri-to-buffer": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-8.0.0.tgz",
+ "integrity": "sha512-6UHfyCux51b8PTGDgveqtz1tvphBku5DrMKKJbFAZAJOI2zsjDpDoYE1+QGj7FOMS4BdTFNJsJiR3zEB0xH0yQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decode-named-character-reference": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz",
+ "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "character-entities": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/default-browser": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.1.tgz",
+ "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bundle-name": "^4.1.0",
+ "default-browser-id": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
+ "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defu": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz",
+ "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/degenerator": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-7.0.1.tgz",
+ "integrity": "sha512-ABErK0IefDSyHjlPH7WUEenIAX2rPPnrDcDM+TS3z3+zu9TfyKKi07BQM+8rmxpdE2y1v5fjjdoAS/x4D2U60w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ast-types": "^0.13.4",
+ "escodegen": "^2.1.0",
+ "esprima": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "quickjs-wasi": "^2.2.0"
+ }
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/destr": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
+ "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/devlop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
+ "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dequal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "18.0.4",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-18.0.4.tgz",
+ "integrity": "sha512-jGt9uI5BIxpVO15kvy+iEFqNAwxYClKWnkptLjSNPnFLC003Imd0ofr3aEVsbpHdSBdSsbcApNIlz4nbyGMwdA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "bin": {
+ "dotenv": "dist/index.cjs"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/entities": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz",
+ "integrity": "sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eta": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/eta/-/eta-4.6.0.tgz",
+ "integrity": "sha512-lW6is4T1NFOYnmqGZIfvixqj7A7sSvScF+DN8EK6K58xI5MZ5UvYe0GjopxOXQtZvUn4eDdVuZ8XSoYWTMEKwA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/bgub/eta?sponsor=1"
+ }
+ },
+ "node_modules/exsolve": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.1.1.tgz",
+ "integrity": "sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-content-type-parse": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz",
+ "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-string-truncated-width": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz",
+ "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-string-width": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz",
+ "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-string-truncated-width": "^3.0.2"
+ }
+ },
+ "node_modules/fast-wrap-ansi": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz",
+ "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-string-width": "^3.0.2"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.20.3",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz",
+ "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fd-package-json": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-2.0.0.tgz",
+ "integrity": "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "walk-up-path": "^4.0.0"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-east-asian-width": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz",
+ "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-uri": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-8.0.1.tgz",
+ "integrity": "sha512-/5N/P4Lrh0p/mDwlDRi7Y1+P2o/OyzZI3l6Iz1Ov6XXwwm1y3RlZLuo3gVgML99djrEDtV980bBxSuOeHLk8ww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "basic-ftp": "^5.3.1",
+ "data-uri-to-buffer": "8.0.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/giget": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/giget/-/giget-3.3.1.tgz",
+ "integrity": "sha512-r+mvuDjrjMpsdw46Kmeydb8bdHm7wOKw8wNBtTndkjbPjgAp5oUJUxRE76wZFknxIPokfWvep2qSXK37aXE6zg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "giget": "dist/cli.mjs"
+ }
+ },
+ "node_modules/git-up": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/git-up/-/git-up-8.1.1.tgz",
+ "integrity": "sha512-FDenSF3fVqBYSaJoYy1KSc2wosx0gCvKP+c+PRBht7cAaiCeQlBtfBDX9vgnNOHmdePlSFITVcn4pFfcgNvx3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-ssh": "^1.4.0",
+ "parse-url": "^9.2.0"
+ }
+ },
+ "node_modules/git-url-parse": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-16.1.0.tgz",
+ "integrity": "sha512-cPLz4HuK86wClEW7iDdeAKcCVlWXmrLpb2L+G9goW0Z1dtpNS6BXXSOckUTlJT/LDQViE1QZKstNORzHsLnobw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "git-up": "^8.1.0"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/globby": {
+ "version": "16.2.4",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.4.tgz",
+ "integrity": "sha512-c8B/VNLmxRcmqqenRA9t+9IyOjf9+V6lTxPaUJLqOCONdQkWZ0ETYgX0qbtJqPsgCNusT9MZ5Jeidw8Eb9tn2g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "fast-glob": "^3.3.3",
+ "ignore": "^7.0.5",
+ "is-path-inside": "^4.0.0",
+ "micromatch": "^4.0.8",
+ "slash": "^5.1.0",
+ "unicorn-magic": "^0.4.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-9.1.0.tgz",
+ "integrity": "sha512-2NxoveTT58mjYT4n3RPTEfCZGLMbidoO8XEieXfpSYxu+PQJ1qpx4ypwH6N+uF9twBPIvRRgvkvW5HUTYWENig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "9.0.0",
+ "debug": "^4.3.4",
+ "proxy-agent-negotiate": "1.1.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-9.1.0.tgz",
+ "integrity": "sha512-ag87y7cJJ9/3+GxFr8Oy4O5faDsGRGnBGsJj/YjOSsSx/5eadKLYTMPlzuR6obgoCDDm0abAAZitXXQkMOPSpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "9.0.0",
+ "debug": "^4.3.4",
+ "proxy-agent-negotiate": "1.1.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz",
+ "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.10.tgz",
+ "integrity": "sha512-HpbUakT7xp5miBUywCHf36ZEuAJNklBJDDsGpUIjMzOSmM8ELSfA9Sa/QDPeNeqeoN31u+UTCkL4klCOVvRm4Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/ip-address": {
+ "version": "10.7.2",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.2.tgz",
+ "integrity": "sha512-7H/2gFSIitxc0hG3nOI1glS8QLo/EHBFFLk8vEUjXY/xu0AdL8jZ9U1IzO2PUm0d2D/ofQcAifb0g6OBkt8U7w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/is-alphabetical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
+ "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
+ "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-alphabetical": "^2.0.0",
+ "is-decimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-decimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
+ "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-hexadecimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
+ "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-in-ssh": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz",
+ "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-interactive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
+ "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz",
+ "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-ssh": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz",
+ "integrity": "sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "protocols": "^2.0.1"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz",
+ "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/issue-parser": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.2.tgz",
+ "integrity": "sha512-7atWPjhGEIX3JEtMrOYd8TKzboYlq+5sNbdl9POiLYOI14G5HZiQbZP0Xj5EZdrufQVXfJlpTV0hys0CuxwxZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "lodash.capitalize": "^4.2.1",
+ "lodash.escaperegexp": "^4.1.2",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.uniqby": "^4.7.0"
+ },
+ "engines": {
+ "node": "^18.17 || >=20.6.1"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz",
+ "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz",
+ "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-with-bigint": {
+ "version": "3.5.8",
+ "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.8.tgz",
+ "integrity": "sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsonpointer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
+ "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/katex": {
+ "version": "0.16.45",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.45.tgz",
+ "integrity": "sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==",
+ "dev": true,
+ "funding": [
+ "https://opencollective.com/katex",
+ "https://github.com/sponsors/katex"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^8.3.0"
+ },
+ "bin": {
+ "katex": "cli.js"
+ }
+ },
+ "node_modules/katex/node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/linkify-it": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-6.1.0.tgz",
+ "integrity": "sha512-wJ/TwpSDTLepCrQoYWYIExIKg5Zchex2Nn5yk2mFnB+6PtdkHtyLx742md9csRjjOnGkKIS/RrbY7l8D6gT9Vw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/markdown-it"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "uc.micro": "^3.0.0"
+ }
+ },
+ "node_modules/lint-staged": {
+ "version": "17.6.0",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-17.6.0.tgz",
+ "integrity": "sha512-nOhBfYkZEwkFtNzD5pK9s9LkcWoxJ+whLzEnhqi9nl7zTB5n7tg8+9iYgMGx2Wm3VlLu8cbNj0RACzY+nWi5iQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^4.0.7",
+ "string-argv": "^0.3.2",
+ "tinyexec": "^1.3.1"
+ },
+ "bin": {
+ "lint-staged": "bin/lint-staged.js"
+ },
+ "engines": {
+ "node": ">=22.22.1"
+ },
+ "funding": {
+ "url": "https://opencollective.com/lint-staged"
+ },
+ "optionalDependencies": {
+ "yaml": "^2.9.1"
+ }
+ },
+ "node_modules/lockfile-lint": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/lockfile-lint/-/lockfile-lint-5.0.1.tgz",
+ "integrity": "sha512-Ukjf5yGBQwfl7L2niV3in7bU5wEww3+4Dkw89JGTzOuq18tzS7jaszl2oO7M6u+jcim080MfX5E4Gokt1KhRHQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "cosmiconfig": "^9.0.0",
+ "debug": "^4.3.4",
+ "lockfile-lint-api": "^5.9.2",
+ "tinyglobby": "^0.2.15",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "lockfile-lint": "bin/lockfile-lint.js"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/lockfile-lint-api": {
+ "version": "5.9.2",
+ "resolved": "https://registry.npmjs.org/lockfile-lint-api/-/lockfile-lint-api-5.9.2.tgz",
+ "integrity": "sha512-3QhxWxl3jT9GcMxuCnTsU8Tz5U6U1lKBlKBu2zOYOz/x3ONUoojEtky3uzoaaDgExcLqIX0Aqv2I7TZXE383CQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@yarnpkg/parsers": "^3.0.0-rc.48.1",
+ "debug": "^4.3.4",
+ "object-hash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/lodash-es": {
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz",
+ "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.capitalize": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz",
+ "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.escaperegexp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
+ "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.uniqby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
+ "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/log-symbols": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz",
+ "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-unicode-supported": "^2.0.0",
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/macos-release": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.4.0.tgz",
+ "integrity": "sha512-wpGPwyg/xrSp4H4Db4xYSeAr6+cFQGHfspHzDUdYxswDnUW0L5Ov63UuJiSr8NMSpyaChO4u1n0MXUvVPtrN6A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/markdown-it": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz",
+ "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "~3.0.1",
+ "linkify-it": "^4.0.1",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.js"
+ }
+ },
+ "node_modules/markdown-it/node_modules/entities": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
+ "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/markdown-it/node_modules/linkify-it": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz",
+ "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "node_modules/markdown-it/node_modules/mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/markdown-it/node_modules/uc.micro": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/markdownlint": {
+ "version": "0.41.1",
+ "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.41.1.tgz",
+ "integrity": "sha512-qHKeU2E1bdyNAT077go2FVTNXvYcktN5IHtF6XyeD1l0PClxzSp2tUApAV14ORI8DGX4H9bNKZEzelZp4qn8IA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "micromark": "4.0.2",
+ "micromark-core-commonmark": "2.0.3",
+ "micromark-extension-directive": "4.0.0",
+ "micromark-extension-gfm-autolink-literal": "2.1.0",
+ "micromark-extension-gfm-footnote": "2.1.0",
+ "micromark-extension-gfm-table": "2.1.1",
+ "micromark-extension-math": "3.1.0",
+ "micromark-util-types": "2.0.2",
+ "string-width": "8.2.1"
+ },
+ "engines": {
+ "node": ">=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/DavidAnson"
+ }
+ },
+ "node_modules/markdownlint-cli2": {
+ "version": "0.23.3",
+ "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.23.3.tgz",
+ "integrity": "sha512-xAr5o/TGpC3v6lE6cKIW4b5eOFRrRX5u7Vtjae9ix3RALv8nNOd94XMkD/1OXXBtpMcJ4uQGbpSo3hv5UqS4uQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "globby": "16.2.4",
+ "js-yaml": "5.4.1",
+ "jsonc-parser": "3.3.1",
+ "jsonpointer": "5.0.1",
+ "markdown-it": "15.0.1",
+ "markdownlint": "0.41.1",
+ "markdownlint-cli2-formatter-default": "0.0.6",
+ "micromatch": "4.0.8",
+ "smol-toml": "1.8.0"
+ },
+ "bin": {
+ "markdownlint-cli2": "markdownlint-cli2-bin.mjs"
+ },
+ "engines": {
+ "node": ">=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/DavidAnson"
+ }
+ },
+ "node_modules/markdownlint-cli2-formatter-default": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.6.tgz",
+ "integrity": "sha512-VVDGKsq9sgzu378swJ0fcHfSicUnMxnL8gnLm/Q4J/xsNJ4e5bA6lvAz7PCzIl0/No0lHyaWdqVD2jotxOSFMQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/DavidAnson"
+ },
+ "peerDependencies": {
+ "markdownlint-cli2": ">=0.0.4"
+ }
+ },
+ "node_modules/markdownlint-cli2/node_modules/js-yaml": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.4.1.tgz",
+ "integrity": "sha512-28R/k+NAjeuf7+CKlTxWZVExJGwVVLwY06DgEnOMz2gEpfNkDcD7QvyiVPT0xy0XXhU8vHsd4Ot42OOPdJG7dQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.mjs"
+ }
+ },
+ "node_modules/markdownlint-cli2/node_modules/markdown-it": {
+ "version": "15.0.1",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-15.0.1.tgz",
+ "integrity": "sha512-9/7gE95FNPkfUWrjJIoHZza2iLmuJlPD0UNMxPi7bxUrbCR525YZY0r+zyfes0dZI5ZZ/uNIXUJca0pJvtw41g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/markdown-it"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "argparse": "^3.0.0",
+ "entities": "^8.0.0",
+ "linkify-it": "^6.0.0",
+ "mdurl": "^2.1.0",
+ "punycode.js": "^2.3.1",
+ "uc.micro": "^3.0.0"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.mjs"
+ }
+ },
+ "node_modules/markdownlint-cli2/node_modules/markdown-it/node_modules/argparse": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-3.0.2.tgz",
+ "integrity": "sha512-mFdDM6WqWKraGLsVb+C9CahPnzTXOefAOLq3jYcca2YZ8bEWpr++Tzj+zSaKW9+X9L5uSxcm1AZ3Y6aZJ09OhQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "PSF-2.0",
+ "peer": true
+ },
+ "node_modules/markdownlint-micromark": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.2.tgz",
+ "integrity": "sha512-jRxlQg8KpOfM2IbCL9RXM8ZiYWz2rv6DlZAnGv8ASJQpUh6byTBnEsbuMZ6T2/uIgntyf7SKg/mEaEBo1164fQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/markdownlint-rule-extended-ascii": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/markdownlint-rule-extended-ascii/-/markdownlint-rule-extended-ascii-0.2.1.tgz",
+ "integrity": "sha512-R7ED3LfGk87Jv2lx2a4BwkSAR3dYtlXmLR+taBYyVMttAu8j6Xq/W/rDU9UUaMAMEGYpUwvCzxIAyEDrRyU/9A==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/DavidAnson"
+ }
+ },
+ "node_modules/markdownlint-rule-helpers": {
+ "version": "0.21.0",
+ "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.21.0.tgz",
+ "integrity": "sha512-27WM6H76t79EZjEl3jSabV0ZzXsC5QaSslI/5N1XuXV0mJRA6i3BPMGFrtZUbhlCNgtY6oC9h5JhtpDMv95tKg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "markdownlint-micromark": "0.1.2"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/markdownlint-rule-search-replace": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/markdownlint-rule-search-replace/-/markdownlint-rule-search-replace-1.2.0.tgz",
+ "integrity": "sha512-l2eeVjb0ijxO+dO1ZrODcht+qnJ0VuiAAdBx1J8oa2kAugXl3NhxAGjfNuTfEJae5OQbdSGT+NjMczyzBXvWMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "markdownlint-rule-helpers": "0.21.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/markdownlint-rule-title-case-style": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/markdownlint-rule-title-case-style/-/markdownlint-rule-title-case-style-0.4.3.tgz",
+ "integrity": "sha512-BM6kedlbhMTP4wTrQ20IBf0UgwSE330JaEuexkPqz8cDDng0gFwjD8YO85hkF/NKTUBg3cA5wVFQlFsWtL1Yuw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "markdownlint": "^0.31.1",
+ "title-case": "^4.1.2"
+ }
+ },
+ "node_modules/markdownlint-rule-title-case-style/node_modules/markdownlint": {
+ "version": "0.31.1",
+ "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.31.1.tgz",
+ "integrity": "sha512-CKMR2hgcIBrYlIUccDCOvi966PZ0kJExDrUi1R+oF9PvqQmCrTqjOsgIvf2403OmJ+CWomuzDoylr6KbuMyvHA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "markdown-it": "13.0.1",
+ "markdownlint-micromark": "0.1.7"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/markdownlint-rule-title-case-style/node_modules/markdownlint-micromark": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.7.tgz",
+ "integrity": "sha512-BbRPTC72fl5vlSKv37v/xIENSRDYL/7X/XoFzZ740FGEbs9vZerLrIkFRY0rv7slQKxDczToYuMmqQFN61fi4Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/mdurl": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz",
+ "integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromark": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
+ "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/debug": "^4.0.0",
+ "debug": "^4.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
+ "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-destination": "^2.0.0",
+ "micromark-factory-label": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-factory-title": "^2.0.0",
+ "micromark-factory-whitespace": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-html-tag-name": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-directive": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-4.0.0.tgz",
+ "integrity": "sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-factory-whitespace": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "parse-entities": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-autolink-literal": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz",
+ "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
+ "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-table": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
+ "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-math": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz",
+ "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/katex": "^0.16.0",
+ "devlop": "^1.0.0",
+ "katex": "^0.16.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-factory-destination": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
+ "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-label": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
+ "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-space": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-title": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
+ "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-whitespace": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
+ "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-character": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-chunked": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
+ "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-classify-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
+ "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-combine-extensions": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
+ "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-numeric-character-reference": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
+ "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-encode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
+ "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-html-tag-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
+ "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-normalize-identifier": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
+ "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-resolve-all": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
+ "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
+ "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-subtokenize": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
+ "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-symbol": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/micromatch/node_modules/picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/mime": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz",
+ "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==",
+ "dev": true,
+ "funding": [
+ "https://github.com/sponsors/broofa"
+ ],
+ "license": "MIT",
+ "bin": {
+ "mime": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
+ "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "^1.54.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/mimic-function": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
+ "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/mute-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz",
+ "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/netmask": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.1.1.tgz",
+ "integrity": "sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/new-github-release-url": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz",
+ "integrity": "sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^2.5.1"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/ohash": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.12.tgz",
+ "integrity": "sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/onetime": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
+ "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-function": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "11.0.4",
+ "resolved": "https://registry.npmjs.org/open/-/open-11.0.4.tgz",
+ "integrity": "sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "default-browser": "^5.5.1",
+ "define-lazy-prop": "^3.0.0",
+ "is-in-ssh": "^1.0.0",
+ "is-inside-container": "^1.0.0",
+ "powershell-utils": "^0.2.1",
+ "wsl-utils": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora": {
+ "version": "9.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-9.4.1.tgz",
+ "integrity": "sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^5.6.2",
+ "cli-cursor": "^5.0.0",
+ "cli-spinners": "^3.2.0",
+ "is-interactive": "^2.0.0",
+ "is-unicode-supported": "^2.1.0",
+ "log-symbols": "^7.0.1",
+ "stdin-discarder": "^0.3.2",
+ "string-width": "^8.1.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/os-name": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/os-name/-/os-name-7.0.0.tgz",
+ "integrity": "sha512-/HfRU/lPPr4T2VigM+cvM3cU77es+XF4OEAa4aE5zpdvrxHGD2NmH0AFIWpMNAb+CsZL45rlcIO49Re0ZcRseg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "macos-release": "^3.4.0",
+ "windows-release": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pac-proxy-agent": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-9.1.0.tgz",
+ "integrity": "sha512-1aU+1mpj3DrQPfo3gh+3Gap3G5x+axnMx1P/y0ZF2ch7kb2meyOCAH8K2k9d27ROsTE7TnAerzxqF9aon2jqnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "9.0.0",
+ "debug": "^4.3.4",
+ "get-uri": "8.0.1",
+ "http-proxy-agent": "9.1.0",
+ "https-proxy-agent": "9.1.0",
+ "pac-resolver": "9.0.1",
+ "quickjs-wasi": "^2.2.0",
+ "socks-proxy-agent": "10.1.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/pac-resolver": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-9.0.1.tgz",
+ "integrity": "sha512-lJbS008tmkj08VhoM8Hzuv/VE5tK9MS0OIQ/7+s0lIF+BYhiQWFYzkSpML7lXs9iBu2jfmzBTLzhe9n6BX+dYw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "degenerator": "7.0.1",
+ "netmask": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "quickjs-wasi": "^2.2.0"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-entities": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
+ "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "character-entities-legacy": "^3.0.0",
+ "character-reference-invalid": "^2.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "is-alphanumerical": "^2.0.0",
+ "is-decimal": "^2.0.0",
+ "is-hexadecimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-path": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.1.0.tgz",
+ "integrity": "sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "protocols": "^2.0.0"
+ }
+ },
+ "node_modules/parse-url": {
+ "version": "9.2.0",
+ "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-9.2.0.tgz",
+ "integrity": "sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/parse-path": "^7.0.0",
+ "parse-path": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.13.0"
+ }
+ },
+ "node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/perfect-debounce": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz",
+ "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
+ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pkg-types": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.3.tgz",
+ "integrity": "sha512-j/lCFdcppV0JxWpCEITdbDltBxPP6cHT+yNJ6Go2OgoSA9518X847X9z0p6LtA4Nc16+eQzCZjRrWanTGvHJ5w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "confbox": "^0.3.1",
+ "exsolve": "^1.1.1",
+ "pathe": "^2.0.3"
+ }
+ },
+ "node_modules/pkg-types/node_modules/confbox": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.3.1.tgz",
+ "integrity": "sha512-cKUSoKa8YxFZZSmraVi7onONx3amu77ngK3kGpsYHDH7drPwCRkQE1RYMPlLRrMtnciRj274XNRxcHxnKmDSnA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/playwright": {
+ "version": "1.63.0",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.63.0.tgz",
+ "integrity": "sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright-core": "1.63.0"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/playwright-core": {
+ "version": "1.63.0",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz",
+ "integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "playwright-core": "cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/powershell-utils": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.2.1.tgz",
+ "integrity": "sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/protocols": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.2.tgz",
+ "integrity": "sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/proxy-agent": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-8.0.2.tgz",
+ "integrity": "sha512-idLLRewuemWd7GH/BDJzGiB0dWGfT2SQs3jy6NtZtGWU9uPTTSdeC1/cdbqLwgzhfv027daGFuXX426e2Eg20A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "9.0.0",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "9.1.0",
+ "https-proxy-agent": "9.1.0",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "9.1.0",
+ "proxy-from-env": "^2.0.0",
+ "socks-proxy-agent": "10.1.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/proxy-agent-negotiate": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent-negotiate/-/proxy-agent-negotiate-1.1.0.tgz",
+ "integrity": "sha512-N8IBcM3UgCVzz2L2Lqv8DVntDnnC8/hiV4nEDUPkqq72TPUgYWjQc+bdZlBPZK9LzPAvOY//gAt0S0DApoOXWQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "kerberos": "^2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "kerberos": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
+ "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/punycode.js": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
+ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/quickjs-wasi": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/quickjs-wasi/-/quickjs-wasi-2.2.0.tgz",
+ "integrity": "sha512-zQxXmQMrEoD3S+jQdYsloq4qAuaxKFHZj6hHqOYGwB2iQZH+q9e/lf5zQPXCKOk0WJuAjzRFbO4KwHIp2D05Iw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/rc9": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/rc9/-/rc9-3.1.0.tgz",
+ "integrity": "sha512-ufjkNVzbRHKcCOmTahZkmVsyc3W+MSk3jY03m+a7tGHkIsdVMG9l10/3HvFbWkkKzY5VFp3pkRsIo/UYgmFL7Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "defu": "^6.1.7",
+ "destr": "^2.0.5"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz",
+ "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/release-it": {
+ "version": "21.1.0",
+ "resolved": "https://registry.npmjs.org/release-it/-/release-it-21.1.0.tgz",
+ "integrity": "sha512-jR179wu8Z9BKfhd0wVmUmzjshCnezUkULdHW5rSCjKTXApdr6mAJjw/R339uXS43mLCz6iAFO6ffS27+N1dy8A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/webpro"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpro"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/prompts": "8.7.2",
+ "@octokit/rest": "22.0.1",
+ "@phun-ky/typeof": "2.0.3",
+ "async-retry": "1.3.3",
+ "c12": "3.3.4",
+ "ci-info": "^4.4.0",
+ "defu": "^6.1.7",
+ "eta": "4.6.0",
+ "git-url-parse": "16.1.0",
+ "issue-parser": "7.0.2",
+ "lodash.merge": "4.6.2",
+ "mime-types": "3.0.2",
+ "new-github-release-url": "2.0.0",
+ "open": "11.0.4",
+ "ora": "9.4.1",
+ "os-name": "7.0.0",
+ "proxy-agent": "8.0.2",
+ "tinyglobby": "0.2.17",
+ "undici": "7.29.0",
+ "url-join": "5.0.0",
+ "verkit": "0.4.0",
+ "wildcard-match": "5.1.4"
+ },
+ "bin": {
+ "release-it": "bin/release-it.js"
+ },
+ "engines": {
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
+ "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^7.0.0",
+ "signal-exit": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/run-applescript": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
+ "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/simple-git-hooks": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/simple-git-hooks/-/simple-git-hooks-2.14.0.tgz",
+ "integrity": "sha512-kkTORPAuxQz2g1QUuN0J8yGWT28tjGBfPOdJ4xT7Vbeu30veKUZQIoID2qGgCDAakaQn59UeZJJ4cFGB8PVP2A==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "simple-git-hooks": "cli.js"
+ }
+ },
+ "node_modules/slash": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/smol-toml": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.8.0.tgz",
+ "integrity": "sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">= 18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/cyyynthia"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.8.10",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.10.tgz",
+ "integrity": "sha512-e0VyvkVTwVYViNovRkZ9aodhxVlyoMn7eJhVUPxZ+eK9P/7CBkxvvsBOHqFPEH416726W8tLXXXjKwqgTErrCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^10.1.1",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-10.1.0.tgz",
+ "integrity": "sha512-WlMj/67cEJ6MDI1OcsnjuYKDNDoyPCCYZ249kuuXPiMDw9F8PXkVaQ7YWu3siTydfQ/4BEZcvGzu+aYvz7dDCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "9.0.0",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/stdin-discarder": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.3.2.tgz",
+ "integrity": "sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-argv": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz",
+ "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6.19"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "8.2.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz",
+ "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/tinyexec": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz",
+ "integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
+ "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/title-case": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/title-case/-/title-case-4.3.2.tgz",
+ "integrity": "sha512-I/nkcBo73mO42Idfv08jhInV61IMb61OdIFxk+B4Gu1oBjWBPOLmhZdsli+oJCVaD+86pYQA93cJfFt224ZFAA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD"
+ },
+ "node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/typescript": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz",
+ "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc"
+ },
+ "engines": {
+ "node": ">=16.20.0"
+ },
+ "optionalDependencies": {
+ "@typescript/typescript-aix-ppc64": "7.0.2",
+ "@typescript/typescript-darwin-arm64": "7.0.2",
+ "@typescript/typescript-darwin-x64": "7.0.2",
+ "@typescript/typescript-freebsd-arm64": "7.0.2",
+ "@typescript/typescript-freebsd-x64": "7.0.2",
+ "@typescript/typescript-linux-arm": "7.0.2",
+ "@typescript/typescript-linux-arm64": "7.0.2",
+ "@typescript/typescript-linux-loong64": "7.0.2",
+ "@typescript/typescript-linux-mips64el": "7.0.2",
+ "@typescript/typescript-linux-ppc64": "7.0.2",
+ "@typescript/typescript-linux-riscv64": "7.0.2",
+ "@typescript/typescript-linux-s390x": "7.0.2",
+ "@typescript/typescript-linux-x64": "7.0.2",
+ "@typescript/typescript-netbsd-arm64": "7.0.2",
+ "@typescript/typescript-netbsd-x64": "7.0.2",
+ "@typescript/typescript-openbsd-arm64": "7.0.2",
+ "@typescript/typescript-openbsd-x64": "7.0.2",
+ "@typescript/typescript-sunos-x64": "7.0.2",
+ "@typescript/typescript-win32-arm64": "7.0.2",
+ "@typescript/typescript-win32-x64": "7.0.2"
+ }
+ },
+ "node_modules/uc.micro": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-3.0.0.tgz",
+ "integrity": "sha512-U3PppEkleoTnIfi8BozMx3yju3qc/L6SwqWo2Sw+54PX+PX0q9I+r1Um5HCmqD7n9VDX5/v3vQH/AjA6deDdtw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/undici": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz",
+ "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.18.1"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "8.9.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz",
+ "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/unicorn-magic": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.1.tgz",
+ "integrity": "sha512-lzlXPoVB0Uy/FvTaUgX39RbixYiSKoc3JSoSf01+0c2B6FR3qdYIPN7Qjo/AV7n6sqLCk0509cT3LRj1oSZ1+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/universal-user-agent": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz",
+ "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/url-join": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz",
+ "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/verkit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/verkit/-/verkit-0.4.0.tgz",
+ "integrity": "sha512-sXMwN6DMHeouPfCxkxWkKAmxphWKEenHYY5H1nIBzU3PmDsmJp6kBXJdshjVdpMZuWCmL9SH7KFRx29AylpP6g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ },
+ "node_modules/walk-up-path": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz",
+ "integrity": "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/wildcard-match": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.4.tgz",
+ "integrity": "sha512-wldeCaczs8XXq7hj+5d/F38JE2r7EXgb6WQDM84RVwxy81T/sxB5e9+uZLK9Q9oNz1mlvjut+QtvgaOQFPVq/g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/windows-release": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-7.1.1.tgz",
+ "integrity": "sha512-0GBwC9WmR8Bm3WYiz3FC391054BsFHZ2gzBVdYj9uj5eIVYzbn/YPYCYW9SWdh9vwnLuzpn1UGwJKiMG4F236w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "powershell-utils": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/wsl-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-1.0.0.tgz",
+ "integrity": "sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-wsl": "^3.1.0",
+ "powershell-utils": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/wsl-utils/node_modules/powershell-utils": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz",
+ "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yaml": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz",
+ "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/eemeli"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs/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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/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==",
+ "dev": true,
+ "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/yargs/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yoctocolors": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.2.0.tgz",
+ "integrity": "sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
}
diff --git a/package.json b/package.json
index e20693d..9de856c 100644
--- a/package.json
+++ b/package.json
@@ -1,90 +1,91 @@
{
- "name": "@gohugo-ananke/ananke",
- "description": "Ananke: A theme for Hugo Sites",
- "version": "2.19.1",
- "license": "MIT",
- "repository": "gohugo-ananke/ananke",
- "author": "Bud Parr (https://github.com/budparr)",
- "maintainers": [
- {
- "name": "Patrick Kollitsch",
- "url": "https://github.com/davidsneighbour"
- }
- ],
- "contributors": [
- {
- "name": "Regis Philibert",
- "url": "https://github.com/regisphilibert"
- }
- ],
- "bugs": "https://github.com/gohugo-ananke/ananke/issues",
- "homepage": "https://github.com/gohugo-ananke/ananke#readme",
- "keywords": [
- "hugo",
- "hugo-theme",
- "hugo-module"
- ],
- "devDependencies": {
- "@axe-core/playwright": "4.13.0",
- "@biomejs/biome": "2.5.14",
- "@github/markdownlint-github": "0.8.4",
- "@playwright/test": "1.63.0",
- "@release-it/conventional-changelog": "12.0.2",
- "@types/node": "26.6.3",
- "dotenv": "18.0.4",
- "lint-staged": "17.6.0",
- "lockfile-lint": "5.0.1",
- "markdownlint": "0.41.1",
- "markdownlint-cli2": "0.23.3",
- "markdownlint-rule-extended-ascii": "0.2.1",
- "markdownlint-rule-list-duplicates": "0.0.1",
- "markdownlint-rule-relative-links": "5.1.3",
- "markdownlint-rule-search-replace": "1.2.0",
- "markdownlint-rule-title-case-style": "0.4.3",
- "release-it": "21.1.0",
- "simple-git-hooks": "2.14.0",
- "typescript": "7.0.2",
- "yaml": "2.9.1"
- },
- "scripts": {
- "hook:commit": "lint-staged --config .lintstagedrc.js",
- "hook:push": "node -e \"process.exit(require('child_process').execSync('git branch --show-current').toString().trim() === 'main' ? 0 : 1)\" && node scripts/test-hugo-quickstart.ts || true",
- "lint:links": "lychee --config lychee.toml public",
- "lint:markdown": "markdownlint-cli2",
- "lint:markdown:fix": "markdownlint-cli2 --fix",
- "lint:typescript": "tsc -p tsconfig.json --noEmit",
- "prepare": "simple-git-hooks install",
- "release": "release-it --config .release-it.ts",
- "release:pre": "release-it --preRelease=prerelease --config .release-it.ts",
- "server": "hugo server --environment documentation",
- "test": "node scripts/test-hugo-quickstart.ts",
- "test:coverage-gate": "node tests/coverage-gate.mjs",
- "test:e2e": "playwright test",
- "test:e2e:ui": "playwright test --ui",
- "test:quickstart": "node scripts/test-hugo-quickstart.ts",
- "test:quickstart:submodule": "node scripts/test-hugo-quickstart.ts --use-submodule",
- "update:docs": "git add docs/ && (git diff --cached --quiet || git commit -m \"chore(git): update documentation submodule\")"
- },
- "cspell": {
- "version": "0.2",
- "language": "en-GB",
- "ignorePaths": [
- "CHANGELOG.md",
- "public",
- "node_modules"
- ]
- },
- "simple-git-hooks": {
- "pre-commit": "npm run hook:commit",
- "pre-push": "npm run hook:push"
- },
- "type": "module",
- "overrides": {
- "markdownlint-rule-title-case-style": {
- "markdownlint": "$markdownlint"
- }
- },
- "allowScripts": {
- "simple-git-hooks@2.14.0": true
- }
+ "name": "@gohugo-ananke/ananke",
+ "description": "Ananke: A theme for Hugo Sites",
+ "version": "2.19.1",
+ "license": "MIT",
+ "author": "Bud Parr (https://github.com/budparr)",
+ "maintainers": [
+ {
+ "name": "Patrick Kollitsch",
+ "url": "https://github.com/davidsneighbour"
+ }
+ ],
+ "contributors": [
+ {
+ "name": "Regis Philibert",
+ "url": "https://github.com/regisphilibert"
+ }
+ ],
+ "bugs": "https://github.com/gohugo-ananke/ananke/issues",
+ "homepage": "https://github.com/gohugo-ananke/ananke#readme",
+ "keywords": [
+ "hugo",
+ "hugo-theme",
+ "hugo-module"
+ ],
+ "devDependencies": {
+ "@axe-core/playwright": "4.13.0",
+ "@biomejs/biome": "2.5.14",
+ "@dnbhq/biome-config": "0.3.1",
+ "@dnbhq/lintstaged-config": "0.2.1",
+ "@dnbhq/markdownlint-config": "0.2.11",
+ "@dnbhq/release-config": "1.1.3",
+ "@dnbhq/tsconfig": "0.1.6",
+ "@playwright/test": "1.63.0",
+ "@release-it/conventional-changelog": "12.0.2",
+ "@types/node": "26.6.3",
+ "dotenv": "18.0.4",
+ "lint-staged": "17.6.0",
+ "lockfile-lint": "5.0.1",
+ "release-it": "21.1.0",
+ "simple-git-hooks": "2.14.0",
+ "typescript": "7.0.2",
+ "yaml": "2.9.1"
+ },
+ "scripts": {
+ "hook:commit": "lint-staged",
+ "hook:push": "node -e \"process.exit(require('child_process').execSync('git branch --show-current').toString().trim() === 'main' ? 0 : 1)\" && node scripts/test-hugo-quickstart.ts || true",
+ "lint:links": "lychee --config lychee.toml public",
+ "lint:markdown": "markdownlint-cli2 --config ./node_modules/@dnbhq/markdownlint-config/.markdownlint-cli2.jsonc \"**/*.{md,mdx}\" \"#CHANGELOG.md\" \"#tests/.playwright/**\" \"#tests/fixtures/site/public/**\"",
+ "lint:markdown:fix": "markdownlint-cli2 --config ./node_modules/@dnbhq/markdownlint-config/.markdownlint-cli2.jsonc --fix \"**/*.{md,mdx}\" \"#CHANGELOG.md\" \"#tests/.playwright/**\" \"#tests/fixtures/site/public/**\"",
+ "lint:typescript": "tsc -p tsconfig.json --noEmit",
+ "prepare": "simple-git-hooks install",
+ "release": "release-it --config .release-it.ts",
+ "release:pre": "release-it --preRelease=prerelease --config .release-it.ts",
+ "server": "hugo server --environment documentation",
+ "test": "node scripts/test-hugo-quickstart.ts",
+ "test:coverage-gate": "node tests/coverage-gate.mjs",
+ "test:e2e": "playwright test",
+ "test:e2e:ui": "playwright test --ui",
+ "test:quickstart": "node scripts/test-hugo-quickstart.ts",
+ "test:quickstart:submodule": "node scripts/test-hugo-quickstart.ts --use-submodule",
+ "update:docs": "git add docs/ && (git diff --cached --quiet || git commit -m \"chore(git): update documentation submodule\")",
+ "release:dry": "release-it --dry-run --config .release-it.ts",
+ "lint:code": "biome check",
+ "lint:lockfile": "lockfile-lint --path package-lock.json --validate-https --allowed-hosts npm",
+ "lint": "npm run lint:code && npm run lint:lockfile && npm run lint:markdown && npm run lint:typescript",
+ "check": "npm run lint && npm test && npm run test:coverage-gate",
+ "lint:code:fix": "biome check --write"
+ },
+ "cspell": {
+ "version": "0.2",
+ "language": "en-GB",
+ "ignorePaths": [
+ "CHANGELOG.md",
+ "public",
+ "node_modules"
+ ]
+ },
+ "simple-git-hooks": {
+ "pre-commit": "npm run hook:commit",
+ "pre-push": "npm run hook:push"
+ },
+ "type": "module",
+ "allowScripts": {
+ "simple-git-hooks@2.14.0": true
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/gohugo-ananke/ananke.git"
+ }
}
diff --git a/playwright.config.ts b/playwright.config.ts
index c8f8fec..d45c946 100644
--- a/playwright.config.ts
+++ b/playwright.config.ts
@@ -12,26 +12,26 @@
* branch. See tests/support/dev-server.mjs.
*/
export default defineConfig({
- testDir: "./tests/e2e",
- outputDir: "./tests/.playwright/results",
- fullyParallel: true,
- forbidOnly: isCI,
- retries: isCI ? 2 : 0,
- reporter: isCI ? [["github"], ["list"]] : "list",
- use: {
- baseURL,
- trace: "on-first-retry",
- },
- projects: [
- {
- name: "chromium",
- use: { ...devices["Desktop Chrome"] },
- },
- ],
- webServer: {
- command: "node tests/support/dev-server.mjs",
- url: baseURL,
- reuseExistingServer: !isCI,
- timeout: 120_000,
- },
+ testDir: "./tests/e2e",
+ outputDir: "./tests/.playwright/results",
+ fullyParallel: true,
+ forbidOnly: isCI,
+ retries: isCI ? 2 : 0,
+ reporter: isCI ? [["github"], ["list"]] : "list",
+ use: {
+ baseURL,
+ trace: "on-first-retry",
+ },
+ projects: [
+ {
+ name: "chromium",
+ use: { ...devices["Desktop Chrome"] },
+ },
+ ],
+ webServer: {
+ command: "node tests/support/dev-server.mjs",
+ url: baseURL,
+ reuseExistingServer: !isCI,
+ timeout: 120_000,
+ },
});
diff --git a/renovate.json5 b/renovate.json5
new file mode 100644
index 0000000..3ff892d
--- /dev/null
+++ b/renovate.json5
@@ -0,0 +1,7 @@
+{
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+ "extends": ["github>dnbhq/renovate-config"],
+ "assignees": ["davidsneighbour"],
+ "baseBranches": ["development"],
+ "labels": ["type:dependencies"],
+}
diff --git a/scripts/synch-social-icons.ts b/scripts/synch-social-icons.ts
index 425cffe..35fd205 100644
--- a/scripts/synch-social-icons.ts
+++ b/scripts/synch-social-icons.ts
@@ -32,81 +32,81 @@
import process from "node:process";
type CliOptions = {
- dir: string;
- branch: string;
- apply: boolean;
- deleteMissing: boolean;
- onlyChanged: boolean;
- json: boolean;
- verbose: boolean;
- all: boolean;
- concurrency: number;
- help: boolean;
+ dir: string;
+ branch: string;
+ apply: boolean;
+ deleteMissing: boolean;
+ onlyChanged: boolean;
+ json: boolean;
+ verbose: boolean;
+ all: boolean;
+ concurrency: number;
+ help: boolean;
};
type FileResultStatus =
- | "same"
- | "changed"
- | "missing"
- | "would-create"
- | "created"
- | "would-delete"
- | "deleted"
- | "updated"
- | "error";
+ | "same"
+ | "changed"
+ | "missing"
+ | "would-create"
+ | "created"
+ | "would-delete"
+ | "deleted"
+ | "updated"
+ | "error";
type FileResult = {
- fileName: string;
- localPath: string;
- remoteUrl: string;
- status: FileResultStatus;
- message: string;
+ fileName: string;
+ localPath: string;
+ remoteUrl: string;
+ status: FileResultStatus;
+ message: string;
};
type Summary = {
- same: number;
- changed: number;
- missing: number;
- wouldCreate: number;
- created: number;
- wouldDelete: number;
- deleted: number;
- updated: number;
- errors: number;
+ same: number;
+ changed: number;
+ missing: number;
+ wouldCreate: number;
+ created: number;
+ wouldDelete: number;
+ deleted: number;
+ updated: number;
+ errors: number;
};
type JsonOutput = {
- options: {
- dir: string;
- branch: string;
- apply: boolean;
- deleteMissing: boolean;
- onlyChanged: boolean;
- json: boolean;
- verbose: boolean;
- all: boolean;
- concurrency: number;
- };
- results: FileResult[];
- summary: Summary;
+ options: {
+ dir: string;
+ branch: string;
+ apply: boolean;
+ deleteMissing: boolean;
+ onlyChanged: boolean;
+ json: boolean;
+ verbose: boolean;
+ all: boolean;
+ concurrency: number;
+ };
+ results: FileResult[];
+ summary: Summary;
};
type ProcessingTask =
- | {
- kind: "upstream";
- fileName: string;
- }
- | {
- kind: "local-only";
- fileName: string;
- };
+ | {
+ kind: "upstream";
+ fileName: string;
+ }
+ | {
+ kind: "local-only";
+ fileName: string;
+ };
const DEFAULT_DIRECTORY = "assets/ananke/socials";
const DEFAULT_BRANCH = "develop";
const SIMPLE_ICONS_OWNER = "simple-icons";
const SIMPLE_ICONS_REPO = "simple-icons";
const SIMPLE_ICONS_RAW_BASE =
- "https://raw.githubusercontent.com/simple-icons/simple-icons";
+ "https://raw.githubusercontent.com/simple-icons/simple-icons";
const EXIT_SUCCESS = 0;
const EXIT_FAILURE = 1;
@@ -115,10 +115,10 @@
* Print CLI help.
*/
function printHelp(): void {
- const scriptName = path.basename(process.argv[1] ?? "update-social-icons.ts");
+ const scriptName = path.basename(process.argv[1] ?? "update-social-icons.ts");
- console.log(
- `
+ console.log(
+ `
Usage:
${scriptName} [options]
@@ -169,7 +169,7 @@
* updated local file was replaced because --apply was used
* error processing failed
`.trim(),
- );
+ );
}
/**
@@ -179,121 +179,121 @@
* @returns Parsed CLI options.
*/
function parseArgs(argv: string[]): CliOptions {
- const options: CliOptions = {
- dir: DEFAULT_DIRECTORY,
- branch: DEFAULT_BRANCH,
- apply: false,
- deleteMissing: false,
- onlyChanged: false,
- json: false,
- verbose: false,
- all: false,
- concurrency: 8,
- help: false,
- };
+ const options: CliOptions = {
+ dir: DEFAULT_DIRECTORY,
+ branch: DEFAULT_BRANCH,
+ apply: false,
+ deleteMissing: false,
+ onlyChanged: false,
+ json: false,
+ verbose: false,
+ all: false,
+ concurrency: 8,
+ help: false,
+ };
- for (let index = 0; index < argv.length; index += 1) {
- const arg = argv[index];
- if (arg === undefined) {
- continue;
- }
+ for (let index = 0; index < argv.length; index += 1) {
+ const arg = argv[index];
+ if (arg === undefined) {
+ continue;
+ }
- if (arg === "--help") {
- options.help = true;
- continue;
- }
+ if (arg === "--help") {
+ options.help = true;
+ continue;
+ }
- if (arg === "--apply") {
- options.apply = true;
- continue;
- }
+ if (arg === "--apply") {
+ options.apply = true;
+ continue;
+ }
- if (arg === "--delete") {
- options.deleteMissing = true;
- continue;
- }
+ if (arg === "--delete") {
+ options.deleteMissing = true;
+ continue;
+ }
- if (arg === "--only-changed") {
- options.onlyChanged = true;
- continue;
- }
+ if (arg === "--only-changed") {
+ options.onlyChanged = true;
+ continue;
+ }
- if (arg === "--json") {
- options.json = true;
- continue;
- }
+ if (arg === "--json") {
+ options.json = true;
+ continue;
+ }
- if (arg === "--verbose") {
- options.verbose = true;
- continue;
- }
+ if (arg === "--verbose") {
+ options.verbose = true;
+ continue;
+ }
- if (arg === "--all") {
- options.all = true;
- continue;
- }
+ if (arg === "--all") {
+ options.all = true;
+ continue;
+ }
- if (arg === "--dir") {
- const value = argv[index + 1];
- if (!value) {
- throw new Error("Missing value for --dir");
- }
- options.dir = value;
- index += 1;
- continue;
- }
+ if (arg === "--dir") {
+ const value = argv[index + 1];
+ if (!value) {
+ throw new Error("Missing value for --dir");
+ }
+ options.dir = value;
+ index += 1;
+ continue;
+ }
- if (arg.startsWith("--dir=")) {
- options.dir = arg.slice("--dir=".length);
- continue;
- }
+ if (arg.startsWith("--dir=")) {
+ options.dir = arg.slice("--dir=".length);
+ continue;
+ }
- if (arg === "--branch") {
- const value = argv[index + 1];
- if (!value) {
- throw new Error("Missing value for --branch");
- }
- options.branch = value;
- index += 1;
- continue;
- }
+ if (arg === "--branch") {
+ const value = argv[index + 1];
+ if (!value) {
+ throw new Error("Missing value for --branch");
+ }
+ options.branch = value;
+ index += 1;
+ continue;
+ }
- if (arg.startsWith("--branch=")) {
- options.branch = arg.slice("--branch=".length);
- continue;
- }
+ if (arg.startsWith("--branch=")) {
+ options.branch = arg.slice("--branch=".length);
+ continue;
+ }
- if (arg === "--concurrency") {
- const value = argv[index + 1];
- if (!value) {
- throw new Error("Missing value for --concurrency");
- }
+ if (arg === "--concurrency") {
+ const value = argv[index + 1];
+ if (!value) {
+ throw new Error("Missing value for --concurrency");
+ }
- const parsed = Number.parseInt(value, 10);
- if (!Number.isInteger(parsed) || parsed < 1) {
- throw new Error("--concurrency must be a positive integer");
- }
+ const parsed = Number.parseInt(value, 10);
+ if (!Number.isInteger(parsed) || parsed < 1) {
+ throw new Error("--concurrency must be a positive integer");
+ }
- options.concurrency = parsed;
- index += 1;
- continue;
- }
+ options.concurrency = parsed;
+ index += 1;
+ continue;
+ }
- if (arg.startsWith("--concurrency=")) {
- const value = arg.slice("--concurrency=".length);
- const parsed = Number.parseInt(value, 10);
- if (!Number.isInteger(parsed) || parsed < 1) {
- throw new Error("--concurrency must be a positive integer");
- }
+ if (arg.startsWith("--concurrency=")) {
+ const value = arg.slice("--concurrency=".length);
+ const parsed = Number.parseInt(value, 10);
+ if (!Number.isInteger(parsed) || parsed < 1) {
+ throw new Error("--concurrency must be a positive integer");
+ }
- options.concurrency = parsed;
- continue;
- }
+ options.concurrency = parsed;
+ continue;
+ }
- throw new Error(`Unknown argument: ${arg}`);
- }
+ throw new Error(`Unknown argument: ${arg}`);
+ }
- return options;
+ return options;
}
/**
@@ -304,7 +304,7 @@
* @returns Raw GitHub URL.
*/
function buildRemoteUrl(branch: string, fileName: string): string {
- return `${SIMPLE_ICONS_RAW_BASE}/${encodeURIComponent(branch)}/icons/${encodeURIComponent(fileName)}`;
+ return `${SIMPLE_ICONS_RAW_BASE}/${encodeURIComponent(branch)}/icons/${encodeURIComponent(fileName)}`;
}
/**
@@ -314,13 +314,13 @@
* @returns Sorted list of SVG filenames.
*/
async function getLocalSvgFiles(directory: string): Promise<string[]> {
- const entries = await fs.readdir(directory, { withFileTypes: true });
+ const entries = await fs.readdir(directory, { withFileTypes: true });
- return entries
- .filter((entry) => entry.isFile())
- .map((entry) => entry.name)
- .filter((fileName) => fileName.toLowerCase().endsWith(".svg"))
- .sort((left, right) => left.localeCompare(right));
+ return entries
+ .filter((entry) => entry.isFile())
+ .map((entry) => entry.name)
+ .filter((fileName) => fileName.toLowerCase().endsWith(".svg"))
+ .sort((left, right) => left.localeCompare(right));
}
/**
@@ -330,52 +330,52 @@
* @returns Sorted list of upstream SVG filenames.
*/
async function getUpstreamSvgFiles(branch: string): Promise<string[]> {
- const apiUrl = new URL(
- `https://api.github.com/repos/${encodeURIComponent(SIMPLE_ICONS_OWNER)}/${encodeURIComponent(SIMPLE_ICONS_REPO)}/contents/icons`,
- );
- apiUrl.searchParams.set("ref", branch);
+ const apiUrl = new URL(
+ `https://api.github.com/repos/${encodeURIComponent(SIMPLE_ICONS_OWNER)}/${encodeURIComponent(SIMPLE_ICONS_REPO)}/contents/icons`,
+ );
+ apiUrl.searchParams.set("ref", branch);
- const response = await fetch(apiUrl.toString(), {
- method: "GET",
- headers: {
- Accept: "application/vnd.github+json",
- "User-Agent": "davidsneighbour-social-icon-updater",
- },
- });
+ const response = await fetch(apiUrl.toString(), {
+ method: "GET",
+ headers: {
+ Accept: "application/vnd.github+json",
+ "User-Agent": "davidsneighbour-social-icon-updater",
+ },
+ });
- if (!response.ok) {
- throw new Error(
- `Failed to retrieve upstream icon listing with HTTP ${response.status}`,
- );
- }
+ if (!response.ok) {
+ throw new Error(
+ `Failed to retrieve upstream icon listing with HTTP ${response.status}`,
+ );
+ }
- const data: unknown = await response.json();
+ const data: unknown = await response.json();
- if (!Array.isArray(data)) {
- throw new Error(
- "Unexpected response while retrieving upstream icon listing",
- );
- }
+ if (!Array.isArray(data)) {
+ throw new Error(
+ "Unexpected response while retrieving upstream icon listing",
+ );
+ }
- const fileNames = data
- .flatMap((entry: unknown) => {
- if (
- typeof entry === "object" &&
- entry !== null &&
- "type" in entry &&
- "name" in entry &&
- entry.type === "file" &&
- typeof entry.name === "string" &&
- entry.name.toLowerCase().endsWith(".svg")
- ) {
- return [entry.name];
- }
+ const fileNames = data
+ .flatMap((entry: unknown) => {
+ if (
+ typeof entry === "object" &&
+ entry !== null &&
+ "type" in entry &&
+ "name" in entry &&
+ entry.type === "file" &&
+ typeof entry.name === "string" &&
+ entry.name.toLowerCase().endsWith(".svg")
+ ) {
+ return [entry.name];
+ }
- return [];
- })
- .sort((left, right) => left.localeCompare(right));
+ return [];
+ })
+ .sort((left, right) => left.localeCompare(right));
- return fileNames;
+ return fileNames;
}
/**
@@ -387,25 +387,25 @@
* @returns SVG content or null if not found.
*/
async function fetchRemoteSvg(remoteUrl: string): Promise<string | null> {
- const response = await fetch(remoteUrl, {
- method: "GET",
- headers: {
- Accept: "image/svg+xml,text/plain;q=0.9,*/*;q=0.8",
- "User-Agent": "davidsneighbour-social-icon-updater",
- },
- });
+ const response = await fetch(remoteUrl, {
+ method: "GET",
+ headers: {
+ Accept: "image/svg+xml,text/plain;q=0.9,*/*;q=0.8",
+ "User-Agent": "davidsneighbour-social-icon-updater",
+ },
+ });
- if (response.status === 404) {
- return null;
- }
+ if (response.status === 404) {
+ return null;
+ }
- if (!response.ok) {
- throw new Error(
- `Request failed with HTTP ${response.status} for ${remoteUrl}`,
- );
- }
+ if (!response.ok) {
+ throw new Error(
+ `Request failed with HTTP ${response.status} for ${remoteUrl}`,
+ );
+ }
- return await response.text();
+ return await response.text();
}
/**
@@ -427,96 +427,96 @@
* @returns Processing result.
*/
async function processUpstreamFile(
- directory: string,
- fileName: string,
- branch: string,
- apply: boolean,
+ directory: string,
+ fileName: string,
+ branch: string,
+ apply: boolean,
): Promise<FileResult> {
- const localPath = path.join(directory, fileName);
- const remoteUrl = buildRemoteUrl(branch, fileName);
+ const localPath = path.join(directory, fileName);
+ const remoteUrl = buildRemoteUrl(branch, fileName);
- try {
- const remoteContent = await fetchRemoteSvg(remoteUrl);
+ try {
+ const remoteContent = await fetchRemoteSvg(remoteUrl);
- if (remoteContent === null) {
- return {
- fileName,
- localPath,
- remoteUrl,
- status: "missing",
- message: "No matching upstream file found",
- };
- }
+ if (remoteContent === null) {
+ return {
+ fileName,
+ localPath,
+ remoteUrl,
+ status: "missing",
+ message: "No matching upstream file found",
+ };
+ }
- const localStats = await fs.stat(localPath).catch(() => null);
+ const localStats = await fs.stat(localPath).catch(() => null);
- if (!localStats) {
- if (!apply) {
- return {
- fileName,
- localPath,
- remoteUrl,
- status: "would-create",
- message: "Upstream file exists and would be created locally",
- };
- }
+ if (!localStats) {
+ if (!apply) {
+ return {
+ fileName,
+ localPath,
+ remoteUrl,
+ status: "would-create",
+ message: "Upstream file exists and would be created locally",
+ };
+ }
- await fs.writeFile(localPath, remoteContent, "utf8");
+ await fs.writeFile(localPath, remoteContent, "utf8");
- return {
- fileName,
- localPath,
- remoteUrl,
- status: "created",
- message: "Upstream file existed and was created locally",
- };
- }
+ return {
+ fileName,
+ localPath,
+ remoteUrl,
+ status: "created",
+ message: "Upstream file existed and was created locally",
+ };
+ }
- const localContent = await fs.readFile(localPath, "utf8");
+ const localContent = await fs.readFile(localPath, "utf8");
- if (localContent === remoteContent) {
- return {
- fileName,
- localPath,
- remoteUrl,
- status: "same",
- message: "Local file matches upstream",
- };
- }
+ if (localContent === remoteContent) {
+ return {
+ fileName,
+ localPath,
+ remoteUrl,
+ status: "same",
+ message: "Local file matches upstream",
+ };
+ }
- if (!apply) {
- return {
- fileName,
- localPath,
- remoteUrl,
- status: "changed",
- message: "Upstream file differs from local file",
- };
- }
+ if (!apply) {
+ return {
+ fileName,
+ localPath,
+ remoteUrl,
+ status: "changed",
+ message: "Upstream file differs from local file",
+ };
+ }
- await fs.writeFile(localPath, remoteContent, "utf8");
+ await fs.writeFile(localPath, remoteContent, "utf8");
- return {
- fileName,
- localPath,
- remoteUrl,
- status: "updated",
- message: "Local file replaced with upstream version",
- };
- } catch (error: unknown) {
- const message =
- error instanceof Error
- ? error.message
- : "Unknown error while processing file";
+ return {
+ fileName,
+ localPath,
+ remoteUrl,
+ status: "updated",
+ message: "Local file replaced with upstream version",
+ };
+ } catch (error: unknown) {
+ const message =
+ error instanceof Error
+ ? error.message
+ : "Unknown error while processing file";
- return {
- fileName,
- localPath,
- remoteUrl,
- status: "error",
- message,
- };
- }
+ return {
+ fileName,
+ localPath,
+ remoteUrl,
+ status: "error",
+ message,
+ };
+ }
}
/**
@@ -530,59 +530,59 @@
* @returns Processing result.
*/
async function processLocalOnlyFile(
- directory: string,
- fileName: string,
- branch: string,
- apply: boolean,
- deleteMissing: boolean,
+ directory: string,
+ fileName: string,
+ branch: string,
+ apply: boolean,
+ deleteMissing: boolean,
): Promise<FileResult> {
- const localPath = path.join(directory, fileName);
- const remoteUrl = buildRemoteUrl(branch, fileName);
+ const localPath = path.join(directory, fileName);
+ const remoteUrl = buildRemoteUrl(branch, fileName);
- try {
- if (!deleteMissing) {
- return {
- fileName,
- localPath,
- remoteUrl,
- status: "missing",
- message: "No matching upstream file found",
- };
- }
+ try {
+ if (!deleteMissing) {
+ return {
+ fileName,
+ localPath,
+ remoteUrl,
+ status: "missing",
+ message: "No matching upstream file found",
+ };
+ }
- if (!apply) {
- return {
- fileName,
- localPath,
- remoteUrl,
- status: "would-delete",
- message: "No matching upstream file found; local file would be deleted",
- };
- }
+ if (!apply) {
+ return {
+ fileName,
+ localPath,
+ remoteUrl,
+ status: "would-delete",
+ message: "No matching upstream file found; local file would be deleted",
+ };
+ }
- await fs.unlink(localPath);
+ await fs.unlink(localPath);
- return {
- fileName,
- localPath,
- remoteUrl,
- status: "deleted",
- message: "No matching upstream file found; local file deleted",
- };
- } catch (error: unknown) {
- const message =
- error instanceof Error
- ? error.message
- : "Unknown error while processing file";
+ return {
+ fileName,
+ localPath,
+ remoteUrl,
+ status: "deleted",
+ message: "No matching upstream file found; local file deleted",
+ };
+ } catch (error: unknown) {
+ const message =
+ error instanceof Error
+ ? error.message
+ : "Unknown error while processing file";
- return {
- fileName,
- localPath,
- remoteUrl,
- status: "error",
- message,
- };
- }
+ return {
+ fileName,
+ localPath,
+ remoteUrl,
+ status: "error",
+ message,
+ };
+ }
}
/**
@@ -593,14 +593,14 @@
* @returns True if the result should be shown.
*/
function shouldPrintResult(
- status: FileResultStatus,
- onlyChanged: boolean,
+ status: FileResultStatus,
+ onlyChanged: boolean,
): boolean {
- if (!onlyChanged) {
- return true;
- }
+ if (!onlyChanged) {
+ return true;
+ }
- return status !== "same";
+ return status !== "same";
}
/**
@@ -610,26 +610,26 @@
* @param verbose Whether to include detail lines.
*/
function printResult(result: FileResult, verbose: boolean): void {
- const prefixByStatus: Record<FileResultStatus, string> = {
- same: "SAME",
- changed: "CHANGED",
- missing: "MISS",
- "would-create": "WOULD-CREATE",
- created: "CREATED",
- "would-delete": "WOULD-DELETE",
- deleted: "DELETED",
- updated: "UPDATED",
- error: "ERR",
- };
+ const prefixByStatus: Record<FileResultStatus, string> = {
+ same: "SAME",
+ changed: "CHANGED",
+ missing: "MISS",
+ "would-create": "WOULD-CREATE",
+ created: "CREATED",
+ "would-delete": "WOULD-DELETE",
+ deleted: "DELETED",
+ updated: "UPDATED",
+ error: "ERR",
+ };
- console.log(
- `${prefixByStatus[result.status]} ${result.fileName} - ${result.message}`,
- );
+ console.log(
+ `${prefixByStatus[result.status]} ${result.fileName} - ${result.message}`,
+ );
- if (verbose) {
- console.log(` local: ${result.localPath}`);
- console.log(` remote: ${result.remoteUrl}`);
- }
+ if (verbose) {
+ console.log(` local: ${result.localPath}`);
+ console.log(` remote: ${result.remoteUrl}`);
+ }
}
/**
@@ -639,19 +639,19 @@
* @returns Summary counts.
*/
function buildSummary(results: FileResult[]): Summary {
- return {
- same: results.filter((entry) => entry.status === "same").length,
- changed: results.filter((entry) => entry.status === "changed").length,
- missing: results.filter((entry) => entry.status === "missing").length,
- wouldCreate: results.filter((entry) => entry.status === "would-create")
- .length,
- created: results.filter((entry) => entry.status === "created").length,
- wouldDelete: results.filter((entry) => entry.status === "would-delete")
- .length,
- deleted: results.filter((entry) => entry.status === "deleted").length,
- updated: results.filter((entry) => entry.status === "updated").length,
- errors: results.filter((entry) => entry.status === "error").length,
- };
+ return {
+ same: results.filter((entry) => entry.status === "same").length,
+ changed: results.filter((entry) => entry.status === "changed").length,
+ missing: results.filter((entry) => entry.status === "missing").length,
+ wouldCreate: results.filter((entry) => entry.status === "would-create")
+ .length,
+ created: results.filter((entry) => entry.status === "created").length,
+ wouldDelete: results.filter((entry) => entry.status === "would-delete")
+ .length,
+ deleted: results.filter((entry) => entry.status === "deleted").length,
+ updated: results.filter((entry) => entry.status === "updated").length,
+ errors: results.filter((entry) => entry.status === "error").length,
+ };
}
/**
@@ -660,17 +660,17 @@
* @param summary Summary counts.
*/
function printSummary(summary: Summary): void {
- console.log("");
- console.log("Summary");
- console.log(` same: ${summary.same}`);
- console.log(` changed: ${summary.changed}`);
- console.log(` updated: ${summary.updated}`);
- console.log(` missing: ${summary.missing}`);
- console.log(` would-create: ${summary.wouldCreate}`);
- console.log(` created: ${summary.created}`);
- console.log(` would-delete: ${summary.wouldDelete}`);
- console.log(` deleted: ${summary.deleted}`);
- console.log(` errors: ${summary.errors}`);
+ console.log("");
+ console.log("Summary");
+ console.log(` same: ${summary.same}`);
+ console.log(` changed: ${summary.changed}`);
+ console.log(` updated: ${summary.updated}`);
+ console.log(` missing: ${summary.missing}`);
+ console.log(` would-create: ${summary.wouldCreate}`);
+ console.log(` created: ${summary.created}`);
+ console.log(` would-delete: ${summary.wouldDelete}`);
+ console.log(` deleted: ${summary.deleted}`);
+ console.log(` errors: ${summary.errors}`);
}
/**
@@ -681,20 +681,20 @@
* @param active Number of currently active tasks.
*/
function renderProgress(
- processed: number,
- total: number,
- active: number,
+ processed: number,
+ total: number,
+ active: number,
): void {
- process.stdout.write(
- `\rProcessing ${processed}/${total} (active: ${active})`,
- );
+ process.stdout.write(
+ `\rProcessing ${processed}/${total} (active: ${active})`,
+ );
}
/**
* Clear the progress line from the terminal.
*/
function clearProgressLine(): void {
- process.stdout.write("\r\x1b[K");
+ process.stdout.write("\r\x1b[K");
}
/**
@@ -704,271 +704,271 @@
* @returns Results in task order.
*/
async function runTasksWithConcurrency<TInput, TResult>(params: {
- items: TInput[];
- concurrency: number;
- worker: (item: TInput) => Promise<TResult>;
- onResult?: (
- result: TResult,
- processed: number,
- total: number,
- active: number,
- ) => void;
+ items: TInput[];
+ concurrency: number;
+ worker: (item: TInput) => Promise<TResult>;
+ onResult?: (
+ result: TResult,
+ processed: number,
+ total: number,
+ active: number,
+ ) => void;
}): Promise<TResult[]> {
- const { items, concurrency, worker, onResult } = params;
+ const { items, concurrency, worker, onResult } = params;
- const results = new Array<TResult>(items.length);
- let nextIndex = 0;
- let processed = 0;
- let active = 0;
+ const results = new Array<TResult>(items.length);
+ let nextIndex = 0;
+ let processed = 0;
+ let active = 0;
- async function runWorker(): Promise<void> {
- while (true) {
- const currentIndex = nextIndex;
- if (currentIndex >= items.length) {
- return;
- }
+ async function runWorker(): Promise<void> {
+ while (true) {
+ const currentIndex = nextIndex;
+ if (currentIndex >= items.length) {
+ return;
+ }
- nextIndex += 1;
- active += 1;
+ nextIndex += 1;
+ active += 1;
- try {
- // Index is bounds-checked above; TInput itself may include undefined.
- const result = await worker(items[currentIndex] as TInput);
- results[currentIndex] = result;
- } finally {
- active -= 1;
- processed += 1;
+ try {
+ // Index is bounds-checked above; TInput itself may include undefined.
+ const result = await worker(items[currentIndex] as TInput);
+ results[currentIndex] = result;
+ } finally {
+ active -= 1;
+ processed += 1;
- const result = results[currentIndex];
- if (result !== undefined && onResult) {
- onResult(result, processed, items.length, active);
- }
- }
- }
- }
+ const result = results[currentIndex];
+ if (result !== undefined && onResult) {
+ onResult(result, processed, items.length, active);
+ }
+ }
+ }
+ }
- const workerCount = Math.min(concurrency, items.length);
- await Promise.all(
- Array.from({ length: workerCount }, async () => {
- await runWorker();
- }),
- );
+ const workerCount = Math.min(concurrency, items.length);
+ await Promise.all(
+ Array.from({ length: workerCount }, async () => {
+ await runWorker();
+ }),
+ );
- return results;
+ return results;
}
/**
* Main program entry point.
*/
async function main(): Promise<void> {
- const options = parseArgs(process.argv.slice(2));
+ const options = parseArgs(process.argv.slice(2));
- if (options.help) {
- printHelp();
- process.exit(EXIT_SUCCESS);
- }
+ if (options.help) {
+ printHelp();
+ process.exit(EXIT_SUCCESS);
+ }
- const targetDirectory = path.resolve(options.dir);
+ const targetDirectory = path.resolve(options.dir);
- const stats = await fs.stat(targetDirectory).catch(() => null);
- if (!stats || !stats.isDirectory()) {
- throw new Error(
- `Directory does not exist or is not a directory: ${targetDirectory}`,
- );
- }
+ const stats = await fs.stat(targetDirectory).catch(() => null);
+ if (!stats || !stats.isDirectory()) {
+ throw new Error(
+ `Directory does not exist or is not a directory: ${targetDirectory}`,
+ );
+ }
- const localFiles = await getLocalSvgFiles(targetDirectory);
+ const localFiles = await getLocalSvgFiles(targetDirectory);
- let upstreamFiles: string[] = [];
- if (options.all) {
- upstreamFiles = await getUpstreamSvgFiles(options.branch);
- }
+ let upstreamFiles: string[] = [];
+ if (options.all) {
+ upstreamFiles = await getUpstreamSvgFiles(options.branch);
+ }
- const emptySummary: Summary = {
- same: 0,
- changed: 0,
- missing: 0,
- wouldCreate: 0,
- created: 0,
- wouldDelete: 0,
- deleted: 0,
- updated: 0,
- errors: 0,
- };
+ const emptySummary: Summary = {
+ same: 0,
+ changed: 0,
+ missing: 0,
+ wouldCreate: 0,
+ created: 0,
+ wouldDelete: 0,
+ deleted: 0,
+ updated: 0,
+ errors: 0,
+ };
- const tasks: ProcessingTask[] = [];
+ const tasks: ProcessingTask[] = [];
- if (options.all) {
- const upstreamSet = new Set(upstreamFiles);
+ if (options.all) {
+ const upstreamSet = new Set(upstreamFiles);
- for (const fileName of upstreamFiles) {
- tasks.push({
- kind: "upstream",
- fileName,
- });
- }
+ for (const fileName of upstreamFiles) {
+ tasks.push({
+ kind: "upstream",
+ fileName,
+ });
+ }
- for (const fileName of localFiles) {
- if (!upstreamSet.has(fileName)) {
- tasks.push({
- kind: "local-only",
- fileName,
- });
- }
- }
- } else {
- if (localFiles.length === 0) {
- if (options.json) {
- const emptyOutput: JsonOutput = {
- options: {
- dir: targetDirectory,
- branch: options.branch,
- apply: options.apply,
- deleteMissing: options.deleteMissing,
- onlyChanged: options.onlyChanged,
- json: options.json,
- verbose: options.verbose,
- all: options.all,
- concurrency: options.concurrency,
- },
- results: [],
- summary: emptySummary,
- };
- console.log(JSON.stringify(emptyOutput, null, 2));
- } else {
- console.log(`No .svg files found in ${targetDirectory}`);
- }
+ for (const fileName of localFiles) {
+ if (!upstreamSet.has(fileName)) {
+ tasks.push({
+ kind: "local-only",
+ fileName,
+ });
+ }
+ }
+ } else {
+ if (localFiles.length === 0) {
+ if (options.json) {
+ const emptyOutput: JsonOutput = {
+ options: {
+ dir: targetDirectory,
+ branch: options.branch,
+ apply: options.apply,
+ deleteMissing: options.deleteMissing,
+ onlyChanged: options.onlyChanged,
+ json: options.json,
+ verbose: options.verbose,
+ all: options.all,
+ concurrency: options.concurrency,
+ },
+ results: [],
+ summary: emptySummary,
+ };
+ console.log(JSON.stringify(emptyOutput, null, 2));
+ } else {
+ console.log(`No .svg files found in ${targetDirectory}`);
+ }
- process.exit(EXIT_SUCCESS);
- }
+ process.exit(EXIT_SUCCESS);
+ }
- for (const fileName of localFiles) {
- tasks.push({
- kind: "upstream",
- fileName,
- });
- }
- }
+ for (const fileName of localFiles) {
+ tasks.push({
+ kind: "upstream",
+ fileName,
+ });
+ }
+ }
- if (!options.json) {
- if (options.all) {
- console.log(
- `Syncing against all upstream SVG file(s) from simple-icons/icons/ into ${targetDirectory}`,
- );
- console.log(`Found ${upstreamFiles.length} upstream SVG file(s).`);
- console.log(`Found ${localFiles.length} local SVG file(s).`);
- } else {
- console.log(
- `Checking ${localFiles.length} local SVG file(s) in ${targetDirectory}`,
- );
- }
+ if (!options.json) {
+ if (options.all) {
+ console.log(
+ `Syncing against all upstream SVG file(s) from simple-icons/icons/ into ${targetDirectory}`,
+ );
+ console.log(`Found ${upstreamFiles.length} upstream SVG file(s).`);
+ console.log(`Found ${localFiles.length} local SVG file(s).`);
+ } else {
+ console.log(
+ `Checking ${localFiles.length} local SVG file(s) in ${targetDirectory}`,
+ );
+ }
- console.log(`Using simple-icons branch: ${options.branch}`);
- console.log(`Concurrency: ${options.concurrency}`);
- console.log(
- options.apply
- ? "Apply mode enabled. Changed files will be written."
- : "Dry run mode enabled. No files will be written.",
- );
+ console.log(`Using simple-icons branch: ${options.branch}`);
+ console.log(`Concurrency: ${options.concurrency}`);
+ console.log(
+ options.apply
+ ? "Apply mode enabled. Changed files will be written."
+ : "Dry run mode enabled. No files will be written.",
+ );
- if (options.deleteMissing) {
- console.log(
- options.apply
- ? "Delete mode enabled. Local files missing upstream will be deleted."
- : "Delete mode enabled. Local files missing upstream will be reported as would-delete.",
- );
- }
+ if (options.deleteMissing) {
+ console.log(
+ options.apply
+ ? "Delete mode enabled. Local files missing upstream will be deleted."
+ : "Delete mode enabled. Local files missing upstream will be reported as would-delete.",
+ );
+ }
- if (options.onlyChanged) {
- console.log("Only changed results will be shown.");
- }
+ if (options.onlyChanged) {
+ console.log("Only changed results will be shown.");
+ }
- console.log("");
- }
+ console.log("");
+ }
- const results = await runTasksWithConcurrency<ProcessingTask, FileResult>({
- items: tasks,
- concurrency: options.concurrency,
- worker: async (task): Promise<FileResult> => {
- if (task.kind === "upstream") {
- const result = await processUpstreamFile(
- targetDirectory,
- task.fileName,
- options.branch,
- options.apply,
- );
+ const results = await runTasksWithConcurrency<ProcessingTask, FileResult>({
+ items: tasks,
+ concurrency: options.concurrency,
+ worker: async (task): Promise<FileResult> => {
+ if (task.kind === "upstream") {
+ const result = await processUpstreamFile(
+ targetDirectory,
+ task.fileName,
+ options.branch,
+ options.apply,
+ );
- if (result.status === "missing" && !options.all) {
- return await processLocalOnlyFile(
- targetDirectory,
- task.fileName,
- options.branch,
- options.apply,
- options.deleteMissing,
- );
- }
+ if (result.status === "missing" && !options.all) {
+ return await processLocalOnlyFile(
+ targetDirectory,
+ task.fileName,
+ options.branch,
+ options.apply,
+ options.deleteMissing,
+ );
+ }
- return result;
- }
+ return result;
+ }
- return await processLocalOnlyFile(
- targetDirectory,
- task.fileName,
- options.branch,
- options.apply,
- options.deleteMissing,
- );
- },
- onResult: (result, processed, total, active): void => {
- if (!options.json) {
- renderProgress(processed, total, active);
+ return await processLocalOnlyFile(
+ targetDirectory,
+ task.fileName,
+ options.branch,
+ options.apply,
+ options.deleteMissing,
+ );
+ },
+ onResult: (result, processed, total, active): void => {
+ if (!options.json) {
+ renderProgress(processed, total, active);
- if (shouldPrintResult(result.status, options.onlyChanged)) {
- clearProgressLine();
- printResult(result, options.verbose);
- renderProgress(processed, total, active);
- }
- }
- },
- });
+ if (shouldPrintResult(result.status, options.onlyChanged)) {
+ clearProgressLine();
+ printResult(result, options.verbose);
+ renderProgress(processed, total, active);
+ }
+ }
+ },
+ });
- if (!options.json) {
- clearProgressLine();
- }
+ if (!options.json) {
+ clearProgressLine();
+ }
- const summary = buildSummary(results);
+ const summary = buildSummary(results);
- if (options.json) {
- const output: JsonOutput = {
- options: {
- dir: targetDirectory,
- branch: options.branch,
- apply: options.apply,
- deleteMissing: options.deleteMissing,
- onlyChanged: options.onlyChanged,
- json: options.json,
- verbose: options.verbose,
- all: options.all,
- concurrency: options.concurrency,
- },
- results: options.onlyChanged
- ? results.filter((result) => shouldPrintResult(result.status, true))
- : results,
- summary,
- };
+ if (options.json) {
+ const output: JsonOutput = {
+ options: {
+ dir: targetDirectory,
+ branch: options.branch,
+ apply: options.apply,
+ deleteMissing: options.deleteMissing,
+ onlyChanged: options.onlyChanged,
+ json: options.json,
+ verbose: options.verbose,
+ all: options.all,
+ concurrency: options.concurrency,
+ },
+ results: options.onlyChanged
+ ? results.filter((result) => shouldPrintResult(result.status, true))
+ : results,
+ summary,
+ };
- console.log(JSON.stringify(output, null, 2));
- } else {
- printSummary(summary);
- }
+ console.log(JSON.stringify(output, null, 2));
+ } else {
+ printSummary(summary);
+ }
- const hasErrors = results.some((entry) => entry.status === "error");
- process.exit(hasErrors ? EXIT_FAILURE : EXIT_SUCCESS);
+ const hasErrors = results.some((entry) => entry.status === "error");
+ process.exit(hasErrors ? EXIT_FAILURE : EXIT_SUCCESS);
}
main().catch((error: unknown) => {
- const message =
- error instanceof Error ? error.message : "Unknown fatal error";
- console.error(`Fatal error: ${message}`);
- process.exit(EXIT_FAILURE);
+ const message =
+ error instanceof Error ? error.message : "Unknown fatal error";
+ console.error(`Fatal error: ${message}`);
+ process.exit(EXIT_FAILURE);
});
diff --git a/scripts/test-hugo-quickstart.ts b/scripts/test-hugo-quickstart.ts
index 1eddccd..396fd7c 100644
--- a/scripts/test-hugo-quickstart.ts
+++ b/scripts/test-hugo-quickstart.ts
@@ -3,15 +3,15 @@
import { spawn } from "node:child_process";
import { constants } from "node:fs";
import {
- access,
- copyFile,
- cp,
- mkdir,
- mkdtemp,
- readFile,
- rm,
- stat,
- writeFile,
+ access,
+ copyFile,
+ cp,
+ mkdir,
+ mkdtemp,
+ readFile,
+ rm,
+ stat,
+ writeFile,
} from "node:fs/promises";
import { tmpdir } from "node:os";
import { basename, dirname, join, resolve } from "node:path";
@@ -23,20 +23,20 @@
const REPO_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
interface CommandResult {
- code: number | null;
- signal: NodeJS.Signals | null;
- stdout: string;
- stderr: string;
- combined: string;
- durationMs: number;
+ code: number | null;
+ signal: NodeJS.Signals | null;
+ stdout: string;
+ stderr: string;
+ combined: string;
+ durationMs: number;
}
interface StepDefinition {
- name: string;
- command: string;
- args: string[];
- cwd: string;
- expectedFiles?: string[];
+ name: string;
+ command: string;
+ args: string[];
+ cwd: string;
+ expectedFiles?: string[];
}
/**
@@ -52,49 +52,49 @@
type ThemeSource = "local" | "submodule";
interface RoutineOptions {
- projectName: string;
- themeSource: ThemeSource;
- themePath: string;
- themeRepo: string;
- themeDir: string;
- themeName: string;
- configFile: string;
- keepOnSuccess: boolean;
- keepOnFailure: boolean;
- verbose: boolean;
+ projectName: string;
+ themeSource: ThemeSource;
+ themePath: string;
+ themeRepo: string;
+ themeDir: string;
+ themeName: string;
+ configFile: string;
+ keepOnSuccess: boolean;
+ keepOnFailure: boolean;
+ verbose: boolean;
}
interface StepReport {
- step: string;
- commandLine: string;
- cwd: string;
- result: CommandResult;
+ step: string;
+ commandLine: string;
+ cwd: string;
+ result: CommandResult;
}
interface HtmlAssertion {
- description: string;
- test: (html: string) => boolean;
+ description: string;
+ test: (html: string) => boolean;
}
const DEFAULT_OPTIONS: RoutineOptions = {
- projectName: "quickstart",
- themeSource: "local",
- themePath: REPO_ROOT,
- themeRepo: "https://github.com/gohugo-ananke/ananke.git",
- themeDir: "themes/ananke",
- themeName: "ananke",
- configFile: "hugo.toml",
- keepOnSuccess: false,
- keepOnFailure: true,
- verbose: true,
+ projectName: "quickstart",
+ themeSource: "local",
+ themePath: REPO_ROOT,
+ themeRepo: "https://github.com/gohugo-ananke/ananke.git",
+ themeDir: "themes/ananke",
+ themeName: "ananke",
+ configFile: "hugo.toml",
+ keepOnSuccess: false,
+ keepOnFailure: true,
+ verbose: true,
};
/**
* Print CLI help.
*/
function printHelp(): void {
- console.log(
- `
+ console.log(
+ `
Usage:
node scripts/test-hugo-quickstart.ts [options]
@@ -113,7 +113,7 @@
--quiet Reduce step logging
--help Show this help
`.trim(),
- );
+ );
}
/**
@@ -124,69 +124,69 @@
* @throws Error when an unknown argument is passed.
*/
function parseArgs(argv: string[]): RoutineOptions {
- const options: RoutineOptions = { ...DEFAULT_OPTIONS };
+ const options: RoutineOptions = { ...DEFAULT_OPTIONS };
- for (const arg of argv) {
- if (arg === "--help") {
- printHelp();
- process.exit(0);
- }
+ for (const arg of argv) {
+ if (arg === "--help") {
+ printHelp();
+ process.exit(0);
+ }
- if (arg === "--keep-on-success") {
- options.keepOnSuccess = true;
- continue;
- }
+ if (arg === "--keep-on-success") {
+ options.keepOnSuccess = true;
+ continue;
+ }
- if (arg === "--no-keep-on-failure") {
- options.keepOnFailure = false;
- continue;
- }
+ if (arg === "--no-keep-on-failure") {
+ options.keepOnFailure = false;
+ continue;
+ }
- if (arg === "--quiet") {
- options.verbose = false;
- continue;
- }
+ if (arg === "--quiet") {
+ options.verbose = false;
+ continue;
+ }
- if (arg === "--use-submodule") {
- options.themeSource = "submodule";
- continue;
- }
+ if (arg === "--use-submodule") {
+ options.themeSource = "submodule";
+ continue;
+ }
- if (arg.startsWith("--theme-path=")) {
- options.themePath = resolve(arg.slice("--theme-path=".length));
- options.themeSource = "local";
- continue;
- }
+ if (arg.startsWith("--theme-path=")) {
+ options.themePath = resolve(arg.slice("--theme-path=".length));
+ options.themeSource = "local";
+ continue;
+ }
- if (arg.startsWith("--project-name=")) {
- options.projectName = arg.slice("--project-name=".length);
- continue;
- }
+ if (arg.startsWith("--project-name=")) {
+ options.projectName = arg.slice("--project-name=".length);
+ continue;
+ }
- if (arg.startsWith("--theme-repo=")) {
- options.themeRepo = arg.slice("--theme-repo=".length);
- continue;
- }
+ if (arg.startsWith("--theme-repo=")) {
+ options.themeRepo = arg.slice("--theme-repo=".length);
+ continue;
+ }
- if (arg.startsWith("--theme-dir=")) {
- options.themeDir = arg.slice("--theme-dir=".length);
- continue;
- }
+ if (arg.startsWith("--theme-dir=")) {
+ options.themeDir = arg.slice("--theme-dir=".length);
+ continue;
+ }
- if (arg.startsWith("--theme-name=")) {
- options.themeName = arg.slice("--theme-name=".length);
- continue;
- }
+ if (arg.startsWith("--theme-name=")) {
+ options.themeName = arg.slice("--theme-name=".length);
+ continue;
+ }
- if (arg.startsWith("--config-file=")) {
- options.configFile = arg.slice("--config-file=".length);
- continue;
- }
+ if (arg.startsWith("--config-file=")) {
+ options.configFile = arg.slice("--config-file=".length);
+ continue;
+ }
- throw new Error(`Unknown argument: ${arg}`);
- }
+ throw new Error(`Unknown argument: ${arg}`);
+ }
- return options;
+ return options;
}
/**
@@ -197,9 +197,9 @@
* @returns Full command line.
*/
function formatCommand(command: string, args: string[]): string {
- return [command, ...args]
- .map((part) => (/\s/.test(part) ? JSON.stringify(part) : part))
- .join(" ");
+ return [command, ...args]
+ .map((part) => (/\s/.test(part) ? JSON.stringify(part) : part))
+ .join(" ");
}
/**
@@ -211,50 +211,50 @@
* @returns Command execution result.
*/
async function runCommand(
- command: string,
- args: string[],
- cwd: string,
+ command: string,
+ args: string[],
+ cwd: string,
): Promise<CommandResult> {
- const started = Date.now();
+ const started = Date.now();
- return new Promise<CommandResult>((resolve, reject) => {
- const child = spawn(command, args, {
- cwd,
- env: process.env,
- stdio: ["ignore", "pipe", "pipe"],
- });
+ return new Promise<CommandResult>((resolve, reject) => {
+ const child = spawn(command, args, {
+ cwd,
+ env: process.env,
+ stdio: ["ignore", "pipe", "pipe"],
+ });
- let stdout = "";
- let stderr = "";
+ let stdout = "";
+ let stderr = "";
- child.stdout.on("data", (chunk: Buffer | string) => {
- stdout += chunk.toString();
- });
+ child.stdout.on("data", (chunk: Buffer | string) => {
+ stdout += chunk.toString();
+ });
- child.stderr.on("data", (chunk: Buffer | string) => {
- stderr += chunk.toString();
- });
+ child.stderr.on("data", (chunk: Buffer | string) => {
+ stderr += chunk.toString();
+ });
- child.on("error", (error: Error) => {
- reject(error);
- });
+ child.on("error", (error: Error) => {
+ reject(error);
+ });
- child.on("close", (code, signal) => {
- const durationMs = Date.now() - started;
- const combined = [stdout, stderr]
- .filter(Boolean)
- .join(stdout && stderr ? "\n" : "");
+ child.on("close", (code, signal) => {
+ const durationMs = Date.now() - started;
+ const combined = [stdout, stderr]
+ .filter(Boolean)
+ .join(stdout && stderr ? "\n" : "");
- resolve({
- code,
- signal,
- stdout,
- stderr,
- combined,
- durationMs,
- });
- });
- });
+ resolve({
+ code,
+ signal,
+ stdout,
+ stderr,
+ combined,
+ durationMs,
+ });
+ });
+ });
}
/**
@@ -263,7 +263,7 @@
* @param filePath Absolute path to check.
*/
async function assertFileExists(filePath: string): Promise<void> {
- await access(filePath, constants.F_OK);
+ await access(filePath, constants.F_OK);
}
/**
@@ -272,17 +272,17 @@
* @param filePath Absolute path to check.
*/
async function assertFileDoesNotExist(filePath: string): Promise<void> {
- try {
- await access(filePath, constants.F_OK);
- throw new Error(`Unexpected path exists: ${filePath}`);
- } catch (error: unknown) {
- if (
- error instanceof Error &&
- error.message.startsWith("Unexpected path exists:")
- ) {
- throw error;
- }
- }
+ try {
+ await access(filePath, constants.F_OK);
+ throw new Error(`Unexpected path exists: ${filePath}`);
+ } catch (error: unknown) {
+ if (
+ error instanceof Error &&
+ error.message.startsWith("Unexpected path exists:")
+ ) {
+ throw error;
+ }
+ }
}
/**
@@ -292,7 +292,7 @@
* @returns File contents.
*/
async function readTextFile(filePath: string): Promise<string> {
- return readFile(filePath, "utf8");
+ return readFile(filePath, "utf8");
}
/**
@@ -302,7 +302,7 @@
* @param content File contents.
*/
async function writeTextFile(filePath: string, content: string): Promise<void> {
- await writeFile(filePath, content, "utf8");
+ await writeFile(filePath, content, "utf8");
}
/**
@@ -311,8 +311,8 @@
* @param projectRoot Absolute path to the temporary quickstart project.
*/
async function removePublicDir(projectRoot: string): Promise<void> {
- const publicPath = join(projectRoot, "public");
- await rm(publicPath, { recursive: true, force: true });
+ const publicPath = join(projectRoot, "public");
+ await rm(publicPath, { recursive: true, force: true });
}
/**
@@ -323,60 +323,60 @@
* @throws Error when the command fails or an expected file is missing.
*/
async function executeStep(step: StepDefinition): Promise<StepReport> {
- const result = await runCommand(step.command, step.args, step.cwd);
- const commandLine = formatCommand(step.command, step.args);
+ const result = await runCommand(step.command, step.args, step.cwd);
+ const commandLine = formatCommand(step.command, step.args);
- if (result.code !== 0) {
- const details = [
- `Step failed: ${step.name}`,
- `Command: ${commandLine}`,
- `Working directory: ${step.cwd}`,
- `Exit code: ${String(result.code)}`,
- result.signal ? `Signal: ${result.signal}` : "",
- result.stdout ? `STDOUT:\n${result.stdout}` : "",
- result.stderr ? `STDERR:\n${result.stderr}` : "",
- ]
- .filter(Boolean)
- .join("\n\n");
+ if (result.code !== 0) {
+ const details = [
+ `Step failed: ${step.name}`,
+ `Command: ${commandLine}`,
+ `Working directory: ${step.cwd}`,
+ `Exit code: ${String(result.code)}`,
+ result.signal ? `Signal: ${result.signal}` : "",
+ result.stdout ? `STDOUT:\n${result.stdout}` : "",
+ result.stderr ? `STDERR:\n${result.stderr}` : "",
+ ]
+ .filter(Boolean)
+ .join("\n\n");
- throw new Error(details);
- }
+ throw new Error(details);
+ }
- if (step.expectedFiles) {
- for (const relativePath of step.expectedFiles) {
- const absolutePath = join(step.cwd, relativePath);
+ if (step.expectedFiles) {
+ for (const relativePath of step.expectedFiles) {
+ const absolutePath = join(step.cwd, relativePath);
- try {
- await assertFileExists(absolutePath);
- } catch (error: unknown) {
- const message =
- error instanceof Error
- ? error.message
- : "Unknown file assertion error";
+ try {
+ await assertFileExists(absolutePath);
+ } catch (error: unknown) {
+ const message =
+ error instanceof Error
+ ? error.message
+ : "Unknown file assertion error";
- throw new Error(
- [
- `Step failed: ${step.name}`,
- `Command: ${commandLine}`,
- `Working directory: ${step.cwd}`,
- `Expected file missing: ${absolutePath}`,
- `Details: ${message}`,
- result.stdout ? `STDOUT:\n${result.stdout}` : "",
- result.stderr ? `STDERR:\n${result.stderr}` : "",
- ]
- .filter(Boolean)
- .join("\n\n"),
- );
- }
- }
- }
+ throw new Error(
+ [
+ `Step failed: ${step.name}`,
+ `Command: ${commandLine}`,
+ `Working directory: ${step.cwd}`,
+ `Expected file missing: ${absolutePath}`,
+ `Details: ${message}`,
+ result.stdout ? `STDOUT:\n${result.stdout}` : "",
+ result.stderr ? `STDERR:\n${result.stderr}` : "",
+ ]
+ .filter(Boolean)
+ .join("\n\n"),
+ );
+ }
+ }
+ }
- return {
- step: step.name,
- commandLine,
- cwd: step.cwd,
- result,
- };
+ return {
+ step: step.name,
+ commandLine,
+ cwd: step.cwd,
+ result,
+ };
}
/**
@@ -386,19 +386,19 @@
* @returns True when the command is a build command.
*/
function isHugoBuildCommand(step: StepDefinition): boolean {
- if (step.command !== "hugo") {
- return false;
- }
+ if (step.command !== "hugo") {
+ return false;
+ }
- if (step.args.length === 0) {
- return true;
- }
+ if (step.args.length === 0) {
+ return true;
+ }
- if (step.args.includes("--buildDrafts")) {
- return true;
- }
+ if (step.args.includes("--buildDrafts")) {
+ return true;
+ }
- return false;
+ return false;
}
/**
@@ -409,11 +409,11 @@
* @returns Step report.
*/
async function executeHugoBuildStep(
- step: StepDefinition,
- projectRoot: string,
+ step: StepDefinition,
+ projectRoot: string,
): Promise<StepReport> {
- await removePublicDir(projectRoot);
- return executeStep(step);
+ await removePublicDir(projectRoot);
+ return executeStep(step);
}
/**
@@ -423,7 +423,7 @@
* @returns Escaped string.
*/
function escapeRegExp(value: string): string {
- return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
/**
@@ -439,26 +439,26 @@
* @throws Error when the config does not contain the expected theme line.
*/
async function assertThemeConfigured(
- configPath: string,
- themeName: string,
+ configPath: string,
+ themeName: string,
): Promise<void> {
- const config = await readTextFile(configPath);
- const themePattern = new RegExp(
- String.raw`^\s*theme\s*=\s*['"]${escapeRegExp(themeName)}['"]\s*$`,
- "m",
- );
+ const config = await readTextFile(configPath);
+ const themePattern = new RegExp(
+ String.raw`^\s*theme\s*=\s*['"]${escapeRegExp(themeName)}['"]\s*$`,
+ "m",
+ );
- if (!themePattern.test(config)) {
- throw new Error(
- [
- "Strict assertion failed: theme configuration missing or incorrect.",
- `Config file: ${configPath}`,
- `Expected to find a line like: theme = '${themeName}'`,
- "Actual file contents:",
- config,
- ].join("\n\n"),
- );
- }
+ if (!themePattern.test(config)) {
+ throw new Error(
+ [
+ "Strict assertion failed: theme configuration missing or incorrect.",
+ `Config file: ${configPath}`,
+ `Expected to find a line like: theme = '${themeName}'`,
+ "Actual file contents:",
+ config,
+ ].join("\n\n"),
+ );
+ }
}
/**
@@ -467,38 +467,38 @@
* @returns List of homepage assertions.
*/
function getHomepageAssertions(): HtmlAssertion[] {
- return [
- {
- description: "homepage contains an HTML document root",
- test: (html: string): boolean => /<html\b/i.test(html),
- },
- {
- description: "homepage contains a document title",
- test: (html: string): boolean => /<title>[\s\S]*?<\/title>/i.test(html),
- },
- {
- description: "homepage contains a body element",
- test: (html: string): boolean => /<body\b/i.test(html),
- },
- {
- description: "homepage contains at least one stylesheet reference",
- test: (html: string): boolean =>
- /<link\b[^>]*rel=["']stylesheet["'][^>]*>/i.test(html),
- },
- {
- description: "homepage contains at least one navigation-related landmark",
- test: (html: string): boolean => /<(nav|header)\b/i.test(html),
- },
- {
- description: "homepage contains theme-generated CSS class markers",
- test: (html: string): boolean =>
- /\b(ma[0-9]|pa[0-9]|bg-black|near-white|sans-serif)\b/i.test(html),
- },
- {
- description: "homepage contains a main content area",
- test: (html: string): boolean => /<(main|article|section)\b/i.test(html),
- },
- ];
+ return [
+ {
+ description: "homepage contains an HTML document root",
+ test: (html: string): boolean => /<html\b/i.test(html),
+ },
+ {
+ description: "homepage contains a document title",
+ test: (html: string): boolean => /<title>[\s\S]*?<\/title>/i.test(html),
+ },
+ {
+ description: "homepage contains a body element",
+ test: (html: string): boolean => /<body\b/i.test(html),
+ },
+ {
+ description: "homepage contains at least one stylesheet reference",
+ test: (html: string): boolean =>
+ /<link\b[^>]*rel=["']stylesheet["'][^>]*>/i.test(html),
+ },
+ {
+ description: "homepage contains at least one navigation-related landmark",
+ test: (html: string): boolean => /<(nav|header)\b/i.test(html),
+ },
+ {
+ description: "homepage contains theme-generated CSS class markers",
+ test: (html: string): boolean =>
+ /\b(ma[0-9]|pa[0-9]|bg-black|near-white|sans-serif)\b/i.test(html),
+ },
+ {
+ description: "homepage contains a main content area",
+ test: (html: string): boolean => /<(main|article|section)\b/i.test(html),
+ },
+ ];
}
/**
@@ -508,34 +508,34 @@
* @throws Error when one or more assertions fail.
*/
async function assertHomepageLooksValid(homepagePath: string): Promise<void> {
- const html = await readTextFile(homepagePath);
- const failures: string[] = [];
+ const html = await readTextFile(homepagePath);
+ const failures: string[] = [];
- if (html.trim().length === 0) {
- throw new Error(
- [
- "Strict assertion failed: generated homepage is empty.",
- `Homepage file: ${homepagePath}`,
- ].join("\n\n"),
- );
- }
+ if (html.trim().length === 0) {
+ throw new Error(
+ [
+ "Strict assertion failed: generated homepage is empty.",
+ `Homepage file: ${homepagePath}`,
+ ].join("\n\n"),
+ );
+ }
- for (const assertion of getHomepageAssertions()) {
- if (!assertion.test(html)) {
- failures.push(`- ${assertion.description}`);
- }
- }
+ for (const assertion of getHomepageAssertions()) {
+ if (!assertion.test(html)) {
+ failures.push(`- ${assertion.description}`);
+ }
+ }
- if (failures.length > 0) {
- throw new Error(
- [
- "Strict assertion failed: generated homepage did not match expected render checks.",
- `Homepage file: ${homepagePath}`,
- "Failed assertions:",
- ...failures,
- ].join("\n"),
- );
- }
+ if (failures.length > 0) {
+ throw new Error(
+ [
+ "Strict assertion failed: generated homepage did not match expected render checks.",
+ `Homepage file: ${homepagePath}`,
+ "Failed assertions:",
+ ...failures,
+ ].join("\n"),
+ );
+ }
}
/**
@@ -546,19 +546,19 @@
* @throws Error when the date line is missing.
*/
function extractGeneratedDateLine(content: string): string {
- const match = content.match(/^\s*date\s*=\s*.+$/m);
+ const match = content.match(/^\s*date\s*=\s*.+$/m);
- if (!match) {
- throw new Error(
- [
- "Strict assertion failed: could not find auto-generated date line in content file.",
- "Actual file contents:",
- content,
- ].join("\n\n"),
- );
- }
+ if (!match) {
+ throw new Error(
+ [
+ "Strict assertion failed: could not find auto-generated date line in content file.",
+ "Actual file contents:",
+ content,
+ ].join("\n\n"),
+ );
+ }
- return match[0];
+ return match[0];
}
/**
@@ -568,24 +568,24 @@
* @param contentPath Absolute path to the content file.
*/
async function replaceGeneratedContent(contentPath: string): Promise<void> {
- const original = await readTextFile(contentPath);
- const dateLine = extractGeneratedDateLine(original);
+ const original = await readTextFile(contentPath);
+ const dateLine = extractGeneratedDateLine(original);
- const updated = [
- "+++",
- "title = 'My First Post'",
- dateLine,
- "draft = true",
- "+++",
- "## Introduction",
- "",
- "This is **bold** text, and this is *emphasized* text.",
- "",
- "Visit the [Hugo](https://gohugo.io) website!",
- "",
- ].join("\n");
+ const updated = [
+ "+++",
+ "title = 'My First Post'",
+ dateLine,
+ "draft = true",
+ "+++",
+ "## Introduction",
+ "",
+ "This is **bold** text, and this is *emphasized* text.",
+ "",
+ "Visit the [Hugo](https://gohugo.io) website!",
+ "",
+ ].join("\n");
- await writeTextFile(contentPath, updated);
+ await writeTextFile(contentPath, updated);
}
/**
@@ -595,18 +595,18 @@
* @param themeName Theme name to set.
*/
async function replaceHugoConfig(
- configPath: string,
- themeName: string,
+ configPath: string,
+ themeName: string,
): Promise<void> {
- const content = [
- "baseURL = 'https://example.com/'",
- "locale = 'en-gb'",
- "title = 'Ananke Test Quickstart'",
- `theme = '${themeName}'`,
- "",
- ].join("\n");
+ const content = [
+ "baseURL = 'https://example.com/'",
+ "locale = 'en-gb'",
+ "title = 'Ananke Test Quickstart'",
+ `theme = '${themeName}'`,
+ "",
+ ].join("\n");
- await writeTextFile(configPath, content);
+ await writeTextFile(configPath, content);
}
/**
@@ -615,41 +615,41 @@
* @param pageHtml HTML from `public/foo/index.html`.
*/
function assertDraftPageRendered(pageHtml: string): void {
- const failures: string[] = [];
+ const failures: string[] = [];
- if (!/<h2[^>]*>\s*Introduction\s*<\/h2>/i.test(pageHtml)) {
- failures.push("- heading 'Introduction' was not rendered as an h2 element");
- }
+ if (!/<h2[^>]*>\s*Introduction\s*<\/h2>/i.test(pageHtml)) {
+ failures.push("- heading 'Introduction' was not rendered as an h2 element");
+ }
- if (!/<strong>\s*bold\s*<\/strong>/i.test(pageHtml)) {
- failures.push("- bold Markdown was not rendered as a <strong> element");
- }
+ if (!/<strong>\s*bold\s*<\/strong>/i.test(pageHtml)) {
+ failures.push("- bold Markdown was not rendered as a <strong> element");
+ }
- if (!/<em>\s*emphasized\s*<\/em>/i.test(pageHtml)) {
- failures.push("- emphasized Markdown was not rendered as an <em> element");
- }
+ if (!/<em>\s*emphasized\s*<\/em>/i.test(pageHtml)) {
+ failures.push("- emphasized Markdown was not rendered as an <em> element");
+ }
- if (
- !/<a[^>]+href=["']https:\/\/gohugo\.io["'][^>]*>\s*Hugo\s*<\/a>/i.test(
- pageHtml,
- )
- ) {
- failures.push("- Markdown link was not rendered as an anchor element");
- }
+ if (
+ !/<a[^>]+href=["']https:\/\/gohugo\.io["'][^>]*>\s*Hugo\s*<\/a>/i.test(
+ pageHtml,
+ )
+ ) {
+ failures.push("- Markdown link was not rendered as an anchor element");
+ }
- if (!/My First Post/i.test(pageHtml)) {
- failures.push("- post title was not visible on the rendered page");
- }
+ if (!/My First Post/i.test(pageHtml)) {
+ failures.push("- post title was not visible on the rendered page");
+ }
- if (failures.length > 0) {
- throw new Error(
- [
- "Strict assertion failed: draft page content was not rendered as expected.",
- "Failed assertions:",
- ...failures,
- ].join("\n"),
- );
- }
+ if (failures.length > 0) {
+ throw new Error(
+ [
+ "Strict assertion failed: draft page content was not rendered as expected.",
+ "Failed assertions:",
+ ...failures,
+ ].join("\n"),
+ );
+ }
}
/**
@@ -660,29 +660,29 @@
* @param homepageHtml HTML from `public/index.html`.
*/
function assertUpdatedConfigInOutput(homepageHtml: string): void {
- const failures: string[] = [];
+ const failures: string[] = [];
- if (!/Ananke Test Quickstart/i.test(homepageHtml)) {
- failures.push(
- "- updated site title was not visible in the generated output",
- );
- }
+ if (!/Ananke Test Quickstart/i.test(homepageHtml)) {
+ failures.push(
+ "- updated site title was not visible in the generated output",
+ );
+ }
- if (!/<html[^>]+lang=["']en-gb["'][^>]*>/i.test(homepageHtml)) {
- failures.push(
- "- updated locale 'en-gb' was not present in the <html lang=\"en-gb\"> tag",
- );
- }
+ if (!/<html[^>]+lang=["']en-gb["'][^>]*>/i.test(homepageHtml)) {
+ failures.push(
+ "- updated locale 'en-gb' was not present in the <html lang=\"en-gb\"> tag",
+ );
+ }
- if (failures.length > 0) {
- throw new Error(
- [
- "Strict assertion failed: updated config was not reflected in the generated output.",
- "Failed assertions:",
- ...failures,
- ].join("\n"),
- );
- }
+ if (failures.length > 0) {
+ throw new Error(
+ [
+ "Strict assertion failed: updated config was not reflected in the generated output.",
+ "Failed assertions:",
+ ...failures,
+ ].join("\n"),
+ );
+ }
}
/**
@@ -692,22 +692,22 @@
* @param homepagePath Absolute path to `public/index.html`.
*/
async function assertDraftHiddenInProduction(
- projectRoot: string,
- homepagePath: string,
+ projectRoot: string,
+ homepagePath: string,
): Promise<void> {
- const draftOutputPath = join(projectRoot, "public", "foo", "index.html");
- await assertFileDoesNotExist(draftOutputPath);
+ const draftOutputPath = join(projectRoot, "public", "foo", "index.html");
+ await assertFileDoesNotExist(draftOutputPath);
- const homepageHtml = await readTextFile(homepagePath);
+ const homepageHtml = await readTextFile(homepagePath);
- if (/My First Post/i.test(homepageHtml)) {
- throw new Error(
- [
- "Strict assertion failed: draft post title was visible in the production homepage output.",
- `Homepage file: ${homepagePath}`,
- ].join("\n\n"),
- );
- }
+ if (/My First Post/i.test(homepageHtml)) {
+ throw new Error(
+ [
+ "Strict assertion failed: draft post title was visible in the production homepage output.",
+ `Homepage file: ${homepagePath}`,
+ ].join("\n\n"),
+ );
+ }
}
/**
@@ -733,31 +733,31 @@
* @param contentDir Absolute path to the project `content` directory.
*/
async function writeHeaderSectionClassFixtures(
- contentDir: string,
+ contentDir: string,
): Promise<void> {
- const overridePage = [
- "+++",
- "title = 'Custom Header Height'",
- "featured_image = '/images/custom-hero.jpg'",
- `header_section_class = '${HEADER_SECTION_CLASS_MARKER} ph3 ph4-ns'`,
- "+++",
- "",
- "Body.",
- "",
- ].join("\n");
+ const overridePage = [
+ "+++",
+ "title = 'Custom Header Height'",
+ "featured_image = '/images/custom-hero.jpg'",
+ `header_section_class = '${HEADER_SECTION_CLASS_MARKER} ph3 ph4-ns'`,
+ "+++",
+ "",
+ "Body.",
+ "",
+ ].join("\n");
- const defaultPage = [
- "+++",
- "title = 'Default Header Height'",
- "featured_image = '/images/default-hero.jpg'",
- "+++",
- "",
- "Body.",
- "",
- ].join("\n");
+ const defaultPage = [
+ "+++",
+ "title = 'Default Header Height'",
+ "featured_image = '/images/default-hero.jpg'",
+ "+++",
+ "",
+ "Body.",
+ "",
+ ].join("\n");
- await writeTextFile(join(contentDir, "custom-header.md"), overridePage);
- await writeTextFile(join(contentDir, "default-header.md"), defaultPage);
+ await writeTextFile(join(contentDir, "custom-header.md"), overridePage);
+ await writeTextFile(join(contentDir, "default-header.md"), defaultPage);
}
/**
@@ -768,44 +768,44 @@
* @throws Error when the override is dropped, leaks, or the default changes.
*/
async function assertHeaderSectionClassConfigurable(
- projectRoot: string,
+ projectRoot: string,
): Promise<void> {
- const failures: string[] = [];
+ const failures: string[] = [];
- const overrideHtml = await readTextFile(
- join(projectRoot, "public", "custom-header", "index.html"),
- );
- const defaultHtml = await readTextFile(
- join(projectRoot, "public", "default-header", "index.html"),
- );
+ const overrideHtml = await readTextFile(
+ join(projectRoot, "public", "custom-header", "index.html"),
+ );
+ const defaultHtml = await readTextFile(
+ join(projectRoot, "public", "default-header", "index.html"),
+ );
- if (!overrideHtml.includes(HEADER_SECTION_CLASS_MARKER)) {
- failures.push(
- `- custom 'header_section_class' value '${HEADER_SECTION_CLASS_MARKER}' was not applied to the hero header`,
- );
- }
+ if (!overrideHtml.includes(HEADER_SECTION_CLASS_MARKER)) {
+ failures.push(
+ `- custom 'header_section_class' value '${HEADER_SECTION_CLASS_MARKER}' was not applied to the hero header`,
+ );
+ }
- if (defaultHtml.includes(HEADER_SECTION_CLASS_MARKER)) {
- failures.push(
- "- custom 'header_section_class' value leaked onto a page that did not set it",
- );
- }
+ if (defaultHtml.includes(HEADER_SECTION_CLASS_MARKER)) {
+ failures.push(
+ "- custom 'header_section_class' value leaked onto a page that did not set it",
+ );
+ }
- if (!defaultHtml.includes(DEFAULT_PAGE_HEADER_SECTION_CLASS)) {
- failures.push(
- `- default header section spacing '${DEFAULT_PAGE_HEADER_SECTION_CLASS}' was missing when 'header_section_class' was not set`,
- );
- }
+ if (!defaultHtml.includes(DEFAULT_PAGE_HEADER_SECTION_CLASS)) {
+ failures.push(
+ `- default header section spacing '${DEFAULT_PAGE_HEADER_SECTION_CLASS}' was missing when 'header_section_class' was not set`,
+ );
+ }
- if (failures.length > 0) {
- throw new Error(
- [
- "Strict assertion failed: configurable header section class did not behave as expected.",
- "Failed assertions:",
- ...failures,
- ].join("\n"),
- );
- }
+ if (failures.length > 0) {
+ throw new Error(
+ [
+ "Strict assertion failed: configurable header section class did not behave as expected.",
+ "Failed assertions:",
+ ...failures,
+ ].join("\n"),
+ );
+ }
}
/**
@@ -827,35 +827,35 @@
* @param contentDir Absolute path to the project `content` directory.
*/
async function writeListCardFixtures(contentDir: string): Promise<void> {
- const sectionDir = join(contentDir, "cards");
- await mkdir(sectionDir, { recursive: true });
+ const sectionDir = join(contentDir, "cards");
+ await mkdir(sectionDir, { recursive: true });
- const sectionIndex = ["+++", "title = 'Cards'", "+++", "", ""].join("\n");
+ const sectionIndex = ["+++", "title = 'Cards'", "+++", "", ""].join("\n");
- const withImage = [
- "+++",
- "title = 'Card With Image'",
- "date = 2024-01-15T00:00:00Z",
- "featured_image = '/images/card-hero.jpg'",
- "+++",
- "",
- "Card body.",
- "",
- ].join("\n");
+ const withImage = [
+ "+++",
+ "title = 'Card With Image'",
+ "date = 2024-01-15T00:00:00Z",
+ "featured_image = '/images/card-hero.jpg'",
+ "+++",
+ "",
+ "Card body.",
+ "",
+ ].join("\n");
- const withoutImage = [
- "+++",
- "title = 'Card Without Image'",
- "date = 2024-02-20T00:00:00Z",
- "+++",
- "",
- "Card body.",
- "",
- ].join("\n");
+ const withoutImage = [
+ "+++",
+ "title = 'Card Without Image'",
+ "date = 2024-02-20T00:00:00Z",
+ "+++",
+ "",
+ "Card body.",
+ "",
+ ].join("\n");
- await writeTextFile(join(sectionDir, "_index.md"), sectionIndex);
- await writeTextFile(join(sectionDir, "with-image.md"), withImage);
- await writeTextFile(join(sectionDir, "without-image.md"), withoutImage);
+ await writeTextFile(join(sectionDir, "_index.md"), sectionIndex);
+ await writeTextFile(join(sectionDir, "with-image.md"), withImage);
+ await writeTextFile(join(sectionDir, "without-image.md"), withoutImage);
}
/**
@@ -868,47 +868,47 @@
* @throws Error when the rendered cards do not match the expectations.
*/
function assertListCardSummaries(
- listHtml: string,
- label: string,
- expectations: { images: boolean; dates: boolean },
+ listHtml: string,
+ label: string,
+ expectations: { images: boolean; dates: boolean },
): void {
- const failures: string[] = [];
- const hasImage = listHtml.includes(LIST_CARD_IMAGE_MARKER);
- const hasDate = listHtml.includes(SUMMARY_CARD_DATE_MARKER);
+ const failures: string[] = [];
+ const hasImage = listHtml.includes(LIST_CARD_IMAGE_MARKER);
+ const hasDate = listHtml.includes(SUMMARY_CARD_DATE_MARKER);
- if (expectations.images && !hasImage) {
- failures.push(
- "- expected image summary cards but the list rendered no card image",
- );
- }
+ if (expectations.images && !hasImage) {
+ failures.push(
+ "- expected image summary cards but the list rendered no card image",
+ );
+ }
- if (!expectations.images && hasImage) {
- failures.push(
- "- image summary cards were rendered when 'ananke.pages.show_list_images' was not enabled",
- );
- }
+ if (!expectations.images && hasImage) {
+ failures.push(
+ "- image summary cards were rendered when 'ananke.pages.show_list_images' was not enabled",
+ );
+ }
- if (expectations.dates && !hasDate) {
- failures.push(
- "- expected summary card dates but none were rendered by default",
- );
- }
+ if (expectations.dates && !hasDate) {
+ failures.push(
+ "- expected summary card dates but none were rendered by default",
+ );
+ }
- if (!expectations.dates && hasDate) {
- failures.push(
- "- summary card dates were rendered when 'ananke.pages.show_date' was false",
- );
- }
+ if (!expectations.dates && hasDate) {
+ failures.push(
+ "- summary card dates were rendered when 'ananke.pages.show_date' was false",
+ );
+ }
- if (failures.length > 0) {
- throw new Error(
- [
- `Strict assertion failed: list card summaries (${label}) did not behave as expected.`,
- "Failed assertions:",
- ...failures,
- ].join("\n"),
- );
- }
+ if (failures.length > 0) {
+ throw new Error(
+ [
+ `Strict assertion failed: list card summaries (${label}) did not behave as expected.`,
+ "Failed assertions:",
+ ...failures,
+ ].join("\n"),
+ );
+ }
}
/**
@@ -918,13 +918,13 @@
* @returns True when `path` is inside a Git work tree.
*/
async function isGitWorkTree(path: string): Promise<boolean> {
- const result = await runCommand(
- "git",
- ["-C", path, "rev-parse", "--is-inside-work-tree"],
- path,
- );
+ const result = await runCommand(
+ "git",
+ ["-C", path, "rev-parse", "--is-inside-work-tree"],
+ path,
+ );
- return result.code === 0 && result.stdout.trim() === "true";
+ return result.code === 0 && result.stdout.trim() === "true";
}
/**
@@ -940,70 +940,70 @@
* @throws Error when the source contains no theme files.
*/
async function copyLocalTheme(
- themePath: string,
- destination: string,
+ themePath: string,
+ destination: string,
): Promise<void> {
- if (await isGitWorkTree(themePath)) {
- const listing = await runCommand(
- "git",
- [
- "-C",
- themePath,
- "ls-files",
- "-z",
- "--cached",
- "--others",
- "--exclude-standard",
- ],
- themePath,
- );
+ if (await isGitWorkTree(themePath)) {
+ const listing = await runCommand(
+ "git",
+ [
+ "-C",
+ themePath,
+ "ls-files",
+ "-z",
+ "--cached",
+ "--others",
+ "--exclude-standard",
+ ],
+ themePath,
+ );
- if (listing.code !== 0) {
- throw new Error(
- `Failed to list theme files via git in ${themePath}:\n${listing.stderr}`,
- );
- }
+ if (listing.code !== 0) {
+ throw new Error(
+ `Failed to list theme files via git in ${themePath}:\n${listing.stderr}`,
+ );
+ }
- const relativePaths = listing.stdout.split("\0").filter(Boolean);
+ const relativePaths = listing.stdout.split("\0").filter(Boolean);
- if (relativePaths.length === 0) {
- throw new Error(`No theme files found in ${themePath}`);
- }
+ if (relativePaths.length === 0) {
+ throw new Error(`No theme files found in ${themePath}`);
+ }
- for (const relativePath of relativePaths) {
- const source = join(themePath, relativePath);
+ for (const relativePath of relativePaths) {
+ const source = join(themePath, relativePath);
- try {
- const stats = await stat(source);
- if (!stats.isFile()) {
- continue;
- }
- } catch {
- // Tracked but deleted in the work tree: nothing to copy.
- continue;
- }
+ try {
+ const stats = await stat(source);
+ if (!stats.isFile()) {
+ continue;
+ }
+ } catch {
+ // Tracked but deleted in the work tree: nothing to copy.
+ continue;
+ }
- const target = join(destination, relativePath);
- await mkdir(dirname(target), { recursive: true });
- await copyFile(source, target);
- }
+ const target = join(destination, relativePath);
+ await mkdir(dirname(target), { recursive: true });
+ await copyFile(source, target);
+ }
- return;
- }
+ return;
+ }
- // Fallback for a non-Git source directory: copy recursively while excluding
- // heavy or generated paths that would never ship with the theme.
- const excludedNames = new Set(["node_modules", "public", ".git"]);
- await cp(themePath, destination, {
- recursive: true,
- filter: (source: string): boolean => {
- if (excludedNames.has(basename(source))) {
- return false;
- }
+ // Fallback for a non-Git source directory: copy recursively while excluding
+ // heavy or generated paths that would never ship with the theme.
+ const excludedNames = new Set(["node_modules", "public", ".git"]);
+ await cp(themePath, destination, {
+ recursive: true,
+ filter: (source: string): boolean => {
+ if (excludedNames.has(basename(source))) {
+ return false;
+ }
- return !source.includes(join("resources", "_gen"));
- },
- });
+ return !source.includes(join("resources", "_gen"));
+ },
+ });
}
/**
@@ -1016,48 +1016,48 @@
* @throws Error when installation fails or the theme is incomplete.
*/
async function installTheme(
- options: RoutineOptions,
- projectRoot: string,
- reports: StepReport[],
+ options: RoutineOptions,
+ projectRoot: string,
+ reports: StepReport[],
): Promise<void> {
- const destination = join(projectRoot, options.themeDir);
+ const destination = join(projectRoot, options.themeDir);
- if (options.verbose) {
- console.log(`\n[RUN] Install theme (source: ${options.themeSource})`);
- }
+ if (options.verbose) {
+ console.log(`\n[RUN] Install theme (source: ${options.themeSource})`);
+ }
- if (options.themeSource === "submodule") {
- const step: StepDefinition = {
- name: "Add theme as Git submodule",
- command: "git",
- args: ["submodule", "add", options.themeRepo, options.themeDir],
- cwd: projectRoot,
- expectedFiles: [options.themeDir, ".gitmodules"],
- };
- const report = await executeStep(step);
- reports.push(report);
+ if (options.themeSource === "submodule") {
+ const step: StepDefinition = {
+ name: "Add theme as Git submodule",
+ command: "git",
+ args: ["submodule", "add", options.themeRepo, options.themeDir],
+ cwd: projectRoot,
+ expectedFiles: [options.themeDir, ".gitmodules"],
+ };
+ const report = await executeStep(step);
+ reports.push(report);
- if (options.verbose) {
- console.log(
- `[OK ] ${step.name} (${report.result.durationMs} ms, exit ${String(report.result.code)})`,
- );
- }
+ if (options.verbose) {
+ console.log(
+ `[OK ] ${step.name} (${report.result.durationMs} ms, exit ${String(report.result.code)})`,
+ );
+ }
- return;
- }
+ return;
+ }
- const started = Date.now();
- await copyLocalTheme(options.themePath, destination);
+ const started = Date.now();
+ await copyLocalTheme(options.themePath, destination);
- // Sanity check: a usable theme must at least expose theme.toml and layouts.
- await assertFileExists(join(destination, "theme.toml"));
- await assertFileExists(join(destination, "layouts"));
+ // Sanity check: a usable theme must at least expose theme.toml and layouts.
+ await assertFileExists(join(destination, "theme.toml"));
+ await assertFileExists(join(destination, "layouts"));
- if (options.verbose) {
- console.log(
- `[OK ] Copied local theme from ${options.themePath} (${Date.now() - started} ms)`,
- );
- }
+ if (options.verbose) {
+ console.log(
+ `[OK ] Copied local theme from ${options.themePath} (${Date.now() - started} ms)`,
+ );
+ }
}
/**
@@ -1069,34 +1069,34 @@
* @param reports Accumulated step reports (appended to).
*/
async function runSteps(
- steps: StepDefinition[],
- options: RoutineOptions,
- projectRoot: string,
- reports: StepReport[],
+ steps: StepDefinition[],
+ options: RoutineOptions,
+ projectRoot: string,
+ reports: StepReport[],
): Promise<void> {
- for (const step of steps) {
- if (options.verbose) {
- console.log(`\n[RUN] ${step.name}`);
- console.log(` ${formatCommand(step.command, step.args)}`);
- }
+ for (const step of steps) {
+ if (options.verbose) {
+ console.log(`\n[RUN] ${step.name}`);
+ console.log(` ${formatCommand(step.command, step.args)}`);
+ }
- const report = isHugoBuildCommand(step)
- ? await executeHugoBuildStep(step, projectRoot)
- : await executeStep(step);
+ const report = isHugoBuildCommand(step)
+ ? await executeHugoBuildStep(step, projectRoot)
+ : await executeStep(step);
- reports.push(report);
+ reports.push(report);
- if (options.verbose) {
- console.log(
- `[OK ] ${step.name} (${report.result.durationMs} ms, exit ${String(report.result.code)})`,
- );
+ if (options.verbose) {
+ console.log(
+ `[OK ] ${step.name} (${report.result.durationMs} ms, exit ${String(report.result.code)})`,
+ );
- const trimmedOutput = report.result.combined.trim();
- if (trimmedOutput) {
- console.log(trimmedOutput);
- }
- }
- }
+ const trimmedOutput = report.result.combined.trim();
+ if (trimmedOutput) {
+ console.log(trimmedOutput);
+ }
+ }
+ }
}
/**
@@ -1106,360 +1106,354 @@
* @returns Process exit code.
*/
async function runRoutine(options: RoutineOptions): Promise<number> {
- const sandboxRoot = await mkdtemp(join(tmpdir(), "hugo-quickstart-"));
- const projectRoot = join(sandboxRoot, options.projectName);
+ const sandboxRoot = await mkdtemp(join(tmpdir(), "hugo-quickstart-"));
+ const projectRoot = join(sandboxRoot, options.projectName);
- const reports: StepReport[] = [];
+ const reports: StepReport[] = [];
- // Steps that prepare the project before the theme is installed.
- const setupSteps: StepDefinition[] = [
- {
- name: "Create Hugo project",
- command: "hugo",
- args: ["new", "project", options.projectName],
- cwd: sandboxRoot,
- expectedFiles: [join(options.projectName, options.configFile)],
- },
- {
- name: "Initialise Git repository",
- command: "git",
- args: ["init"],
- cwd: projectRoot,
- expectedFiles: [".git"],
- },
- ];
+ // Steps that prepare the project before the theme is installed.
+ const setupSteps: StepDefinition[] = [
+ {
+ name: "Create Hugo project",
+ command: "hugo",
+ args: ["new", "project", options.projectName],
+ cwd: sandboxRoot,
+ expectedFiles: [join(options.projectName, options.configFile)],
+ },
+ {
+ name: "Initialise Git repository",
+ command: "git",
+ args: ["init"],
+ cwd: projectRoot,
+ expectedFiles: [".git"],
+ },
+ ];
- // Steps that run once the theme is in place.
- const buildSteps: StepDefinition[] = [
- {
- name: "Configure theme in Hugo config",
- command: "bash",
- args: [
- "-lc",
- `printf "\\ntheme = '${options.themeName}'\\n" >> ${JSON.stringify(options.configFile)}`,
- ],
- cwd: projectRoot,
- expectedFiles: [options.configFile],
- },
- {
- name: "Build site",
- command: "hugo",
- args: [],
- cwd: projectRoot,
- expectedFiles: ["public/index.html"],
- },
- ];
+ // Steps that run once the theme is in place.
+ const buildSteps: StepDefinition[] = [
+ {
+ name: "Configure theme in Hugo config",
+ command: "bash",
+ args: [
+ "-lc",
+ `printf "\\ntheme = '${options.themeName}'\\n" >> ${JSON.stringify(options.configFile)}`,
+ ],
+ cwd: projectRoot,
+ expectedFiles: [options.configFile],
+ },
+ {
+ name: "Build site",
+ command: "hugo",
+ args: [],
+ cwd: projectRoot,
+ expectedFiles: ["public/index.html"],
+ },
+ ];
- try {
- console.log(`Test root: ${sandboxRoot}`);
- console.log(`Project root: ${projectRoot}`);
- console.log(
- options.themeSource === "submodule"
- ? `Theme source: submodule (${options.themeRepo})`
- : `Theme source: local (${options.themePath})`,
- );
+ try {
+ console.log(`Test root: ${sandboxRoot}`);
+ console.log(`Project root: ${projectRoot}`);
+ console.log(
+ options.themeSource === "submodule"
+ ? `Theme source: submodule (${options.themeRepo})`
+ : `Theme source: local (${options.themePath})`,
+ );
- await runSteps(setupSteps, options, projectRoot, reports);
- await installTheme(options, projectRoot, reports);
- await runSteps(buildSteps, options, projectRoot, reports);
+ await runSteps(setupSteps, options, projectRoot, reports);
+ await installTheme(options, projectRoot, reports);
+ await runSteps(buildSteps, options, projectRoot, reports);
- const configPath = join(projectRoot, options.configFile);
- const homepagePath = join(projectRoot, "public/index.html");
- const contentPath = join(projectRoot, "content/foo.md");
- const draftOutputPath = join(projectRoot, "public", "foo", "index.html");
+ const configPath = join(projectRoot, options.configFile);
+ const homepagePath = join(projectRoot, "public/index.html");
+ const contentPath = join(projectRoot, "content/foo.md");
+ const draftOutputPath = join(projectRoot, "public", "foo", "index.html");
- console.log("\n[RUN] Strict config assertion");
- await assertThemeConfigured(configPath, options.themeName);
- console.log("[OK ] Strict config assertion");
+ console.log("\n[RUN] Strict config assertion");
+ await assertThemeConfigured(configPath, options.themeName);
+ console.log("[OK ] Strict config assertion");
- console.log("\n[RUN] Strict homepage assertion");
- await assertHomepageLooksValid(homepagePath);
- console.log("[OK ] Strict homepage assertion");
+ console.log("\n[RUN] Strict homepage assertion");
+ await assertHomepageLooksValid(homepagePath);
+ console.log("[OK ] Strict homepage assertion");
- console.log("\n[RUN] Create sample content");
- const createContentStep: StepDefinition = {
- name: "Create sample content",
- command: "hugo",
- args: ["new", "foo.md"],
- cwd: projectRoot,
- expectedFiles: ["content/foo.md"],
- };
- const createContentReport = await executeStep(createContentStep);
- reports.push(createContentReport);
+ console.log("\n[RUN] Create sample content");
+ const createContentStep: StepDefinition = {
+ name: "Create sample content",
+ command: "hugo",
+ args: ["new", "foo.md"],
+ cwd: projectRoot,
+ expectedFiles: ["content/foo.md"],
+ };
+ const createContentReport = await executeStep(createContentStep);
+ reports.push(createContentReport);
- if (options.verbose) {
- console.log(
- ` ${formatCommand(createContentStep.command, createContentStep.args)}`,
- );
- console.log(
- `[OK ] ${createContentStep.name} (${createContentReport.result.durationMs} ms, exit ${String(createContentReport.result.code)})`,
- );
+ if (options.verbose) {
+ console.log(
+ ` ${formatCommand(createContentStep.command, createContentStep.args)}`,
+ );
+ console.log(
+ `[OK ] ${createContentStep.name} (${createContentReport.result.durationMs} ms, exit ${String(createContentReport.result.code)})`,
+ );
- const trimmedOutput = createContentReport.result.combined.trim();
- if (trimmedOutput) {
- console.log(trimmedOutput);
- }
- }
+ const trimmedOutput = createContentReport.result.combined.trim();
+ if (trimmedOutput) {
+ console.log(trimmedOutput);
+ }
+ }
- console.log("\n[RUN] Replace generated content with quickstart sample");
- await replaceGeneratedContent(contentPath);
- console.log("[OK ] Replace generated content with quickstart sample");
+ console.log("\n[RUN] Replace generated content with quickstart sample");
+ await replaceGeneratedContent(contentPath);
+ console.log("[OK ] Replace generated content with quickstart sample");
- console.log("\n[RUN] Build drafts and verify rendered draft content");
- const draftBuildStep: StepDefinition = {
- name: "Build site with drafts",
- command: "hugo",
- args: ["--buildDrafts"],
- cwd: projectRoot,
- expectedFiles: ["public/index.html", "public/foo/index.html"],
- };
- const draftBuildReport = await executeHugoBuildStep(
- draftBuildStep,
- projectRoot,
- );
- reports.push(draftBuildReport);
+ console.log("\n[RUN] Build drafts and verify rendered draft content");
+ const draftBuildStep: StepDefinition = {
+ name: "Build site with drafts",
+ command: "hugo",
+ args: ["--buildDrafts"],
+ cwd: projectRoot,
+ expectedFiles: ["public/index.html", "public/foo/index.html"],
+ };
+ const draftBuildReport = await executeHugoBuildStep(
+ draftBuildStep,
+ projectRoot,
+ );
+ reports.push(draftBuildReport);
- if (options.verbose) {
- console.log(
- ` ${formatCommand(draftBuildStep.command, draftBuildStep.args)}`,
- );
- console.log(
- `[OK ] ${draftBuildStep.name} (${draftBuildReport.result.durationMs} ms, exit ${String(draftBuildReport.result.code)})`,
- );
+ if (options.verbose) {
+ console.log(
+ ` ${formatCommand(draftBuildStep.command, draftBuildStep.args)}`,
+ );
+ console.log(
+ `[OK ] ${draftBuildStep.name} (${draftBuildReport.result.durationMs} ms, exit ${String(draftBuildReport.result.code)})`,
+ );
- const trimmedOutput = draftBuildReport.result.combined.trim();
- if (trimmedOutput) {
- console.log(trimmedOutput);
- }
- }
+ const trimmedOutput = draftBuildReport.result.combined.trim();
+ if (trimmedOutput) {
+ console.log(trimmedOutput);
+ }
+ }
- const draftPageHtml = await readTextFile(draftOutputPath);
- assertDraftPageRendered(draftPageHtml);
- console.log("[OK ] Build drafts and verify rendered draft content");
+ const draftPageHtml = await readTextFile(draftOutputPath);
+ assertDraftPageRendered(draftPageHtml);
+ console.log("[OK ] Build drafts and verify rendered draft content");
- console.log("\n[RUN] Replace root hugo.toml with quickstart config");
- await replaceHugoConfig(configPath, options.themeName);
- console.log("[OK ] Replace root hugo.toml with quickstart config");
+ console.log("\n[RUN] Replace root hugo.toml with quickstart config");
+ await replaceHugoConfig(configPath, options.themeName);
+ console.log("[OK ] Replace root hugo.toml with quickstart config");
- console.log("\n[RUN] Build drafts and verify updated title and locale");
- const configBuildStep: StepDefinition = {
- name: "Build site with updated config and drafts",
- command: "hugo",
- args: ["--buildDrafts"],
- cwd: projectRoot,
- expectedFiles: ["public/index.html", "public/foo/index.html"],
- };
- const configBuildReport = await executeHugoBuildStep(
- configBuildStep,
- projectRoot,
- );
- reports.push(configBuildReport);
+ console.log("\n[RUN] Build drafts and verify updated title and locale");
+ const configBuildStep: StepDefinition = {
+ name: "Build site with updated config and drafts",
+ command: "hugo",
+ args: ["--buildDrafts"],
+ cwd: projectRoot,
+ expectedFiles: ["public/index.html", "public/foo/index.html"],
+ };
+ const configBuildReport = await executeHugoBuildStep(
+ configBuildStep,
+ projectRoot,
+ );
+ reports.push(configBuildReport);
- if (options.verbose) {
- console.log(
- ` ${formatCommand(configBuildStep.command, configBuildStep.args)}`,
- );
- console.log(
- `[OK ] ${configBuildStep.name} (${configBuildReport.result.durationMs} ms, exit ${String(configBuildReport.result.code)})`,
- );
+ if (options.verbose) {
+ console.log(
+ ` ${formatCommand(configBuildStep.command, configBuildStep.args)}`,
+ );
+ console.log(
+ `[OK ] ${configBuildStep.name} (${configBuildReport.result.durationMs} ms, exit ${String(configBuildReport.result.code)})`,
+ );
- const trimmedOutput = configBuildReport.result.combined.trim();
- if (trimmedOutput) {
- console.log(trimmedOutput);
- }
- }
+ const trimmedOutput = configBuildReport.result.combined.trim();
+ if (trimmedOutput) {
+ console.log(trimmedOutput);
+ }
+ }
- const updatedHomepageHtml = await readTextFile(homepagePath);
- assertUpdatedConfigInOutput(updatedHomepageHtml);
- console.log("[OK ] Build drafts and verify updated title and locale");
+ const updatedHomepageHtml = await readTextFile(homepagePath);
+ assertUpdatedConfigInOutput(updatedHomepageHtml);
+ console.log("[OK ] Build drafts and verify updated title and locale");
- console.log("\n[RUN] Production build should exclude draft content");
- const productionBuildStep: StepDefinition = {
- name: "Build production site without drafts",
- command: "hugo",
- args: [],
- cwd: projectRoot,
- expectedFiles: ["public/index.html"],
- };
- const productionBuildReport = await executeHugoBuildStep(
- productionBuildStep,
- projectRoot,
- );
- reports.push(productionBuildReport);
+ console.log("\n[RUN] Production build should exclude draft content");
+ const productionBuildStep: StepDefinition = {
+ name: "Build production site without drafts",
+ command: "hugo",
+ args: [],
+ cwd: projectRoot,
+ expectedFiles: ["public/index.html"],
+ };
+ const productionBuildReport = await executeHugoBuildStep(
+ productionBuildStep,
+ projectRoot,
+ );
+ reports.push(productionBuildReport);
- if (options.verbose) {
- console.log(
- ` ${formatCommand(productionBuildStep.command, productionBuildStep.args)}`,
- );
- console.log(
- `[OK ] ${productionBuildStep.name} (${productionBuildReport.result.durationMs} ms, exit ${String(productionBuildReport.result.code)})`,
- );
+ if (options.verbose) {
+ console.log(
+ ` ${formatCommand(productionBuildStep.command, productionBuildStep.args)}`,
+ );
+ console.log(
+ `[OK ] ${productionBuildStep.name} (${productionBuildReport.result.durationMs} ms, exit ${String(productionBuildReport.result.code)})`,
+ );
- const trimmedOutput = productionBuildReport.result.combined.trim();
- if (trimmedOutput) {
- console.log(trimmedOutput);
- }
- }
+ const trimmedOutput = productionBuildReport.result.combined.trim();
+ if (trimmedOutput) {
+ console.log(trimmedOutput);
+ }
+ }
- await assertDraftHiddenInProduction(projectRoot, homepagePath);
- console.log("[OK ] Production build should exclude draft content");
+ await assertDraftHiddenInProduction(projectRoot, homepagePath);
+ console.log("[OK ] Production build should exclude draft content");
- console.log("\n[RUN] Configurable hero header section class (issue #504)");
- await writeHeaderSectionClassFixtures(join(projectRoot, "content"));
- const headerSectionBuildStep: StepDefinition = {
- name: "Build site with configurable header section fixtures",
- command: "hugo",
- args: [],
- cwd: projectRoot,
- expectedFiles: [
- "public/custom-header/index.html",
- "public/default-header/index.html",
- ],
- };
- const headerSectionBuildReport = await executeHugoBuildStep(
- headerSectionBuildStep,
- projectRoot,
- );
- reports.push(headerSectionBuildReport);
+ console.log("\n[RUN] Configurable hero header section class (issue #504)");
+ await writeHeaderSectionClassFixtures(join(projectRoot, "content"));
+ const headerSectionBuildStep: StepDefinition = {
+ name: "Build site with configurable header section fixtures",
+ command: "hugo",
+ args: [],
+ cwd: projectRoot,
+ expectedFiles: [
+ "public/custom-header/index.html",
+ "public/default-header/index.html",
+ ],
+ };
+ const headerSectionBuildReport = await executeHugoBuildStep(
+ headerSectionBuildStep,
+ projectRoot,
+ );
+ reports.push(headerSectionBuildReport);
- if (options.verbose) {
- console.log(
- ` ${formatCommand(headerSectionBuildStep.command, headerSectionBuildStep.args)}`,
- );
- console.log(
- `[OK ] ${headerSectionBuildStep.name} (${headerSectionBuildReport.result.durationMs} ms, exit ${String(headerSectionBuildReport.result.code)})`,
- );
+ if (options.verbose) {
+ console.log(
+ ` ${formatCommand(headerSectionBuildStep.command, headerSectionBuildStep.args)}`,
+ );
+ console.log(
+ `[OK ] ${headerSectionBuildStep.name} (${headerSectionBuildReport.result.durationMs} ms, exit ${String(headerSectionBuildReport.result.code)})`,
+ );
- const trimmedOutput = headerSectionBuildReport.result.combined.trim();
- if (trimmedOutput) {
- console.log(trimmedOutput);
- }
- }
+ const trimmedOutput = headerSectionBuildReport.result.combined.trim();
+ if (trimmedOutput) {
+ console.log(trimmedOutput);
+ }
+ }
- await assertHeaderSectionClassConfigurable(projectRoot);
- console.log("[OK ] Configurable hero header section class (issue #504)");
+ await assertHeaderSectionClassConfigurable(projectRoot);
+ console.log("[OK ] Configurable hero header section class (issue #504)");
- console.log("\n[RUN] List page image cards and summary dates (issue #217)");
- await writeListCardFixtures(join(projectRoot, "content"));
- const cardsListPath = join(
- projectRoot,
- "public",
- "cards",
- "index.html",
- );
+ console.log("\n[RUN] List page image cards and summary dates (issue #217)");
+ await writeListCardFixtures(join(projectRoot, "content"));
+ const cardsListPath = join(projectRoot, "public", "cards", "index.html");
- // Default configuration: no image cards, but dates show by default.
- await writeTextFile(
- configPath,
- [
- "baseURL = 'https://example.com/'",
- "title = 'Ananke Test Quickstart'",
- `theme = '${options.themeName}'`,
- "",
- ].join("\n"),
- );
- const cardsDefaultBuildStep: StepDefinition = {
- name: "Build site with default summary cards",
- command: "hugo",
- args: [],
- cwd: projectRoot,
- expectedFiles: ["public/cards/index.html"],
- };
- const cardsDefaultBuildReport = await executeHugoBuildStep(
- cardsDefaultBuildStep,
- projectRoot,
- );
- reports.push(cardsDefaultBuildReport);
- assertListCardSummaries(
- await readTextFile(cardsListPath),
- "defaults",
- { images: false, dates: true },
- );
+ // Default configuration: no image cards, but dates show by default.
+ await writeTextFile(
+ configPath,
+ [
+ "baseURL = 'https://example.com/'",
+ "title = 'Ananke Test Quickstart'",
+ `theme = '${options.themeName}'`,
+ "",
+ ].join("\n"),
+ );
+ const cardsDefaultBuildStep: StepDefinition = {
+ name: "Build site with default summary cards",
+ command: "hugo",
+ args: [],
+ cwd: projectRoot,
+ expectedFiles: ["public/cards/index.html"],
+ };
+ const cardsDefaultBuildReport = await executeHugoBuildStep(
+ cardsDefaultBuildStep,
+ projectRoot,
+ );
+ reports.push(cardsDefaultBuildReport);
+ assertListCardSummaries(await readTextFile(cardsListPath), "defaults", {
+ images: false,
+ dates: true,
+ });
- // Opt in to image cards and disable summary dates: images appear and the
- // dates disappear, proving the two settings are independent.
- await writeTextFile(
- configPath,
- [
- "baseURL = 'https://example.com/'",
- "title = 'Ananke Test Quickstart'",
- `theme = '${options.themeName}'`,
- "[params.ananke.pages]",
- "show_list_images = true",
- "show_date = false",
- "",
- ].join("\n"),
- );
- const cardsImagesBuildStep: StepDefinition = {
- name: "Build site with image cards and dates disabled",
- command: "hugo",
- args: [],
- cwd: projectRoot,
- expectedFiles: ["public/cards/index.html"],
- };
- const cardsImagesBuildReport = await executeHugoBuildStep(
- cardsImagesBuildStep,
- projectRoot,
- );
- reports.push(cardsImagesBuildReport);
- assertListCardSummaries(
- await readTextFile(cardsListPath),
- "image cards with dates disabled",
- { images: true, dates: false },
- );
+ // Opt in to image cards and disable summary dates: images appear and the
+ // dates disappear, proving the two settings are independent.
+ await writeTextFile(
+ configPath,
+ [
+ "baseURL = 'https://example.com/'",
+ "title = 'Ananke Test Quickstart'",
+ `theme = '${options.themeName}'`,
+ "[params.ananke.pages]",
+ "show_list_images = true",
+ "show_date = false",
+ "",
+ ].join("\n"),
+ );
+ const cardsImagesBuildStep: StepDefinition = {
+ name: "Build site with image cards and dates disabled",
+ command: "hugo",
+ args: [],
+ cwd: projectRoot,
+ expectedFiles: ["public/cards/index.html"],
+ };
+ const cardsImagesBuildReport = await executeHugoBuildStep(
+ cardsImagesBuildStep,
+ projectRoot,
+ );
+ reports.push(cardsImagesBuildReport);
+ assertListCardSummaries(
+ await readTextFile(cardsListPath),
+ "image cards with dates disabled",
+ { images: true, dates: false },
+ );
- console.log("[OK ] List page image cards and summary dates (issue #217)");
+ console.log("[OK ] List page image cards and summary dates (issue #217)");
- console.log("\nResult: PASS");
+ console.log("\nResult: PASS");
- if (options.keepOnSuccess) {
- console.log(`Keeping successful test directory: ${projectRoot}`);
- } else {
- await rm(sandboxRoot, { recursive: true, force: true });
- console.log(`Deleted successful test directory: ${sandboxRoot}`);
- }
+ if (options.keepOnSuccess) {
+ console.log(`Keeping successful test directory: ${projectRoot}`);
+ } else {
+ await rm(sandboxRoot, { recursive: true, force: true });
+ console.log(`Deleted successful test directory: ${sandboxRoot}`);
+ }
- return 0;
- } catch (error: unknown) {
- const message = error instanceof Error ? error.message : "Unknown error";
+ return 0;
+ } catch (error: unknown) {
+ const message = error instanceof Error ? error.message : "Unknown error";
- console.error("\nResult: FAIL");
- console.error(message);
+ console.error("\nResult: FAIL");
+ console.error(message);
- if (reports.length > 0) {
- console.error("\nCompleted command steps before failure:");
- for (const report of reports) {
- console.error(`- ${report.step}`);
- }
- }
+ if (reports.length > 0) {
+ console.error("\nCompleted command steps before failure:");
+ for (const report of reports) {
+ console.error(`- ${report.step}`);
+ }
+ }
- if (options.keepOnFailure) {
- console.error(
- `\nKept failing test directory for inspection: ${projectRoot}`,
- );
- } else {
- await rm(sandboxRoot, { recursive: true, force: true });
- console.error(`\nDeleted failing test directory: ${sandboxRoot}`);
- }
+ if (options.keepOnFailure) {
+ console.error(
+ `\nKept failing test directory for inspection: ${projectRoot}`,
+ );
+ } else {
+ await rm(sandboxRoot, { recursive: true, force: true });
+ console.error(`\nDeleted failing test directory: ${sandboxRoot}`);
+ }
- return 1;
- }
+ return 1;
+ }
}
/**
* Main entry point.
*/
async function main(): Promise<void> {
- try {
- const options = parseArgs(process.argv.slice(2));
- const exitCode = await runRoutine(options);
- process.exit(exitCode);
- } catch (error: unknown) {
- const message =
- error instanceof Error ? error.message : "Unknown fatal error";
- console.error(`Fatal error: ${message}`);
- process.exit(1);
- }
+ try {
+ const options = parseArgs(process.argv.slice(2));
+ const exitCode = await runRoutine(options);
+ process.exit(exitCode);
+ } catch (error: unknown) {
+ const message =
+ error instanceof Error ? error.message : "Unknown fatal error";
+ console.error(`Fatal error: ${message}`);
+ process.exit(1);
+ }
}
await main();
diff --git a/tests/coverage-gate.mjs b/tests/coverage-gate.mjs
index 540e2a9..8b62ef3 100644
--- a/tests/coverage-gate.mjs
+++ b/tests/coverage-gate.mjs
@@ -25,43 +25,43 @@
/** Direct `key = value` entries under the top-level [ananke] table. */
function collectAnankeParams() {
- const toml = readFileSync(
- join(repoRoot, "config", "_default", "params.toml"),
- "utf8",
- );
- const keys = new Set();
- let inAnanke = false;
- for (const raw of toml.split("\n")) {
- const line = raw.trim();
- if (line.startsWith("[")) {
- inAnanke = line === "[ananke]";
- continue;
- }
- if (!inAnanke || line === "" || line.startsWith("#")) continue;
- const eq = line.indexOf("=");
- if (eq > 0) keys.add(`ananke.${line.slice(0, eq).trim()}`);
- }
- return keys;
+ const toml = readFileSync(
+ join(repoRoot, "config", "_default", "params.toml"),
+ "utf8",
+ );
+ const keys = new Set();
+ let inAnanke = false;
+ for (const raw of toml.split("\n")) {
+ const line = raw.trim();
+ if (line.startsWith("[")) {
+ inAnanke = line === "[ananke]";
+ continue;
+ }
+ if (!inAnanke || line === "" || line.startsWith("#")) continue;
+ const eq = line.indexOf("=");
+ if (eq > 0) keys.add(`ananke.${line.slice(0, eq).trim()}`);
+ }
+ return keys;
}
/** Shortcode names from layouts/_shortcodes/*.html. */
function collectShortcodes() {
- const dir = join(repoRoot, "layouts", "_shortcodes");
- return new Set(
- readdirSync(dir)
- .filter((f) => f.endsWith(".html"))
- .map((f) => f.replace(/\.html$/, "")),
- );
+ const dir = join(repoRoot, "layouts", "_shortcodes");
+ return new Set(
+ readdirSync(dir)
+ .filter((f) => f.endsWith(".html"))
+ .map((f) => f.replace(/\.html$/, "")),
+ );
}
function catalogued(section) {
- const out = new Set();
- for (const [name, value] of Object.entries(section || {})) {
- if (value && Array.isArray(value.tests) && value.tests.length > 0) {
- out.add(name);
- }
- }
- return out;
+ const out = new Set();
+ for (const [name, value] of Object.entries(section || {})) {
+ if (value && Array.isArray(value.tests) && value.tests.length > 0) {
+ out.add(name);
+ }
+ }
+ return out;
}
const catalog = parse(readFileSync(join(here, "catalog.yaml"), "utf8")) || {};
@@ -72,32 +72,32 @@
const errors = [];
for (const p of params) {
- if (!catParams.has(p))
- errors.push(`param '${p}' has no test in tests/catalog.yaml`);
+ if (!catParams.has(p))
+ errors.push(`param '${p}' has no test in tests/catalog.yaml`);
}
for (const s of shortcodes) {
- if (!catShortcodes.has(s))
- errors.push(`shortcode '${s}' has no test in tests/catalog.yaml`);
+ if (!catShortcodes.has(s))
+ errors.push(`shortcode '${s}' has no test in tests/catalog.yaml`);
}
// Stale catalog entries (kept as warnings so renames are noticed promptly).
const warnings = [];
for (const p of Object.keys(catalog.params || {})) {
- if (!params.has(p)) warnings.push(`catalog param '${p}' no longer exists`);
+ if (!params.has(p)) warnings.push(`catalog param '${p}' no longer exists`);
}
for (const s of Object.keys(catalog.shortcodes || {})) {
- if (!shortcodes.has(s))
- warnings.push(`catalog shortcode '${s}' no longer exists`);
+ if (!shortcodes.has(s))
+ warnings.push(`catalog shortcode '${s}' no longer exists`);
}
for (const w of warnings) console.warn(`warning: ${w}`);
if (errors.length > 0) {
- console.error("\nCoverage gate failed:");
- for (const e of errors) console.error(` - ${e}`);
- console.error(
- "\nAdd the feature and at least one test reference to tests/catalog.yaml.",
- );
- process.exit(1);
+ console.error("\nCoverage gate failed:");
+ for (const e of errors) console.error(` - ${e}`);
+ console.error(
+ "\nAdd the feature and at least one test reference to tests/catalog.yaml.",
+ );
+ process.exit(1);
}
console.log(
- `Coverage gate passed: ${params.size} ananke param(s), ${shortcodes.size} shortcode(s) all have tests.`,
+ `Coverage gate passed: ${params.size} ananke param(s), ${shortcodes.size} shortcode(s) all have tests.`,
);
diff --git a/tests/e2e/accessibility.spec.ts b/tests/e2e/accessibility.spec.ts
index ac1213d..080c440 100644
--- a/tests/e2e/accessibility.spec.ts
+++ b/tests/e2e/accessibility.spec.ts
@@ -9,13 +9,13 @@
* accessibility sub-issue under the testing epic).
*/
const PAGES: Record<string, string> = {
- homepage: "/",
- "section list": "/posts/",
- "single page": "/posts/hello/",
- "standalone page": "/about/",
- "taxonomy terms": "/tags/",
- "taxonomy term": "/tags/alpha/",
- "404": "/404.html",
+ homepage: "/",
+ "section list": "/posts/",
+ "single page": "/posts/hello/",
+ "standalone page": "/about/",
+ "taxonomy terms": "/tags/",
+ "taxonomy term": "/tags/alpha/",
+ "404": "/404.html",
};
const TAGS = ["wcag2a", "wcag2aa", "wcag21a", "wcag21aa", "wcag22aa"];
@@ -27,21 +27,21 @@
* start passing and Playwright will flag the stale annotation for removal.
*/
const KNOWN_FAILURES = new Set([
- "section list",
- "single page",
- "taxonomy terms",
- "taxonomy term",
+ "section list",
+ "single page",
+ "taxonomy terms",
+ "taxonomy term",
]);
for (const [name, path] of Object.entries(PAGES)) {
- test(`${name} has no automatically detectable a11y violations`, async ({
- page,
- }) => {
- if (KNOWN_FAILURES.has(name)) {
- test.fail(true, "Known WCAG AA contrast issue, tracked in #1015");
- }
- await page.goto(path);
- const results = await new AxeBuilder({ page }).withTags(TAGS).analyze();
- expect(results.violations).toEqual([]);
- });
+ test(`${name} has no automatically detectable a11y violations`, async ({
+ page,
+ }) => {
+ if (KNOWN_FAILURES.has(name)) {
+ test.fail(true, "Known WCAG AA contrast issue, tracked in #1015");
+ }
+ await page.goto(path);
+ const results = await new AxeBuilder({ page }).withTags(TAGS).analyze();
+ expect(results.violations).toEqual([]);
+ });
}
diff --git a/tests/e2e/copy-button.spec.ts b/tests/e2e/copy-button.spec.ts
index e1f2876..e3974d8 100644
--- a/tests/e2e/copy-button.spec.ts
+++ b/tests/e2e/copy-button.spec.ts
@@ -3,49 +3,49 @@
const POST = "/posts/hello/";
test.describe("copy-to-clipboard code button (#986)", () => {
- test("wraps fenced code blocks but not inline code", async ({ page }) => {
- await page.goto(POST);
- // Exactly one fenced block on this page → one .code-block wrapper.
- await expect(page.locator(".code-block")).toHaveCount(1);
- // Inline `code` lives outside a .code-block wrapper.
- await expect(page.locator(".code-block code")).toHaveCount(1);
- });
+ test("wraps fenced code blocks but not inline code", async ({ page }) => {
+ await page.goto(POST);
+ // Exactly one fenced block on this page → one .code-block wrapper.
+ await expect(page.locator(".code-block")).toHaveCount(1);
+ // Inline `code` lives outside a .code-block wrapper.
+ await expect(page.locator(".code-block code")).toHaveCount(1);
+ });
- test("reveals the button when JavaScript runs", async ({ page }) => {
- await page.goto(POST);
- const button = page.locator(".code-block .code-copy");
- await expect(button).toBeVisible();
- await expect(button).toHaveAttribute("aria-label", /copy/i);
- });
+ test("reveals the button when JavaScript runs", async ({ page }) => {
+ await page.goto(POST);
+ const button = page.locator(".code-block .code-copy");
+ await expect(button).toBeVisible();
+ await expect(button).toHaveAttribute("aria-label", /copy/i);
+ });
- test("copies the code and shows feedback", async ({ page, context }) => {
- await context.grantPermissions(["clipboard-read", "clipboard-write"]);
- await page.goto(POST);
+ test("copies the code and shows feedback", async ({ page, context }) => {
+ await context.grantPermissions(["clipboard-read", "clipboard-write"]);
+ await page.goto(POST);
- const button = page.locator(".code-block .code-copy");
- await button.click();
+ const button = page.locator(".code-block .code-copy");
+ await button.click();
- // Feedback state.
- await expect(button).toHaveClass(/is-copied/);
- await expect(button.locator(".code-copy-label")).toHaveText("Copied");
+ // Feedback state.
+ await expect(button).toHaveClass(/is-copied/);
+ await expect(button.locator(".code-copy-label")).toHaveText("Copied");
- // The clipboard actually holds the code (localhost is a secure context).
- const clipboard = await page.evaluate(() => navigator.clipboard.readText());
- expect(clipboard).toContain("copy_code = true");
- });
+ // The clipboard actually holds the code (localhost is a secure context).
+ const clipboard = await page.evaluate(() => navigator.clipboard.readText());
+ expect(clipboard).toContain("copy_code = true");
+ });
});
test.describe("without JavaScript (progressive enhancement)", () => {
- test.use({ javaScriptEnabled: false });
+ test.use({ javaScriptEnabled: false });
- test("shows no copy button but keeps the code", async ({ page }) => {
- await page.goto(POST);
- // The button is rendered with the `hidden` attribute and never revealed,
- // so it is not visible to the user.
- await expect(page.locator(".code-block .code-copy")).toBeHidden();
- // The code itself is still present and selectable.
- await expect(page.locator(".code-block pre")).toContainText(
- "copy_code = true",
- );
- });
+ test("shows no copy button but keeps the code", async ({ page }) => {
+ await page.goto(POST);
+ // The button is rendered with the `hidden` attribute and never revealed,
+ // so it is not visible to the user.
+ await expect(page.locator(".code-block .code-copy")).toBeHidden();
+ // The code itself is still present and selectable.
+ await expect(page.locator(".code-block pre")).toContainText(
+ "copy_code = true",
+ );
+ });
});
diff --git a/tests/support/dev-server.mjs b/tests/support/dev-server.mjs
index d70632d..5168176 100644
--- a/tests/support/dev-server.mjs
+++ b/tests/support/dev-server.mjs
@@ -14,49 +14,49 @@
const PORT = Number(process.env.ANANKE_TEST_PORT || 4321);
const TYPES = {
- ".html": "text/html; charset=utf-8",
- ".css": "text/css; charset=utf-8",
- ".js": "text/javascript; charset=utf-8",
- ".json": "application/json; charset=utf-8",
- ".svg": "image/svg+xml",
- ".xml": "application/xml; charset=utf-8",
- ".txt": "text/plain; charset=utf-8",
- ".woff2": "font/woff2",
+ ".html": "text/html; charset=utf-8",
+ ".css": "text/css; charset=utf-8",
+ ".js": "text/javascript; charset=utf-8",
+ ".json": "application/json; charset=utf-8",
+ ".svg": "image/svg+xml",
+ ".xml": "application/xml; charset=utf-8",
+ ".txt": "text/plain; charset=utf-8",
+ ".woff2": "font/woff2",
};
const root = buildFixtureSite();
function resolvePath(urlPath) {
- const clean = normalize(decodeURIComponent(urlPath.split("?")[0])).replace(
- /^(\.\.[/\\])+/,
- "",
- );
- let filePath = join(root, clean);
- if (existsSync(filePath) && statSync(filePath).isDirectory()) {
- filePath = join(filePath, "index.html");
- }
- return filePath;
+ const clean = normalize(decodeURIComponent(urlPath.split("?")[0])).replace(
+ /^(\.\.[/\\])+/,
+ "",
+ );
+ let filePath = join(root, clean);
+ if (existsSync(filePath) && statSync(filePath).isDirectory()) {
+ filePath = join(filePath, "index.html");
+ }
+ return filePath;
}
const server = createServer((req, res) => {
- let filePath = resolvePath(req.url || "/");
- if (!existsSync(filePath)) {
- // Serve Hugo's generated 404 page so /404.html and unknown routes work.
- filePath = join(root, "404.html");
- if (!existsSync(filePath)) {
- res.statusCode = 404;
- res.end("Not found");
- return;
- }
- res.statusCode = req.url === "/404.html" ? 200 : 404;
- }
- res.setHeader(
- "Content-Type",
- TYPES[extname(filePath)] || "application/octet-stream",
- );
- createReadStream(filePath).pipe(res);
+ let filePath = resolvePath(req.url || "/");
+ if (!existsSync(filePath)) {
+ // Serve Hugo's generated 404 page so /404.html and unknown routes work.
+ filePath = join(root, "404.html");
+ if (!existsSync(filePath)) {
+ res.statusCode = 404;
+ res.end("Not found");
+ return;
+ }
+ res.statusCode = req.url === "/404.html" ? 200 : 404;
+ }
+ res.setHeader(
+ "Content-Type",
+ TYPES[extname(filePath)] || "application/octet-stream",
+ );
+ createReadStream(filePath).pipe(res);
});
server.listen(PORT, () => {
- console.log(`Fixture site served at http://localhost:${PORT}/`);
+ console.log(`Fixture site served at http://localhost:${PORT}/`);
});
diff --git a/tests/support/prepare-site.mjs b/tests/support/prepare-site.mjs
index 35606f3..108c925 100644
--- a/tests/support/prepare-site.mjs
+++ b/tests/support/prepare-site.mjs
@@ -20,36 +20,36 @@
const publicDir = join(siteDir, "public");
export function buildFixtureSite() {
- const themesDir = mkdtempSync(join(tmpdir(), "ananke-test-themes-"));
- try {
- symlinkSync(repoRoot, join(themesDir, "ananke"), "dir");
- rmSync(publicDir, { recursive: true, force: true });
- const result = spawnSync(
- "hugo",
- [
- "--source",
- siteDir,
- "--themesDir",
- themesDir,
- "--destination",
- publicDir,
- "--environment",
- "production",
- "--logLevel",
- "warn",
- ],
- { stdio: "inherit" },
- );
- if (result.status !== 0) {
- throw new Error(`hugo build failed with code ${result.status}`);
- }
- } finally {
- rmSync(themesDir, { recursive: true, force: true });
- }
- return publicDir;
+ const themesDir = mkdtempSync(join(tmpdir(), "ananke-test-themes-"));
+ try {
+ symlinkSync(repoRoot, join(themesDir, "ananke"), "dir");
+ rmSync(publicDir, { recursive: true, force: true });
+ const result = spawnSync(
+ "hugo",
+ [
+ "--source",
+ siteDir,
+ "--themesDir",
+ themesDir,
+ "--destination",
+ publicDir,
+ "--environment",
+ "production",
+ "--logLevel",
+ "warn",
+ ],
+ { stdio: "inherit" },
+ );
+ if (result.status !== 0) {
+ throw new Error(`hugo build failed with code ${result.status}`);
+ }
+ } finally {
+ rmSync(themesDir, { recursive: true, force: true });
+ }
+ return publicDir;
}
// Allow running directly: `node tests/support/prepare-site.mjs`
if (import.meta.url === `file://${process.argv[1]}`) {
- buildFixtureSite();
+ buildFixtureSite();
}
diff --git a/tsconfig.json b/tsconfig.json
index fc051bb..bfe76bb 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,29 +1,11 @@
{
- "compilerOptions": {
- "module": "nodenext",
- "target": "esnext",
- "types": [
- "node"
- ],
- "sourceMap": true,
- "declaration": true,
- "declarationMap": true,
- "noUncheckedIndexedAccess": true,
- "exactOptionalPropertyTypes": true,
- "strict": true,
- "jsx": "react-jsx",
- "verbatimModuleSyntax": true,
- "isolatedModules": true,
- "noUncheckedSideEffectImports": true,
- "moduleDetection": "force",
- "skipLibCheck": true,
- "noImplicitOverride": true,
- "noPropertyAccessFromIndexSignature": true,
- "useUnknownInCatchVariables": true,
- "noFallthroughCasesInSwitch": true,
- },
- "include": [
- "**/*.ts",
- "scripts/**/*"
- ]
-}
\ No newline at end of file
+ "extends": "@dnbhq/tsconfig/cli",
+ "compilerOptions": {
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
+ "sourceMap": true,
+ "declaration": true,
+ "declarationMap": true,
+ "jsx": "react-jsx"
+ },
+ "include": ["**/*.ts", "scripts/**/*"]
+}
--
Gitblit v1.10.0