diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 73c74fa917de3..c920db365822d 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -14,12 +14,14 @@ jobs:
validate-docs-links:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - name: Checkout
+ uses: actions/checkout@v4
- - name: "Setup Node"
- uses: ./.github/actions/setup-node
+ - uses: ./.github/actions/setup-node
+ with:
+ node-version: 20
- - name: "Run link checker"
+ - name: Run link checker
run: cd docs && pnpm run check-links
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/docs/package.json b/docs/package.json
index 87d663c202714..28b7a4811d976 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -9,21 +9,17 @@
"check-links": "tsx src/validate-docs-links.ts"
},
"devDependencies": {
- "@types/github-slugger": "^1.3.0",
- "@types/node": "^22.1.0",
- "@vercel/ncc": "0.34.0",
- "tsx": "^4.7.2",
- "typescript": "5.1.6"
+ "@types/node": "22.7.8",
+ "tsx": "4.19.1",
+ "typescript": "5.3.3"
},
"dependencies": {
- "@actions/core": "^1.10.0",
- "@actions/github": "^5.1.1",
- "github-slugger": "1.2.0",
- "gray-matter": "4.0.2",
- "rehype-raw": "4.0.1",
- "remark-parse": "7.0.1",
- "remark-rehype": "5.0.0",
- "unified": "8.4.1",
- "unist-util-visit": "2.0.0"
+ "github-slugger": "2.0.0",
+ "gray-matter": "4.0.3",
+ "rehype-raw": "7.0.0",
+ "remark-parse": "11.0.0",
+ "remark-rehype": "11.1.1",
+ "unified": "11.0.5",
+ "unist-util-visit": "5.0.0"
}
}
diff --git a/docs/repo-docs/guides/tools/typescript.mdx b/docs/repo-docs/guides/tools/typescript.mdx
index d0f6257b25763..4a5f8dbae5dc3 100644
--- a/docs/repo-docs/guides/tools/typescript.mdx
+++ b/docs/repo-docs/guides/tools/typescript.mdx
@@ -292,15 +292,15 @@ In [Compiled packages](https://turbo.build/repo/docs/core-concepts/internal-pack
+
```tsx title="./packages/ui/button.tsx"
-import { MY_STRING } from "#utils.js" // Uses .js extension // [!code highlight]
+import { MY_STRING } from "#utils.js"; // Uses .js extension // [!code highlight]
export const Button = () => {
- return (
-
- )
-}
+ return ;
+};
```
+
diff --git a/docs/src/github.ts b/docs/src/github.ts
deleted file mode 100644
index 480281a63018c..0000000000000
--- a/docs/src/github.ts
+++ /dev/null
@@ -1,126 +0,0 @@
-import * as github from "@actions/github";
-import { setFailed } from "@actions/core";
-
-interface Comment {
- id: number;
-}
-
-export { setFailed };
-export const COMMENT_TAG = "";
-
-const { context, getOctokit } = github;
-const octokit = getOctokit(process.env.GITHUB_TOKEN!);
-const { owner, repo } = context.repo;
-const pullRequest = context.payload.pull_request;
-if (!pullRequest) {
- console.log("Skipping since this is not a pull request");
- process.exit(0);
-}
-export const sha = pullRequest.head.sha;
-const isFork = pullRequest.head.repo.fork;
-const prNumber = pullRequest.number;
-
-export async function findBotComment(): Promise {
- try {
- const { data: comments } = await octokit.rest.issues.listComments({
- owner,
- repo,
- issue_number: prNumber,
- });
-
- return comments.find((c) => c.body?.includes(COMMENT_TAG));
- } catch (error) {
- setFailed("Error finding bot comment: " + error);
- return undefined;
- }
-}
-
-export async function updateComment(
- comment: string,
- botComment: Comment
-): Promise {
- try {
- const { data } = await octokit.rest.issues.updateComment({
- owner,
- repo,
- comment_id: botComment.id,
- body: comment,
- });
-
- return data.html_url;
- } catch (error) {
- setFailed("Error updating comment: " + error);
- return "";
- }
-}
-
-export async function createComment(comment: string): Promise {
- if (isFork) {
- setFailed(
- "The action could not create a GitHub comment because it is initiated from a forked repo. View the action logs for a list of broken links."
- );
-
- return "";
- } else {
- try {
- const { data } = await octokit.rest.issues.createComment({
- owner,
- repo,
- issue_number: prNumber,
- body: comment,
- });
-
- return data.html_url;
- } catch (error) {
- setFailed("Error creating comment: " + error);
- return "";
- }
- }
-}
-
-export async function updateCheckStatus(
- errorsExist: boolean,
- commentUrl?: string
-): Promise {
- const checkName = "Docs Link Validation";
-
- let summary, text;
-
- if (errorsExist) {
- summary =
- "This PR introduces broken links to the docs. Click details for a list.";
- text = `[See the comment for details](${commentUrl})`;
- } else {
- summary = "No broken links found";
- }
-
- const checkParams = {
- owner,
- repo,
- name: checkName,
- head_sha: sha,
- status: "completed",
- conclusion: errorsExist ? "failure" : "success",
- output: {
- title: checkName,
- summary: summary,
- text: text,
- },
- };
-
- if (isFork) {
- if (errorsExist) {
- setFailed(
- "This PR introduces broken links to the docs. The action could not create a GitHub check because it is initiated from a forked repo."
- );
- } else {
- console.log("Link validation was successful.");
- }
- } else {
- try {
- await octokit.rest.checks.create(checkParams);
- } catch (error) {
- setFailed("Failed to create check: " + error);
- }
- }
-}
diff --git a/docs/src/markdown.ts b/docs/src/markdown.ts
new file mode 100644
index 0000000000000..13f4043480427
--- /dev/null
+++ b/docs/src/markdown.ts
@@ -0,0 +1,248 @@
+import fs from "fs/promises";
+import { unified } from "unified";
+import remarkParse from "remark-parse";
+import remarkRehype from "remark-rehype";
+import rehypeRaw from "rehype-raw";
+import { visit } from "unist-util-visit";
+import GitHubSlugger from "github-slugger";
+import matter from "gray-matter";
+
+export interface Document {
+ /** the Markdown file itself, without from-matter */
+ content: string;
+
+ /** the path to this markdown file */
+ path: string;
+
+ /** the headings found in this markdown file */
+ headings: string[];
+
+ frontMatter: {
+ title: string;
+ description: string;
+ };
+}
+
+export type ErrorType = "link" | "hash" | "source" | "related";
+
+export type LinkError = {
+ type: ErrorType;
+ href: string;
+ doc: Document;
+};
+
+/** where to look for docs (.mdx files) */
+const DOCS_PATH = ".";
+const EXCLUDED_HASHES = ["top"];
+
+/** These paths exist, just not in our Markdown files */
+const EXCLUDED_PATHS = ["/api/remote-cache-spec", "/repo"];
+
+const slugger = new GitHubSlugger();
+
+/** Collect the paths of all .mdx files we care about */
+const getAllMdxFilePaths = async (): Promise => {
+ const allFiles = await fs.readdir(DOCS_PATH, { recursive: true });
+ return allFiles.filter((file) => file.endsWith(".mdx"));
+};
+
+// Returns the slugs of all headings in a tree
+const getHeadingsFromMarkdownTree = (
+ tree: ReturnType
+): string[] => {
+ const headings: string[] = [];
+ slugger.reset();
+
+ visit(tree, "heading", (node) => {
+ let headingText = "";
+ // Account for headings with inline code blocks by concatenating the
+ // text values of all children of a heading node.
+ visit(node, (innerNode: any) => {
+ if (innerNode.value) {
+ headingText += innerNode.value;
+ }
+ });
+ const slugified = slugger.slug(headingText);
+ headings.push(slugified);
+ });
+
+ return headings;
+};
+
+/** Create a processor to parse MDX content */
+const markdownProcessor = unified()
+ .use(remarkParse)
+ .use(remarkRehype)
+ .use(rehypeRaw)
+ .use(function compiler() {
+ // A compiler is required, and we only need the AST, so we can
+ // just return it.
+ // @ts-ignore
+ this.Compiler = function treeCompiler(tree) {
+ return tree;
+ };
+ });
+
+const filePathToUrl = (filePath: string): string =>
+ filePath
+ .replace("repo-docs", "/repo/docs")
+ .replace("pack-docs", "/pack/docs")
+ .replace(".mdx", "");
+
+const validateFrontmatter = (path: string, data: Record) => {
+ if (!data.title) {
+ throw new Error(`Document is missing a title: ${path}`);
+ }
+ if (!data.description) {
+ throw new Error(`Document is missing a description: ${path}`);
+ }
+ return data as {
+ title: string;
+ description: string;
+ };
+};
+
+/**
+ * Create a map of documents with their paths as keys and
+ * document content and metadata as values
+ * The key varies between doc pages and error pages
+ * error pages: `/docs/messages/example`
+ * doc pages: `api/example`
+ */
+const prepareDocumentMapEntry = async (
+ path: string
+): Promise<[string, Document]> => {
+ try {
+ const mdxContent = await fs.readFile(path, "utf8");
+ const { content, data } = matter(mdxContent);
+ const frontMatter = validateFrontmatter(path, data);
+
+ const tree = markdownProcessor.parse(content);
+ const headings = getHeadingsFromMarkdownTree(tree);
+ const normalizedUrlPath = filePathToUrl(path);
+
+ return [normalizedUrlPath, { content, path, headings, frontMatter }];
+ } catch (error) {
+ throw new Error(`Error preparing document map for file ${path}: ${error}`);
+ }
+};
+
+/** Checks if the links point to existing documents */
+const validateInternalLink =
+ (documentMap: Map) => (doc: Document, href: string) => {
+ // /docs/api/example#heading -> ["/docs/api/example", "heading""]
+ const [link, hash] = href.replace(DOCS_PATH, "").split("#", 2);
+
+ if (EXCLUDED_PATHS.includes(link)) {
+ return [];
+ }
+
+ let foundPage = documentMap.get(link);
+
+ if (!foundPage) {
+ foundPage = documentMap.get(`${link}/index`);
+ }
+
+ let errors: LinkError[] = [];
+
+ if (!foundPage) {
+ errors.push({
+ type: "link",
+ href,
+ doc,
+ });
+ } else if (hash && !EXCLUDED_HASHES.includes(hash)) {
+ // Check if the hash link points to an existing section within the document
+ const hashFound = foundPage.headings.includes(hash);
+
+ if (!hashFound) {
+ errors.push({
+ type: "hash",
+ href,
+ doc,
+ });
+ }
+ }
+
+ return errors;
+ };
+
+/** Checks if the hash links point to existing sections within the same document */
+const validateHashLink = (doc: Document, href: string) => {
+ const hashLink = href.replace("#", "");
+ if (EXCLUDED_HASHES.includes(hashLink)) {
+ return [];
+ }
+
+ if (doc.headings.includes(hashLink)) {
+ return [];
+ }
+
+ let linkError: LinkError = {
+ type: "hash",
+ href,
+ doc,
+ };
+ const { content, ...docWithoutContent } = doc;
+ return [linkError];
+};
+
+/** Traverse the document tree and validate links */
+const traverseTreeAndValidateLinks = (
+ documentMap: Map,
+ tree: unknown,
+ doc: Document
+): LinkError[] => {
+ let errors: LinkError[] = [];
+
+ try {
+ visit(tree, (node: any) => {
+ if (node.type === "element" && node.tagName === "a") {
+ const href = node.properties.href;
+
+ if (!href) {
+ return;
+ }
+
+ if (href.startsWith("/")) {
+ errors.push(...validateInternalLink(documentMap)(doc, href));
+ } else if (href.startsWith("#")) {
+ errors.push(...validateHashLink(doc, href));
+ }
+ }
+ });
+ } catch (error) {
+ throw new Error(`Error traversing tree: ${error}`);
+ }
+
+ return errors;
+};
+
+/**
+ * this function will look through all Mdx files and compile a list of `LinkError`s
+ */
+export const collectLinkErrors = async (): Promise => {
+ const allMdxFilePaths = await getAllMdxFilePaths();
+
+ const documentMap = new Map(
+ await Promise.all(allMdxFilePaths.map(prepareDocumentMapEntry))
+ );
+
+ const reportsWithErrors = allMdxFilePaths.map(async (filePath) => {
+ const doc = documentMap.get(filePathToUrl(filePath));
+ if (!doc) {
+ return null;
+ }
+ const vFile = await markdownProcessor.process(doc.content);
+ const tree = vFile.result;
+ const linkErrors = traverseTreeAndValidateLinks(documentMap, tree, doc);
+ if (linkErrors.length > 0) {
+ return linkErrors;
+ }
+ return null;
+ });
+
+ const results = await Promise.all(reportsWithErrors);
+ const linkErrors = results.filter((report) => report !== null).flat();
+ return linkErrors;
+};
diff --git a/docs/src/validate-docs-links.ts b/docs/src/validate-docs-links.ts
index 788fe32c54961..380dce1bad713 100644
--- a/docs/src/validate-docs-links.ts
+++ b/docs/src/validate-docs-links.ts
@@ -1,333 +1,46 @@
-import fs from "fs/promises";
-import path from "path";
-import unified from "unified";
-import markdown from "remark-parse";
-import remarkToRehype from "remark-rehype";
-import raw from "rehype-raw";
-import visit from "unist-util-visit";
-import GitHubSlugger from "github-slugger";
-import matter from "gray-matter";
-import {
- COMMENT_TAG,
- createComment,
- findBotComment,
- updateCheckStatus,
- updateComment,
- setFailed,
- sha,
-} from "./github";
-
-/**
- * This script validates internal links in /docs and /errors including internal,
- * hash, source and related links. It does not validate external links.
- * 1. Collects all .mdx files in /docs.
- * 2. For each file, it extracts the content, metadata, and heading slugs.
- * 3. It creates a document map to efficiently lookup documents by path.
- * 4. It then traverses each document modified in the PR and...
- * - Checks if each internal link (links starting with "/docs/") points
- * to an existing document
- * - Validates hash links (links starting with "#") against the list of
- * headings in the current document.
- * - Checks the source and related links found in the metadata of each
- * document.
- * 5. Any broken links discovered during these checks are categorized and a
- * comment is added to the PR.
- */
-
-interface Document {
- body: string;
- path: string;
- headings: string[];
- source?: string;
- related?: {
- links: string[];
- };
-}
-
-interface Errors {
- doc: Document;
- link: string[];
- hash: string[];
- source: string[];
- related: string[];
-}
-
-type ErrorType = Exclude;
-
-const DOCS_PATH = ".";
-const EXCLUDED_HASHES = ["top"];
-
-const slugger = new GitHubSlugger();
-
-// Collect the paths of all .mdx files in the passed directories
-async function getAllMdxFilePaths(
- directoriesToScan: string[],
- fileList: string[] = []
-): Promise {
- for (const dir of directoriesToScan) {
- const dirPath = path.join(".", dir);
- const files = await fs.readdir(dirPath);
- for (const file of files) {
- const filePath = path.join(dirPath, file);
- const stats = await fs.stat(filePath);
- if (stats.isDirectory()) {
- fileList = await getAllMdxFilePaths([filePath], fileList);
- } else if (path.extname(file) === ".mdx") {
- fileList.push(filePath);
- }
- }
- }
-
- return fileList;
-}
-
-// Returns the slugs of all headings in a tree
-function getHeadingsFromMarkdownTree(
- tree: ReturnType
-): string[] {
- const headings: string[] = [];
- slugger.reset();
-
- visit(tree, "heading", (node) => {
- let headingText = "";
- // Account for headings with inline code blocks by concatenating the
- // text values of all children of a heading node.
- visit(node, (innerNode: any) => {
- if (innerNode.value) {
- headingText += innerNode.value;
- }
- });
- headings.push(slugger.slug(headingText));
- });
-
- return headings;
-}
-
-// Create a processor to parse MDX content
-const markdownProcessor = unified()
- .use(markdown)
- .use(remarkToRehype, { allowDangerousHTML: true })
- .use(raw)
- .use(function compiler() {
- // A compiler is required, and we only need the AST, so we can
- // just return it.
- // @ts-ignore
- this.Compiler = function treeCompiler(tree) {
- return tree;
- };
- });
-
-function normalizePath(filePath: string): string {
- const normalized = filePath
- .replace("repo-docs", "/repo/docs")
- .replace("pack-docs", "/pack/docs")
- .replace(".mdx", "");
-
- return normalized;
-}
-
-// use Map for faster lookup
-let documentMap: Map;
-
-// Create a map of documents with their paths as keys and
-// document content and metadata as values
-// The key varies between doc pages and error pages
-// error pages: `/docs/messages/example`
-// doc pages: `api/example`
-async function prepareDocumentMapEntry(
- filePath: string
-): Promise<[string, Document]> {
- try {
- const mdxContent = await fs.readFile(filePath, "utf8");
- const { content, data } = matter(mdxContent);
- const tree = markdownProcessor.parse(content);
- const headings = getHeadingsFromMarkdownTree(tree);
- const normalizedUrlPath = normalizePath(filePath);
-
- return [
- normalizedUrlPath,
- { body: content, path: filePath, headings, ...data },
- ];
- } catch (error) {
- setFailed(`Error preparing document map for file ${filePath}: ${error}`);
- return ["", {} as Document];
- }
-}
-
-// Checks if the links point to existing documents
-function validateInternalLink(errors: Errors, href: string): void {
- // /docs/api/example#heading -> ["api/example", "heading""]
- const [link, hash] = href.replace(DOCS_PATH, "").split("#", 2);
-
- // These paths exist, just not in our Markdown files
- const ignorePaths = ["/api/remote-cache-spec", "/repo"];
- if (ignorePaths.includes(link)) {
+import { collectLinkErrors } from "./markdown";
+
+/*
+ This script validates internal links in /docs and /errors including internal,
+ hash, source and related links. It does not validate external links.
+ 1. Collects all .mdx files in /docs.
+ 2. For each file, it extracts the content, metadata, and heading slugs.
+ 3. It creates a document map to efficiently lookup documents by path.
+ 4. It then traverses each document modified in the PR and...
+ - Checks if each internal link (links starting with "/docs/") points
+ to an existing document
+ - Validates hash links (links starting with "#") against the list of
+ headings in the current document.
+ - Checks the source and related links found in the metadata of each
+ document.
+ 5. Any broken links discovered during these checks are categorized and a
+ comment is added to the PR.
+*/
+
+/** Main function that triggers link validation across .mdx files */
+const validateAllInternalLinks = async (): Promise => {
+ let errorReports = await collectLinkErrors();
+ if (errorReports.length === 0) {
+ console.log("Link validation was successful.");
return;
}
- let foundPage = documentMap.get(link);
-
- if (!foundPage) {
- foundPage = documentMap.get(`${link}/index`);
- }
-
- if (!foundPage) {
- errors.link.push(href);
- } else if (hash && !EXCLUDED_HASHES.includes(hash)) {
- // Check if the hash link points to an existing section within the document
- const hashFound = foundPage.headings.includes(hash);
-
- if (!hashFound) {
- errors.hash.push(href);
- }
- }
-}
-
-// Checks if the hash links point to existing sections within the same document
-function validateHashLink(errors: Errors, href: string, doc: Document): void {
- const hashLink = href.replace("#", "");
-
- if (!EXCLUDED_HASHES.includes(hashLink) && !doc.headings.includes(hashLink)) {
- errors.hash.push(href);
- }
-}
-
-// Traverse the document tree and validate links
-function traverseTreeAndValidateLinks(tree: any, doc: Document): Errors {
- const errors: Errors = {
- doc,
- link: [],
- hash: [],
- source: [],
- related: [],
- };
-
- try {
- visit(tree, (node: any) => {
- if (node.type === "element" && node.tagName === "a") {
- const href = node.properties.href;
-
- if (!href) return;
-
- if (href.startsWith("/")) {
- validateInternalLink(errors, href);
- } else if (href.startsWith("#")) {
- validateHashLink(errors, href, doc);
- }
- }
- });
- } catch (error) {
- setFailed("Error traversing tree: " + error);
- }
-
- return errors;
-}
-
-const formatTableRow = (
- link: string,
- errorType: ErrorType,
- rawDocPath: string
-) => {
- const docPath = rawDocPath.replace("../../../", "");
-
- return `| ${link} | ${errorType} | [/${docPath}](https://github.com/vercel/turborepo/blob/${sha}/${docPath}) | \n`;
+ const reportRows = errorReports
+ .map((linkError) => ({
+ link: linkError.href,
+ type: linkError.type,
+ path: linkError.doc.path,
+ }))
+ .sort((a, b) => a.type.localeCompare(b.type));
+
+ const plural = errorReports.length > 1;
+ console.log(
+ `Found ${plural ? "these" : "a"} broken link${
+ plural ? "s" : ""
+ } in the docs:`
+ );
+ console.table(reportRows);
+ process.exit(1);
};
-// Main function that triggers link validation across .mdx files
-async function validateAllInternalLinks(): Promise {
- try {
- const allMdxFilePaths = await getAllMdxFilePaths([DOCS_PATH]);
-
- documentMap = new Map(
- await Promise.all(allMdxFilePaths.map(prepareDocumentMapEntry))
- );
-
- const docProcessingPromises = allMdxFilePaths.map(async (filePath) => {
- const doc = documentMap.get(normalizePath(filePath));
- if (doc) {
- const tree = (await markdownProcessor.process(doc.body)).contents;
- return traverseTreeAndValidateLinks(tree, doc);
- } else {
- return {
- doc: {} as Document,
- link: [],
- hash: [],
- source: [],
- related: [],
- } as Errors;
- }
- });
-
- const allErrors = await Promise.all(docProcessingPromises);
-
- let errorsExist = false;
-
- let errorRows: string[] = [];
-
- const errorTypes: ErrorType[] = ["link", "hash", "source", "related"];
- allErrors.forEach((errors) => {
- const {
- doc: { path: docPath },
- } = errors;
-
- errorTypes.forEach((errorType) => {
- if (errors[errorType].length > 0) {
- errorsExist = true;
- errors[errorType].forEach((link) => {
- errorRows.push(formatTableRow(link, errorType, docPath));
- });
- }
- });
- });
-
- const errorComment = [
- "Hi there :wave:\n\nIt looks like this PR introduces broken links to the docs, please take a moment to fix them before merging:\n\n| Broken link | Type | File | \n| ----------- | ----------- | ----------- | \n",
- ...errorRows,
- "\nThank you :pray:",
- ].join("");
-
- let commentUrl;
- let botComment;
- let comment;
-
- botComment = await findBotComment();
-
- if (errorsExist) {
- comment = `${COMMENT_TAG}\n${errorComment}`;
- if (botComment) {
- commentUrl = await updateComment(comment, botComment);
- } else {
- commentUrl = await createComment(comment);
- }
-
- const errorTableData = allErrors.flatMap((errors) => {
- const { doc } = errors;
-
- return errorTypes.flatMap((errorType) =>
- errors[errorType].map((link) => ({
- docPath: doc.path,
- errorType,
- link,
- }))
- );
- });
-
- console.log("This PR introduces broken links to the docs:");
- console.table(errorTableData, ["link", "type", "docPath"]);
- process.exit(1);
- } else if (botComment) {
- const comment = `${COMMENT_TAG}\nAll broken links are now fixed, thank you!`;
- commentUrl = await updateComment(comment, botComment);
- }
-
- try {
- await updateCheckStatus(errorsExist, commentUrl);
- } catch (error) {
- setFailed("Failed to create GitHub check: " + error);
- }
- } catch (error) {
- setFailed("Error validating internal links: " + error);
- }
-}
-
validateAllInternalLinks();
diff --git a/docs/types.d.ts b/docs/types.d.ts
deleted file mode 100644
index 0d78462e62f01..0000000000000
--- a/docs/types.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-declare module "remark-rehype";
-declare module "rehype-raw";
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 87d0714c5a9bb..ea2b5fcefa3b8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -53,49 +53,37 @@ importers:
docs:
dependencies:
- '@actions/core':
- specifier: ^1.10.0
- version: 1.10.1
- '@actions/github':
- specifier: ^5.1.1
- version: 5.1.1
github-slugger:
- specifier: 1.2.0
- version: 1.2.0
+ specifier: 2.0.0
+ version: 2.0.0
gray-matter:
- specifier: 4.0.2
- version: 4.0.2
+ specifier: 4.0.3
+ version: 4.0.3
rehype-raw:
- specifier: 4.0.1
- version: 4.0.1
+ specifier: 7.0.0
+ version: 7.0.0
remark-parse:
- specifier: 7.0.1
- version: 7.0.1
+ specifier: 11.0.0
+ version: 11.0.0
remark-rehype:
- specifier: 5.0.0
- version: 5.0.0
+ specifier: 11.1.1
+ version: 11.1.1
unified:
- specifier: 8.4.1
- version: 8.4.1
+ specifier: 11.0.5
+ version: 11.0.5
unist-util-visit:
- specifier: 2.0.0
- version: 2.0.0
+ specifier: 5.0.0
+ version: 5.0.0
devDependencies:
- '@types/github-slugger':
- specifier: ^1.3.0
- version: 1.3.0
'@types/node':
- specifier: ^22.1.0
- version: 22.1.0
- '@vercel/ncc':
- specifier: 0.34.0
- version: 0.34.0
+ specifier: 22.7.8
+ version: 22.7.8
tsx:
- specifier: ^4.7.2
- version: 4.7.2
+ specifier: 4.19.1
+ version: 4.19.1
typescript:
- specifier: 5.1.6
- version: 5.1.6
+ specifier: 5.3.3
+ version: 5.3.3
examples: {}
@@ -1017,7 +1005,7 @@ packages:
/@actions/core@1.10.1:
resolution: {integrity: sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==}
dependencies:
- '@actions/http-client': 2.2.0
+ '@actions/http-client': 2.1.1
uuid: 8.3.2
dev: false
@@ -1044,6 +1032,12 @@ packages:
tunnel: 0.0.6
dev: false
+ /@actions/http-client@2.1.1:
+ resolution: {integrity: sha512-qhrkRMB40bbbLo7gF+0vu+X+UawOvQQqNAA/5Unx774RS8poaOhThDOG6BGmxvAnxhQnDp2BG/ZUm65xZILTpw==}
+ dependencies:
+ tunnel: 0.0.6
+ dev: false
+
/@actions/http-client@2.2.0:
resolution: {integrity: sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==}
dependencies:
@@ -2886,6 +2880,12 @@ packages:
'@types/node': 20.11.30
'@types/responselike': 1.0.0
+ /@types/debug@4.1.12:
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+ dependencies:
+ '@types/ms': 0.7.34
+ dev: false
+
/@types/diff@5.0.2:
resolution: {integrity: sha512-uw8eYMIReOwstQ0QKF0sICefSy8cNO/v7gOTiIy9SbwuHyEecJUm7qlgueOO5S1udZ5I/irVydHVwMchgzbKTg==}
dev: true
@@ -2927,10 +2927,6 @@ packages:
resolution: {integrity: sha512-MHmwBtCb7OCv1DSivz2UNJXPGU/1btAWRKlqJ2saEhVJkpkvqHMMaOpKg0v4sAbDWSQekHGvPVMM8nQ+Jen03Q==}
dev: false
- /@types/github-slugger@1.3.0:
- resolution: {integrity: sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g==}
- dev: true
-
/@types/glob@7.2.0:
resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
dependencies:
@@ -2949,6 +2945,12 @@ packages:
'@types/tinycolor2': 1.4.3
dev: true
+ /@types/hast@3.0.4:
+ resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+ dependencies:
+ '@types/unist': 3.0.3
+ dev: false
+
/@types/http-cache-semantics@4.0.1:
resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==}
@@ -3027,9 +3029,19 @@ packages:
'@types/node': 20.11.30
dev: true
+ /@types/mdast@4.0.4:
+ resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+ dependencies:
+ '@types/unist': 3.0.3
+ dev: false
+
/@types/minimatch@5.1.1:
resolution: {integrity: sha512-v55NF6Dz0wrj14Rn8iEABTWrhYRmgkJYuokduunSiq++t3hZ9VZ6dvcDt+850Pm5sGJZk8RaHzkFCXPxVINZ+g==}
+ /@types/ms@0.7.34:
+ resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+ dev: false
+
/@types/ndjson@2.0.2:
resolution: {integrity: sha512-bvLIjknQTfXdWoJ2iljOpZXNB14d8VOH6NMXAlDle9T8jdpMsKqQs4M5+F7NnlU8WMPErtuGnJsLfERO8W9Oow==}
dependencies:
@@ -3066,10 +3078,10 @@ packages:
resolution: {integrity: sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==}
dev: true
- /@types/node@22.1.0:
- resolution: {integrity: sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==}
+ /@types/node@22.7.8:
+ resolution: {integrity: sha512-a922jJy31vqR5sk+kAdIENJjHblqcZ4RmERviFsER4WJcEONqxKcjNOlk0q7OUfrF5sddT+vng070cdfMlrPLg==}
dependencies:
- undici-types: 6.13.0
+ undici-types: 6.19.8
dev: true
/@types/normalize-package-data@2.4.1:
@@ -3139,8 +3151,8 @@ packages:
/@types/tinycolor2@1.4.3:
resolution: {integrity: sha512-Kf1w9NE5HEgGxCRyIcRXR/ZYtDv0V8FVPtYHwLxl0O+maGX0erE77pQlD0gpP+/KByMZ87mOA79SjifhSB3PjQ==}
- /@types/unist@2.0.10:
- resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
+ /@types/unist@3.0.3:
+ resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
dev: false
/@types/uuid@9.0.0:
@@ -3361,7 +3373,6 @@ packages:
/@ungap/structured-clone@1.2.0:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
- dev: true
/@vercel/blob@0.22.1:
resolution: {integrity: sha512-LtHmiYAdJhiSAfBP+5hHXtVyqZUND2G+ild/XVY0SOiB46ab7VUrQctwUMGcVx+yZyXZ2lXPT1HvRJtXFnKvHA==}
@@ -3373,11 +3384,6 @@ packages:
undici: 5.28.3
dev: false
- /@vercel/ncc@0.34.0:
- resolution: {integrity: sha512-G9h5ZLBJ/V57Ou9vz5hI8pda/YQX5HQszCs3AmIus3XzsmRn/0Ptic5otD3xVST8QLKk7AMk7AqpsyQGN7MZ9A==}
- hasBin: true
- dev: true
-
/@vercel/ncc@0.36.0:
resolution: {integrity: sha512-/ZTUJ/ZkRt694k7KJNimgmHjtQcRuVwsST2Z6XfYveQIuBbHR+EqkTc1jfgPkQmMyk/vtpxo3nVxe8CNuau86A==}
hasBin: true
@@ -3839,8 +3845,8 @@ packages:
babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.6)
dev: true
- /bail@1.0.5:
- resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==}
+ /bail@2.0.2:
+ resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
dev: false
/balanced-match@1.0.2:
@@ -4109,10 +4115,6 @@ packages:
upper-case-first: 2.0.2
dev: true
- /ccount@1.1.0:
- resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==}
- dev: false
-
/chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
@@ -4185,16 +4187,8 @@ packages:
engines: {node: '>=10'}
dev: true
- /character-entities-legacy@1.1.4:
- resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==}
- dev: false
-
- /character-entities@1.2.4:
- resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==}
- dev: false
-
- /character-reference-invalid@1.1.4:
- resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==}
+ /character-entities@2.0.2:
+ resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
dev: false
/chardet@0.7.0:
@@ -4315,10 +4309,6 @@ packages:
engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
dev: true
- /collapse-white-space@1.0.6:
- resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==}
- dev: false
-
/collect-v8-coverage@1.0.1:
resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==}
dev: true
@@ -4373,8 +4363,8 @@ packages:
dependencies:
delayed-stream: 1.0.0
- /comma-separated-tokens@1.0.8:
- resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==}
+ /comma-separated-tokens@2.0.3:
+ resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
dev: false
/commander@10.0.0:
@@ -4694,6 +4684,12 @@ packages:
resolution: {integrity: sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==}
dev: true
+ /decode-named-character-reference@1.0.2:
+ resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
+ dependencies:
+ character-entities: 2.0.2
+ dev: false
+
/decode-uri-component@0.2.2:
resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
engines: {node: '>=0.10'}
@@ -4848,13 +4844,6 @@ packages:
/dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
- dev: true
-
- /detab@2.0.4:
- resolution: {integrity: sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==}
- dependencies:
- repeat-string: 1.6.1
- dev: false
/detect-file@1.0.0:
resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==}
@@ -4881,6 +4870,12 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
+ /devlop@1.1.0:
+ resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
+ dependencies:
+ dequal: 2.0.3
+ dev: false
+
/diff-sequences@27.5.1:
resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -4956,10 +4951,6 @@ packages:
engines: {node: '>=10'}
dev: true
- /emoji-regex@6.1.1:
- resolution: {integrity: sha512-WfVwM9e+M9B/4Qjh9SRnPX2A74Tom3WlVfWF9QWJ8f2BPa1u+/q4aEp1tizZ3vBKAZTg7B6yxn3t9iMjT+dv4w==}
- dev: false
-
/emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -4980,6 +4971,11 @@ packages:
tapable: 2.2.1
dev: true
+ /entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+ dev: false
+
/error-ex@1.3.2:
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
dependencies:
@@ -6554,10 +6550,8 @@ packages:
resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==}
dev: true
- /github-slugger@1.2.0:
- resolution: {integrity: sha512-wIaa75k1vZhyPm9yWrD08A5Xnx/V+RmzGrpjQuLemGKSb77Qukiaei58Bogrl/LZSADDfPzKJX8jhLs4CRTl7Q==}
- dependencies:
- emoji-regex: 6.1.1
+ /github-slugger@2.0.0:
+ resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
dev: false
/glob-parent@5.1.2:
@@ -6728,8 +6722,8 @@ packages:
/graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
- /gray-matter@4.0.2:
- resolution: {integrity: sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==}
+ /gray-matter@4.0.3:
+ resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
engines: {node: '>=6.0'}
dependencies:
js-yaml: 3.14.1
@@ -6822,61 +6816,63 @@ packages:
dependencies:
function-bind: 1.1.1
- /hast-to-hyperscript@7.0.4:
- resolution: {integrity: sha512-vmwriQ2H0RPS9ho4Kkbf3n3lY436QKLq6VaGA1pzBh36hBi3tm1DO9bR+kaJIbpT10UqaANDkMjxvjVfr+cnOA==}
+ /hast-util-from-parse5@8.0.1:
+ resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==}
dependencies:
- comma-separated-tokens: 1.0.8
- property-information: 5.6.0
- space-separated-tokens: 1.1.5
- style-to-object: 0.2.3
- unist-util-is: 3.0.0
- web-namespaces: 1.1.4
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ devlop: 1.1.0
+ hastscript: 8.0.0
+ property-information: 6.5.0
+ vfile: 6.0.3
+ vfile-location: 5.0.3
+ web-namespaces: 2.0.1
dev: false
- /hast-util-from-parse5@5.0.3:
- resolution: {integrity: sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==}
+ /hast-util-parse-selector@4.0.0:
+ resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
dependencies:
- ccount: 1.1.0
- hastscript: 5.1.2
- property-information: 5.6.0
- web-namespaces: 1.1.4
- xtend: 4.0.2
- dev: false
-
- /hast-util-parse-selector@2.2.5:
- resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==}
+ '@types/hast': 3.0.4
dev: false
- /hast-util-raw@5.0.2:
- resolution: {integrity: sha512-3ReYQcIHmzSgMq8UrDZHFL0oGlbuVGdLKs8s/Fe8BfHFAyZDrdv1fy/AGn+Fim8ZuvAHcJ61NQhVMtyfHviT/g==}
+ /hast-util-raw@9.0.4:
+ resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==}
dependencies:
- hast-util-from-parse5: 5.0.3
- hast-util-to-parse5: 5.1.2
- html-void-elements: 1.0.5
- parse5: 5.1.1
- unist-util-position: 3.1.0
- web-namespaces: 1.1.4
- xtend: 4.0.2
- zwitch: 1.0.5
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ '@ungap/structured-clone': 1.2.0
+ hast-util-from-parse5: 8.0.1
+ hast-util-to-parse5: 8.0.0
+ html-void-elements: 3.0.0
+ mdast-util-to-hast: 13.2.0
+ parse5: 7.2.0
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.0.0
+ vfile: 6.0.3
+ web-namespaces: 2.0.1
+ zwitch: 2.0.4
dev: false
- /hast-util-to-parse5@5.1.2:
- resolution: {integrity: sha512-ZgYLJu9lYknMfsBY0rBV4TJn2xiwF1fXFFjbP6EE7S0s5mS8LIKBVWzhA1MeIs1SWW6GnnE4In6c3kPb+CWhog==}
+ /hast-util-to-parse5@8.0.0:
+ resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==}
dependencies:
- hast-to-hyperscript: 7.0.4
- property-information: 5.6.0
- web-namespaces: 1.1.4
- xtend: 4.0.2
- zwitch: 1.0.5
+ '@types/hast': 3.0.4
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ property-information: 6.5.0
+ space-separated-tokens: 2.0.2
+ web-namespaces: 2.0.1
+ zwitch: 2.0.4
dev: false
- /hastscript@5.1.2:
- resolution: {integrity: sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==}
+ /hastscript@8.0.0:
+ resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==}
dependencies:
- comma-separated-tokens: 1.0.8
- hast-util-parse-selector: 2.2.5
- property-information: 5.6.0
- space-separated-tokens: 1.1.5
+ '@types/hast': 3.0.4
+ comma-separated-tokens: 2.0.3
+ hast-util-parse-selector: 4.0.0
+ property-information: 6.5.0
+ space-separated-tokens: 2.0.2
dev: false
/header-case@1.0.1:
@@ -6915,8 +6911,8 @@ packages:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
dev: true
- /html-void-elements@1.0.5:
- resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==}
+ /html-void-elements@3.0.0:
+ resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
dev: false
/http-cache-semantics@4.1.1:
@@ -7060,10 +7056,6 @@ packages:
/ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
- /inline-style-parser@0.1.1:
- resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==}
- dev: false
-
/inquirer-file-tree-selection-prompt@1.0.19:
resolution: {integrity: sha512-aL01njANm5bJhQtUNBKWurniroUJ9I+rnJ20DBG3xY9gtKBxgpRFSRs0lzjx42iCRJ4J083IZ2SrN4t8ejPlEQ==}
dependencies:
@@ -7178,17 +7170,6 @@ packages:
kind-of: 6.0.3
dev: false
- /is-alphabetical@1.0.4:
- resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
- dev: false
-
- /is-alphanumerical@1.0.4:
- resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==}
- dependencies:
- is-alphabetical: 1.0.4
- is-decimal: 1.0.4
- dev: false
-
/is-array-buffer@3.0.2:
resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
dependencies:
@@ -7288,10 +7269,6 @@ packages:
has-tostringtag: 1.0.0
dev: true
- /is-decimal@1.0.4:
- resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==}
- dev: false
-
/is-descriptor@0.1.6:
resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==}
engines: {node: '>=0.10.0'}
@@ -7380,10 +7357,6 @@ packages:
dependencies:
is-extglob: 2.1.1
- /is-hexadecimal@1.0.4:
- resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==}
- dev: false
-
/is-inside-container@1.0.0:
resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
engines: {node: '>=14.16'}
@@ -7447,15 +7420,9 @@ packages:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
- /is-plain-obj@2.1.0:
- resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
- engines: {node: '>=8'}
- dev: false
-
/is-plain-obj@4.1.0:
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
engines: {node: '>=12'}
- dev: true
/is-plain-object@2.0.4:
resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
@@ -7575,18 +7542,10 @@ packages:
get-intrinsic: 1.2.1
dev: true
- /is-whitespace-character@1.0.4:
- resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==}
- dev: false
-
/is-windows@1.0.2:
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
engines: {node: '>=0.10.0'}
- /is-word-character@1.0.4:
- resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==}
- dev: false
-
/is-wsl@2.2.0:
resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
engines: {node: '>=8'}
@@ -8570,10 +8529,6 @@ packages:
object-visit: 1.0.1
dev: false
- /markdown-escapes@1.0.4:
- resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==}
- dev: false
-
/maxstache-stream@1.0.4:
resolution: {integrity: sha512-v8qlfPN0pSp7bdSoLo1NTjG43GXGqk5W2NWFnOCq2GlmFFqebGzPCjLKSbShuqIOVorOtZSAy7O/S1OCCRONUw==}
dependencies:
@@ -8587,30 +8542,43 @@ packages:
resolution: {integrity: sha512-53ZBxHrZM+W//5AcRVewiLpDunHnucfdzZUGz54Fnvo4tE+J3p8EL66kBrs2UhBXvYKTWckWYYWBqJqoTcenqg==}
dev: false
- /mdast-util-definitions@1.2.5:
- resolution: {integrity: sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA==}
- dependencies:
- unist-util-visit: 1.4.1
+ /mdast-util-from-markdown@2.0.1:
+ resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==}
+ dependencies:
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ decode-named-character-reference: 1.0.2
+ devlop: 1.1.0
+ mdast-util-to-string: 4.0.0
+ micromark: 4.0.0
+ micromark-util-decode-numeric-character-reference: 2.0.1
+ micromark-util-decode-string: 2.0.0
+ micromark-util-normalize-identifier: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ unist-util-stringify-position: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
dev: false
- /mdast-util-to-hast@6.0.2:
- resolution: {integrity: sha512-GjcOimC9qHI0yNFAQdBesrZXzUkRdFleQlcoU8+TVNfDW6oLUazUx8MgUoTaUyCJzBOnE5AOgqhpURrSlf0QwQ==}
+ /mdast-util-to-hast@13.2.0:
+ resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
dependencies:
- collapse-white-space: 1.0.6
- detab: 2.0.4
- mdast-util-definitions: 1.2.5
- mdurl: 1.0.1
- trim: 0.0.1
- trim-lines: 1.1.3
- unist-builder: 1.0.4
- unist-util-generated: 1.1.6
- unist-util-position: 3.1.0
- unist-util-visit: 1.4.1
- xtend: 4.0.2
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@ungap/structured-clone': 1.2.0
+ devlop: 1.1.0
+ micromark-util-sanitize-uri: 2.0.0
+ trim-lines: 3.0.1
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.0.0
+ vfile: 6.0.3
dev: false
- /mdurl@1.0.1:
- resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
+ /mdast-util-to-string@4.0.0:
+ resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
+ dependencies:
+ '@types/mdast': 4.0.4
dev: false
/merge-stream@2.0.0:
@@ -8620,6 +8588,181 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
+ /micromark-core-commonmark@2.0.1:
+ resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==}
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ devlop: 1.1.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.1.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.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-factory-destination@2.0.0:
+ resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==}
+ dependencies:
+ micromark-util-character: 2.1.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-factory-label@2.0.0:
+ resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==}
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-character: 2.1.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-factory-space@2.0.0:
+ resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==}
+ dependencies:
+ micromark-util-character: 2.1.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-factory-title@2.0.0:
+ resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==}
+ dependencies:
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.1.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-factory-whitespace@2.0.0:
+ resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==}
+ dependencies:
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.1.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-util-character@2.1.0:
+ resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==}
+ dependencies:
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-util-chunked@2.0.0:
+ resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==}
+ dependencies:
+ micromark-util-symbol: 2.0.0
+ dev: false
+
+ /micromark-util-classify-character@2.0.0:
+ resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==}
+ dependencies:
+ micromark-util-character: 2.1.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-util-combine-extensions@2.0.0:
+ resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==}
+ dependencies:
+ micromark-util-chunked: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-util-decode-numeric-character-reference@2.0.1:
+ resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==}
+ dependencies:
+ micromark-util-symbol: 2.0.0
+ dev: false
+
+ /micromark-util-decode-string@2.0.0:
+ resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==}
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-util-character: 2.1.0
+ micromark-util-decode-numeric-character-reference: 2.0.1
+ micromark-util-symbol: 2.0.0
+ dev: false
+
+ /micromark-util-encode@2.0.0:
+ resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==}
+ dev: false
+
+ /micromark-util-html-tag-name@2.0.0:
+ resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==}
+ dev: false
+
+ /micromark-util-normalize-identifier@2.0.0:
+ resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==}
+ dependencies:
+ micromark-util-symbol: 2.0.0
+ dev: false
+
+ /micromark-util-resolve-all@2.0.0:
+ resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==}
+ dependencies:
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-util-sanitize-uri@2.0.0:
+ resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==}
+ dependencies:
+ micromark-util-character: 2.1.0
+ micromark-util-encode: 2.0.0
+ micromark-util-symbol: 2.0.0
+ dev: false
+
+ /micromark-util-subtokenize@2.0.1:
+ resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==}
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ dev: false
+
+ /micromark-util-symbol@2.0.0:
+ resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==}
+ dev: false
+
+ /micromark-util-types@2.0.0:
+ resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==}
+ dev: false
+
+ /micromark@4.0.0:
+ resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==}
+ dependencies:
+ '@types/debug': 4.1.12
+ debug: 4.3.4
+ decode-named-character-reference: 1.0.2
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.1
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.1.0
+ micromark-util-chunked: 2.0.0
+ micromark-util-combine-extensions: 2.0.0
+ micromark-util-decode-numeric-character-reference: 2.0.1
+ 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.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
/micromatch@3.1.10:
resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==}
engines: {node: '>=0.10.0'}
@@ -9274,17 +9417,6 @@ packages:
dependencies:
callsites: 3.1.0
- /parse-entities@1.2.2:
- resolution: {integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==}
- dependencies:
- character-entities: 1.2.4
- character-entities-legacy: 1.1.4
- character-reference-invalid: 1.1.4
- is-alphanumerical: 1.0.4
- is-decimal: 1.0.4
- is-hexadecimal: 1.0.4
- dev: false
-
/parse-filepath@1.0.2:
resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==}
engines: {node: '>=0.8'}
@@ -9309,14 +9441,16 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /parse5@5.1.1:
- resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==}
- dev: false
-
/parse5@6.0.1:
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
dev: true
+ /parse5@7.2.0:
+ resolution: {integrity: sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==}
+ dependencies:
+ entities: 4.5.0
+ dev: false
+
/pascal-case@2.0.1:
resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==}
dependencies:
@@ -9527,10 +9661,8 @@ packages:
react-is: 16.13.1
dev: true
- /property-information@5.6.0:
- resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==}
- dependencies:
- xtend: 4.0.2
+ /property-information@6.5.0:
+ resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
dev: false
/proxy-agent@6.2.2:
@@ -9750,36 +9882,33 @@ packages:
jsesc: 0.5.0
dev: true
- /rehype-raw@4.0.1:
- resolution: {integrity: sha512-g74dPCUWeB9EBfTfGF3lGOHSnZwFwN1ssc3Je9OwQO9f8yTkkAIrMqUVxT34h8zpi4ICU051tTLBZbOrzRWpxg==}
+ /rehype-raw@7.0.0:
+ resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
dependencies:
- hast-util-raw: 5.0.2
+ '@types/hast': 3.0.4
+ hast-util-raw: 9.0.4
+ vfile: 6.0.3
dev: false
- /remark-parse@7.0.1:
- resolution: {integrity: sha512-WOZLa545jYXtSy+txza6ACudKWByQac4S2DmGk+tAGO/3XnVTOxwyCIxB7nTcLlk8Aayhcuf3cV1WV6U6L7/DQ==}
+ /remark-parse@11.0.0:
+ resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
dependencies:
- collapse-white-space: 1.0.6
- is-alphabetical: 1.0.4
- is-decimal: 1.0.4
- is-whitespace-character: 1.0.4
- is-word-character: 1.0.4
- markdown-escapes: 1.0.4
- parse-entities: 1.2.2
- repeat-string: 1.6.1
- state-toggle: 1.0.3
- trim: 0.0.1
- trim-trailing-lines: 1.1.4
- unherit: 1.1.3
- unist-util-remove-position: 1.1.4
- vfile-location: 2.0.6
- xtend: 4.0.2
+ '@types/mdast': 4.0.4
+ mdast-util-from-markdown: 2.0.1
+ micromark-util-types: 2.0.0
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
dev: false
- /remark-rehype@5.0.0:
- resolution: {integrity: sha512-tgo+AeOotuh9FnGMkEPbE6C3OfdARqqSxT0H/KNGAiTwJLiDoRSm6x/ytqPZTyYSiQ/exbi/kx7k6uUvqYL1wQ==}
+ /remark-rehype@11.1.1:
+ resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==}
dependencies:
- mdast-util-to-hast: 6.0.2
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ mdast-util-to-hast: 13.2.0
+ unified: 11.0.5
+ vfile: 6.0.3
dev: false
/repeat-element@1.1.4:
@@ -10322,8 +10451,8 @@ packages:
whatwg-url: 7.1.0
dev: true
- /space-separated-tokens@1.1.5:
- resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==}
+ /space-separated-tokens@2.0.2:
+ resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
dev: false
/spdx-correct@3.1.1:
@@ -10377,10 +10506,6 @@ packages:
escape-string-regexp: 2.0.0
dev: true
- /state-toggle@1.0.3:
- resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==}
- dev: false
-
/static-extend@0.1.2:
resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
engines: {node: '>=0.10.0'}
@@ -10526,12 +10651,6 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
- /style-to-object@0.2.3:
- resolution: {integrity: sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng==}
- dependencies:
- inline-style-parser: 0.1.1
- dev: false
-
/sucrase@3.24.0:
resolution: {integrity: sha512-SevqflhW356TKEyWjFHg2e5f3eH+5rzmsMJxrVMDvZIEHh/goYrpzDGA6APEj4ME9MdGm8oNgIzi1eF3c3dDQA==}
engines: {node: '>=8'}
@@ -10777,21 +10896,12 @@ packages:
hasBin: true
dev: true
- /trim-lines@1.1.3:
- resolution: {integrity: sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA==}
- dev: false
-
- /trim-trailing-lines@1.1.4:
- resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==}
+ /trim-lines@3.0.1:
+ resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
dev: false
- /trim@0.0.1:
- resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==}
- deprecated: Use String.prototype.trim() instead
- dev: false
-
- /trough@1.0.5:
- resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==}
+ /trough@2.2.0:
+ resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
dev: false
/ts-api-utils@1.0.2(typescript@5.3.3):
@@ -10927,7 +11037,7 @@ packages:
normalize-path: 3.0.0
safe-stable-stringify: 2.4.3
tslib: 2.6.3
- typescript: 5.5.4
+ typescript: 5.6.3
dev: true
/ts-node@10.9.1(@types/node@18.17.4)(typescript@5.3.3):
@@ -11107,6 +11217,17 @@ packages:
fsevents: 2.3.3
dev: true
+ /tsx@4.19.1:
+ resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+ dependencies:
+ esbuild: 0.23.1
+ get-tsconfig: 4.7.6
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
/tsx@4.7.2:
resolution: {integrity: sha512-BCNd4kz6fz12fyrgCTEdZHGJ9fWTGeUzXmQysh0RVocDY3h4frk05ZNCXSy4kIenF7y/QnrdiVpTsyNRn6vlAw==}
engines: {node: '>=18.0.0'}
@@ -11202,12 +11323,6 @@ packages:
is-typedarray: 1.0.0
dev: true
- /typescript@5.1.6:
- resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==}
- engines: {node: '>=14.17'}
- hasBin: true
- dev: true
-
/typescript@5.2.2:
resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
engines: {node: '>=14.17'}
@@ -11219,8 +11334,8 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
- /typescript@5.5.4:
- resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
+ /typescript@5.6.3:
+ resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==}
engines: {node: '>=14.17'}
hasBin: true
dev: true
@@ -11249,8 +11364,8 @@ packages:
/undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
- /undici-types@6.13.0:
- resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==}
+ /undici-types@6.19.8:
+ resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
dev: true
/undici@5.28.3:
@@ -11260,22 +11375,16 @@ packages:
'@fastify/busboy': 2.1.0
dev: false
- /unherit@1.1.3:
- resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==}
- dependencies:
- inherits: 2.0.4
- xtend: 4.0.2
- dev: false
-
- /unified@8.4.1:
- resolution: {integrity: sha512-YPj/uIIZSO7mMIZQj/5Z3hDl4lshWYRQGs5TgUCjHTVdklUWH+O94mK5Cy77SEcmEUwGhnUcudMuH/zIwporqw==}
+ /unified@11.0.5:
+ resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
dependencies:
- '@types/unist': 2.0.10
- bail: 1.0.5
+ '@types/unist': 3.0.3
+ bail: 2.0.2
+ devlop: 1.1.0
extend: 3.0.2
- is-plain-obj: 2.1.0
- trough: 1.0.5
- vfile: 4.2.1
+ is-plain-obj: 4.1.0
+ trough: 2.2.0
+ vfile: 6.0.3
dev: false
/union-value@1.0.1:
@@ -11288,65 +11397,37 @@ packages:
set-value: 2.0.1
dev: false
- /unist-builder@1.0.4:
- resolution: {integrity: sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg==}
+ /unist-util-is@6.0.0:
+ resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
dependencies:
- object-assign: 4.1.1
+ '@types/unist': 3.0.3
dev: false
- /unist-util-generated@1.1.6:
- resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==}
- dev: false
-
- /unist-util-is@3.0.0:
- resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==}
- dev: false
-
- /unist-util-is@4.1.0:
- resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==}
- dev: false
-
- /unist-util-position@3.1.0:
- resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==}
- dev: false
-
- /unist-util-remove-position@1.1.4:
- resolution: {integrity: sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==}
+ /unist-util-position@5.0.0:
+ resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
dependencies:
- unist-util-visit: 1.4.1
+ '@types/unist': 3.0.3
dev: false
- /unist-util-stringify-position@2.0.3:
- resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
+ /unist-util-stringify-position@4.0.0:
+ resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
dependencies:
- '@types/unist': 2.0.10
+ '@types/unist': 3.0.3
dev: false
- /unist-util-visit-parents@2.1.2:
- resolution: {integrity: sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==}
+ /unist-util-visit-parents@6.0.1:
+ resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
dependencies:
- unist-util-is: 3.0.0
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.0
dev: false
- /unist-util-visit-parents@3.1.1:
- resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==}
+ /unist-util-visit@5.0.0:
+ resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
dependencies:
- '@types/unist': 2.0.10
- unist-util-is: 4.1.0
- dev: false
-
- /unist-util-visit@1.4.1:
- resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==}
- dependencies:
- unist-util-visit-parents: 2.1.2
- dev: false
-
- /unist-util-visit@2.0.0:
- resolution: {integrity: sha512-kiTpWKsF54u/78L/UU/i7lxrnqGiEWBgqCpaIZBYP0gwUC+Akq0Ajm4U8JiNIoQNfAioBdsyarnOcTEAb9mLeQ==}
- dependencies:
- '@types/unist': 2.0.10
- unist-util-is: 4.1.0
- unist-util-visit-parents: 3.1.1
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.0
+ unist-util-visit-parents: 6.0.1
dev: false
/universal-user-agent@6.0.0:
@@ -11804,24 +11885,25 @@ packages:
- encoding
dev: false
- /vfile-location@2.0.6:
- resolution: {integrity: sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==}
+ /vfile-location@5.0.3:
+ resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
+ dependencies:
+ '@types/unist': 3.0.3
+ vfile: 6.0.3
dev: false
- /vfile-message@2.0.4:
- resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==}
+ /vfile-message@4.0.2:
+ resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
dependencies:
- '@types/unist': 2.0.10
- unist-util-stringify-position: 2.0.3
+ '@types/unist': 3.0.3
+ unist-util-stringify-position: 4.0.0
dev: false
- /vfile@4.2.1:
- resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==}
+ /vfile@6.0.3:
+ resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
dependencies:
- '@types/unist': 2.0.10
- is-buffer: 2.0.5
- unist-util-stringify-position: 2.0.3
- vfile-message: 2.0.4
+ '@types/unist': 3.0.3
+ vfile-message: 4.0.2
dev: false
/vm2@3.9.19:
@@ -11884,8 +11966,8 @@ packages:
dependencies:
defaults: 1.0.4
- /web-namespaces@1.1.4:
- resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==}
+ /web-namespaces@2.0.1:
+ resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
dev: false
/webidl-conversions@3.0.1:
@@ -12128,6 +12210,6 @@ packages:
resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
dev: false
- /zwitch@1.0.5:
- resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==}
+ /zwitch@2.0.4:
+ resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
dev: false