From 4cc3aeaa4a0a697fe774322563db5c5820f12b8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Correa=20Casablanca?= Date: Sat, 30 Mar 2024 00:38:47 +0100 Subject: [PATCH] docs: create starlight docs site Signed-off-by: Andres Correa Casablanca --- .gitignore | 21 +- .moon/workspace.yml | 1 + @kindspells/astro-shield/README.md | 9 - .../e2e/fixtures/dynamic/package.json | 2 +- .../e2e/fixtures/hybrid/package.json | 2 +- .../e2e/fixtures/hybrid2/package.json | 2 +- .../e2e/fixtures/hybrid3/package.json | 2 +- .../e2e/fixtures/static/package.json | 2 +- @kindspells/astro-shield/package.json | 12 +- README.md | 19 +- docs/README.md | 3 + docs/astro.config.mjs | 64 + docs/moon.yml | 18 + docs/package.json | 21 + docs/public/favicon.svg | 1 + docs/src/assets/astro-shield.webp | Bin 0 -> 61690 bytes docs/src/content/config.ts | 6 + docs/src/content/docs/getting-started.mdx | 49 + .../content-security-policy.mdx | 60 + .../subresource-integrity/middleware.mdx | 145 ++ .../subresource-integrity/static-sites.mdx | 177 ++ docs/src/content/docs/index.mdx | 38 + .../content/docs/other/known-limitations.mdx | 39 + docs/src/env.d.ts | 2 + docs/tsconfig.json | 3 + pnpm-lock.yaml | 1451 +++++++++++++++-- pnpm-workspace.yaml | 1 + 27 files changed, 1991 insertions(+), 159 deletions(-) create mode 100644 docs/README.md create mode 100644 docs/astro.config.mjs create mode 100644 docs/moon.yml create mode 100644 docs/package.json create mode 100644 docs/public/favicon.svg create mode 100644 docs/src/assets/astro-shield.webp create mode 100644 docs/src/content/config.ts create mode 100644 docs/src/content/docs/getting-started.mdx create mode 100644 docs/src/content/docs/guides/security-headers/content-security-policy.mdx create mode 100644 docs/src/content/docs/guides/subresource-integrity/middleware.mdx create mode 100644 docs/src/content/docs/guides/subresource-integrity/static-sites.mdx create mode 100644 docs/src/content/docs/index.mdx create mode 100644 docs/src/content/docs/other/known-limitations.mdx create mode 100644 docs/src/env.d.ts create mode 100644 docs/tsconfig.json diff --git a/.gitignore b/.gitignore index 864b71b..0de08db 100644 --- a/.gitignore +++ b/.gitignore @@ -2,14 +2,31 @@ # # SPDX-License-Identifier: MIT +# coverage **/coverage/ **/coverage-e2e/ **/coverage-unit/ + +# vendored dependencies +**/node_modules/ + +# build & cache artifacts +**/.astro/ **/dist/ -**/tests/playground/*.mjs **/generated/ -**/node_modules/ + +# testing artifacts +**/tests/playground/*.mjs # moon .moon/cache .moon/docker + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# macOS-specific files +.DS_Store diff --git a/.moon/workspace.yml b/.moon/workspace.yml index 8491a48..73089ce 100644 --- a/.moon/workspace.yml +++ b/.moon/workspace.yml @@ -13,6 +13,7 @@ projects: - '@kindspells/astro-shield/e2e/fixtures/*' sources: astro-shield: '@kindspells/astro-shield' + docs: 'docs' vcs: defaultBranch: 'main' diff --git a/@kindspells/astro-shield/README.md b/@kindspells/astro-shield/README.md index b0adf32..a13ed38 100644 --- a/@kindspells/astro-shield/README.md +++ b/@kindspells/astro-shield/README.md @@ -225,15 +225,6 @@ export const perPageSriHashes = This means that, for now, it is advisable to add `'self'` to the `script-src` directive (adding `'strict-dynamic'` does not help either). -## Some guarantees for peace of mind - -Astro generates files in a very deterministic way, which means that for both JS -and CSS files: - - Their pseudo-random names are stable across different builds - - The files' contents do not change from build to build (unless, of course, we - change them on purpose), so their hashes are stable as well (this is nice - for hot reloading, which does not trigger the logic of this integration). - ## Other Relevant Guidelines - [Code of Conduct](https://github.com/KindSpells/astro-shield?tab=coc-ov-file) diff --git a/@kindspells/astro-shield/e2e/fixtures/dynamic/package.json b/@kindspells/astro-shield/e2e/fixtures/dynamic/package.json index 6240763..3cd4bfd 100644 --- a/@kindspells/astro-shield/e2e/fixtures/dynamic/package.json +++ b/@kindspells/astro-shield/e2e/fixtures/dynamic/package.json @@ -11,7 +11,7 @@ "license": "MIT", "dependencies": { "@astrojs/node": "^8.2.5", - "astro": "^4.5.10" + "astro": "^4.5.12" }, "devDependencies": { "@kindspells/astro-shield": "workspace:*" diff --git a/@kindspells/astro-shield/e2e/fixtures/hybrid/package.json b/@kindspells/astro-shield/e2e/fixtures/hybrid/package.json index ccef18e..b99b3a7 100644 --- a/@kindspells/astro-shield/e2e/fixtures/hybrid/package.json +++ b/@kindspells/astro-shield/e2e/fixtures/hybrid/package.json @@ -9,7 +9,7 @@ "license": "MIT", "dependencies": { "@astrojs/node": "^8.2.5", - "astro": "^4.5.10" + "astro": "^4.5.12" }, "devDependencies": { "@kindspells/astro-shield": "workspace:*" diff --git a/@kindspells/astro-shield/e2e/fixtures/hybrid2/package.json b/@kindspells/astro-shield/e2e/fixtures/hybrid2/package.json index cb5536c..f118259 100644 --- a/@kindspells/astro-shield/e2e/fixtures/hybrid2/package.json +++ b/@kindspells/astro-shield/e2e/fixtures/hybrid2/package.json @@ -9,7 +9,7 @@ "license": "MIT", "dependencies": { "@astrojs/node": "^8.2.5", - "astro": "^4.5.10" + "astro": "^4.5.12" }, "devDependencies": { "@kindspells/astro-shield": "workspace:*" diff --git a/@kindspells/astro-shield/e2e/fixtures/hybrid3/package.json b/@kindspells/astro-shield/e2e/fixtures/hybrid3/package.json index 030139d..7f30274 100644 --- a/@kindspells/astro-shield/e2e/fixtures/hybrid3/package.json +++ b/@kindspells/astro-shield/e2e/fixtures/hybrid3/package.json @@ -9,7 +9,7 @@ "license": "MIT", "dependencies": { "@astrojs/node": "^8.2.5", - "astro": "^4.5.10" + "astro": "^4.5.12" }, "devDependencies": { "@kindspells/astro-shield": "workspace:*" diff --git a/@kindspells/astro-shield/e2e/fixtures/static/package.json b/@kindspells/astro-shield/e2e/fixtures/static/package.json index 1daaa52..9b7e458 100644 --- a/@kindspells/astro-shield/e2e/fixtures/static/package.json +++ b/@kindspells/astro-shield/e2e/fixtures/static/package.json @@ -8,7 +8,7 @@ }, "license": "MIT", "dependencies": { - "astro": "^4.5.10" + "astro": "^4.5.12" }, "devDependencies": { "@kindspells/astro-shield": "workspace:*" diff --git a/@kindspells/astro-shield/package.json b/@kindspells/astro-shield/package.json index 4cf351c..e5a85c3 100644 --- a/@kindspells/astro-shield/package.json +++ b/@kindspells/astro-shield/package.json @@ -24,7 +24,9 @@ "imports": { "#as/*": "./src/*" }, - "files": ["src/*"], + "files": [ + "src/*" + ], "scripts": { "format": "biome format --write .", "lint": "moon run lint", @@ -61,16 +63,16 @@ "devDependencies": { "@types/node": "^20.11.30", "@vitest/coverage-v8": "^1.4.0", - "astro": "^4.5.10", + "astro": "^4.5.12", "typescript": "^5.4.3", - "vite": "^5.2.6" + "vite": "^5.2.7" }, "repository": { "type": "git", - "url": "git+https://github.com/KindSpells/astro-shield.git" + "url": "git+https://github.com/kindspells/astro-shield.git" }, "homepage": "https://github.com/kindspells/astro-shield?tab=readme-ov-file#readme", - "bugs": "https://github.com/KindSpells/astro-shield/issues", + "bugs": "https://github.com/kindspells/astro-shield/issues", "funding": [ { "type": "opencollective", diff --git a/README.md b/README.md index b0adf32..491e035 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,16 @@ export const perPageSriHashes = ], }, }) + +export const perResourceSriHashes = { + scripts: /** @type {Record} */ ({ + '/code.js': 'sha256-+aSouJX5t2z1jleTbCvA9DS7+ag/F4e4ZpB/adun4Sg=', + }), + styles: /** @type {Record} */ ({ + '/_astro/index.BA1ZV6fH.css': + 'sha256-iwd3GNfA+kImEozakD3ZZQSZ8VVb3MFBOhJH6dEMnDE=', + }), +} ``` > [!IMPORTANT] @@ -225,15 +235,6 @@ export const perPageSriHashes = This means that, for now, it is advisable to add `'self'` to the `script-src` directive (adding `'strict-dynamic'` does not help either). -## Some guarantees for peace of mind - -Astro generates files in a very deterministic way, which means that for both JS -and CSS files: - - Their pseudo-random names are stable across different builds - - The files' contents do not change from build to build (unless, of course, we - change them on purpose), so their hashes are stable as well (this is nice - for hot reloading, which does not trigger the logic of this integration). - ## Other Relevant Guidelines - [Code of Conduct](https://github.com/KindSpells/astro-shield?tab=coc-ov-file) diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..3d3619f --- /dev/null +++ b/docs/README.md @@ -0,0 +1,3 @@ +# Astro-Shield Documentation Website + +Just a documentation website. diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs new file mode 100644 index 0000000..47b0c2b --- /dev/null +++ b/docs/astro.config.mjs @@ -0,0 +1,64 @@ +import { defineConfig, passthroughImageService } from 'astro/config' +import starlight from '@astrojs/starlight' + +// https://astro.build/config +export default defineConfig({ + image: { + service: passthroughImageService(), + }, + integrations: [ + starlight({ + title: 'Astro-Shield Docs', + defaultLocale: 'en', + locales: { + root: { + label: 'English', + lang: 'en', + }, + }, + social: { + github: 'https://github.com/kindspells/astro-shield', + }, + sidebar: [ + { + label: 'Start Here', + items: [{ label: 'Getting Started', link: '/getting-started/' }], + }, + { + label: 'Guides', + items: [ + { + label: 'Subresource Integrity', + autogenerate: { + directory: 'guides/subresource-integrity', + }, + }, + { + label: 'Security Headers', + autogenerate: { + directory: 'guides/security-headers', + }, + } + ], + }, + { + label: 'Other', + items: [ + { + label: 'Known Limitations', + link: '/other/known-limitations/', + }, + { + label: 'Contributing', + link: 'https://github.com/kindspells/astro-shield/blob/main/CONTRIBUTING.md', + }, + ] + }, + // { + // label: 'Reference', + // autogenerate: { directory: 'reference' }, + // }, + ], + }), + ], +}) diff --git a/docs/moon.yml b/docs/moon.yml new file mode 100644 index 0000000..9053bfb --- /dev/null +++ b/docs/moon.yml @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2024 KindSpells Labs S.L. +# +# SPDX-License-Identifier: MIT + +type: 'application' +platform: 'node' + +tasks: + build: + command: 'astro check && astro build' + inputs: + - 'public/**/*' + - 'src/**/*' + - 'astro.config.mjs' + - 'package.json' + outputs: + - '.astro/**/*' + - 'dist/**/*' diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 0000000..ac952bd --- /dev/null +++ b/docs/package.json @@ -0,0 +1,21 @@ +{ + "name": "@kindspells/astro-shield-docs", + "type": "module", + "version": "1.4.0", + "scripts": { + "dev": "astro dev", + "start": "astro dev", + "build": "astro check && astro build", + "preview": "astro preview", + "astro": "astro" + }, + "dependencies": { + "sharp": "0.32.6" + }, + "devDependencies": { + "@astrojs/check": "^0.5.10", + "@astrojs/starlight": "^0.21.2", + "astro": "^4.5.12", + "typescript": "^5.4.3" + } +} diff --git a/docs/public/favicon.svg b/docs/public/favicon.svg new file mode 100644 index 0000000..cba5ac1 --- /dev/null +++ b/docs/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/src/assets/astro-shield.webp b/docs/src/assets/astro-shield.webp new file mode 100644 index 0000000000000000000000000000000000000000..d76784e8e007f6811e341dd01b5387f016ab4a55 GIT binary patch literal 61690 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�N;LBD~37}u8d%#{W!hU8DL{Xx$S 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%0A_<+L<^S@M4oiludq=;UKtBCd?gM|eMUk^51hovg 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 literal 0 HcmV?d00001 diff --git a/docs/src/content/config.ts b/docs/src/content/config.ts new file mode 100644 index 0000000..45f60b0 --- /dev/null +++ b/docs/src/content/config.ts @@ -0,0 +1,6 @@ +import { defineCollection } from 'astro:content'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ schema: docsSchema() }), +}; diff --git a/docs/src/content/docs/getting-started.mdx b/docs/src/content/docs/getting-started.mdx new file mode 100644 index 0000000..18866ae --- /dev/null +++ b/docs/src/content/docs/getting-started.mdx @@ -0,0 +1,49 @@ +--- +title: Getting Started +description: Get started protecting your Astro sites with Astro-Shield. +--- + +## Introduction + +Astro-Shield will help you enhance the security of your Astro site by allowing +you to apply many security best practices, such as: +- [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) +- [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) + + +## How to install + +import { Code, Tabs, TabItem } from '@astrojs/starlight/components'; + +To install, run the following command in your terminal: + + + + + + + + + + + + + +## Enabling the integration + +In your `astro.config.mjs` file, import the integration and add it to the +integrations array: + + diff --git a/docs/src/content/docs/guides/security-headers/content-security-policy.mdx b/docs/src/content/docs/guides/security-headers/content-security-policy.mdx new file mode 100644 index 0000000..5a626ba --- /dev/null +++ b/docs/src/content/docs/guides/security-headers/content-security-policy.mdx @@ -0,0 +1,60 @@ +--- +title: Content-Security-Policy (CSP) +description: How to configure the Content-Security-Policy headers of your website with Astro-Shield +--- + +import { Aside, Code } from '@astrojs/starlight/components'; + +To enable the generation of Content-Security-Policy headers for your SSR +content, you have to set the option `securityHeaders.contentSecurityPolicy` to +a non-null object. + +If you want more control, then you can set other nested options, such as +`cspDirectives`. + + + + diff --git a/docs/src/content/docs/guides/subresource-integrity/middleware.mdx b/docs/src/content/docs/guides/subresource-integrity/middleware.mdx new file mode 100644 index 0000000..52f868a --- /dev/null +++ b/docs/src/content/docs/guides/subresource-integrity/middleware.mdx @@ -0,0 +1,145 @@ +--- +title: SRI for SSR Content +description: How to enable Subresource Integrity (SRI) for your Server-Side-Rendered (SSR) content in Astro. +sidebar: + order: 2 +--- + +import { Aside, Code } from '@astrojs/starlight/components'; + +By default, Astro-Shield does not enable SRI for SSR (Server-Side-Rendered) +content, but you can easily enable it by setting the `sri.enableMiddleware` +option to `true` in your Astro config file. + + + + + +## Reinforcing security for dynamic content + +### Allow Lists + +Astro-Shield will block any cross-origin resource that it isn't explicitly +allowed. This is because doing otherwise could open the door to a variety of +security vulnerabilities caused by loading untrusted content and marking it as +safe. + +We can define a list of allowed resource URLs like in the example below: + + + + + +### Blocking Inline Resources + +Although Astro-Shield does not block inline resources by default, it might be +a good idea to block them in certain cases to prevent +[XSS attacks](https://developer.mozilla.org/en-US/docs/Web/Security/Types_of_attacks#cross-site_scripting_xss). +You can do this by setting the options `sri.allowInlineScripts` and +`sri.allowInlineStyles` to `false` or `'static'` (this one allows inline +resources only in static content). + + + + diff --git a/docs/src/content/docs/guides/subresource-integrity/static-sites.mdx b/docs/src/content/docs/guides/subresource-integrity/static-sites.mdx new file mode 100644 index 0000000..94d0feb --- /dev/null +++ b/docs/src/content/docs/guides/subresource-integrity/static-sites.mdx @@ -0,0 +1,177 @@ +--- +title: SRI for Statically Generated Sites +description: How to enable Subresource Integrity (SRI) for your static sites +sidebar: + order: 1 +--- + +import { Code, Tabs, TabItem } from '@astrojs/starlight/components'; + +SRI is enabled by default for statically generated sites. This means that if it +encounters JavaScript scripts or CSS stylesheets then it will automatically +calculate their respective SRI hashes and set them into the `integrity` +attribute of ` +`} +/> + +into + +console.log("Hello World!") +`} +/> + + + It will transform this + +`} +/> + +into + + +`} +/> + + + It will transform this + +`} +/> + +into + + +`} +/> + +Notice how it also adds the `crossorigin` attribute to mitigate the risk of leaking credentials to third-party servers. + + + +## Generating SRI hashes module for external scripts + +In some cases, you may need some external scripts to access the generated SRI +hashes (e.g. to configure the headers of a CDN). You can do this by setting the +`sri.hashesModule` property with the path of the module that will export the +generated hashes. + +Example: + + +Once you run `astro build`, the generated module will look like this: + + diff --git a/docs/src/content/docs/index.mdx b/docs/src/content/docs/index.mdx new file mode 100644 index 0000000..79911d5 --- /dev/null +++ b/docs/src/content/docs/index.mdx @@ -0,0 +1,38 @@ +--- +title: Welcome to Astro-Shield +description: Protect your Astro sites with Astro-Shield. +template: splash +hero: + tagline: Start protecting your site with Astro-Shield! + image: + file: ../../assets/astro-shield.webp + actions: + - text: Getting Started + link: /getting-started/ + icon: right-arrow + variant: primary + - text: Learn about Astro integrations + link: https://docs.astro.build/en/guides/integrations-guide/ + icon: external +--- + +import { Card, CardGrid } from '@astrojs/starlight/components'; + +## What it does + + + + Astro-Shield takes care of calculating the SRI hashes and setting the + `integrity` attribute on the script and style tags for you. + + + Astro-Shield can automatically set the `Content-Security-Policy` headers + for you. + + {/* + Blablablah... + + + Blablablah... + */} + diff --git a/docs/src/content/docs/other/known-limitations.mdx b/docs/src/content/docs/other/known-limitations.mdx new file mode 100644 index 0000000..e45e57f --- /dev/null +++ b/docs/src/content/docs/other/known-limitations.mdx @@ -0,0 +1,39 @@ +--- +title: Known Limitations +description: Known limitations of the Astro-Shield integration. +--- + +## Double Build + +⚠️ In case your SSR (dynamic) pages refer to static `.js` or `.css` files, and +any of these resources change, then you might have to run the `astro build` +command **two consecutive times** (Astro-Shield will emit a warning message +telling you about it in case it is needed). + +We might try to improve this in the future, but there are some technical issues +that make it hard to solve this problem in an elegant way. + +## Missing File Watcher + +_For now_, Astro-Shield does not provide file watcher logic that would +automatically regenerate the SRI hashes when files change. + +This means that if you are running Astro in development mode (`astro dev`), you +might have to manually run `astro build` to avoid having stale SRI hashes that +break your local version of the site. + +## SRI & CSP spec limitations + +When a script is loaded with a _static_ import (e.g. +`import { foo } from 'https://origin.com/script.js'`) rather than directly +included with a ``), having +its hash present in the `script-src` CSP directive is not enough to ensure that +the browser will accept it (the browser also wants you to provide information +that pairs the hash with a specific resource). + +This, in itself, is not a limitation of Astro-Shield, but rather a limitation of +the combination of current SRI and CSP specs. + +Because of that, for now, it is advisable to add `'self'` to the `script-src` +directive (Astro-Shield does it for you). diff --git a/docs/src/env.d.ts b/docs/src/env.d.ts new file mode 100644 index 0000000..acef35f --- /dev/null +++ b/docs/src/env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/docs/tsconfig.json b/docs/tsconfig.json new file mode 100644 index 0000000..12984ea --- /dev/null +++ b/docs/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "astro/tsconfigs/strictest" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f865268..203191f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,23 +30,23 @@ importers: specifier: ^1.4.0 version: 1.4.0(vitest@1.4.0) astro: - specifier: ^4.5.10 - version: 4.5.10(@types/node@20.11.30)(typescript@5.4.3) + specifier: ^4.5.12 + version: 4.5.12(@types/node@20.11.30)(typescript@5.4.3) typescript: specifier: ^5.4.3 version: 5.4.3 vite: - specifier: ^5.2.6 - version: 5.2.6(@types/node@20.11.30) + specifier: ^5.2.7 + version: 5.2.7(@types/node@20.11.30) '@kindspells/astro-shield/e2e/fixtures/dynamic': dependencies: '@astrojs/node': specifier: ^8.2.5 - version: 8.2.5(astro@4.5.10) + version: 8.2.5(astro@4.5.12) astro: - specifier: ^4.5.10 - version: 4.5.10(@types/node@20.11.30)(typescript@5.4.3) + specifier: ^4.5.12 + version: 4.5.12(@types/node@20.11.30)(typescript@5.4.3) devDependencies: '@kindspells/astro-shield': specifier: workspace:* @@ -56,10 +56,10 @@ importers: dependencies: '@astrojs/node': specifier: ^8.2.5 - version: 8.2.5(astro@4.5.10) + version: 8.2.5(astro@4.5.12) astro: - specifier: ^4.5.10 - version: 4.5.10(@types/node@20.11.30)(typescript@5.4.3) + specifier: ^4.5.12 + version: 4.5.12(@types/node@20.11.30)(typescript@5.4.3) devDependencies: '@kindspells/astro-shield': specifier: workspace:* @@ -69,10 +69,10 @@ importers: dependencies: '@astrojs/node': specifier: ^8.2.5 - version: 8.2.5(astro@4.5.10) + version: 8.2.5(astro@4.5.12) astro: - specifier: ^4.5.10 - version: 4.5.10(@types/node@20.11.30)(typescript@5.4.3) + specifier: ^4.5.12 + version: 4.5.12(@types/node@20.11.30)(typescript@5.4.3) devDependencies: '@kindspells/astro-shield': specifier: workspace:* @@ -82,10 +82,10 @@ importers: dependencies: '@astrojs/node': specifier: ^8.2.5 - version: 8.2.5(astro@4.5.10) + version: 8.2.5(astro@4.5.12) astro: - specifier: ^4.5.10 - version: 4.5.10(@types/node@20.11.30)(typescript@5.4.3) + specifier: ^4.5.12 + version: 4.5.12(@types/node@20.11.30)(typescript@5.4.3) devDependencies: '@kindspells/astro-shield': specifier: workspace:* @@ -94,13 +94,32 @@ importers: '@kindspells/astro-shield/e2e/fixtures/static': dependencies: astro: - specifier: ^4.5.10 - version: 4.5.10(@types/node@20.11.30)(typescript@5.4.3) + specifier: ^4.5.12 + version: 4.5.12(@types/node@20.11.30)(typescript@5.4.3) devDependencies: '@kindspells/astro-shield': specifier: workspace:* version: link:../../.. + docs: + dependencies: + sharp: + specifier: 0.32.6 + version: 0.32.6 + devDependencies: + '@astrojs/check': + specifier: ^0.5.10 + version: 0.5.10(typescript@5.4.3) + '@astrojs/starlight': + specifier: ^0.21.2 + version: 0.21.2(astro@4.5.12) + astro: + specifier: ^4.5.12 + version: 4.5.12(@types/node@20.11.30)(typescript@5.4.3) + typescript: + specifier: ^5.4.3 + version: 5.4.3 + packages: /@ampproject/remapping@2.3.0: @@ -110,11 +129,60 @@ packages: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + /@astrojs/check@0.5.10(typescript@5.4.3): + resolution: {integrity: sha512-vliHXM9cu/viGeKiksUM4mXfO816ohWtawTl2ADPgTsd4nUMjFiyAl7xFZhF34yy4hq4qf7jvK1F2PlR3b5I5w==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + dependencies: + '@astrojs/language-server': 2.8.4(typescript@5.4.3) + chokidar: 3.6.0 + fast-glob: 3.3.2 + kleur: 4.1.5 + typescript: 5.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - prettier + - prettier-plugin-astro + dev: true + /@astrojs/compiler@2.7.0: resolution: {integrity: sha512-XpC8MAaWjD1ff6/IfkRq/5k1EFj6zhCNqXRd5J43SVJEBj/Bsmizkm8N0xOYscGcDFQkRgEw6/eKnI5x/1l6aA==} - /@astrojs/internal-helpers@0.3.0: - resolution: {integrity: sha512-tGmHvrhpzuz0JBHaJX8GywN9g4rldVNHtkoVDC3m/DdzBO70jGoVuc0uuNVglRYnsdwkbG0K02Iw3nOOR3/Y4g==} + /@astrojs/internal-helpers@0.4.0: + resolution: {integrity: sha512-6B13lz5n6BrbTqCTwhXjJXuR1sqiX/H6rTxzlXx+lN1NnV4jgnq/KJldCQaUWJzPL5SiWahQyinxAbxQtwgPHA==} + + /@astrojs/language-server@2.8.4(typescript@5.4.3): + resolution: {integrity: sha512-sJH5vGTBkhgA8+hdhzX78UUp4cFz4Mt7xkEkevD188OS5bDMkaue6hK+dtXWM47mnrXFveXA2u38K7S+5+IRjA==} + hasBin: true + peerDependencies: + prettier: ^3.0.0 + prettier-plugin-astro: '>=0.11.0' + peerDependenciesMeta: + prettier: + optional: true + prettier-plugin-astro: + optional: true + dependencies: + '@astrojs/compiler': 2.7.0 + '@jridgewell/sourcemap-codec': 1.4.15 + '@volar/kit': 2.1.6(typescript@5.4.3) + '@volar/language-core': 2.1.6 + '@volar/language-server': 2.1.6 + '@volar/language-service': 2.1.6 + '@volar/typescript': 2.1.6 + fast-glob: 3.3.2 + volar-service-css: 0.0.34(@volar/language-service@2.1.6) + volar-service-emmet: 0.0.34(@volar/language-service@2.1.6) + volar-service-html: 0.0.34(@volar/language-service@2.1.6) + volar-service-prettier: 0.0.34(@volar/language-service@2.1.6) + volar-service-typescript: 0.0.34(@volar/language-service@2.1.6) + volar-service-typescript-twoslash-queries: 0.0.34(@volar/language-service@2.1.6) + vscode-html-languageservice: 5.2.0 + vscode-uri: 3.0.8 + transitivePeerDependencies: + - typescript + dev: true /@astrojs/markdown-remark@4.3.2: resolution: {integrity: sha512-4Oa4VaYiBd0MatB+rWIU/0A8pZH/sK3c2QkRYb+OO2lPl+qzevJtWaZY8hAQc4qurIOlRdn6B6ofDAGhWw+DSg==} @@ -140,12 +208,38 @@ packages: transitivePeerDependencies: - supports-color - /@astrojs/node@8.2.5(astro@4.5.10): + /@astrojs/mdx@2.2.2(astro@4.5.12): + resolution: {integrity: sha512-5SIFtOctC813HFyqJwBf5TBvlT9sbiOOv+bdvzAoiBSab95dC7PZhss22EvUEx+897c81YoIZ4F9fg4ZkxBFIw==} + engines: {node: '>=18.14.1'} + peerDependencies: + astro: ^4.0.0 + dependencies: + '@astrojs/markdown-remark': 4.3.2 + '@mdx-js/mdx': 3.0.1 + acorn: 8.11.3 + astro: 4.5.12(@types/node@20.11.30)(typescript@5.4.3) + es-module-lexer: 1.5.0 + estree-util-visit: 2.0.0 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + hast-util-to-html: 9.0.0 + kleur: 4.1.5 + rehype-raw: 7.0.0 + remark-gfm: 4.0.0 + remark-smartypants: 2.1.0 + source-map: 0.7.4 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@astrojs/node@8.2.5(astro@4.5.12): resolution: {integrity: sha512-IdVD4dBNyg+ScmCATZ0FM7vNLAHq0TSdiJ3LpR4jcWIUhpN1ps5Jg+9CfzMaLmCCe/SJUZejK5EnzqUJdnGYyg==} peerDependencies: astro: ^4.2.0 dependencies: - astro: 4.5.10(@types/node@20.11.30)(typescript@5.4.3) + astro: 4.5.12(@types/node@20.11.30)(typescript@5.4.3) send: 0.18.0 server-destroy: 1.0.1 transitivePeerDependencies: @@ -158,6 +252,43 @@ packages: dependencies: prismjs: 1.29.0 + /@astrojs/sitemap@3.1.2: + resolution: {integrity: sha512-FxOJldIl5ltZ5CNjocQxHkAO9orwHBjqtaU28o4smobp9vowS0nbGp+I9CrPxkzWdl1crSDm9vjL9tnvG1DSug==} + dependencies: + sitemap: 7.1.1 + zod: 3.22.4 + dev: true + + /@astrojs/starlight@0.21.2(astro@4.5.12): + resolution: {integrity: sha512-ziDfrbhBjw/+HwMITk6yz7SbkQKQJZY9GlaPHntSPq4kYs+b2ru3toIxj2l3T9LUFtUpNWHkj+C1wJTmfLZfaw==} + peerDependencies: + astro: ^4.2.7 + dependencies: + '@astrojs/mdx': 2.2.2(astro@4.5.12) + '@astrojs/sitemap': 3.1.2 + '@pagefind/default-ui': 1.0.4 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + astro: 4.5.12(@types/node@20.11.30)(typescript@5.4.3) + astro-expressive-code: 0.33.5(astro@4.5.12) + bcp-47: 2.1.0 + hast-util-from-html: 2.0.1 + hast-util-select: 6.0.2 + hast-util-to-string: 3.0.0 + hastscript: 8.0.0 + mdast-util-directive: 3.0.0 + mdast-util-to-markdown: 2.1.0 + pagefind: 1.0.4 + rehype: 13.0.1 + remark-directive: 3.0.0 + unified: 11.0.4 + unist-util-remove: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: true + /@astrojs/telemetry@3.0.4: resolution: {integrity: sha512-A+0c7k/Xy293xx6odsYZuXiaHO0PL+bnDoXOc47sGDF5ffIKdKQGRPFl2NMlCF4L0NqN4Ynbgnaip+pPF0s7pQ==} engines: {node: '>=18.14.1'} @@ -467,6 +598,27 @@ packages: dev: true optional: true + /@ctrl/tinycolor@3.6.1: + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + dev: true + + /@emmetio/abbreviation@2.3.3: + resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} + dependencies: + '@emmetio/scanner': 1.0.4 + dev: true + + /@emmetio/css-abbreviation@2.1.8: + resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} + dependencies: + '@emmetio/scanner': 1.0.4 + dev: true + + /@emmetio/scanner@1.0.4: + resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} + dev: true + /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -835,6 +987,38 @@ packages: requiresBuild: true optional: true + /@expressive-code/core@0.33.5: + resolution: {integrity: sha512-KL0EkKAvd7SSIQL3ZIP19xqe4xNjBaQYNvcJC6RmoBUnQpvxaJNFwRxCBEF/X0ftJEMaSG7WTrabZ9c/zFeqmA==} + dependencies: + '@ctrl/tinycolor': 3.6.1 + hast-util-to-html: 8.0.4 + hastscript: 7.2.0 + postcss: 8.4.38 + postcss-nested: 6.0.1(postcss@8.4.38) + dev: true + + /@expressive-code/plugin-frames@0.33.5: + resolution: {integrity: sha512-lFt/gbnZscBSxHovg4XiWohp5nrxk4McS6RGABdj6+0gJcX8/YrFTM23GKBIkaDePxdDidVY0jQYGYDL/RrQHw==} + dependencies: + '@expressive-code/core': 0.33.5 + hastscript: 7.2.0 + dev: true + + /@expressive-code/plugin-shiki@0.33.5: + resolution: {integrity: sha512-LWgttQTUrIPE1X+Lya1qFWiX47tH2AS2hkbj/cZoWkdiSjn6zUvtTypK/2Xn6Rgn6z6ClzpgHvkXRqFn7nAB4A==} + dependencies: + '@expressive-code/core': 0.33.5 + shiki: 1.2.1 + dev: true + + /@expressive-code/plugin-text-markers@0.33.5: + resolution: {integrity: sha512-JxSHL1MGrJAPNaUMjFXex3K+9NJDbfew9H6PmX8LQ+fm9VNQdtBYTAz/x7nqOk7bkTrtAZK5RfDqUfb8U5M+2A==} + dependencies: + '@expressive-code/core': 0.33.5 + hastscript: 7.2.0 + unist-util-visit-parents: 5.1.3 + dev: true + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} @@ -872,6 +1056,36 @@ packages: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 + /@mdx-js/mdx@3.0.1: + resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.12 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-build-jsx: 3.0.1 + estree-util-is-identifier-name: 3.0.0 + estree-util-to-js: 2.0.0 + estree-walker: 3.0.3 + hast-util-to-estree: 3.1.0 + hast-util-to-jsx-runtime: 2.3.0 + markdown-extensions: 2.0.0 + periscopic: 3.1.0 + remark-mdx: 3.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.0 + source-map: 0.7.4 + unified: 11.0.4 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: true + /@moonrepo/cli@1.23.1: resolution: {integrity: sha512-xSnhCCIXvm3A+WNAXljQgmkVgSjQ8toaOxTMB5LfwYl8ECA2nc1Yyl10IjlnnAlTeHnjAk8oZc2s/KdqGrQW2g==} hasBin: true @@ -962,99 +1176,150 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - /@rollup/rollup-android-arm-eabi@4.13.1: - resolution: {integrity: sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==} + /@pagefind/darwin-arm64@1.0.4: + resolution: {integrity: sha512-2OcthvceX2xhm5XbgOmW+lT45oLuHqCmvFeFtxh1gsuP5cO8vcD8ZH8Laj4pXQFCcK6eAdSShx+Ztx/LsQWZFQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@pagefind/darwin-x64@1.0.4: + resolution: {integrity: sha512-xkdvp0D9Ld/ZKsjo/y1bgfhTEU72ITimd2PMMQtts7jf6JPIOJbsiErCvm37m/qMFuPGEq/8d+fZ4pydOj08HQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@pagefind/default-ui@1.0.4: + resolution: {integrity: sha512-edkcaPSKq67C49Vehjo+LQCpT615v4d7JRhfGzFPccePvdklaL+VXrfghN/uIfsdoG+HoLI1PcYy2iFcB9CTkw==} + dev: true + + /@pagefind/linux-arm64@1.0.4: + resolution: {integrity: sha512-jGBrcCzIrMnNxLKVtogaQyajVfTAXM59KlBEwg6vTn8NW4fQ6nuFbbhlG4dTIsaamjEM5e8ZBEAKZfTB/qd9xw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@pagefind/linux-x64@1.0.4: + resolution: {integrity: sha512-LIn/QcvcEtLEBqKe5vpSbSC2O3fvqbRCWOTIklslqSORisCsvzsWbP6j+LYxE9q0oWIfkdMoWV1vrE/oCKRxHg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@pagefind/windows-x64@1.0.4: + resolution: {integrity: sha512-QlBCVeZfj9fc9sbUgdOz76ZDbeK4xZihOBAFqGuRJeChfM8pnVeH9iqSnXgO3+m9oITugTf7PicyRUFAG76xeQ==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm-eabi@4.13.2: + resolution: {integrity: sha512-3XFIDKWMFZrMnao1mJhnOT1h2g0169Os848NhhmGweEcfJ4rCi+3yMCOLG4zA61rbJdkcrM/DjVZm9Hg5p5w7g==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.13.1: - resolution: {integrity: sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==} + /@rollup/rollup-android-arm64@4.13.2: + resolution: {integrity: sha512-GdxxXbAuM7Y/YQM9/TwwP+L0omeE/lJAR1J+olu36c3LqqZEBdsIWeQ91KBe6nxwOnb06Xh7JS2U5ooWU5/LgQ==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.13.1: - resolution: {integrity: sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==} + /@rollup/rollup-darwin-arm64@4.13.2: + resolution: {integrity: sha512-mCMlpzlBgOTdaFs83I4XRr8wNPveJiJX1RLfv4hggyIVhfB5mJfN4P8Z6yKh+oE4Luz+qq1P3kVdWrCKcMYrrA==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.13.1: - resolution: {integrity: sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==} + /@rollup/rollup-darwin-x64@4.13.2: + resolution: {integrity: sha512-yUoEvnH0FBef/NbB1u6d3HNGyruAKnN74LrPAfDQL3O32e3k3OSfLrPgSJmgb3PJrBZWfPyt6m4ZhAFa2nZp2A==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.13.1: - resolution: {integrity: sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==} + /@rollup/rollup-linux-arm-gnueabihf@4.13.2: + resolution: {integrity: sha512-GYbLs5ErswU/Xs7aGXqzc3RrdEjKdmoCrgzhJWyFL0r5fL3qd1NPcDKDowDnmcoSiGJeU68/Vy+OMUluRxPiLQ==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.13.1: - resolution: {integrity: sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==} + /@rollup/rollup-linux-arm64-gnu@4.13.2: + resolution: {integrity: sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.13.1: - resolution: {integrity: sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==} + /@rollup/rollup-linux-arm64-musl@4.13.2: + resolution: {integrity: sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.13.1: - resolution: {integrity: sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==} + /@rollup/rollup-linux-powerpc64le-gnu@4.13.2: + resolution: {integrity: sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ==} + cpu: [ppc64le] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.13.2: + resolution: {integrity: sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw==} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.13.1: - resolution: {integrity: sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==} + /@rollup/rollup-linux-s390x-gnu@4.13.2: + resolution: {integrity: sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg==} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.13.1: - resolution: {integrity: sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==} + /@rollup/rollup-linux-x64-gnu@4.13.2: + resolution: {integrity: sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.13.1: - resolution: {integrity: sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==} + /@rollup/rollup-linux-x64-musl@4.13.2: + resolution: {integrity: sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.13.1: - resolution: {integrity: sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==} + /@rollup/rollup-win32-arm64-msvc@4.13.2: + resolution: {integrity: sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.13.1: - resolution: {integrity: sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==} + /@rollup/rollup-win32-ia32-msvc@4.13.2: + resolution: {integrity: sha512-2FSsE9aQ6OWD20E498NYKEQLneShWes0NGMPQwxWOdws35qQXH+FplabOSP5zEe1pVjurSDOGEVCE2agFwSEsw==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.13.1: - resolution: {integrity: sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==} + /@rollup/rollup-win32-x64-msvc@4.13.2: + resolution: {integrity: sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ==} cpu: [x64] os: [win32] requiresBuild: true @@ -1067,6 +1332,12 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true + /@types/acorn@4.0.6: + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + dependencies: + '@types/estree': 1.0.5 + dev: true + /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: @@ -1097,9 +1368,21 @@ packages: dependencies: '@types/ms': 0.7.34 + /@types/estree-jsx@1.0.5: + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + dependencies: + '@types/estree': 1.0.5 + dev: true + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + /@types/hast@2.3.10: + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + dependencies: + '@types/unist': 2.0.10 + dev: true + /@types/hast@3.0.4: resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} dependencies: @@ -1114,6 +1397,10 @@ packages: dependencies: '@types/unist': 3.0.2 + /@types/mdx@2.0.12: + resolution: {integrity: sha512-H9VZ9YqE+H28FQVchC83RCs5xQ2J7mAAv6qdDEaWmXEVl3OpdH+xfrSUzQ1lp7U7oSTRZ0RvW08ASPJsYBi7Cw==} + dev: true + /@types/ms@0.7.34: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} @@ -1122,11 +1409,25 @@ packages: dependencies: '@types/unist': 2.0.10 + /@types/node@17.0.45: + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + dev: true + /@types/node@20.11.30: resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} dependencies: undici-types: 5.26.5 + /@types/parse5@6.0.3: + resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + dev: true + + /@types/sax@1.2.7: + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + dependencies: + '@types/node': 20.11.30 + dev: true + /@types/unist@2.0.10: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} @@ -1152,7 +1453,7 @@ packages: magicast: 0.3.3 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 2.0.0 + strip-literal: 2.1.0 test-exclude: 6.0.0 v8-to-istanbul: 9.2.0 vitest: 1.4.0(@types/node@20.11.30) @@ -1199,6 +1500,96 @@ packages: pretty-format: 29.7.0 dev: true + /@volar/kit@2.1.6(typescript@5.4.3): + resolution: {integrity: sha512-dSuXChDGM0nSG/0fxqlNfadjpAeeo1P1SJPBQ+pDf8H1XrqeJq5gIhxRTEbiS+dyNIG69ATq1CArkbCif+oxJw==} + peerDependencies: + typescript: '*' + dependencies: + '@volar/language-service': 2.1.6 + '@volar/typescript': 2.1.6 + typesafe-path: 0.2.2 + typescript: 5.4.3 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + dev: true + + /@volar/language-core@2.1.6: + resolution: {integrity: sha512-pAlMCGX/HatBSiDFMdMyqUshkbwWbLxpN/RL7HCQDOo2gYBE+uS+nanosLc1qR6pTQ/U8q00xt8bdrrAFPSC0A==} + dependencies: + '@volar/source-map': 2.1.6 + dev: true + + /@volar/language-server@2.1.6: + resolution: {integrity: sha512-0w+FV8ro37hVb3qE4ONo3VbS5kEQXv4H/D2xCePyY5dRw6XnbJAPFNKvoxI9mxHTPonvIG1si5rN9MSGSKtgZQ==} + dependencies: + '@volar/language-core': 2.1.6 + '@volar/language-service': 2.1.6 + '@volar/snapshot-document': 2.1.6 + '@volar/typescript': 2.1.6 + '@vscode/l10n': 0.0.16 + path-browserify: 1.0.1 + request-light: 0.7.0 + vscode-languageserver: 9.0.1 + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + dev: true + + /@volar/language-service@2.1.6: + resolution: {integrity: sha512-1OpbbPQ6wUIumwMP5r45y8utVEmvq1n6BC8JHqGKsuFr9RGFIldDBlvA/xuO3MDKhjmmPGPHKb54kg1/YN78ow==} + dependencies: + '@volar/language-core': 2.1.6 + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + dev: true + + /@volar/snapshot-document@2.1.6: + resolution: {integrity: sha512-YNYk1sCOrGg7VHbZM+1It97q0GWhFxdqIwnxSNFoL0X1LuSRXoCT2DRb/aa1J6aBpPMbKqSFUWHGQEAFUnc4Zw==} + dependencies: + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.11 + dev: true + + /@volar/source-map@2.1.6: + resolution: {integrity: sha512-TeyH8pHHonRCHYI91J7fWUoxi0zWV8whZTVRlsWHSYfjm58Blalkf9LrZ+pj6OiverPTmrHRkBsG17ScQyWECw==} + dependencies: + muggle-string: 0.4.1 + dev: true + + /@volar/typescript@2.1.6: + resolution: {integrity: sha512-JgPGhORHqXuyC3r6skPmPHIZj4LoMmGlYErFTuPNBq9Nhc9VTv7ctHY7A3jMN3ngKEfRrfnUcwXHztvdSQqNfw==} + dependencies: + '@volar/language-core': 2.1.6 + path-browserify: 1.0.1 + dev: true + + /@vscode/emmet-helper@2.9.2: + resolution: {integrity: sha512-MaGuyW+fa13q3aYsluKqclmh62Hgp0BpKIqS66fCxfOaBcVQ1OnMQxRRgQUYnCkxFISAQlkJ0qWWPyXjro1Qrg==} + dependencies: + emmet: 2.4.7 + jsonc-parser: 2.3.1 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 + vscode-uri: 2.1.2 + dev: true + + /@vscode/l10n@0.0.16: + resolution: {integrity: sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==} + dev: true + + /@vscode/l10n@0.0.18: + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + dev: true + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true + /acorn-walk@8.3.2: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} @@ -1228,6 +1619,13 @@ packages: dependencies: color-convert: 1.9.3 + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} @@ -1244,6 +1642,10 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.1 + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -1264,13 +1666,28 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /astro@4.5.10(@types/node@20.11.30)(typescript@5.4.3): - resolution: {integrity: sha512-xW/ZTSqSHEQyzWzXHJa9gEQXC+MUD3mhzEBJyrMp/JWT+geLgUK2m0Rrc/AnBl8EfdS/6uFadiJV1fWao4lc7w==} + /astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + hasBin: true + dev: true + + /astro-expressive-code@0.33.5(astro@4.5.12): + resolution: {integrity: sha512-9JAyllueMUN8JTl/h/yTdbKinNmfalEWcV11s3lSf/UJQbAZfWJuy+IlGcArZDI/CmD21GXhFHLqYthpdY33ug==} + peerDependencies: + astro: ^4.0.0-beta || ^3.3.0 + dependencies: + astro: 4.5.12(@types/node@20.11.30)(typescript@5.4.3) + hast-util-to-html: 8.0.4 + remark-expressive-code: 0.33.5 + dev: true + + /astro@4.5.12(@types/node@20.11.30)(typescript@5.4.3): + resolution: {integrity: sha512-xIJcFI2hbyV8+h5pWjL7SKD1jIP0K01fYVAH+gdAt0mJaXy+u8Mj+goD0cPlK6sEaykR+7zxQLYGKJ44U4qarg==} engines: {node: '>=18.14.1', npm: '>=6.14.0'} hasBin: true dependencies: '@astrojs/compiler': 2.7.0 - '@astrojs/internal-helpers': 0.3.0 + '@astrojs/internal-helpers': 0.4.0 '@astrojs/markdown-remark': 4.3.2 '@astrojs/telemetry': 3.0.4 '@babel/core': 7.24.3 @@ -1325,8 +1742,8 @@ packages: tsconfck: 3.0.3(typescript@5.4.3) unist-util-visit: 5.0.0 vfile: 6.0.1 - vite: 5.2.6(@types/node@20.11.30) - vitefu: 0.2.5(vite@5.2.6) + vite: 5.2.7(@types/node@20.11.30) + vitefu: 0.2.5(vite@5.2.7) which-pm: 2.1.1 yargs-parser: 21.1.1 zod: 3.22.4 @@ -1352,7 +1769,6 @@ packages: /b4a@1.6.6: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} requiresBuild: true - optional: true /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -1394,6 +1810,18 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + /bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + dev: true + + /bcp-47@2.1.0: + resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==} + dependencies: + is-alphabetical: 2.0.1 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + dev: true + /binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -1405,7 +1833,6 @@ packages: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - optional: true /bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} @@ -1414,6 +1841,10 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + /boxen@7.1.1: resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} engines: {node: '>=14.16'} @@ -1452,7 +1883,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001600 - electron-to-chromium: 1.4.719 + electron-to-chromium: 1.4.722 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) @@ -1462,7 +1893,6 @@ packages: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - optional: true /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -1519,6 +1949,10 @@ packages: /character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + /character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + dev: true + /check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: @@ -1542,7 +1976,6 @@ packages: /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} requiresBuild: true - optional: true /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} @@ -1566,10 +1999,23 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + /clsx@2.1.0: resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} engines: {node: '>=6'} + /collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + dev: true + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -1581,7 +2027,6 @@ packages: requiresBuild: true dependencies: color-name: 1.1.4 - optional: true /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} @@ -1589,7 +2034,6 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} requiresBuild: true - optional: true /color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} @@ -1597,7 +2041,6 @@ packages: dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 - optional: true /color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} @@ -1606,7 +2049,6 @@ packages: dependencies: color-convert: 2.0.1 color-string: 1.9.1 - optional: true /comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -1633,6 +2075,10 @@ packages: shebang-command: 2.0.0 which: 2.0.2 + /css-selector-parser@3.0.5: + resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} + dev: true + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -1671,7 +2117,6 @@ packages: requiresBuild: true dependencies: mimic-response: 3.1.0 - optional: true /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} @@ -1684,7 +2129,6 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} requiresBuild: true - optional: true /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} @@ -1728,6 +2172,11 @@ packages: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} + /direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + dev: true + /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -1742,8 +2191,15 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false - /electron-to-chromium@1.4.719: - resolution: {integrity: sha512-FbWy2Q2YgdFzkFUW/W5jBjE9dj+804+98E4Pup78JBPnbdb3pv6IneY2JCPKdeKLh3AOKHQeYf+KwLr7mxGh6Q==} + /electron-to-chromium@1.4.722: + resolution: {integrity: sha512-5nLE0TWFFpZ80Crhtp4pIp8LXCztjYX41yUcV6b+bKR2PqzjskTMOOlBi1VjBHlvHwS+4gar7kNKOrsbsewEZQ==} + + /emmet@2.4.7: + resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} + dependencies: + '@emmetio/abbreviation': 2.3.3 + '@emmetio/css-abbreviation': 2.1.8 + dev: true /emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} @@ -1764,7 +2220,6 @@ packages: requiresBuild: true dependencies: once: 1.4.0 - optional: true /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} @@ -1854,12 +2309,46 @@ packages: engines: {node: '>=4'} hasBin: true - /estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + /estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} dependencies: '@types/estree': 1.0.5 + dev: true - /etag@1.8.1: + /estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + dev: true + + /estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + dev: true + + /estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.8.6 + source-map: 0.7.4 + dev: true + + /estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.2 + dev: true + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + + /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} dev: false @@ -1885,7 +2374,15 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} requiresBuild: true - optional: true + + /expressive-code@0.33.5: + resolution: {integrity: sha512-UPg2jSvZEfXPiCa4MKtMoMQ5Hwiv7In5/LSCa/ukhjzZqPO48iVsCcEBgXWEUmEAQ02P0z00/xFfBmVnUKH+Zw==} + dependencies: + '@expressive-code/core': 0.33.5 + '@expressive-code/plugin-frames': 0.33.5 + '@expressive-code/plugin-shiki': 0.33.5 + '@expressive-code/plugin-text-markers': 0.33.5 + dev: true /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} @@ -1899,7 +2396,6 @@ packages: /fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} requiresBuild: true - optional: true /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} @@ -1954,7 +2450,6 @@ packages: /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} requiresBuild: true - optional: true /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -1974,6 +2469,11 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + /get-east-asian-width@1.2.0: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} @@ -1989,7 +2489,6 @@ packages: /github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} requiresBuild: true - optional: true /github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -2063,6 +2562,18 @@ packages: vfile: 6.0.1 vfile-message: 4.0.2 + /hast-util-from-parse5@7.1.2: + resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.10 + hastscript: 7.2.0 + property-information: 6.4.1 + vfile: 5.3.7 + vfile-location: 4.1.0 + web-namespaces: 2.0.1 + dev: true + /hast-util-from-parse5@8.0.1: resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} dependencies: @@ -2075,16 +2586,44 @@ packages: vfile-location: 5.0.2 web-namespaces: 2.0.1 + /hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + dependencies: + '@types/hast': 3.0.4 + dev: true + /hast-util-is-element@3.0.0: resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} dependencies: '@types/hast': 3.0.4 + /hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + dependencies: + '@types/hast': 2.3.10 + dev: true + /hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} dependencies: '@types/hast': 3.0.4 + /hast-util-raw@7.2.3: + resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} + dependencies: + '@types/hast': 2.3.10 + '@types/parse5': 6.0.3 + hast-util-from-parse5: 7.1.2 + hast-util-to-parse5: 7.1.0 + html-void-elements: 2.0.1 + parse5: 6.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: true + /hast-util-raw@9.0.2: resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==} dependencies: @@ -2102,6 +2641,66 @@ packages: web-namespaces: 2.0.1 zwitch: 2.0.4 + /hast-util-select@6.0.2: + resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + bcp-47-match: 2.0.3 + comma-separated-tokens: 2.0.3 + css-selector-parser: 3.0.5 + devlop: 1.1.0 + direction: 2.0.1 + hast-util-has-property: 3.0.0 + hast-util-to-string: 3.0.0 + hast-util-whitespace: 3.0.0 + not: 0.1.0 + nth-check: 2.1.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + dev: true + + /hast-util-to-estree@3.1.0: + resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /hast-util-to-html@8.0.4: + resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.10 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-raw: 7.2.3 + hast-util-whitespace: 2.0.1 + html-void-elements: 2.0.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.3 + zwitch: 2.0.4 + dev: true + /hast-util-to-html@9.0.0: resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} dependencies: @@ -2118,6 +2717,39 @@ packages: stringify-entities: 4.0.3 zwitch: 2.0.4 + /hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + dependencies: + '@types/estree': 1.0.5 + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + style-to-object: 1.0.6 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /hast-util-to-parse5@7.1.0: + resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 2.0.3 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: true + /hast-util-to-parse5@8.0.0: resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} dependencies: @@ -2129,6 +2761,12 @@ packages: web-namespaces: 2.0.1 zwitch: 2.0.4 + /hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + dependencies: + '@types/hast': 3.0.4 + dev: true + /hast-util-to-text@4.0.0: resolution: {integrity: sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==} dependencies: @@ -2137,11 +2775,25 @@ packages: hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 + /hast-util-whitespace@2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + dev: true + /hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: '@types/hast': 3.0.4 + /hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 3.1.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + dev: true + /hastscript@8.0.0: resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} dependencies: @@ -2158,6 +2810,10 @@ packages: /html-escaper@3.0.3: resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + /html-void-elements@2.0.1: + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + dev: true + /html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} @@ -2205,12 +2861,29 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} requiresBuild: true - optional: true + + /inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + dev: true + + /inline-style-parser@0.2.3: + resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} + dev: true + + /is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + dev: true + + /is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + dev: true /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} requiresBuild: true - optional: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -2227,6 +2900,10 @@ packages: dependencies: hasown: 2.0.2 + /is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + dev: true + /is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2250,6 +2927,10 @@ packages: dependencies: is-extglob: 2.1.1 + /is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + dev: true + /is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -2269,6 +2950,12 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + dependencies: + '@types/estree': 1.0.5 + dev: true + /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2322,8 +3009,8 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-tokens@8.0.3: - resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + /js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} dev: true /js-yaml@3.14.1: @@ -2349,6 +3036,10 @@ packages: engines: {node: '>=6'} hasBin: true + /jsonc-parser@2.3.1: + resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + dev: true + /jsonc-parser@3.2.1: resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} dev: true @@ -2442,6 +3133,11 @@ packages: semver: 7.6.0 dev: true + /markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + dev: true + /markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} @@ -2452,6 +3148,21 @@ packages: '@types/unist': 3.0.2 unist-util-visit: 5.0.0 + /mdast-util-directive@3.0.0: + resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-visit-parents: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: true + /mdast-util-find-and-replace@3.0.1: resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} dependencies: @@ -2541,6 +3252,64 @@ packages: transitivePeerDependencies: - supports-color + /mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdx-jsx@3.1.2: + resolution: {integrity: sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-remove-position: 5.0.0 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: true + /mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} dependencies: @@ -2604,6 +3373,18 @@ packages: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + /micromark-extension-directive@3.0.0: + resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + parse-entities: 4.0.1 + dev: true + /micromark-extension-gfm-autolink-literal@2.0.0: resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} dependencies: @@ -2669,6 +3450,67 @@ packages: micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 + /micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + + /micromark-extension-mdx-jsx@3.0.0: + resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + dev: true + + /micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + dependencies: + micromark-util-types: 2.0.0 + dev: true + + /micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + dev: true + + /micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + micromark-extension-mdx-expression: 3.0.0 + micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + /micromark-factory-destination@2.0.0: resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} dependencies: @@ -2684,6 +3526,19 @@ packages: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + /micromark-factory-mdx-expression@2.0.1: + resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + dev: true + /micromark-factory-space@2.0.0: resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} dependencies: @@ -2746,6 +3601,19 @@ packages: /micromark-util-encode@2.0.0: resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + /micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + '@types/unist': 3.0.2 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + dev: true + /micromark-util-html-tag-name@2.0.0: resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} @@ -2833,7 +3701,6 @@ packages: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} requiresBuild: true - optional: true /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2851,12 +3718,10 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} requiresBuild: true - optional: true /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} requiresBuild: true - optional: true /mlly@1.6.1: resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} @@ -2883,6 +3748,10 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: false + /muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + dev: true + /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -2891,7 +3760,6 @@ packages: /napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} requiresBuild: true - optional: true /nlcst-to-string@3.1.1: resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==} @@ -2904,12 +3772,10 @@ packages: requiresBuild: true dependencies: semver: 7.6.0 - optional: true /node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} requiresBuild: true - optional: true /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} @@ -2918,6 +3784,10 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + /not@0.1.0: + resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} + dev: true + /npm-bundled@2.0.1: resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -2947,6 +3817,12 @@ packages: dependencies: path-key: 4.0.0 + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -3030,6 +3906,30 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + /pagefind@1.0.4: + resolution: {integrity: sha512-oRIizYe+zSI2Jw4zcMU0ebDZm27751hRFiSOBLwc1OIYMrsZKk+3m8p9EVaOmc6zZdtqwwdilNUNxXvBeHcP9w==} + hasBin: true + optionalDependencies: + '@pagefind/darwin-arm64': 1.0.4 + '@pagefind/darwin-x64': 1.0.4 + '@pagefind/linux-arm64': 1.0.4 + '@pagefind/linux-x64': 1.0.4 + '@pagefind/windows-x64': 1.0.4 + dev: true + + /parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + dependencies: + '@types/unist': 2.0.10 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + dev: true + /parse-latin@5.0.1: resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==} dependencies: @@ -3037,11 +3937,19 @@ packages: unist-util-modify-children: 3.1.1 unist-util-visit-children: 2.0.2 + /parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: true + /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -3073,6 +3981,14 @@ packages: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 + dev: true + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -3098,6 +4014,24 @@ packages: pathe: 1.1.2 dev: true + /postcss-nested@6.0.1(postcss@8.4.38): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.0.16 + dev: true + + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + /postcss@8.4.38: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} @@ -3124,7 +4058,6 @@ packages: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 - optional: true /preferred-pm@3.1.3: resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} @@ -3174,7 +4107,6 @@ packages: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - optional: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -3182,7 +4114,6 @@ packages: /queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} requiresBuild: true - optional: true /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} @@ -3198,7 +4129,6 @@ packages: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - optional: true /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} @@ -3247,6 +4177,25 @@ packages: rehype-stringify: 10.0.0 unified: 11.0.4 + /remark-directive@3.0.0: + resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-directive: 3.0.0 + micromark-extension-directive: 3.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-expressive-code@0.33.5: + resolution: {integrity: sha512-E4CZq3AuUXLu6or0AaDKkgsHYqmnm4ZL8/+1/8YgwtKcogHwTMRJfQtxkZpth90QQoNUpsapvm5x5n3Np2OC9w==} + dependencies: + expressive-code: 0.33.5 + hast-util-to-html: 8.0.4 + unist-util-visit: 4.1.2 + dev: true + /remark-gfm@4.0.0: resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} dependencies: @@ -3259,6 +4208,15 @@ packages: transitivePeerDependencies: - supports-color + /remark-mdx@3.0.1: + resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} dependencies: @@ -3293,6 +4251,15 @@ packages: mdast-util-to-markdown: 2.1.0 unified: 11.0.4 + /request-light@0.7.0: + resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -3343,27 +4310,28 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rollup@4.13.1: - resolution: {integrity: sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==} + /rollup@4.13.2: + resolution: {integrity: sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.1 - '@rollup/rollup-android-arm64': 4.13.1 - '@rollup/rollup-darwin-arm64': 4.13.1 - '@rollup/rollup-darwin-x64': 4.13.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.1 - '@rollup/rollup-linux-arm64-gnu': 4.13.1 - '@rollup/rollup-linux-arm64-musl': 4.13.1 - '@rollup/rollup-linux-riscv64-gnu': 4.13.1 - '@rollup/rollup-linux-s390x-gnu': 4.13.1 - '@rollup/rollup-linux-x64-gnu': 4.13.1 - '@rollup/rollup-linux-x64-musl': 4.13.1 - '@rollup/rollup-win32-arm64-msvc': 4.13.1 - '@rollup/rollup-win32-ia32-msvc': 4.13.1 - '@rollup/rollup-win32-x64-msvc': 4.13.1 + '@rollup/rollup-android-arm-eabi': 4.13.2 + '@rollup/rollup-android-arm64': 4.13.2 + '@rollup/rollup-darwin-arm64': 4.13.2 + '@rollup/rollup-darwin-x64': 4.13.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.13.2 + '@rollup/rollup-linux-arm64-gnu': 4.13.2 + '@rollup/rollup-linux-arm64-musl': 4.13.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.13.2 + '@rollup/rollup-linux-riscv64-gnu': 4.13.2 + '@rollup/rollup-linux-s390x-gnu': 4.13.2 + '@rollup/rollup-linux-x64-gnu': 4.13.2 + '@rollup/rollup-linux-x64-musl': 4.13.2 + '@rollup/rollup-win32-arm64-msvc': 4.13.2 + '@rollup/rollup-win32-ia32-msvc': 4.13.2 + '@rollup/rollup-win32-x64-msvc': 4.13.2 fsevents: 2.3.3 /run-parallel@1.2.0: @@ -3381,6 +4349,10 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: true + /section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} @@ -3441,7 +4413,6 @@ packages: simple-get: 4.0.1 tar-fs: 3.0.5 tunnel-agent: 0.6.0 - optional: true /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -3472,7 +4443,6 @@ packages: /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} requiresBuild: true - optional: true /simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} @@ -3481,22 +4451,36 @@ packages: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 - optional: true /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} requiresBuild: true dependencies: is-arrayish: 0.3.2 - optional: true /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + /sitemap@7.1.1: + resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} + engines: {node: '>=12.0.0', npm: '>=5.6.0'} + hasBin: true + dependencies: + '@types/node': 17.0.45 + '@types/sax': 1.2.7 + arg: 5.0.2 + sax: 1.3.0 + dev: true + /source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + /space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -3530,7 +4514,6 @@ packages: queue-tick: 1.0.1 optionalDependencies: bare-events: 2.2.2 - optional: true /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -3603,12 +4586,23 @@ packages: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} requiresBuild: true - optional: true - /strip-literal@2.0.0: - resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + /strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + dependencies: + js-tokens: 9.0.0 + dev: true + + /style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} dependencies: - js-tokens: 8.0.3 + inline-style-parser: 0.1.1 + dev: true + + /style-to-object@1.0.6: + resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} + dependencies: + inline-style-parser: 0.2.3 dev: true /supports-color@5.5.0: @@ -3636,7 +4630,6 @@ packages: mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 2.2.0 - optional: true /tar-fs@3.0.5: resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==} @@ -3647,7 +4640,6 @@ packages: optionalDependencies: bare-fs: 2.2.2 bare-path: 2.1.0 - optional: true /tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} @@ -3659,7 +4651,6 @@ packages: fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 - optional: true /tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} @@ -3668,7 +4659,6 @@ packages: b4a: 1.6.6 fast-fifo: 1.3.2 streamx: 2.16.1 - optional: true /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} @@ -3731,7 +4721,6 @@ packages: requiresBuild: true dependencies: safe-buffer: 5.2.1 - optional: true /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} @@ -3742,6 +4731,16 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} + /typesafe-path@0.2.2: + resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} + dev: true + + /typescript-auto-import-cache@0.3.2: + resolution: {integrity: sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg==} + dependencies: + semver: 7.6.0 + dev: true + /typescript@5.4.3: resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} engines: {node: '>=14.17'} @@ -3801,6 +4800,18 @@ packages: '@types/unist': 2.0.10 array-iterate: 2.0.1 + /unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + dependencies: + '@types/unist': 3.0.2 + dev: true + + /unist-util-position@4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + dependencies: + '@types/unist': 2.0.10 + dev: true + /unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: @@ -3812,6 +4823,14 @@ packages: '@types/unist': 3.0.2 unist-util-visit: 5.0.0 + /unist-util-remove@4.0.0: + resolution: {integrity: sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: true + /unist-util-stringify-position@3.0.3: resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} dependencies: @@ -3875,6 +4894,13 @@ packages: convert-source-map: 2.0.0 dev: true + /vfile-location@4.1.0: + resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} + dependencies: + '@types/unist': 2.0.10 + vfile: 5.3.7 + dev: true + /vfile-location@5.0.2: resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} dependencies: @@ -3917,7 +4943,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.6(@types/node@20.11.30) + vite: 5.2.7(@types/node@20.11.30) transitivePeerDependencies: - '@types/node' - less @@ -3929,8 +4955,8 @@ packages: - terser dev: true - /vite@5.2.6(@types/node@20.11.30): - resolution: {integrity: sha512-FPtnxFlSIKYjZ2eosBQamz4CbyrTizbZ3hnGJlh/wMtCrlp1Hah6AzBLjGI5I2urTfNnpovpHdrL6YRuBOPnCA==} + /vite@5.2.7(@types/node@20.11.30): + resolution: {integrity: sha512-k14PWOKLI6pMaSzAuGtT+Cf0YmIx12z9YGon39onaJNy8DLBfBJrzg9FQEmkAM5lpHBZs9wksWAsyF/HkpEwJA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3960,11 +4986,11 @@ packages: '@types/node': 20.11.30 esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.13.1 + rollup: 4.13.2 optionalDependencies: fsevents: 2.3.3 - /vitefu@0.2.5(vite@5.2.6): + /vitefu@0.2.5(vite@5.2.7): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -3972,7 +4998,7 @@ packages: vite: optional: true dependencies: - vite: 5.2.6(@types/node@20.11.30) + vite: 5.2.7(@types/node@20.11.30) /vitest@1.4.0(@types/node@20.11.30): resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} @@ -4014,10 +5040,10 @@ packages: pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 2.0.0 + strip-literal: 2.1.0 tinybench: 2.6.0 tinypool: 0.8.3 - vite: 5.2.6(@types/node@20.11.30) + vite: 5.2.7(@types/node@20.11.30) vite-node: 1.4.0(@types/node@20.11.30) why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -4030,6 +5056,146 @@ packages: - terser dev: true + /volar-service-css@0.0.34(@volar/language-service@2.1.6): + resolution: {integrity: sha512-C7ua0j80ZD7bsgALAz/cA1bykPehoIa5n+3+Ccr+YLpj0fypqw9iLUmGLX11CqzqNCO2XFGe/1eXB/c+SWrF/g==} + peerDependencies: + '@volar/language-service': ~2.1.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + dependencies: + '@volar/language-service': 2.1.6 + vscode-css-languageservice: 6.2.13 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + dev: true + + /volar-service-emmet@0.0.34(@volar/language-service@2.1.6): + resolution: {integrity: sha512-ubQvMCmHPp8Ic82LMPkgrp9ot+u2p/RDd0RyT0EykRkZpWsagHUF5HWkVheLfiMyx2rFuWx/+7qZPOgypx6h6g==} + peerDependencies: + '@volar/language-service': ~2.1.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + dependencies: + '@volar/language-service': 2.1.6 + '@vscode/emmet-helper': 2.9.2 + vscode-html-languageservice: 5.2.0 + dev: true + + /volar-service-html@0.0.34(@volar/language-service@2.1.6): + resolution: {integrity: sha512-kMEneea1tQbiRcyKavqdrSVt8zV06t+0/3pGkjO3gV6sikXTNShIDkdtB4Tq9vE2cQdM50TuS7utVV7iysUxHw==} + peerDependencies: + '@volar/language-service': ~2.1.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + dependencies: + '@volar/language-service': 2.1.6 + vscode-html-languageservice: 5.2.0 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + dev: true + + /volar-service-prettier@0.0.34(@volar/language-service@2.1.6): + resolution: {integrity: sha512-BNfJ8FwfPi1Wm/JkuzNjraOLdtKieGksNT/bDyquygVawv1QUzO2HB1hiMKfZGdcSFG5ZL9R0j7bBfRTfXA2gg==} + peerDependencies: + '@volar/language-service': ~2.1.0 + prettier: ^2.2 || ^3.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + prettier: + optional: true + dependencies: + '@volar/language-service': 2.1.6 + vscode-uri: 3.0.8 + dev: true + + /volar-service-typescript-twoslash-queries@0.0.34(@volar/language-service@2.1.6): + resolution: {integrity: sha512-XAY2YtWKUp6ht89gxt3L5Dr46LU45d/VlBkj1KXUwNlinpoWiGN4Nm3B6DRF3VoBThAnQgm4c7WD0S+5yTzh+w==} + peerDependencies: + '@volar/language-service': ~2.1.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + dependencies: + '@volar/language-service': 2.1.6 + dev: true + + /volar-service-typescript@0.0.34(@volar/language-service@2.1.6): + resolution: {integrity: sha512-NbAry0w8ZXFgGsflvMwmPDCzgJGx3C+eYxFEbldaumkpTAJiywECWiUbPIOfmEHgpOllUKSnhwtLlWFK4YnfQg==} + peerDependencies: + '@volar/language-service': ~2.1.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + dependencies: + '@volar/language-service': 2.1.6 + path-browserify: 1.0.1 + semver: 7.6.0 + typescript-auto-import-cache: 0.3.2 + vscode-languageserver-textdocument: 1.0.11 + vscode-nls: 5.2.0 + dev: true + + /vscode-css-languageservice@6.2.13: + resolution: {integrity: sha512-2rKWXfH++Kxd9Z4QuEgd1IF7WmblWWU7DScuyf1YumoGLkY9DW6wF/OTlhOyO2rN63sWHX2dehIpKBbho4ZwvA==} + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.0.8 + dev: true + + /vscode-html-languageservice@5.2.0: + resolution: {integrity: sha512-cdNMhyw57/SQzgUUGSIMQ66jikqEN6nBNyhx5YuOyj9310+eY9zw8Q0cXpiKzDX8aHYFewQEXRnigl06j/TVwQ==} + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.0.8 + dev: true + + /vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + dev: true + + /vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + dev: true + + /vscode-languageserver-textdocument@1.0.11: + resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} + dev: true + + /vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + dev: true + + /vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + dependencies: + vscode-languageserver-protocol: 3.17.5 + dev: true + + /vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} + dev: true + + /vscode-uri@2.1.2: + resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} + dev: true + + /vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + dev: true + /web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -4073,6 +5239,15 @@ packages: dependencies: string-width: 5.1.2 + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} @@ -4084,6 +5259,11 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -4094,6 +5274,19 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 009acc8..13f75db 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: + - 'docs' - '@kindspells/*' - '@kindspells/astro-shield/e2e/fixtures/*'