+ > {}
+
+const content = await Astro.slots.render("default");
+
+const { link, style, htmlElement } = await renderBackgroundPicture({
+ content,
+ ...(Astro.props as Props),
+});
+---
+
+
diff --git a/packages/imagetools_3/components/Image.astro b/packages/imagetools_3/components/Image.astro
new file mode 100644
index 0000000..d2d547a
--- /dev/null
+++ b/packages/imagetools_3/components/Image.astro
@@ -0,0 +1,10 @@
+---
+import renderImage from "../api/renderImage.js";
+import type { PictureConfigOptions as ImageConfigOptions } from "../types.d";
+
+const { link, style, image } = await renderImage(
+ Astro.props as ImageConfigOptions
+);
+---
+
+
diff --git a/packages/imagetools_3/components/ImageSupportDetection.astro b/packages/imagetools_3/components/ImageSupportDetection.astro
new file mode 100644
index 0000000..9e62ae7
--- /dev/null
+++ b/packages/imagetools_3/components/ImageSupportDetection.astro
@@ -0,0 +1,4 @@
+
+
diff --git a/packages/imagetools_3/components/Img.astro b/packages/imagetools_3/components/Img.astro
new file mode 100644
index 0000000..36c03ab
--- /dev/null
+++ b/packages/imagetools_3/components/Img.astro
@@ -0,0 +1,10 @@
+---
+import renderImg from "../api/renderImg.js";
+import type { ImgConfigOptions } from "../types.d";
+
+declare interface Props extends ImgConfigOptions {}
+
+const { link, style, img } = await renderImg(Astro.props as Props);
+---
+
+
diff --git a/packages/imagetools_3/components/Picture.astro b/packages/imagetools_3/components/Picture.astro
new file mode 100644
index 0000000..737bd77
--- /dev/null
+++ b/packages/imagetools_3/components/Picture.astro
@@ -0,0 +1,10 @@
+---
+import renderPicture from "../api/renderPicture.js";
+import type { PictureConfigOptions } from "../types.d";
+
+declare interface Props extends PictureConfigOptions {}
+
+const { link, style, picture } = await renderPicture(Astro.props as Props);
+---
+
+
diff --git a/packages/imagetools_3/components/index.js b/packages/imagetools_3/components/index.js
new file mode 100644
index 0000000..a6c6389
--- /dev/null
+++ b/packages/imagetools_3/components/index.js
@@ -0,0 +1,5 @@
+export { default as Img } from "./Img.astro";
+export { default as Picture } from "./Picture.astro";
+export { default as BackgroundImage } from "./BackgroundImage.astro";
+export { default as BackgroundPicture } from "./BackgroundPicture.astro";
+export { default as ImageSupportDetection } from "./ImageSupportDetection.astro";
diff --git a/packages/imagetools_3/config.d.ts b/packages/imagetools_3/config.d.ts
new file mode 100644
index 0000000..8569ca9
--- /dev/null
+++ b/packages/imagetools_3/config.d.ts
@@ -0,0 +1,3 @@
+import type { GlobalConfigOptions } from "./types";
+
+export function defineConfig(config: GlobalConfigOptions): GlobalConfigOptions;
diff --git a/packages/imagetools_3/config.mjs b/packages/imagetools_3/config.mjs
new file mode 100644
index 0000000..64a4c49
--- /dev/null
+++ b/packages/imagetools_3/config.mjs
@@ -0,0 +1,3 @@
+export function defineConfig(config) {
+ return config;
+}
diff --git a/packages/imagetools_3/demo/.npmrc b/packages/imagetools_3/demo/.npmrc
new file mode 100644
index 0000000..0cc653b
--- /dev/null
+++ b/packages/imagetools_3/demo/.npmrc
@@ -0,0 +1,2 @@
+## force pnpm to hoist
+shamefully-hoist = true
\ No newline at end of file
diff --git a/packages/imagetools_3/demo/.stackblitzrc b/packages/imagetools_3/demo/.stackblitzrc
new file mode 100644
index 0000000..0dfa8f1
--- /dev/null
+++ b/packages/imagetools_3/demo/.stackblitzrc
@@ -0,0 +1,6 @@
+{
+ "startCommand": "npm start",
+ "env": {
+ "ENABLE_CJS_IMPORTS": true
+ }
+}
diff --git a/packages/imagetools_3/demo/README.md b/packages/imagetools_3/demo/README.md
new file mode 100644
index 0000000..777dd8e
--- /dev/null
+++ b/packages/imagetools_3/demo/README.md
@@ -0,0 +1,5 @@
+# Astro ImageTools Live Examples
+
+This repository contains source code for the [**Astro ImageTools Demo**](https://astro-imagetools-demo.vercel.app) website.
+
+The demo displays live examples of the components and APIs provided by the [**Astro ImageTools**](https://npmjs.com/package/astro-imagetools) library and the **Layouts** and **Placeholders** supported by the library.
diff --git a/packages/imagetools_3/demo/astro-imagetools.config.mjs b/packages/imagetools_3/demo/astro-imagetools.config.mjs
new file mode 100644
index 0000000..b48b079
--- /dev/null
+++ b/packages/imagetools_3/demo/astro-imagetools.config.mjs
@@ -0,0 +1,3 @@
+import { defineConfig } from "astro-imagetools/config";
+
+export default defineConfig({});
diff --git a/packages/imagetools_3/demo/astro.config.mjs b/packages/imagetools_3/demo/astro.config.mjs
new file mode 100644
index 0000000..c46819e
--- /dev/null
+++ b/packages/imagetools_3/demo/astro.config.mjs
@@ -0,0 +1,23 @@
+import { defineConfig } from "astro/config";
+import { astroImageTools } from "astro-imagetools";
+
+// https://astro.build/config
+export default defineConfig({
+ vite: {
+ plugins: [
+ {
+ name: "import.meta.url-transformer",
+ transform: (code, id) => {
+ if (id.endsWith(".astro"))
+ return code.replace(/import.meta.url/g, `"${id}"`);
+ },
+ },
+ ],
+ },
+
+ experimental: {
+ integrations: true,
+ },
+
+ integrations: [astroImageTools],
+});
diff --git a/packages/imagetools_3/demo/package.json b/packages/imagetools_3/demo/package.json
new file mode 100644
index 0000000..2a25773
--- /dev/null
+++ b/packages/imagetools_3/demo/package.json
@@ -0,0 +1,23 @@
+{
+ "scripts": {
+ "dev": "astro dev",
+ "start": "astro dev",
+ "build": "astro build",
+ "preview": "astro preview"
+ },
+ "dependencies": {
+ "astro-spa": "^1.3.9",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@astrojs/lit": "^1.1.2",
+ "@astrojs/preact": "^2.0.2",
+ "@astrojs/react": "^2.0.2",
+ "@astrojs/solid-js": "^2.0.2",
+ "@astrojs/svelte": "^2.0.1",
+ "@astrojs/vue": "^2.0.1",
+ "astro": "^2.0.6",
+ "astro-imagetools": "workspace:^0.9.0"
+ }
+}
diff --git a/packages/imagetools_3/demo/public/favicon.ico b/packages/imagetools_3/demo/public/favicon.ico
new file mode 100644
index 0000000..578ad45
Binary files /dev/null and b/packages/imagetools_3/demo/public/favicon.ico differ
diff --git a/packages/imagetools_3/demo/public/images/public.jpeg b/packages/imagetools_3/demo/public/images/public.jpeg
new file mode 100644
index 0000000..d5b648a
Binary files /dev/null and b/packages/imagetools_3/demo/public/images/public.jpeg differ
diff --git a/packages/imagetools_3/demo/sandbox.config.json b/packages/imagetools_3/demo/sandbox.config.json
new file mode 100644
index 0000000..b12019e
--- /dev/null
+++ b/packages/imagetools_3/demo/sandbox.config.json
@@ -0,0 +1,11 @@
+{
+ "infiniteLoopProtection": true,
+ "hardReloadOnChange": false,
+ "view": "browser",
+ "template": "node",
+ "container": {
+ "port": 3000,
+ "startScript": "start",
+ "node": "16"
+ }
+}
diff --git a/packages/imagetools_3/demo/src/env.d.ts b/packages/imagetools_3/demo/src/env.d.ts
new file mode 100644
index 0000000..f964fe0
--- /dev/null
+++ b/packages/imagetools_3/demo/src/env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/packages/imagetools_3/demo/src/images/elva-480w-close-portrait.jpg b/packages/imagetools_3/demo/src/images/elva-480w-close-portrait.jpg
new file mode 100644
index 0000000..0ea3a05
Binary files /dev/null and b/packages/imagetools_3/demo/src/images/elva-480w-close-portrait.jpg differ
diff --git a/packages/imagetools_3/demo/src/images/elva-800w.jpg b/packages/imagetools_3/demo/src/images/elva-800w.jpg
new file mode 100644
index 0000000..d2f052e
Binary files /dev/null and b/packages/imagetools_3/demo/src/images/elva-800w.jpg differ
diff --git a/packages/imagetools_3/demo/src/layouts/LayoutsLayout.astro b/packages/imagetools_3/demo/src/layouts/LayoutsLayout.astro
new file mode 100644
index 0000000..c2d0000
--- /dev/null
+++ b/packages/imagetools_3/demo/src/layouts/LayoutsLayout.astro
@@ -0,0 +1,15 @@
+---
+import { Picture } from "astro-imagetools/components";
+import MainLayout from "./MainLayout.astro";
+
+const { layout, importMetaUrl } = Astro.props;
+---
+
+
+ {layout} Layout Example
+
+
+
+
+
diff --git a/packages/imagetools_3/demo/src/layouts/MainLayout.astro b/packages/imagetools_3/demo/src/layouts/MainLayout.astro
new file mode 100644
index 0000000..3012534
--- /dev/null
+++ b/packages/imagetools_3/demo/src/layouts/MainLayout.astro
@@ -0,0 +1,57 @@
+---
+import { Spa } from "astro-spa";
+import "../styles/index.css";
+
+const { importMetaUrl } = Astro.props as { importMetaUrl: string };
+
+const path =
+ Astro.props.content?.path ||
+ importMetaUrl?.slice(importMetaUrl.indexOf("/pages/") + 7);
+
+const GitHubURL = `https://github.com/RafidMuhymin/astro-imagetools/tree/main/demo/src/pages/${path}`;
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/imagetools_3/demo/src/layouts/PlaceholderLayout.astro b/packages/imagetools_3/demo/src/layouts/PlaceholderLayout.astro
new file mode 100644
index 0000000..809c2f4
--- /dev/null
+++ b/packages/imagetools_3/demo/src/layouts/PlaceholderLayout.astro
@@ -0,0 +1,18 @@
+---
+import { Picture } from "astro-imagetools/components";
+import MainLayout from "./MainLayout.astro";
+
+const { placeholder, importMetaUrl } = Astro.props;
+---
+
+
+ {placeholder} Placeholder Example
+
+
+
+
+
diff --git a/packages/imagetools_3/demo/src/pages/api/renderBackgroundImage.astro b/packages/imagetools_3/demo/src/pages/api/renderBackgroundImage.astro
new file mode 100644
index 0000000..93cf23c
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/api/renderBackgroundImage.astro
@@ -0,0 +1,48 @@
+---
+import { ImageSupportDetection } from "astro-imagetools/components";
+import { renderBackgroundImage } from "astro-imagetools/api";
+import MainLayout from "../../layouts/MainLayout.astro";
+
+const { link, style, htmlElement } = await renderBackgroundImage({
+ src: "https://picsum.photos/1024/768/",
+ content: `
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eveniet, nisi!
+ Commodi, dolor hic omnis debitis natus eaque nisi magni corrupti earum
+ aliquam at quidem dolorum?
+
+
+
+ Eos facere amet nesciunt! Vero, culpa eaque quasi ullam atque alias
+ repudiandae facere placeat ipsam recusandae quam minus nemo officia
+ reiciendis dicta quaerat maiores omnis.
+
+
+
+ Pariatur doloribus, facilis enim accusamus velit, amet ducimus dolorum
+ unde numquam doloremque eveniet eum et error, quod quas fugit commodi
+ suscipit sequi. At, deleniti nihil.
+
+
+
+ Laborum voluptate maxime dicta alias minus nam, doloribus accusantium
+ veritatis perferendis, expedita eaque. Deleniti deserunt, iure dolorum
+ itaque fugiat assumenda ullam amet asperiores soluta ipsam!
+
+
+
+ Veniam qui ad, illo fuga autem voluptatibus iusto cum reprehenderit error.
+ Nemo nisi laborum blanditiis, accusamus dolores harum labore perspiciatis.
+ Nesciunt, repellat mollitia. Rem, labore?
+
`,
+});
+---
+
+
+
+
+ Astro ImageTools {"renderBackgroundImage"} API Example
+
+
+
+
+
diff --git a/packages/imagetools_3/demo/src/pages/api/renderBackgroundPicture.astro b/packages/imagetools_3/demo/src/pages/api/renderBackgroundPicture.astro
new file mode 100644
index 0000000..1324eb3
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/api/renderBackgroundPicture.astro
@@ -0,0 +1,45 @@
+---
+import { renderBackgroundPicture } from "astro-imagetools/api";
+import MainLayout from "../../layouts/MainLayout.astro";
+
+const { link, style, htmlElement } = await renderBackgroundPicture({
+ src: "https://picsum.photos/1024/768/",
+ content: `
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eveniet, nisi!
+ Commodi, dolor hic omnis debitis natus eaque nisi magni corrupti earum
+ aliquam at quidem dolorum?
+
+
+
+ Eos facere amet nesciunt! Vero, culpa eaque quasi ullam atque alias
+ repudiandae facere placeat ipsam recusandae quam minus nemo officia
+ reiciendis dicta quaerat maiores omnis.
+
+
+
+ Pariatur doloribus, facilis enim accusamus velit, amet ducimus dolorum
+ unde numquam doloremque eveniet eum et error, quod quas fugit commodi
+ suscipit sequi. At, deleniti nihil.
+
+
+
+ Laborum voluptate maxime dicta alias minus nam, doloribus accusantium
+ veritatis perferendis, expedita eaque. Deleniti deserunt, iure dolorum
+ itaque fugiat assumenda ullam amet asperiores soluta ipsam!
+
+
+
+ Veniam qui ad, illo fuga autem voluptatibus iusto cum reprehenderit error.
+ Nemo nisi laborum blanditiis, accusamus dolores harum labore perspiciatis.
+ Nesciunt, repellat mollitia. Rem, labore?
+
`,
+});
+---
+
+
+ Astro ImageTools {"renderBackgroundPicture"} API Example
+
+
+
+
+
diff --git a/packages/imagetools_3/demo/src/pages/api/renderImg.astro b/packages/imagetools_3/demo/src/pages/api/renderImg.astro
new file mode 100644
index 0000000..313f18d
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/api/renderImg.astro
@@ -0,0 +1,17 @@
+---
+import { renderImg } from "astro-imagetools/api";
+import MainLayout from "../../layouts/MainLayout.astro";
+
+const { link, style, img } = await renderImg({
+ src: "https://picsum.photos/1024/768/",
+ alt: "A random image",
+});
+---
+
+
+ Astro ImageTools {"renderImg"} API Example
+
+
+
+
+
diff --git a/packages/imagetools_3/demo/src/pages/api/renderPicture.astro b/packages/imagetools_3/demo/src/pages/api/renderPicture.astro
new file mode 100644
index 0000000..fe8abdf
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/api/renderPicture.astro
@@ -0,0 +1,17 @@
+---
+import { renderPicture } from "astro-imagetools/api";
+import MainLayout from "../../layouts/MainLayout.astro";
+
+const { link, style, picture } = await renderPicture({
+ src: "https://picsum.photos/1024/768/",
+ alt: "A random image",
+});
+---
+
+
+ Astro ImageTools {"renderPicture"} API Example
+
+
+
+
+
diff --git a/packages/imagetools_3/demo/src/pages/components/BackgroundImage.astro b/packages/imagetools_3/demo/src/pages/components/BackgroundImage.astro
new file mode 100644
index 0000000..aef8bdf
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/components/BackgroundImage.astro
@@ -0,0 +1,45 @@
+---
+import {
+ BackgroundImage,
+ ImageSupportDetection,
+} from "astro-imagetools/components";
+import MainLayout from "../../layouts/MainLayout.astro";
+---
+
+
+
+
+
+ Astro ImageTools {" "} Component Example
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eveniet, nisi!
+ Commodi, dolor hic omnis debitis natus eaque nisi magni corrupti earum
+ aliquam at quidem dolorum?
+
+
+ Eos facere amet nesciunt! Vero, culpa eaque quasi ullam atque alias
+ repudiandae facere placeat ipsam recusandae quam minus nemo officia
+ reiciendis dicta quaerat maiores omnis.
+
+
+ Pariatur doloribus, facilis enim accusamus velit, amet ducimus dolorum
+ unde numquam doloremque eveniet eum et error, quod quas fugit commodi
+ suscipit sequi. At, deleniti nihil.
+
+
+ Laborum voluptate maxime dicta alias minus nam, doloribus accusantium
+ veritatis perferendis, expedita eaque. Deleniti deserunt, iure dolorum
+ itaque fugiat assumenda ullam amet asperiores soluta ipsam!
+
+
+ Veniam qui ad, illo fuga autem voluptatibus iusto cum reprehenderit error.
+ Nemo nisi laborum blanditiis, accusamus dolores harum labore perspiciatis.
+ Nesciunt, repellat mollitia. Rem, labore?
+
+
+
diff --git a/packages/imagetools_3/demo/src/pages/components/BackgroundPicture.astro b/packages/imagetools_3/demo/src/pages/components/BackgroundPicture.astro
new file mode 100644
index 0000000..871d97c
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/components/BackgroundPicture.astro
@@ -0,0 +1,40 @@
+---
+import { BackgroundPicture } from "astro-imagetools/components";
+import MainLayout from "../../layouts/MainLayout.astro";
+---
+
+
+
+ Astro ImageTools {" "} Component Example
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eveniet, nisi!
+ Commodi, dolor hic omnis debitis natus eaque nisi magni corrupti earum
+ aliquam at quidem dolorum?
+
+
+ Eos facere amet nesciunt! Vero, culpa eaque quasi ullam atque alias
+ repudiandae facere placeat ipsam recusandae quam minus nemo officia
+ reiciendis dicta quaerat maiores omnis.
+
+
+ Pariatur doloribus, facilis enim accusamus velit, amet ducimus dolorum
+ unde numquam doloremque eveniet eum et error, quod quas fugit commodi
+ suscipit sequi. At, deleniti nihil.
+
+
+ Laborum voluptate maxime dicta alias minus nam, doloribus accusantium
+ veritatis perferendis, expedita eaque. Deleniti deserunt, iure dolorum
+ itaque fugiat assumenda ullam amet asperiores soluta ipsam!
+
+
+ Veniam qui ad, illo fuga autem voluptatibus iusto cum reprehenderit error.
+ Nemo nisi laborum blanditiis, accusamus dolores harum labore perspiciatis.
+ Nesciunt, repellat mollitia. Rem, labore?
+
+
+
diff --git a/packages/imagetools_3/demo/src/pages/components/Img.astro b/packages/imagetools_3/demo/src/pages/components/Img.astro
new file mode 100644
index 0000000..3f6eb9b
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/components/Img.astro
@@ -0,0 +1,12 @@
+---
+import { Img } from "astro-imagetools/components";
+import MainLayout from "../../layouts/MainLayout.astro";
+---
+
+
+ Astro ImageTools {" "} Component Example
+
+
+
+
+
diff --git a/packages/imagetools_3/demo/src/pages/components/Picture.astro b/packages/imagetools_3/demo/src/pages/components/Picture.astro
new file mode 100644
index 0000000..b617e39
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/components/Picture.astro
@@ -0,0 +1,12 @@
+---
+import { Picture } from "astro-imagetools/components";
+import MainLayout from "../../layouts/MainLayout.astro";
+---
+
+
+ Astro ImageTools {" "} Component Example
+
+
+
+
+
diff --git a/packages/imagetools_3/demo/src/pages/index.md b/packages/imagetools_3/demo/src/pages/index.md
new file mode 100644
index 0000000..66d5df0
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/index.md
@@ -0,0 +1,78 @@
+---
+path: index.md
+layout: ../layouts/MainLayout.astro
+---
+
+# Image Optimization in Astro with Astro ImageTools
+
+This page demonstrates the usage of the [astro-imagetools](https://www.npmjs.com/package/astro-imagetools) library with live examples.
+
+
+
+## Components
+
+- [` ` Component](/components/Img)
+- [` ` Component](/components/Picture)
+- [` ` Component](/components/BackgroundImage)
+- [` ` Component](/components/BackgroundPicture)
+
+## APIs
+
+- [`renderImg` API](/api/renderImg)
+- [`renderPicture` API](/api/renderPicture)
+- [`renderBackgroundImage` API](/api/renderBackgroundImage)
+- [`renderBackgroundPicture` API](/api/renderBackgroundPicture)
+
+## Layout
+
+The `layout` property tells the image to respond differently depending on the device size or the container size.
+
+Select a layout below and try resizing the window or rotating your device to see how the image reacts.
+
+- [Constrained Layout](/layout/constrained)
+- [Fixed Layout](/layout/fixed)
+- [Full Width Layout](/layout/fullWidth)
+- [Fill Layout](/layout/fill)
+
+
+
+## Placeholder
+
+The `placeholder` property tells the image what to show while loading.
+
+- [Blurred Placeholder](/placeholder/blurred)
+- [Dominant Color Placeholder](/placeholder/dominantColor)
+- [Traced SVG Placeholder](/placeholder/tracedSVG)
+- [No Placeholder](/placeholder/none)
+
+
+
+## Internal Image
+
+The following is an example of a reference to an internal image in the `src` directory (`../images/elva-800w.jpg`).
+
+
+
+
+
+## External Image
+
+The following is an example of a reference to an external image (`https://picsum.photos/1024/768`).
+
+
+
+
+
+## Image in /public
+
+This image is in the public directory (`/images/public.jpeg`).
+
+
+
+
+
+## Learn More
+
+You can optionally configure many more things!
+
+Checkout the [Astro ImageTools](https://astro-imagetools-docs.vercel.app/) documentation to learn more.
diff --git a/packages/imagetools_3/demo/src/pages/layout/constrained.astro b/packages/imagetools_3/demo/src/pages/layout/constrained.astro
new file mode 100644
index 0000000..669994d
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/layout/constrained.astro
@@ -0,0 +1,5 @@
+---
+import LayoutsLayout from "../../layouts/LayoutsLayout.astro";
+---
+
+
diff --git a/packages/imagetools_3/demo/src/pages/layout/fill.astro b/packages/imagetools_3/demo/src/pages/layout/fill.astro
new file mode 100644
index 0000000..01d5e0f
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/layout/fill.astro
@@ -0,0 +1,5 @@
+---
+import LayoutsLayout from "../../layouts/LayoutsLayout.astro";
+---
+
+
diff --git a/packages/imagetools_3/demo/src/pages/layout/fixed.astro b/packages/imagetools_3/demo/src/pages/layout/fixed.astro
new file mode 100644
index 0000000..65e626c
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/layout/fixed.astro
@@ -0,0 +1,5 @@
+---
+import LayoutsLayout from "../../layouts/LayoutsLayout.astro";
+---
+
+
diff --git a/packages/imagetools_3/demo/src/pages/layout/fullWidth.astro b/packages/imagetools_3/demo/src/pages/layout/fullWidth.astro
new file mode 100644
index 0000000..b822c52
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/layout/fullWidth.astro
@@ -0,0 +1,5 @@
+---
+import LayoutsLayout from "../../layouts/LayoutsLayout.astro";
+---
+
+
diff --git a/packages/imagetools_3/demo/src/pages/placeholder/blurred.astro b/packages/imagetools_3/demo/src/pages/placeholder/blurred.astro
new file mode 100644
index 0000000..1fee26c
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/placeholder/blurred.astro
@@ -0,0 +1,5 @@
+---
+import PlaceholderLayout from "../../layouts/PlaceholderLayout.astro";
+---
+
+
diff --git a/packages/imagetools_3/demo/src/pages/placeholder/dominantColor.astro b/packages/imagetools_3/demo/src/pages/placeholder/dominantColor.astro
new file mode 100644
index 0000000..5a9b6c9
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/placeholder/dominantColor.astro
@@ -0,0 +1,5 @@
+---
+import PlaceholderLayout from "../../layouts/PlaceholderLayout.astro";
+---
+
+
diff --git a/packages/imagetools_3/demo/src/pages/placeholder/none.astro b/packages/imagetools_3/demo/src/pages/placeholder/none.astro
new file mode 100644
index 0000000..293dc79
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/placeholder/none.astro
@@ -0,0 +1,5 @@
+---
+import PlaceholderLayout from "../../layouts/PlaceholderLayout.astro";
+---
+
+
diff --git a/packages/imagetools_3/demo/src/pages/placeholder/tracedSVG.astro b/packages/imagetools_3/demo/src/pages/placeholder/tracedSVG.astro
new file mode 100644
index 0000000..9e3393a
--- /dev/null
+++ b/packages/imagetools_3/demo/src/pages/placeholder/tracedSVG.astro
@@ -0,0 +1,5 @@
+---
+import PlaceholderLayout from "../../layouts/PlaceholderLayout.astro";
+---
+
+
diff --git a/packages/imagetools_3/demo/src/styles/index.css b/packages/imagetools_3/demo/src/styles/index.css
new file mode 100644
index 0000000..518e741
--- /dev/null
+++ b/packages/imagetools_3/demo/src/styles/index.css
@@ -0,0 +1,19 @@
+main {
+ padding: 1.5rem;
+ background-color: black;
+ color: white;
+}
+
+code::before {
+ content: "`";
+}
+
+code::after {
+ content: "`";
+}
+
+.view-source {
+ position: fixed;
+ top: 0;
+ right: 0;
+}
diff --git a/packages/imagetools_3/docs/.npmrc b/packages/imagetools_3/docs/.npmrc
new file mode 100644
index 0000000..ef83021
--- /dev/null
+++ b/packages/imagetools_3/docs/.npmrc
@@ -0,0 +1,2 @@
+# Expose Astro dependencies for `pnpm` users
+shamefully-hoist=true
diff --git a/packages/imagetools_3/docs/.stackblitzrc b/packages/imagetools_3/docs/.stackblitzrc
new file mode 100644
index 0000000..43798ec
--- /dev/null
+++ b/packages/imagetools_3/docs/.stackblitzrc
@@ -0,0 +1,6 @@
+{
+ "startCommand": "npm start",
+ "env": {
+ "ENABLE_CJS_IMPORTS": true
+ }
+}
\ No newline at end of file
diff --git a/packages/imagetools_3/docs/README.md b/packages/imagetools_3/docs/README.md
new file mode 100644
index 0000000..984e496
--- /dev/null
+++ b/packages/imagetools_3/docs/README.md
@@ -0,0 +1,97 @@
+# Astro ImageTools Docs
+
+To all who come to this happy place: welcome.
+
+This is the repo for [https://astro-imagetools-docs.vercel.app/](https://astro-imagetools-docs.vercel.app/).
+This repo contains all the source code to build the docs site.
+
+## We are Astro
+
+Astro is a site builder for the web platform.
+We want everyone to be successful building sites, and that means helping everyone understand how Astro works.
+
+## You are Awesome
+
+You can also help make the docs awesome.
+Your feedback is welcome.
+Your writing, editing, translating, designing, and developing skills are welcome.
+You being a part of our community is welcome.
+
+## Chat with Us
+
+You can learn more about Astro, get support, and meet other devs in [our Discord community](https://astro.build/chat).
+
+## Raise an Issue
+
+Is something missing?
+Is something wrong?
+Could something be better?
+Issues are a quick way for you to offer us feedback about the docs.
+
+Before you share, please [see if your issue has already been reported](https://github.com/RafidMuhymin/astro-imagetools/issues).
+
+## Edit a Page
+
+Every page on [https://astro-imagetools-docs.vercel.app/](https://astro-imagetools-docs.vercel.app/) has an **Edit this page** button in the sidebar.
+You can click that button to edit the source code for that page in **GitHub**.
+
+After you make your changes, click **Commit changes**.
+This will automatically create a [fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) of the docs in your GitHub account with the changes.
+
+Once your edits are ready in GitHub, follow the prompts to **create a pull request** and submit your changes for review.
+
+## Develop
+
+To begin developing locally, checkout this project from your machine.
+
+```shell
+git clone git@github.com:RafidMuhymin/astro-imagetools.git
+```
+
+You can install and run the project locally using [pnpm](https://pnpm.io/). Head to [the pnpm installation guide](https://pnpm.io/installation) to get that set up. Then, run the following from your terminal:
+
+```shell
+pnpm install
+
+pnpm dev
+```
+
+If you’re copying these instructions, remember to [configure this project as a fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-for-a-fork).
+
+```shell
+git remote add upstream git@github.com:RafidMuhymin/astro-imagetools.git
+```
+
+At any point, create a branch for your contribution.
+We are not strict about branch names.
+
+```shell
+git checkout -b add/klingon-language
+```
+
+That’s it.
+As you [open a pull request](https://github.com/withastro/astro/compare), please include a clear title and description.
+
+```markdown
+# Add Klingon language to Getting Started page
+
+This adds the Klingon language and also updates the sidebar and language selection components.
+```
+
+Thank you for helping make the docs awesome.
+And please, [come chat with us](https://astro.build/chat) if you have any questions.
+
+## Deploy
+
+Every pull request generates a preview using **Vercel** for anyone to see.
+
+Use the **Deploy Preview** of your pull request to review and share your changes.
+
+The docs site will be automatically updated whenever pull requests are merged.
+
+## Next Steps
+
+- [Read the docs](https://astro-imagetools-docs.vercel.app/)
+- [Fork the project](https://github.com/RafidMuhymin/astro-imagetools/fork)
+- [Raise an issue](https://github.com/RafidMuhymin/astro-imagetools/issues/new)
+- [Discuss the docs](https://discord.gg/cZDZU3hJHc)
diff --git a/packages/imagetools_3/docs/astro.config.mjs b/packages/imagetools_3/docs/astro.config.mjs
new file mode 100644
index 0000000..1cb4233
--- /dev/null
+++ b/packages/imagetools_3/docs/astro.config.mjs
@@ -0,0 +1,25 @@
+import mdx from "@astrojs/mdx";
+import react from "@astrojs/react";
+import preact from "@astrojs/preact";
+import { defineConfig } from "astro/config";
+import AutoImport from "unplugin-auto-import/vite";
+
+// https://astro.build/config
+export default defineConfig({
+ site: "https://astro-imagetools-docs.vercel.app/",
+ integrations: [preact(), react(), mdx()],
+ vite: {
+ plugins: [
+ AutoImport({
+ include: [/\.astro$/, /\.mdx$/],
+ imports: [
+ {
+ "@astrojs/markdown-component": [["default", "Markdown"]],
+ "/src/components/CodeExample.astro": [["default", "CodeExample"]],
+ },
+ ],
+ dts: "./auto-imports.d.ts",
+ }),
+ ],
+ },
+});
diff --git a/packages/imagetools_3/docs/auto-imports.d.ts b/packages/imagetools_3/docs/auto-imports.d.ts
new file mode 100644
index 0000000..4ca0671
--- /dev/null
+++ b/packages/imagetools_3/docs/auto-imports.d.ts
@@ -0,0 +1,7 @@
+// Generated by 'unplugin-auto-import'
+export {};
+
+declare global {
+ const CodeExample: typeof import("../../../src/components/CodeExample.astro")["default"];
+ const Markdown: typeof import("@astrojs/markdown-component")["default"];
+}
diff --git a/packages/imagetools_3/docs/package.json b/packages/imagetools_3/docs/package.json
new file mode 100644
index 0000000..44f0b83
--- /dev/null
+++ b/packages/imagetools_3/docs/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "@example/docs",
+ "version": "0.0.1",
+ "private": true,
+ "scripts": {
+ "dev": "astro dev",
+ "start": "astro dev",
+ "build": "astro build",
+ "preview": "astro preview"
+ },
+ "dependencies": {
+ "@algolia/client-search": "^4.14.3",
+ "@astrojs/markdown-component": "^1.0.2",
+ "@astrojs/mdx": "^0.14.0",
+ "@docsearch/css": "^3.3.2",
+ "@docsearch/react": "^3.3.2",
+ "@types/react": "^18.0.26",
+ "preact": "^10.11.3",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "unplugin-auto-import": "^0.9.5"
+ },
+ "devDependencies": {
+ "@astrojs/preact": "^0.2.0",
+ "@astrojs/react": "^0.2.1",
+ "astro": "^1.9.2"
+ }
+}
diff --git a/packages/imagetools_3/docs/public/default-og-image.png b/packages/imagetools_3/docs/public/default-og-image.png
new file mode 100644
index 0000000..9790320
Binary files /dev/null and b/packages/imagetools_3/docs/public/default-og-image.png differ
diff --git a/packages/imagetools_3/docs/public/favicon.ico b/packages/imagetools_3/docs/public/favicon.ico
new file mode 100644
index 0000000..578ad45
Binary files /dev/null and b/packages/imagetools_3/docs/public/favicon.ico differ
diff --git a/packages/imagetools_3/docs/public/make-scrollable-code-focusable.js b/packages/imagetools_3/docs/public/make-scrollable-code-focusable.js
new file mode 100644
index 0000000..6fbf1ee
--- /dev/null
+++ b/packages/imagetools_3/docs/public/make-scrollable-code-focusable.js
@@ -0,0 +1,3 @@
+Array.from(document.getElementsByTagName("pre")).forEach((element) => {
+ element.setAttribute("tabindex", "0");
+});
diff --git a/packages/imagetools_3/docs/sandbox.config.json b/packages/imagetools_3/docs/sandbox.config.json
new file mode 100644
index 0000000..9178af7
--- /dev/null
+++ b/packages/imagetools_3/docs/sandbox.config.json
@@ -0,0 +1,11 @@
+{
+ "infiniteLoopProtection": true,
+ "hardReloadOnChange": false,
+ "view": "browser",
+ "template": "node",
+ "container": {
+ "port": 3000,
+ "startScript": "start",
+ "node": "14"
+ }
+}
diff --git a/packages/imagetools_3/docs/src/components/CodeExample.astro b/packages/imagetools_3/docs/src/components/CodeExample.astro
new file mode 100644
index 0000000..92ae1f5
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/CodeExample.astro
@@ -0,0 +1,83 @@
+---
+import { Code } from "astro/components";
+
+const { values, global, api, component } = Astro.props;
+
+const isJS = component ? false : true;
+
+const isGlobal = global;
+
+const comment = (text) => (isJS ? `// ${text}` : ``) + "\n";
+
+function formatValue(value) {
+ let formattedValue = ["number", "boolean", "function"].includes(typeof value)
+ ? `${value}`
+ : Array.isArray(value)
+ ? `${value[0]}`
+ : typeof value === "string" &&
+ (value.startsWith("{") || value.startsWith("["))
+ ? value
+ : `"${value}"`;
+
+ if (typeof value === "function") {
+ formattedValue = formattedValue.replaceAll(/\n\s+/g, "\n ");
+
+ formattedValue = formattedValue.replace(/\n\s+\}$/, "\n }");
+ }
+
+ if (component) {
+ (formattedValue.startsWith("{") ||
+ formattedValue.startsWith("[") ||
+ ["number", "boolean", "function"].includes(typeof value) ||
+ Array.isArray(value)) &&
+ (formattedValue = `{${formattedValue}}`);
+ }
+
+ return formattedValue;
+}
+
+function code(props, { api, component }) {
+ const builtProps = Object.keys(props)
+ .filter((key) =>
+ isGlobal
+ ? ["src", "alt", "tag", "content", "artDirectives"].includes(key)
+ ? false
+ : true
+ : true
+ )
+ .map((key) =>
+ key === "comment"
+ ? `/* ${props[key]} */`
+ : key + (isJS ? ": " : "=") + `${formatValue(props[key])}`
+ )
+ .join(`${isJS ? "," : ""}\n `);
+
+ return (
+ `${
+ isJS
+ ? isGlobal
+ ? `export default defineConfig({`
+ : `const renderedHTML = await ${api}({`
+ : `<${component}`
+ }
+ ${builtProps}${isJS ? "," : ""}
+${isJS ? `});` : `/>`}` + "\n"
+ );
+}
+
+const codeBlock = values
+ .map((value) =>
+ value === ""
+ ? "\n"
+ : typeof value === "string"
+ ? comment(value)
+ : Array.isArray(value)
+ ? isJS
+ ? value.filter((value) => value !== "---").join("\n") + "\n"
+ : value.join("\n") + "\n"
+ : code(value, { api, component })
+ )
+ .join("");
+---
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions.astro b/packages/imagetools_3/docs/src/components/ConfigOptions.astro
new file mode 100644
index 0000000..bc7ed80
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions.astro
@@ -0,0 +1,107 @@
+---
+import Src from "@config/src.astro";
+import Alt from "@config/alt.astro";
+import Tag from "@config/tag.astro";
+import Content from "@config/content.astro";
+import Sizes from "@config/sizes.astro";
+import Preload from "@config/preload.astro";
+import Loading from "@config/loading.astro";
+import Decoding from "@config/decoding.astro";
+import Attributes from "@config/attributes.astro";
+import Layout from "@config/layout.astro";
+import Placeholder from "@config/placeholder.astro";
+import BreakPoints from "@config/breakpoints.astro";
+import ObjectFit from "@config/objectFit.astro";
+import ObjectPosition from "@config/objectPosition.astro";
+import BackgroundSize from "@config/backgroundSize.astro";
+import BackgroundPosition from "@config/backgroundPosition.astro";
+import Format from "@config/format.astro";
+import FallbackFormat from "@config/fallbackFormat.astro";
+import IncludeSourceFormat from "@config/includeSourceFormat.astro";
+import FormatOptions from "@config/formatOptions.astro";
+import FadeInTransition from "@config/fadeInTransition.astro";
+import ArtDirectives from "@config/artDirectives.astro";
+import CacheDir from "@config/cacheDir.astro";
+import AssetFileNames from "@config/assetFileNames.astro";
+import Flip from "@config/flip.astro";
+import Flop from "@config/flop.astro";
+import Invert from "@config/invert.astro";
+import Flatten from "@config/flatten.astro";
+import Normalize from "@config/normalize.astro";
+import Grayscale from "@config/grayscale.astro";
+import Hue from "@config/hue.astro";
+import Saturation from "@config/saturation.astro";
+import Brightness from "@config/brightness.astro";
+import Width from "@config/width.astro";
+import Height from "@config/height.astro";
+import Aspect from "@config/aspect.astro";
+import Background from "@config/background.astro";
+import Tint from "@config/tint.astro";
+import Blur from "@config/blur.astro";
+import Median from "@config/median.astro";
+import Rotate from "@config/rotate.astro";
+import Quality from "@config/quality.astro";
+import Fit from "@config/fit.astro";
+import Kernel from "@config/kernel.astro";
+import Position from "@config/position.astro";
+
+const { props } = Astro;
+
+const isGlobal = props.global;
+
+const { api, component } = props;
+
+const isBackground =
+ component?.startsWith("Background") || api?.startsWith("renderBackground");
+
+const isBackgroundImage =
+ component === "BackgroundImage" || api === "renderBackgroundImage";
+
+const isNotImg = component !== "Img" && api !== "renderImg";
+---
+
+{!isGlobal && }
+{!isGlobal && !isBackground && }
+{!isGlobal && isBackground && }
+{!isGlobal && api && isBackground && }
+{!isBackgroundImage && }
+
+{!isBackgroundImage && }
+{!isBackgroundImage && }
+
+{!isBackground && }
+
+
+{!isBackgroundImage && }
+{!isBackgroundImage && }
+{isBackgroundImage && }
+{isBackgroundImage && }
+
+{isNotImg && }
+{isNotImg && }
+
+{isNotImg && !isBackgroundImage && }
+{!isGlobal && isNotImg && }
+{isGlobal && }
+{isGlobal && }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/alt.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/alt.astro
new file mode 100644
index 0000000..a3db1d0
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/alt.astro
@@ -0,0 +1,22 @@
+
+
+ ### `alt`
+
+ **Type:** `string`
+
+ **Default:** `undefined`
+
+ The alternative text to display if the image fails to load.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/artDirectives.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/artDirectives.astro
new file mode 100644
index 0000000..98dcb75
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/artDirectives.astro
@@ -0,0 +1,115 @@
+---
+const { api, component } = Astro.props;
+
+const dynamicText = component
+ ? `${"`"}<${component} />${"`"} component`
+ : `${"`"}render${api}${"`"} API`;
+
+const isPicture =
+ Astro.props.component === "Picture" || Astro.props.api === "renderPicture";
+
+const isBackgroundImage =
+ Astro.props.component === "BackgroundImage" ||
+ Astro.props.api === "renderBackgroundImage";
+---
+
+
+
+ ### `artDirectives`
+
+ **Type:** `ArtDirective[]`
+
+
+
+{isPicture ? (
+
+ *An `ArtDirective` object can take all the props supported by the{" "}
+ { } except `alt`, `preload`, `loading`,
+ `decoding`, `attributes`, `layout`, and `fadeInTransition`. The only
+ addition is `media`. Only the [`src`](#src) and [`media`](#media) properties
+ are required.*
+
+) : isBackgroundImage ? (
+
+ *An `ArtDirective` object can take all the props supported by the{" "}
+ { } except `attributes`. The only addition
+ is `media`. Only the [`src`](#src) and [`media`](#media) properties are
+ required.*
+
+) : (
+
+ *An `ArtDirective` object can take all the props supported by the{" "}
+ { } except `preload`, `loading`,
+ `decoding`, `attributes`, and `fadeInTransition`. The only addition is
+ `media`. Only the [`src`](#src) and [`media`](#media) properties are
+ required.*
+
+)}
+
+
+ **Default:** `undefined`
+
+ The list of art directions to be applied to the generated picture.
+
+ **Code Example:**
+
+
+
+
+
+
+ #### `media`
+
+ **Type:** `string`
+
+ **Default:** `undefined`
+
+ The CSS media query to use to define the art direction.
+
+ **Code Example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/aspect.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/aspect.astro
new file mode 100644
index 0000000..53a54a8
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/aspect.astro
@@ -0,0 +1,23 @@
+
+
+ ### `aspect` | `ar`
+
+ **Type:** `number`
+
+ **Default:** _The aspect ratio of the source image_
+
+ Resizes the image to be the specified aspect ratio. If `height` and `width` are both provided, this will be ignored. If `height` is provided, the `height` will be scaled accordingly. If `width` is provided, the height will be scaled accordingly. If neither height nor width are provided, the image will be cropped to the given `aspect` ratio.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/assetFileNames.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/assetFileNames.astro
new file mode 100644
index 0000000..60a4211
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/assetFileNames.astro
@@ -0,0 +1,26 @@
+
+ ### `assetFileNames`
+
+ **Type:** `string`
+
+ **Default:** `_astro/[name]@[width].[hash][extname]`
+
+ The file name pattern for the image assets generated. This config can be used as an alternative to `vite.build.rollupOptions.output.assetFileNames` so that the pattern only applies to assets generated by `astro-imagetools`. Patterns support the following placeholders:
+
+ - `[name]` - the name of the asset (basename of the source file unless the source was a data URI, in which case it's the hash of the data)
+ - `[width]` - the width descriptor of the image asset
+ - `[hash]` - the hash of the asset path. A specific length can be specified by appending a colon and the desired length, e.g. `[hash:8]`
+ - `[ext]` - the extension of the asset (without the leading `.`)
+ - `[extname]` - the extension of the asset (with the leading `.`)
+
+ > **Note:** Currently, the hash is generated from the asset path, not the asset content. This means that if you change the asset content, the hash will not change. It will be fixed in a future release.
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/attributes.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/attributes.astro
new file mode 100644
index 0000000..570a9f7
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/attributes.astro
@@ -0,0 +1,116 @@
+---
+const isImg =
+ Astro.props.component === "Img" || Astro.props.api === "renderImg";
+
+const isPicture =
+ Astro.props.component === "Picture" || Astro.props.api === "renderPicture";
+
+const isBackgroundImage =
+ Astro.props.component === "BackgroundImage" ||
+ Astro.props.api === "renderBackgroundImage";
+---
+
+
+ ### `attributes`
+
+ **Type:**
+
+
+
+{isImg ? (
+
+ ```ts
+ declare interface Attributes {
+ style?: Record;
+ link?: Omit, "as" | "rel" | "imagesizes" | "imagesrcset">;
+ img?: Omit<
+ Record,
+ | "src"
+ | "alt"
+ | "srcset"
+ | "sizes"
+ | "width"
+ | "height"
+ | "loading"
+ | "decoding"
+ >;
+ }
+ ```
+
+) : isPicture ? (
+
+ ```ts
+ declare interface Attributes {
+ picture?: Record;
+ style?: Record;
+ link?: Omit, "as" | "rel" | "imagesizes" | "imagesrcset">;
+ img?: Omit<
+ Record,
+ | "src"
+ | "alt"
+ | "srcset"
+ | "sizes"
+ | "width"
+ | "height"
+ | "loading"
+ | "decoding"
+ >;
+ }
+ ```
+
+) : isBackgroundImage ? (
+
+ ```ts
+ declare interface Attributes {
+ container?: Record;
+ style?: Record;
+ link?: Omit, "as" | "rel" | "imagesizes" | "imagesrcset">;
+ }
+ ```
+
+) : (
+
+ ```ts
+ declare interface Attributes {
+ container?: Record;
+ picture?: Record;
+ style?: Record;
+ link?: Omit, "as" | "rel" | "imagesizes" | "imagesrcset">;
+ img?: Omit<
+ Record,
+ | "src"
+ | "alt"
+ | "srcset"
+ | "sizes"
+ | "width"
+ | "height"
+ | "loading"
+ | "decoding"
+ >;
+ }
+ ```
+
+)}
+
+
+ **Default:** `{}`
+
+ The HTML attributes to add to the generate elements. If the `class`, `style`, and `onload` attributes are present, the values passed via this config will be merged.
+
+ **Code Example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/background.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/background.astro
new file mode 100644
index 0000000..1f25259
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/background.astro
@@ -0,0 +1,52 @@
+
+
+ ### `background`
+
+ **Type:** `string`
+
+ **Default:** `undefined`
+
+ This instructs various props (e.g. [`rotate`](#rotate)) to use the specified color when filling empty spots in the image.
+
+ > **Note:** This prop does nothing on it's own, it has to be used in conjunction with another prop.
+
+ **Code example:**
+
+ The below example demonstrates all the posible cases when the `background` prop is used.
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/backgroundPosition.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/backgroundPosition.astro
new file mode 100644
index 0000000..6e29581
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/backgroundPosition.astro
@@ -0,0 +1,22 @@
+
+
+ ### `backgroundPosition`
+
+ **Type:** `string`
+
+ **Default:** `50% 50%`
+
+ The value of the `background-position` CSS property of the generated background image sets.
+
+ **Code Example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/backgroundSize.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/backgroundSize.astro
new file mode 100644
index 0000000..98e5bb5
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/backgroundSize.astro
@@ -0,0 +1,22 @@
+
+
+ ### `backgroundSize`
+
+ **Type:** `"fill" | "contain" | "cover" | "none" | "scale-down"`
+
+ **Default:** `cover`
+
+ The value of the `background-size` CSS property of the generated background image sets.
+
+ **Code Example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/blur.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/blur.astro
new file mode 100644
index 0000000..9627c6f
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/blur.astro
@@ -0,0 +1,39 @@
+
+
+ ### `blur`
+
+ **Type:** `string`
+
+ **Default:** `undefined`
+
+ Blurs the image. If the value is `true`, it performs a _fast blur_. When a `number` between `0.3` and `1000` is provided, it performs a more accurate _gaussian blur_.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/breakpoints.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/breakpoints.astro
new file mode 100644
index 0000000..dc04a1a
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/breakpoints.astro
@@ -0,0 +1,44 @@
+
+
+ ### `breakpoints`
+
+ **Type:** `number[] | { count?: number; minWidth?: number; maxWidth?: number }`
+
+ **Default:** `undefined`
+
+ An array of widths in pixels to generate image sets for. If not provided, the breakpoints
+ will be calculated automatically.
+
+ If an object is passed then the breakpoints will be calculated automatically based
+ on the values of the `count`,
+ `minWidth`, and `maxWidth` properties. The `count` property is to specify the number
+ of breakpoints to generate. The `minWidth` and `maxWidth` properties are to specify
+ the widths to generate in the range between their values.
+
+ When an object is passed or the `breakpoints` prop is not provided, the breakpoints
+ are calculated using a simple formula/algorithm. Instead of explaining the complete
+ algorithm here, I am linking to the [code](https://github.com/RafidMuhymin/astro-imagetools/blob/main/packages/astro-imagetools/utils/getBreakpoints.js).
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/brightness.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/brightness.astro
new file mode 100644
index 0000000..ea856a0
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/brightness.astro
@@ -0,0 +1,23 @@
+
+
+ ### `brightness`
+
+ **Type:** `number`
+
+ **Default:** `undefined`
+
+ Adjusts the images `brightness` with the given brightness multiplier. Commonly used together with [`hue`](#hue) and [`saturation`](#saturation).
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/cacheDir.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/cacheDir.astro
new file mode 100644
index 0000000..13b94c7
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/cacheDir.astro
@@ -0,0 +1,21 @@
+
+
+ ### `cacheDir`
+
+ **Type:** `string`
+
+ **Default:** `./node_modules/.cache/astro-imagetools` (most of the time)
+
+ Where the cached images will be saved to. If not passed the default cache directory will be located using the [`find-cache-dir`](https://www.npmjs.com/package/find-cache-dir) library.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/content.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/content.astro
new file mode 100644
index 0000000..20d9129
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/content.astro
@@ -0,0 +1,22 @@
+
+
+ ### `content`
+
+ **Type:** `string`
+
+ **Default:** `undefined`
+
+ The content of the html element to apply the generated background image sets to.
+
+ **Code Example:**
+
+
+ r.text())`],
+ },
+ ]}
+/>
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/decoding.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/decoding.astro
new file mode 100644
index 0000000..a1c5515
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/decoding.astro
@@ -0,0 +1,24 @@
+
+
+ ### `decoding`
+
+ **Type:** `"async" | "sync" | "auto" | null`
+
+ **Default:** `"async"`
+
+ The value of the `decoding` attribute of the generated ` ` element. If `null`
+ is provided, the `decoding` attribute will be omitted.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/fadeInTransition.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/fadeInTransition.astro
new file mode 100644
index 0000000..55c8daa
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/fadeInTransition.astro
@@ -0,0 +1,45 @@
+
+
+ ### `fadeInTransition`
+
+ **Type:** `boolean | { delay?: string; duration?: string; timingFunction?: string; }`
+
+ **Default:** `true | { delay: "0s"; duration?: "1s"; timingFunction: "ease"; }`
+
+ Whether or not to fade in the image when it is loaded. If an object is passed with the `delay`, `duration`, and `timingFunction` properties, the values will be used as values for the [`transition-delay`](https://developer.mozilla.org/en-US/docs/Web/CSS/transition-delay), [`transition-duration`](https://developer.mozilla.org/en-US/docs/Web/CSS/transition-duration), and [`transition-timing-function`](https://developer.mozilla.org/en-US/docs/Web/CSS/transition-timing-function) CSS properties, respectively.
+
+ > **Note:** This prop is only available when the `placeholder` prop of at least one source is not `"none"`.
+
+ **Code Example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/fallbackFormat.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/fallbackFormat.astro
new file mode 100644
index 0000000..5419eec
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/fallbackFormat.astro
@@ -0,0 +1,24 @@
+
+
+ ### `fallbackFormat`
+
+ **Type:** `format`
+
+ **Default:** _The format of the source image_
+
+ The format the browser will fallback to if the other formats are not supported.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/fit.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/fit.astro
new file mode 100644
index 0000000..0dc2078
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/fit.astro
@@ -0,0 +1,27 @@
+
+
+ ### `fit`
+
+ **Type:** `"cover" | "contain" | "fill" | "inside" | "outside"`
+
+ **Default:** `undefined`
+
+ When both `width` and `height` are provided, this directive can be used to specify the method by which the image should fit.
+
+ > **Note:** The empty parts are filled with the color specified in the [`background`](#background) prop.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/flatten.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/flatten.astro
new file mode 100644
index 0000000..96df725
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/flatten.astro
@@ -0,0 +1,23 @@
+
+
+ ### `flatten`
+
+ **Type:** `boolean`
+
+ **Default:** `undefined`
+
+ Whether to remove the alpha channel of the image or not, reducing filesize. Transparent pixels will be merged with the color set by [`background`](#background).
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/flip.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/flip.astro
new file mode 100644
index 0000000..ffea04e
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/flip.astro
@@ -0,0 +1,23 @@
+
+
+ ### `flip`
+
+ **Type:** `boolean`
+
+ **Default:** `undefined`
+
+ Flip the image about the vertical axis. This step is always performed **after** any rotation.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/flop.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/flop.astro
new file mode 100644
index 0000000..16bb49e
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/flop.astro
@@ -0,0 +1,23 @@
+
+
+ ### `flop`
+
+ **Type:** `boolean`
+
+ **Default:** `undefined`
+
+ Flop the image about the vertical axis. This step is always performed **after** any rotation.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/format.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/format.astro
new file mode 100644
index 0000000..4427eb2
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/format.astro
@@ -0,0 +1,44 @@
+---
+const isImg =
+ Astro.props.component === "Img" || Astro.props.api === "renderImg";
+---
+
+
+ ### `format`
+
+
+
+{isImg ? (
+
+ **Type:** `"heic" | "heif" | "avif" | "jpg" | "jpeg" | "png" | "tiff" |
+ "webp" | "gif"` **Default:** _The format of the source image_ The format to
+ generate image sets for.
+
+) : (
+
+ **Type:** `format | format[] | [] | null` **`format`:** `"heic" | "heif" |
+ "avif" | "jpg" | "jpeg" | "png" | "tiff" | "webp" | "gif"` **Default:**
+ `["avif", "webp"]` The image format or formats to generate image sets for.
+ If `format` is set to `null` or `[]`, no _additional_ image set will be
+ generated. > **Note:** Passing `[]` or `null` does not necessarily mean that
+ no image sets will be generated. Image sets will still be generated for the
+ source format if `includeSourceFormat` is set to `true` (which is the
+ default value) and for the format specified in the `fallbackFormat` prop
+ (the default value is the source format).
+
+)}
+
+
+ **Code Example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/formatOptions.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/formatOptions.astro
new file mode 100644
index 0000000..22fa0e5
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/formatOptions.astro
@@ -0,0 +1,274 @@
+---
+const { api, component } = Astro.props;
+
+const isImg = api === "renderImg" || component === "Img";
+
+const dynamicText = component
+ ? `${"`"}<${component} />${"`"} component`
+ : `${"`"}render${api}${"`"} API`;
+
+declare interface ConfigOptions {
+ src: string;
+ alt: string;
+ placeholder: string;
+ format: string | string[];
+ fallbackFormat?: string;
+ includeSourceFormat?: boolean;
+ formatOptions: string;
+}
+
+const configOptions = {
+ src: "https://picsum.photos/1024/768",
+ alt: "A random image",
+ placeholder: "tracedSVG",
+} as ConfigOptions;
+
+configOptions.format = isImg ? "webp" : [`["webp", "jpg"]`];
+isImg || (configOptions.fallbackFormat = "png");
+isImg || (configOptions.includeSourceFormat = false);
+configOptions.formatOptions = isImg
+ ? `{
+ webp: quality: 50,
+ }`
+ : `{
+ jpg: {
+ quality: 80,
+ },
+ png: {
+ quality: 80,
+ },
+ webp: {
+ quality: 50,
+ },
+ tracedSVG: {
+ options: {
+ background: "#fff",
+ color: "#000",
+ turnPolicy: "black",
+ turdSize: 1,
+ alphaMax: 1,
+ optCurve: true,
+ threshold: 100,
+ blackOnWhite: false,
+ },
+ },
+ }`;
+---
+
+
+
+ ### `formatOptions`
+
+ Type
+
+ _`formatOptions` is an object that takes config options for all the supported formats: `heic`, `heif`, `avif`, `jpg`, `jpeg`, `png`, `tiff`, `webp`, `gif`, and `tracedSVG`._
+
+ _The supported config options of all the formats except `tracedSVG` are: [`flip`](#flop), [`flop`](#flip), [`invert`](#invert), [`flatten`](#flatten), [`normalize`](#normalize), [`grayscale`](#grayscale), [`hue`](#hue), [`saturation`](#saturation), [`brightness`](#brightness), [`width`](#width), [`height`](#height), [`aspect`](#aspect), [`background`](#background), [`tint`](#tint), [`blur`](#blur), [`median`](#median), [`rotate`](#rotate), [`quality`](#quality), [`fit`](#fit), [`kernel`](#kernel), [`position`](#position)._
+
+ _The config options supported by the [`tracedSVG`](#tracedSVG) format are listed below._
+
+ **Default:** _The default values for the all the formats except `tracedSVG` are inherited from the direct configs of the { }. And for more information on the `tracedSVG` property, see the [`PotraceOptions`](#potraceoptions) interface._
+
+ The configuration options for the different formats. These configuration options will be respected when generating image sets for different formats.
+
+ The `tracedSVG` config object is used only when the `placeholder` prop is set to `"tracedSVG"`.
+
+ **Code example:**
+
+
+
+
+
+
+ #### `tracedSVG`
+
+ All the properties of the `tracedSVG` property are the configuration options supported by the [`node-potrace`](https://npmjs.com/package/node-potrace) library. These options are used to generate traced SVGs when the `placeholder` prop is set to `"tracedSVG"`. All the properties defined below are optional.
+
+ > **Note:** Most of the below _jargons_ are taken from the [`potrace`](https://npmjs.com/package/potrace) documentation. I have tried my best to simplify the config options and make the documentation as simple and clear as possible.
+ >
+ > If you want to go deeper into this, check the [Technical documentation](http://potrace.sourceforge.net/#technical) of the original C [`potrace`](http://potrace.sourceforge.net/) library.
+ >
+ > If you have a good knowledge on the `potrace` library and about bitmap tracing and posterizing, please consider contributing to update the documentation of this section.
+
+ ##### `function`
+
+ **Type:** `"trace" | "posterize"`
+
+ **Default:** `"trace"`
+
+ Which method of the `node-potrace` library to use. The `posterize` method is basically _tracing_ the image multiple times to produce a more accurate result. See this [example](https://www.npmjs.com/package/potrace#example-and-demo) for more information.
+
+ ##### `options`
+
+ ###### `turnPolicy`
+
+ **Type:** `"black" | "white" | "left" | "right" | "minority" | "majority"`
+
+ **Default:** `"minority"`
+
+ How to resolve ambiguities in path decomposition. Refer to the [**potrace-algorithm**](http://potrace.sourceforge.net/potrace.pdf) documentaion (PDF, page 4) for more information.
+
+ ###### `turdSize`
+
+ **Type:** `number`
+
+ **Default:** `2`
+
+ Suppress speckles of up to this size.
+
+ ###### `alphaMax`
+
+ **Type:** `number`
+
+ **Default:** `1`
+
+ Corner threshold parameter.
+
+ ###### `optCurve`
+
+ **Type:** `boolean`
+
+ **Default:** `true`
+
+ Curve optimization.
+
+ ###### `optTolerance`
+
+ **Type:** `number`
+
+ **Default:** `0.2`
+
+ Curve optimization tolerance.
+
+ ###### `threshold`
+
+ **Type:** `number`
+
+ **Default:** `-1`
+
+ _When `function` is `"trace"` :_
+
+ Threshold below which color is considered black. Should be a number between 0 and 255 or `-1` in which case threshold will be selected automatically using [Algorithm For Multilevel Thresholding](http://www.iis.sinica.edu.tw/page/jise/2001/200109_01.pdf).
+
+ _When `function` is `"posterize"` :_
+
+ Breaks image into foreground and background (and only foreground being broken into desired number of layers). Basically when provided it becomes a threshold for last (least opaque) layer and then `steps - 1` intermediate thresholds calculated. If **steps** is an array of thresholds and every value from the array is lower (or larger if **blackOnWhite** parameter set to `false`) than threshold - threshold will be added to the array, otherwise just ignored.
+
+ ###### `blackOnWhite`
+
+ **Type:** `boolean`
+
+ **Default:** `true`
+
+ Specifies colors by which side from threshold should be turned into vector shape.
+
+ ###### `color`
+
+ **Type:** `"auto" | string`
+
+ **Default:** `"auto"`
+
+ Fill color for the traced image. If `"auto"` is provided, the color will be black or white depending on the `blackOnWhite` property.
+
+ background
+
+ **Type:** `"transparent" | string`
+
+ **Default:** `"transparent"`
+
+ Background color of the traced image. If `"transparent"` is provided, no background will be present.
+
+ ###### `fill`
+
+ **Type:** `"spread" | "dominant" | "median" | "mean"`
+
+ Determines how fill color for each layer should be selected.
+
+ - `dominant` - Most frequent color in range (used by default),
+ - `mean` - Arithmetic mean (average),
+ - `median` - Median color,
+ - `spread` - Ignores color information of the image and just spreads colors equally in range between 0 and `threshold` (or `threshold` and ..255 if `blackOnWhite` is set to `false`).
+
+ > **Note:** This option is available only when `function` is `"posterize"`.
+
+ ###### `ranges`
+
+ **Type:** `"auto" | "equal"`
+
+ How color stops for each layer should be selected. Ignored if `steps` is an array. Possible values are:
+
+ - `auto` - Performs automatic thresholding (using [Algorithm For Multilevel Thresholding](http://www.iis.sinica.edu.tw/page/jise/2001/200109_01.pdf)). Preferable method for already posterized sources, but takes long time to calculate 5 or more thresholds (exponential time complexity) _(used by default)_
+ - `equal` - Ignores color information of the image and breaks available color space into equal chunks
+
+ > **Note:** This option is available only when `function` is `"posterize"`.
+
+ ###### `steps`
+
+ **Type:** `number | number[]`
+
+ Specifies desired number of layers in resulting image. If a number provided - thresholds for each layer will be automatically calculated according to `ranges` property. If an array provided it expected to be an array with precomputed thresholds for each layer (in range between 0 and 255).
+
+ > **Note:** This option is available only when `function` is `"posterize"`.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/grayscale.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/grayscale.astro
new file mode 100644
index 0000000..0583c8f
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/grayscale.astro
@@ -0,0 +1,25 @@
+
+
+ ### `grayscale`
+
+ **Type:** `boolean`
+
+ **Default:** `undefined`
+
+ Converts the image to an 8-bit grayscale image.
+
+ > **Note:** If `true` the image will be converted to the `b-w` colorspace, meaning the resulting image will only have one channel.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/height.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/height.astro
new file mode 100644
index 0000000..5bb39a0
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/height.astro
@@ -0,0 +1,25 @@
+
+
+ ### `height` | `h`
+
+ **Type:** `number`
+
+ **Default:** _The height of the source image_
+
+ Resizes the image to be the specified amount of pixels tall. If not given the `width` will be scaled accordingly.
+
+ > **Note:** The specified `height` will be used to resize the source image when loading it. The final heights of the image will be based on the final calculated [`breakpoints`](#breakpoints).
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/hue.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/hue.astro
new file mode 100644
index 0000000..3741ae5
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/hue.astro
@@ -0,0 +1,23 @@
+
+
+ ### `hue`
+
+ **Type:** `number`
+
+ **Default:** `undefined`
+
+ Adjusts the images `hue` rotation by the given number of degrees. Commonly used together with [`saturation`](#saturation) and [`brightness`](#brightness).
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/includeSourceFormat.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/includeSourceFormat.astro
new file mode 100644
index 0000000..484cbff
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/includeSourceFormat.astro
@@ -0,0 +1,24 @@
+
+
+ ### `includeSourceFormat`
+
+ **Type:** `boolean`
+
+ **Default:** `true`
+
+ Whether to generate image set for the source format or not.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/invert.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/invert.astro
new file mode 100644
index 0000000..f23e86f
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/invert.astro
@@ -0,0 +1,23 @@
+
+
+ ### `invert`
+
+ **Type:** `boolean`
+
+ **Default:** `undefined`
+
+ Produces a **negative** of the image.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/kernel.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/kernel.astro
new file mode 100644
index 0000000..d2d2d59
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/kernel.astro
@@ -0,0 +1,23 @@
+
+
+ ### `kernel`
+
+ **Type:** `"nearest" | "cubic" | "mitchell" | "lanczos2" | "lanczos3"`
+
+ **Default:** `undefined`
+
+ The interpolation kernel to use when resizing the images.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/layout.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/layout.astro
new file mode 100644
index 0000000..7d79be7
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/layout.astro
@@ -0,0 +1,40 @@
+
+
+ ### `layout`
+
+ **Type:** `"constrained" | "fixed" | "fullWidth" | "fill"`
+
+ **Default:** `"constrained"`
+
+ The layout mode to determine the resizing behavior of the image in the
+ browser.
+
+ In `constrained` mode, the image will occupy full width of the container
+ with `max-width` set to 100% its width. The height of the image will be calculated
+ based on the aspect ratio of the image. The image will be scaled down to fit the
+ container but won't be enlarged.
+
+ In `fixed` mode, the image will have a fixed width
+ and height. The `width` and `height` props will be used to set the width and height
+ of the image. The image won't be scaled down nor enlarged.
+
+ In `fullWidth` mode,
+ the image will be scaled up or down to occupy the full width of the container.
+ The height of the image will be calculated based on the aspect ratio of the image.
+
+ In `fill` mode, the image will be scaled up or down to fill the entire width and
+ height of the container.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/loading.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/loading.astro
new file mode 100644
index 0000000..ff3116f
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/loading.astro
@@ -0,0 +1,24 @@
+
+
+ ### `loading`
+
+ **Type:** `"lazy" | "eager" | "auto" | null`
+
+ **Default:** `preload ? "eager" : "lazy"`
+
+ The value of the `loading` attribute of the generated ` ` element. If `null`
+ is provided, the `loading` attribute will be omitted.
+
+ **Code Example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/median.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/median.astro
new file mode 100644
index 0000000..b399412
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/median.astro
@@ -0,0 +1,39 @@
+
+
+ ### `median`
+
+ **Type:** `number | boolean`
+
+ **Default:** `undefined`
+
+ Applies a median filter. This is commonly used to remove noise from images.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/normalize.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/normalize.astro
new file mode 100644
index 0000000..8ffd1eb
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/normalize.astro
@@ -0,0 +1,23 @@
+
+
+ ### `normalize`
+
+ **Type:** `boolean`
+
+ **Default:** `undefined`
+
+ **Normalizes** the image by stretching its luminance to cover the full dynamic range. This Enhances the output image contrast.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/objectFit.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/objectFit.astro
new file mode 100644
index 0000000..2b645a2
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/objectFit.astro
@@ -0,0 +1,23 @@
+
+
+ ### `objectFit`
+
+ **Type:** `"fill" | "contain" | "cover" | "none" | "scale-down"`
+
+ **Default:** `cover`
+
+ The value of the `object-fit` CSS property of the generated ` ` element.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/objectPosition.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/objectPosition.astro
new file mode 100644
index 0000000..3d55ca1
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/objectPosition.astro
@@ -0,0 +1,23 @@
+
+
+ ### `objectPosition`
+
+ **Type:** `string`
+
+ **Default:** `50% 50%`
+
+ The value of the `object-position` CSS property of the generated ` ` element.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/placeholder.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/placeholder.astro
new file mode 100644
index 0000000..e4fb27d
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/placeholder.astro
@@ -0,0 +1,35 @@
+
+
+ ### `placeholder`
+
+ **Type:** `"dominantColor" | "blurred" | "tracedSVG" | "none"`
+
+ **Default:** `"blurred"`
+
+ The placeholder to be displayed while the image is loading.
+
+ If `placeholder` is set to `"dominantColor"`, the dominant color of the source
+ image will be used as the placeholder.
+
+ If the value is set to `"blurred"`, a very low-resolution version of the
+ provided image will be enlarged and used as the placeholder.
+
+ If the value is set to `"tracedSVG"`, a traced SVG of the image will be used
+ as the placeholder. If the value is set to `"none"`, no placeholder will be
+ displayed.
+
+ > **Note:** If the value is set to `"tracedSVG"`, the placeholder can be customized to be a **Posterized SVG** too. See the [**formatOptions**](#formatOptions) prop for more details.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/position.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/position.astro
new file mode 100644
index 0000000..3fb4aa3
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/position.astro
@@ -0,0 +1,28 @@
+
+
+ ### `position`
+
+ **Type:** `"top" | "right top" | "right" | "right bottom" | "bottom" | "left bottom" | "left" | "left top" | "north" | "northeast" | "east" | "southeast" | "south" | "southwest" | "west" | "northwest" | "center" | "centre" | "cover" | "entropy" | "attention"`
+
+ **Default:** `undefined`
+
+ When both `width` and `height` are provided **AND** `fit` is is set to `cover` or `contain`, this directive can be used to set the position of the image.
+
+ > See `sharp`'s [resize options](https://sharp.pixelplumbing.com/api-resize#resize) for more information.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/preload.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/preload.astro
new file mode 100644
index 0000000..b48b33c
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/preload.astro
@@ -0,0 +1,25 @@
+
+
+ ### `preload`
+
+ **Type:** `"heic" | "heif" | "avif" | "jpg" | "jpeg" | "png" | "tiff" | "webp" | "gif"`
+
+ **Default:** `undefined`
+
+ Which format of image set to preload.
+
+ > **Note:** It's not reasonable to preload multiple formats of the same image. And due to the factors like file size and browser support, it's not possible to pick the best format automatically.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/quality.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/quality.astro
new file mode 100644
index 0000000..5107d8c
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/quality.astro
@@ -0,0 +1,27 @@
+
+
+ ### `quality`
+
+ **Type:** `number`
+
+ **Default:** `undefined`
+
+ All formats (except `gif`) allow the quality to be adjusted by setting this directive.
+
+ The argument must be a number between `0` and `100`.
+
+ > See sharps [Output options](https://sharp.pixelplumbing.com/api-output) for default quality values.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/rotate.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/rotate.astro
new file mode 100644
index 0000000..e7c7d2e
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/rotate.astro
@@ -0,0 +1,25 @@
+
+
+ ### `rotate`
+
+ **Type:** `number`
+
+ **Default:** `undefined`
+
+ Rotate the image by the specified number of degrees.
+
+ > **Note:** The empty parts are filled with the color specified in the [`background`](#background) prop.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/saturation.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/saturation.astro
new file mode 100644
index 0000000..a9d5a23
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/saturation.astro
@@ -0,0 +1,23 @@
+
+
+ ### `saturation`
+
+ **Type:** `number`
+
+ **Default:** `undefined`
+
+ Adjusts the images `saturation` with the given saturation multiplier. Commonly used together with [`hue`](#hue) and [`brightness`](#brightness).
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/sizes.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/sizes.astro
new file mode 100644
index 0000000..281e477
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/sizes.astro
@@ -0,0 +1,36 @@
+
+
+ ### `sizes`
+
+ **Type:** `string` or `(breakpoints: number[]) => string`
+
+ **Default:** `` (breakpoints) => `(min-width: ${breakpoints[breakpopints.length - 1]}px) ${breakpoints[breakpopints.length - 1]}px, 100vw ``
+
+ A string or function that returns a string suitable for the value of the `sizes`
+ attribute of the generated ` ` element. The final calculated breakpoints
+ are passed to the function as a parameter.
+
+ **Code example:**
+
+
+ {
+ const maxWidth = breakpoints[breakpoints.length - 1];
+ return `(min-width: ${maxWidth}px) ${maxWidth}px, 100vw`;
+ },
+ },
+ ]}
+/>
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/src.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/src.astro
new file mode 100644
index 0000000..ca03553
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/src.astro
@@ -0,0 +1,53 @@
+
+
+ ### `src`
+
+ **Type:** `string`
+
+ **Default:** `undefined`
+
+ The path to the source image. If local, the path must be relative to the project root. Remote URLs and Data URIs are also supported.
+
+ **Code example:**
+
+
+
+
+
+ #### SSR Usage
+
+ In `SSR` mode, if you are using local images, you have to generate assets for them first and then you have to pass the path to the assets to the `src` property.
+
+
+
+
+
+ > The `raw` query parameter has been used to tell the internal Vite plugin to emit the asset from the source image unchanged.
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/tag.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/tag.astro
new file mode 100644
index 0000000..34269f6
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/tag.astro
@@ -0,0 +1,22 @@
+
+
+ ### `tag`
+
+ **Type:** `string`
+
+ **Default:** `section`
+
+ Which html tag to use for the html element to apply the generated background image sets to.
+
+ **Code Example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/tint.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/tint.astro
new file mode 100644
index 0000000..0640a21
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/tint.astro
@@ -0,0 +1,23 @@
+
+
+ ### `tint`
+
+ **Type:** `string`
+
+ **Default:** `undefined`
+
+ Tints the image using the provided chroma while preserving the image luminance. If the image has an alpha channel it will be untouched.
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/ConfigOptions/width.astro b/packages/imagetools_3/docs/src/components/ConfigOptions/width.astro
new file mode 100644
index 0000000..c9ba92f
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/ConfigOptions/width.astro
@@ -0,0 +1,25 @@
+
+
+ ### `width` | `w`
+
+ **Type:** `number`
+
+ **Default:** _The width of the source image_
+
+ Resizes the image to be the specified amount of pixels wide. If not given the `height` will be scaled accordingly.
+
+ > **Note:** The specified `width` will be used to resize the source image when loading it. The final widths of the image will be based on the final calculated [`breakpoints`](#breakpoints).
+
+ **Code example:**
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/Footer/AvatarList.astro b/packages/imagetools_3/docs/src/components/Footer/AvatarList.astro
new file mode 100644
index 0000000..1804608
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/Footer/AvatarList.astro
@@ -0,0 +1,176 @@
+---
+// fetch all commits for just this page's path
+const path = "docs/" + Astro.props.path;
+const url = `https://api.github.com/repos/withastro/astro/commits?path=${path}`;
+const commitsURL = `https://github.com/withastro/astro/commits/main/${path}`;
+
+async function getCommits(url) {
+ try {
+ const token: string = import.meta.env.SNOWPACK_PUBLIC_GITHUB_TOKEN;
+
+ if (!token) {
+ throw new Error(
+ 'Cannot find "SNOWPACK_PUBLIC_GITHUB_TOKEN" used for escaping rate-limiting.'
+ );
+ }
+
+ const auth = `Basic ${Buffer.from(token, "binary").toString("base64")}`;
+
+ const res = await fetch(url, {
+ method: "GET",
+ headers: {
+ Authorization: auth,
+ "User-Agent": "astro-docs/1.0",
+ },
+ });
+
+ const data = await res.json();
+
+ if (!res.ok) {
+ throw new Error(
+ `Request to fetch commits failed. Reason: ${res.statusText}
+ Message: ${data.message}`
+ );
+ }
+
+ return data;
+ } catch (e) {
+ console.warn(`[error] /src/components/AvatarList.astro
+ ${e?.message ?? e}`);
+
+ return new Array();
+ }
+}
+
+function removeDups(arr) {
+ if (!arr) {
+ return new Array();
+ }
+
+ let map = new Map();
+
+ for (let item of arr) {
+ let author = item.author;
+
+ // Deduplicate based on author.id
+ map.set(author.id, { login: author.login, id: author.id });
+ }
+
+ return Array.from(map.values());
+}
+
+const data = await getCommits(url);
+const unique = removeDups(data);
+const recentContributors = unique.slice(0, 3); // only show avatars for the 3 most recent contributors
+const additionalContributors = unique.length - recentContributors.length; // list the rest of them as # of extra contributors
+---
+
+
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/Footer/Footer.astro b/packages/imagetools_3/docs/src/components/Footer/Footer.astro
new file mode 100644
index 0000000..21c56d8
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/Footer/Footer.astro
@@ -0,0 +1,16 @@
+---
+import AvatarList from "./AvatarList.astro";
+const { path } = Astro.props;
+---
+
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/HeadCommon.astro b/packages/imagetools_3/docs/src/components/HeadCommon.astro
new file mode 100644
index 0000000..addcd1c
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/HeadCommon.astro
@@ -0,0 +1,47 @@
+---
+import "../styles/theme.css";
+import "../styles/index.css";
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/HeadSEO.astro b/packages/imagetools_3/docs/src/components/HeadSEO.astro
new file mode 100644
index 0000000..a31c4e7
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/HeadSEO.astro
@@ -0,0 +1,52 @@
+---
+import { SITE, OPEN_GRAPH } from "../config.ts";
+
+export interface Props {
+ content: any;
+ site: any;
+ canonicalURL: URL | string;
+}
+
+const { content = {}, canonicalURL } = Astro.props;
+const formattedContentTitle = content.title
+ ? `${content.title} 🚀 ${SITE.title}`
+ : SITE.title;
+const imageSrc = content?.image?.src ?? OPEN_GRAPH.image.src;
+const canonicalImageSrc = new URL(imageSrc, Astro.site);
+const imageAlt = content?.image?.alt ?? OPEN_GRAPH.image.alt;
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/Header/AstroLogo.astro b/packages/imagetools_3/docs/src/components/Header/AstroLogo.astro
new file mode 100644
index 0000000..14eb5bc
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/Header/AstroLogo.astro
@@ -0,0 +1,37 @@
+---
+const { size } = Astro.props;
+---
+
+
+
+
+ Logo
+
+
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/Header/Header.astro b/packages/imagetools_3/docs/src/components/Header/Header.astro
new file mode 100644
index 0000000..653664f
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/Header/Header.astro
@@ -0,0 +1,144 @@
+---
+import { getLanguageFromURL, KNOWN_LANGUAGE_CODES } from "../../languages.ts";
+import * as CONFIG from "../../config.ts";
+import AstroLogo from "./AstroLogo.astro";
+import SkipToContent from "./SkipToContent.astro";
+import SidebarToggle from "./SidebarToggle.tsx";
+import LanguageSelect from "./LanguageSelect.tsx";
+import Search from "./Search.tsx";
+
+const { currentPage } = Astro.props;
+const lang = currentPage && getLanguageFromURL(currentPage);
+---
+
+
+
+
+
+
+
+
+
+ {KNOWN_LANGUAGE_CODES.length > 1 && (
+
+ )}
+
+ {CONFIG.ALGOLIA && (
+
+
+
+ )}
+
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/Header/LanguageSelect.css b/packages/imagetools_3/docs/src/components/Header/LanguageSelect.css
new file mode 100644
index 0000000..8d73ace
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/Header/LanguageSelect.css
@@ -0,0 +1,50 @@
+.language-select {
+ flex-grow: 1;
+ width: 48px;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0.33em 0.5em;
+ overflow: visible;
+ font-weight: 500;
+ font-size: 1rem;
+ font-family: inherit;
+ line-height: inherit;
+ background-color: var(--theme-bg);
+ border-color: var(--theme-text-lighter);
+ color: var(--theme-text-light);
+ border-style: solid;
+ border-width: 1px;
+ border-radius: 0.25rem;
+ outline: 0;
+ cursor: pointer;
+ transition-timing-function: ease-out;
+ transition-duration: 0.2s;
+ transition-property: border-color, color;
+ -webkit-font-smoothing: antialiased;
+ padding-left: 30px;
+ padding-right: 1rem;
+}
+
+.language-select-wrapper .language-select:hover,
+.language-select-wrapper .language-select:focus {
+ color: var(--theme-text);
+ border-color: var(--theme-text-light);
+}
+
+.language-select-wrapper {
+ color: var(--theme-text-light);
+ position: relative;
+}
+
+.language-select-wrapper > svg {
+ position: absolute;
+ top: 7px;
+ left: 10px;
+ pointer-events: none;
+}
+
+@media (min-width: 50em) {
+ .language-select {
+ width: 100%;
+ }
+}
diff --git a/packages/imagetools_3/docs/src/components/Header/LanguageSelect.tsx b/packages/imagetools_3/docs/src/components/Header/LanguageSelect.tsx
new file mode 100644
index 0000000..6e9ce5c
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/Header/LanguageSelect.tsx
@@ -0,0 +1,50 @@
+import type { FunctionalComponent } from "preact";
+import { h } from "preact";
+import "./LanguageSelect.css";
+import { KNOWN_LANGUAGES, langPathRegex } from "../../languages";
+
+const LanguageSelect: FunctionalComponent<{ lang: string }> = ({ lang }) => {
+ return (
+
+
+
+
+
+
+
{
+ const newLang = e.target.value;
+ let actualDest = window.location.pathname.replace(langPathRegex, "/");
+ if (actualDest == "/") actualDest = `/introduction`;
+ window.location.pathname = "/" + newLang + actualDest;
+ }}
+ >
+ {Object.keys(KNOWN_LANGUAGES).map((key) => {
+ return (
+
+ {key}
+
+ );
+ })}
+
+
+ );
+};
+
+export default LanguageSelect;
diff --git a/packages/imagetools_3/docs/src/components/Header/Search.css b/packages/imagetools_3/docs/src/components/Header/Search.css
new file mode 100644
index 0000000..5d8a2e7
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/Header/Search.css
@@ -0,0 +1,81 @@
+/** Style Algolia */
+:root {
+ --docsearch-primary-color: var(--theme-accent);
+ --docsearch-logo-color: var(--theme-text);
+}
+
+.search-input {
+ flex-grow: 1;
+ box-sizing: border-box;
+ width: 100%;
+ margin: 0;
+ padding: 0.33em 0.5em;
+ overflow: visible;
+ font-weight: 500;
+ font-size: 1rem;
+ font-family: inherit;
+ line-height: inherit;
+ background-color: var(--theme-divider);
+ border-color: var(--theme-divider);
+ color: var(--theme-text-light);
+ border-style: solid;
+ border-width: 1px;
+ border-radius: 0.25rem;
+ outline: 0;
+ cursor: pointer;
+ transition-timing-function: ease-out;
+ transition-duration: 0.2s;
+ transition-property: border-color, color;
+ -webkit-font-smoothing: antialiased;
+}
+
+.search-input:hover,
+.search-input:focus {
+ color: var(--theme-text);
+ border-color: var(--theme-text-light);
+}
+
+.search-input:hover::placeholder,
+.search-input:focus::placeholder {
+ color: var(--theme-text-light);
+}
+
+.search-input::placeholder {
+ color: var(--theme-text-light);
+}
+
+.search-hint {
+ position: absolute;
+ top: 7px;
+ right: 19px;
+ padding: 3px 5px;
+ display: none;
+ display: none;
+ align-items: center;
+ justify-content: center;
+ letter-spacing: 0.125em;
+ font-size: 13px;
+ font-family: var(--font-mono);
+ pointer-events: none;
+ border-color: var(--theme-text-lighter);
+ color: var(--theme-text-light);
+ border-style: solid;
+ border-width: 1px;
+ border-radius: 0.25rem;
+ line-height: 14px;
+}
+
+@media (min-width: 50em) {
+ .search-hint {
+ display: flex;
+ }
+}
+
+/* ------------------------------------------------------------ *\
+ DocSearch (Algolia)
+\* ------------------------------------------------------------ */
+
+.DocSearch-Modal .DocSearch-Hit a {
+ box-shadow: none;
+ border: 1px solid var(--theme-accent);
+}
diff --git a/packages/imagetools_3/docs/src/components/Header/Search.tsx b/packages/imagetools_3/docs/src/components/Header/Search.tsx
new file mode 100644
index 0000000..5b1056d
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/Header/Search.tsx
@@ -0,0 +1,104 @@
+/* jsxImportSource: react */
+import { useState, useCallback, useRef } from "react";
+import * as CONFIG from "../../config";
+import "@docsearch/css/dist/style.css";
+import "./Search.css";
+
+// @ts-ignore
+import * as docSearchReact from "@docsearch/react";
+// @ts-ignore
+import { createPortal } from "react-dom";
+
+export default function Search() {
+ const DocSearchModal =
+ docSearchReact.DocSearchModal || docSearchReact.default.DocSearchModal;
+
+ const useDocSearchKeyboardEvents =
+ docSearchReact.useDocSearchKeyboardEvents ||
+ docSearchReact.default.useDocSearchKeyboardEvents;
+
+ const [isOpen, setIsOpen] = useState(false);
+ const searchButtonRef = useRef();
+ const [initialQuery, setInitialQuery] = useState(null);
+
+ const onOpen = useCallback(() => {
+ setIsOpen(true);
+ }, [setIsOpen]);
+
+ const onClose = useCallback(() => {
+ setIsOpen(false);
+ }, [setIsOpen]);
+
+ const onInput = useCallback(
+ (e) => {
+ setIsOpen(true);
+ setInitialQuery(e.key);
+ },
+ [setIsOpen, setInitialQuery]
+ );
+
+ useDocSearchKeyboardEvents({
+ isOpen,
+ onOpen,
+ onClose,
+ onInput,
+ searchButtonRef,
+ });
+
+ return (
+ <>
+
+
+
+
+
+ Search
+
+
+ Press
+
+ /
+
+ to search
+
+
+
+ {isOpen &&
+ createPortal(
+ {
+ return items.map((item) => {
+ // We transform the absolute URL into a relative URL to
+ // work better on localhost, preview URLS.
+ const a = document.createElement("a");
+ a.href = item.url;
+ const hash = a.hash === "#overview" ? "" : a.hash;
+ return {
+ ...item,
+ url: `${a.pathname}${hash}`,
+ };
+ });
+ }}
+ />,
+ document.body
+ )}
+ >
+ );
+}
diff --git a/packages/imagetools_3/docs/src/components/Header/SidebarToggle.tsx b/packages/imagetools_3/docs/src/components/Header/SidebarToggle.tsx
new file mode 100644
index 0000000..6ff4a6d
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/Header/SidebarToggle.tsx
@@ -0,0 +1,45 @@
+import type { FunctionalComponent } from "preact";
+import { h, Fragment } from "preact";
+import { useState, useEffect } from "preact/hooks";
+
+const MenuToggle: FunctionalComponent = () => {
+ const [sidebarShown, setSidebarShown] = useState(false);
+
+ useEffect(() => {
+ const body = document.getElementsByTagName("body")[0];
+ if (sidebarShown) {
+ body.classList.add("mobile-sidebar-toggle");
+ } else {
+ body.classList.remove("mobile-sidebar-toggle");
+ }
+ }, [sidebarShown]);
+
+ return (
+
+ );
+};
+
+export default MenuToggle;
diff --git a/packages/imagetools_3/docs/src/components/Header/SkipToContent.astro b/packages/imagetools_3/docs/src/components/Header/SkipToContent.astro
new file mode 100644
index 0000000..b2b542f
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/Header/SkipToContent.astro
@@ -0,0 +1,24 @@
+Skip to Content
+
+
diff --git a/packages/imagetools_3/docs/src/components/LeftSidebar/LeftSidebar.astro b/packages/imagetools_3/docs/src/components/LeftSidebar/LeftSidebar.astro
new file mode 100644
index 0000000..afa61a7
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/LeftSidebar/LeftSidebar.astro
@@ -0,0 +1,130 @@
+---
+import { getLanguageFromURL } from "../../languages.ts";
+import { SIDEBAR } from "../../config.ts";
+
+const { currentPage } = Astro.props;
+const currentPageMatch = currentPage.slice(1);
+const langCode = getLanguageFromURL(currentPage);
+
+// SIDEBAR is a flat array. Group it by sections to properly render.
+const sidebarSections = SIDEBAR[langCode].reduce((col, item, i) => {
+ // If the first item is not a section header, create a new container section.
+ if (i === 0) {
+ if (!item.header) {
+ const pesudoSection = { text: "" };
+ col.push({ ...pesudoSection, children: [] });
+ }
+ }
+
+ if (item.header) {
+ col.push({ ...item, children: [] });
+ } else {
+ col[col.length - 1].children.push(item);
+ }
+
+ return col;
+}, []);
+---
+
+
+
+ {sidebarSections.map((section) => (
+
+
+
+ ))}
+
+
+
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/PageContent/PageContent.astro b/packages/imagetools_3/docs/src/components/PageContent/PageContent.astro
new file mode 100644
index 0000000..d306afd
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/PageContent/PageContent.astro
@@ -0,0 +1,49 @@
+---
+import MoreMenu from "../RightSidebar/MoreMenu.astro";
+import TableOfContents from "../RightSidebar/TableOfContents.tsx";
+
+const { content, githubEditUrl } = Astro.props;
+const title = content.title;
+const headers = content.astro.headers;
+---
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/RightSidebar/MoreMenu.astro b/packages/imagetools_3/docs/src/components/RightSidebar/MoreMenu.astro
new file mode 100644
index 0000000..54446ca
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/RightSidebar/MoreMenu.astro
@@ -0,0 +1,74 @@
+---
+import ThemeToggleButton from "./ThemeToggleButton.tsx";
+import * as CONFIG from "../../config";
+
+const { editHref } = Astro.props;
+const showMoreSection = CONFIG.COMMUNITY_INVITE_URL || editHref;
+---
+
+{showMoreSection && More }
+
+ {editHref && (
+
+ )}
+ {CONFIG.COMMUNITY_INVITE_URL && (
+
+ )}
+
+
+
+
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/RightSidebar/RightSidebar.astro b/packages/imagetools_3/docs/src/components/RightSidebar/RightSidebar.astro
new file mode 100644
index 0000000..fca7ca1
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/RightSidebar/RightSidebar.astro
@@ -0,0 +1,29 @@
+---
+import TableOfContents from "./TableOfContents.tsx";
+import MoreMenu from "./MoreMenu.astro";
+
+const { content, githubEditUrl } = Astro.props;
+const headers = content.astro.headers;
+---
+
+
+
+
diff --git a/packages/imagetools_3/docs/src/components/RightSidebar/TableOfContents.tsx b/packages/imagetools_3/docs/src/components/RightSidebar/TableOfContents.tsx
new file mode 100644
index 0000000..84de46f
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/RightSidebar/TableOfContents.tsx
@@ -0,0 +1,51 @@
+import type { FunctionalComponent } from "preact";
+import { useState, useEffect } from "preact/hooks";
+
+declare interface Header {
+ depth: number;
+ slug: string;
+ text: string;
+}
+
+const TableOfContents: FunctionalComponent<{ headers: Header[] }> = ({
+ headers = [],
+}) => {
+ const [renderedHeaders, setRenderedHeaders] = useState(undefined);
+
+ useEffect(() => {
+ const titles = document.querySelectorAll("article :is(h1, h2, h3, h4)");
+
+ const newRenderedHeaders = [...titles]
+ .map((title) => {
+ const depth = parseInt(title.tagName.substring(1));
+ const slug = title.id;
+ const text = title.textContent;
+ return { depth, slug, text };
+ })
+ .filter(({ slug }) => slug !== "");
+
+ setRenderedHeaders(newRenderedHeaders);
+ }, []);
+
+ return (
+ <>
+ On this page
+
+
+
+
+ {(renderedHeaders || headers)
+ .filter(({ depth }) => depth > 1 && depth < 4)
+ .map(({ depth, slug, text }) => (
+
+ ))}
+
+ >
+ );
+};
+
+export default TableOfContents;
diff --git a/packages/imagetools_3/docs/src/components/RightSidebar/ThemeToggleButton.css b/packages/imagetools_3/docs/src/components/RightSidebar/ThemeToggleButton.css
new file mode 100644
index 0000000..9a41946
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/RightSidebar/ThemeToggleButton.css
@@ -0,0 +1,37 @@
+.theme-toggle {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.25em;
+ padding: 0.33em 0.67em;
+ border-radius: 99em;
+ background-color: var(--theme-code-inline-bg);
+}
+
+.theme-toggle > label:focus-within {
+ outline: 2px solid transparent;
+ box-shadow: 0 0 0 0.08em var(--theme-accent), 0 0 0 0.12em white;
+}
+
+.theme-toggle > label {
+ color: var(--theme-code-inline-text);
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ opacity: 0.5;
+}
+
+.theme-toggle .checked {
+ color: var(--theme-accent);
+ opacity: 1;
+}
+
+input[name="theme-toggle"] {
+ position: absolute;
+ opacity: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: -1;
+}
diff --git a/packages/imagetools_3/docs/src/components/RightSidebar/ThemeToggleButton.tsx b/packages/imagetools_3/docs/src/components/RightSidebar/ThemeToggleButton.tsx
new file mode 100644
index 0000000..400c0e9
--- /dev/null
+++ b/packages/imagetools_3/docs/src/components/RightSidebar/ThemeToggleButton.tsx
@@ -0,0 +1,89 @@
+import type { FunctionalComponent } from "preact";
+import { h, Fragment } from "preact";
+import { useState, useEffect } from "preact/hooks";
+import "./ThemeToggleButton.css";
+
+const themes = ["light", "dark"];
+
+const icons = [
+
+
+ ,
+
+
+
+ ,
+];
+
+const ThemeToggle: FunctionalComponent = () => {
+ const [theme, setTheme] = useState(() => {
+ if (import.meta.env.SSR) {
+ return undefined;
+ }
+
+ if (typeof localStorage !== "undefined" && localStorage.getItem("theme")) {
+ return localStorage.getItem("theme");
+ }
+
+ if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
+ return "dark";
+ }
+
+ return "light";
+ });
+
+ useEffect(() => {
+ const root = document.documentElement;
+
+ if (theme === "light") {
+ root.classList.remove("theme-dark");
+ } else {
+ root.classList.add("theme-dark");
+ }
+ }, [theme]);
+
+ return (
+
+ {themes.map((t, i) => {
+ const icon = icons[i];
+ const checked = t === theme;
+
+ return (
+
+ {icon}
+ {
+ localStorage.setItem("theme", t);
+ setTheme(t);
+ }}
+ />
+
+ );
+ })}
+
+ );
+};
+
+export default ThemeToggle;
diff --git a/packages/imagetools_3/docs/src/config.ts b/packages/imagetools_3/docs/src/config.ts
new file mode 100644
index 0000000..143eb2b
--- /dev/null
+++ b/packages/imagetools_3/docs/src/config.ts
@@ -0,0 +1,62 @@
+export const SITE = {
+ title: "Astro ImageTools Documentation",
+ description: "Documentation for the Astro ImageTools project",
+ defaultLanguage: "en_US",
+};
+
+export const OPEN_GRAPH = {
+ image: {
+ src: "https://github.com/withastro/astro/blob/main/assets/social/banner.jpg?raw=true",
+ alt:
+ "astro logo on a starry expanse of space," +
+ " with a purple saturn-like planet floating in the right foreground",
+ },
+ twitter: "astrodotbuild",
+};
+
+export const KNOWN_LANGUAGES = {
+ English: "en",
+};
+
+export const GITHUB_EDIT_URL = `https://github.com/RafidMuhymin/astro-imagetools/blob/main/docs/`;
+
+export const COMMUNITY_INVITE_URL = `https://astro.build/chat`;
+
+// See "Algolia" section of the README for more information.
+export const ALGOLIA = {
+ appId: "SZQLV18K73",
+ indexName: "astro-imagetools",
+ apiKey: "5da19c05f194060063e0e73a50b21b8e",
+};
+
+export const SIDEBAR = {
+ en: [
+ { text: "GETTING_STARTED", header: true },
+ { text: "Introduction", link: "en/introduction" },
+ { text: "Installation", link: "en/installation" },
+ { text: "Usage", link: "en/usage" },
+
+ { text: "BASICS", header: true },
+ { text: "Components and APIs", link: "en/components-and-apis" },
+ { text: "SSR", link: "en/ssr" },
+ { text: "Markdown Images", link: "en/markdown-images" },
+ { text: "Global Config Options", link: "en/global-config-options" },
+
+ { text: "COMPONENTS", header: true },
+ { text: " ", link: "en/components/Img" },
+ { text: " ", link: "en/components/Picture" },
+ { text: " ", link: "en/components/BackgroundImage" },
+ { text: " ", link: "en/components/BackgroundPicture" },
+
+ { text: "API", header: true },
+ { text: "renderImg", link: "en/api/renderImg" },
+ { text: "renderPicture", link: "en/api/renderPicture" },
+ { text: "renderBackgroundImage", link: "en/api/renderBackgroundImage" },
+ { text: "renderBackgroundPicture", link: "en/api/renderBackgroundPicture" },
+ { text: "importImage", link: "en/api/importImage" },
+
+ { text: "MISCELLANEOUS", header: true },
+ { text: "Deprecations", link: "en/deprecations" },
+ { text: "Acknowledgements", link: "en/acknowledgements" },
+ ],
+};
diff --git a/packages/imagetools_3/docs/src/languages.ts b/packages/imagetools_3/docs/src/languages.ts
new file mode 100644
index 0000000..acfe7ae
--- /dev/null
+++ b/packages/imagetools_3/docs/src/languages.ts
@@ -0,0 +1,10 @@
+import { KNOWN_LANGUAGES } from "./config";
+
+export { KNOWN_LANGUAGES };
+export const KNOWN_LANGUAGE_CODES = Object.values(KNOWN_LANGUAGES);
+export const langPathRegex = /\/([a-z]{2}-?[A-Z]{0,2})\//;
+
+export function getLanguageFromURL(pathname: string) {
+ const langCodeMatch = pathname.match(langPathRegex);
+ return langCodeMatch ? langCodeMatch[1] : "en";
+}
diff --git a/packages/imagetools_3/docs/src/layouts/MainLayout.astro b/packages/imagetools_3/docs/src/layouts/MainLayout.astro
new file mode 100644
index 0000000..fe951d7
--- /dev/null
+++ b/packages/imagetools_3/docs/src/layouts/MainLayout.astro
@@ -0,0 +1,147 @@
+---
+import HeadCommon from "../components/HeadCommon.astro";
+import HeadSEO from "../components/HeadSEO.astro";
+import Header from "../components/Header/Header.astro";
+import PageContent from "../components/PageContent/PageContent.astro";
+import LeftSidebar from "../components/LeftSidebar/LeftSidebar.astro";
+import RightSidebar from "../components/RightSidebar/RightSidebar.astro";
+import * as CONFIG from "../config";
+
+const { content = {} } = Astro.props;
+const currentPage = new URL(Astro.request.url).pathname;
+const currentFile = `src/pages${currentPage.replace(/\/$/, "")}.md`;
+const githubEditUrl =
+ CONFIG.GITHUB_EDIT_URL && CONFIG.GITHUB_EDIT_URL + currentFile;
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/imagetools_3/docs/src/pages/en/acknowledgements.md b/packages/imagetools_3/docs/src/pages/en/acknowledgements.md
new file mode 100644
index 0000000..4d6991b
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/acknowledgements.md
@@ -0,0 +1,47 @@
+---
+title: Acknowledgements
+description: Acknowledgements
+layout: ../../layouts/MainLayout.astro
+---
+
+
+
+## The people for whom this project has become possible
+
+[Jonathan Neal](https://github.com/jonathantneal) for being extremely helpful and for the [`@astropub/codecs`](https://github.com/astro-community/codecs) library.
+
+[Jonas Kruckenberg](https://github.com/JonasKruckenberg) for the [`imagetools-core`](https://github.com/JonasKruckenberg/imagetools/tree/main/packages/core) and [`vite-imagetools`](https://github.com/JonasKruckenberg/imagetools/tree/main/packages/vite) libraries.
+
+[Lovell Fuller](https://github.com/lovell) for the awesome [`sharp`](https://sharp.pixelplumbing.com/) library.
+
+[Matt Mc](https://github.com/tooolbox) for the [`potrace`](https://github.com/tooolbox/node-potrace) library.
+
+[Zade Viggers](https://github.com/zadeviggers) for his code contributions.
+
+[Peter Singh](https://github.com/aFuzzyBear) for documentation support and suggestions.
+
+_...and many more people for their help and inspiration. And, thanks to the [Astro JS](https://astro.build/) community for their support and encouragement. And, thanks to the people behind the [Vite JS](https://vitejs.dev/) project too._
+
+## The resouces that have helped me understand Responsive Images and Image Optimization
+
+[Responsive Images 101](https://cloudfour.com/thinks/responsive-images-101-definitions/) by [Cloud Four](https://cloudfour.com/).
+
+[Responsive images](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images) by [MDN](https://developer.mozilla.org/en-US/).
+
+[A Guide to the Responsive Images Syntax in HTML](https://css-tricks.com/a-guide-to-the-responsive-images-syntax-in-html/) by [CSS-Tricks](https://css-tricks.com/).
+
+[Responsive Images](https://developers.google.com/web/fundamentals/design-and-ux/responsive/images) by [Google Developers](https://developers.google.com/web/).
+
+[Optimising for high-density displays](https://jakearchibald.com/2021/serving-sharp-images-to-high-density-screens/) by [Jake Archibald](https://jakearchibald.com/).
+
+[Responsive Images, The sizes Attribute, and Unexpected Image Sizes](https://medium.com/@MRWwebDesign/responsive-images-the-sizes-attribute-and-unexpected-image-sizes-882a2eadb6db) by [Mark Root-Wiley](https://github.com/mrwweb/).
+
+[Fluid Images: Art Direction](https://www.learnhowtoprogram.com/user-interfaces/responsive-design-development-environments/fluid-images-art-direction) by [Learn How To Program](https://www.learnhowtoprogram.com/).
+
+[Responsive images and art direction](https://web.dev/patterns/web-vitals-patterns/images/responsive-images/) by [Web.dev](https://web.dev/).
+
+_...and many more articles and resources that have helped me to understand Responsive Images and Image Optimization._
diff --git a/packages/imagetools_3/docs/src/pages/en/api/importImage.mdx b/packages/imagetools_3/docs/src/pages/en/api/importImage.mdx
new file mode 100644
index 0000000..ddc0302
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/api/importImage.mdx
@@ -0,0 +1,63 @@
+---
+title: importImage
+description: The importImage API Documentation
+layout: ../../../layouts/MainLayout.astro
+---
+
+The `importImage` API is a function which acts similar to the ESM `import()` function but for `astro-imagetools`. It returns a `Promise` which resolves to the `src/srcset` of the generated _asset_/_assets_. The provided path should follow the same format as the [`src`](/en/api/renderPicture/#src) attribute.
+
+## Why?
+
+- It supports dynamic paths
+- It supports remote URLs (data URIs are also supported)
+
+**Note:** The `importImage` API doesn't support relative local paths.
+
+## Code Example
+
+```js
+import React from "react";
+import { importImage } from "astro-imagetools/api";
+
+const src = await importImage("https://picsum.photos/1024/768");
+
+export default function ReactImage() {
+ return ;
+}
+```
+
+You can pass configuration options via query parameters just like regular ESM imports.
+
+```js
+import { importImage } from "astro-imagetools/api";
+
+const src = await importImage(
+ "https://picsum.photos/1024/768?w=200&h=200&format=avif&q=80"
+);
+```
+
+If you want the function to return a `srcset` instead of a `src`, pass multiple values to the `w` or `width` query parameter.
+
+```js
+import { importImage } from "astro-imagetools/api";
+
+const srcset = await importImage(
+ "https://picsum.photos/1024/768?w=200;400;800"
+);
+```
+
+Dynamic paths are also supported.
+
+```astro
+---
+import { importImage } from "astro-imagetools/api";
+
+const { imagePath } = Astro.props; // imagePath = "/public/images/image.jpeg"
+
+const src = await importImage(imagePath);
+---
+```
+
+## Return Value
+
+**Type:** `Promise`
diff --git a/packages/imagetools_3/docs/src/pages/en/api/renderBackgroundImage.mdx b/packages/imagetools_3/docs/src/pages/en/api/renderBackgroundImage.mdx
new file mode 100644
index 0000000..c77dc3f
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/api/renderBackgroundImage.mdx
@@ -0,0 +1,59 @@
+---
+title: renderBackgroundImage
+description: The renderPicture API Documentation
+layout: ../../../layouts/MainLayout.astro
+---
+
+import ConfigOptions from "../../../components/ConfigOptions.astro";
+
+The `renderBackgroundImage` API is a function for rendering an optimized and responsive **Background Images**. The CSS `background-image` property will be used to display the generated background images.
+
+Similar to the [` `](/en/components/BackgroundImage) component, the `renderBackgroundImage` API lacks the **Lazy Loading**, **Asynchronous Decoding**, the `sizes` attribute, and the **onload fade-in transition** features. And it too depends on the [` `](/en/components-and-apis#imagesupportdetection) component to work.
+
+## Code Example
+
+```astro
+---
+import { renderBackgroundImage } from "astro-imagetools/api";
+import { ImageSupportDetection } from "astro-imagetools/components";
+
+const content = await fetch(import.meta.env.CONTENT_URL).then((r) => r.text());
+
+const { link, style, htmlElement } = await renderBackgroundImage({
+ src: "https://picsum.photos/1024/768",
+ content,
+ artDirectives: [
+ {
+ src: "https://picsum.photos/1024/768?image=1",
+ media: "(orientation: potrait)",
+ },
+ ],
+});
+---
+
+
+
+
+
+
+
+
+
+
+```
+
+## Return Value
+
+**Type:** `{ link: string; style: string; htmlElement: string }`
+
+If the [`preload`](#preload) config option is set, then the `link` property will contain the `outerHTML` of the generated ` ` element to preload the image set of the asked format. Otherwise, `link` will be an empty string.
+
+If the [`placeholder`](#placeholder) config option is not set to `"none"`, then the `style` property will contain the `outerHTML` of the generated `` element to display the placeholder image. Otherwise, `style` will be an empty string.
+
+The `htmlElement` property will contain the `outerHTML` of the generated `HTMLElement` to apply the background image sets to. It's the primary return value of the `renderPicture` API.
+
+Below is the list of configuration options supported by the `renderBackgroundImage` API. Only the `src` config is required.
+
+## Configuration Options
+
+
diff --git a/packages/imagetools_3/docs/src/pages/en/api/renderBackgroundPicture.mdx b/packages/imagetools_3/docs/src/pages/en/api/renderBackgroundPicture.mdx
new file mode 100644
index 0000000..12ddd28
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/api/renderBackgroundPicture.mdx
@@ -0,0 +1,45 @@
+---
+title: renderBackgroundPicture
+description: The renderBackgroundPicture API Documentation
+layout: ../../../layouts/MainLayout.astro
+---
+
+import ConfigOptions from "../../../components/ConfigOptions.astro";
+
+The `renderBackgroundPicture` API is a function for rendering an optimized and responsive **Background Images**. The generated images will be displayed as the background using the `` element with `z-index` set to `-1`.
+
+Unlike the [`renderBackgroundImage`](/en/api/renderBackgroundImage) API, the `renderBackgroundPicture` API supports **Lazy Loading**, **Asynchronous Decoding**, the `sizes` attribute, and the **onload fade-in transition**. It doesn't need any JavaScript too.
+
+## Code Example
+
+```js
+import { renderBackgroundPicture } from "astro-imagetools/api";
+
+const content = await fetch(import.meta.env.CONTENT_URL).then((r) => r.text());
+
+const { link, style, htmlElement } = await renderBackgroundPicture({
+ src: "https://picsum.photos/1024/768",
+ artDirectives: [
+ {
+ src: "https://picsum.photos/1024/768?image=1",
+ media: "(orientation: potrait)",
+ },
+ ],
+});
+```
+
+## Return Value
+
+**Type:** `{ link: string; style: string; htmlElement: string }`
+
+If the [`preload`](#preload) config option is set, then the `link` property will contain the `outerHTML` of the generated ` ` element to preload the image set of the asked format. Otherwise, `link` will be an empty string.
+
+If the [`placeholder`](#placeholder) config option is not set to `"none"`, then the `style` property will contain the `outerHTML` of the generated `` element to display the placeholder image. Otherwise, `style` will be an empty string.
+
+The `htmlElement` property will contain the `outerHTML` of the generated `HTMLElement` to apply the background image sets to. It's the primary return value of the `renderPicture` API.
+
+## Configuration Options
+
+Below is the list of configuration options supported by the `renderBackgroundPicture` API. Only the `src` config is required.
+
+
diff --git a/packages/imagetools_3/docs/src/pages/en/api/renderImg.mdx b/packages/imagetools_3/docs/src/pages/en/api/renderImg.mdx
new file mode 100644
index 0000000..5f6c0e8
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/api/renderImg.mdx
@@ -0,0 +1,36 @@
+---
+title: renderImg
+description: The renderImg API Documentation
+layout: ../../../layouts/MainLayout.astro
+---
+
+import ConfigOptions from "../../../components/ConfigOptions.astro";
+
+The `renderImg` API is a function for rendering optimized and responsive images. The generated images will use the ` ` element. Similar to the [` `](/en/components/Img) component, it's for simple use cases where you don't need advanced features like **Art Direction**, **multiple source formats**, or the **onload fade-in transition**.
+
+## Code Example
+
+```js
+import { renderImg } from "astro-imagetools/api";
+
+const { link, style, img } = await renderImg({
+ src: "https://picsum.photos/1024/768",
+ alt: "A random image",
+});
+```
+
+## Return Value
+
+**Type:** `{ link: string; style: string; img: string }`
+
+If the [`preload`](#preload) config option is set, then the `link` property will contain the `outerHTML` of the generated ` ` element to preload the image set of the asked format. Otherwise, `link` will be an empty string.
+
+If the [`placeholder`](#placeholder) config option is not set to `"none"`, then the `style` property will contain the `outerHTML` of the generated `` element to display the placeholder image. Otherwise, `style` will be an empty string.
+
+The `img` property will contain the `outerHTML` of the generated ` ` element. It's the primary return value of the `renderImg` API.
+
+## Configuration Options
+
+Below is the list of configuration options supported by the `renderImg` API. Only the `src` and `alt` configs are required.
+
+
diff --git a/packages/imagetools_3/docs/src/pages/en/api/renderPicture.mdx b/packages/imagetools_3/docs/src/pages/en/api/renderPicture.mdx
new file mode 100644
index 0000000..3d3a806
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/api/renderPicture.mdx
@@ -0,0 +1,42 @@
+---
+title: renderPicture
+description: The renderPicture API Documentation
+layout: ../../../layouts/MainLayout.astro
+---
+
+import ConfigOptions from "../../../components/ConfigOptions.astro";
+
+The `renderPicture` API is a function for rendering an optimized and responsive images. The generated images will use the ` ` element. Similar to the [` `](/en/components/Picture) component, it's for advanced use cases where you need to offer **multiple source formats**, **Art Direction**, and the **onload fade-in transition**.
+
+## Code Example
+
+```js
+import { renderPicture } from "astro-imagetools/api";
+
+const { link, style, picture } = await renderPicture({
+ src: "https://picsum.photos/1024/768",
+ alt: "A random image",
+ artDirectives: [
+ {
+ src: "https://picsum.photos/1024/768?image=1",
+ media: "(orientation: potrait)",
+ },
+ ],
+});
+```
+
+## Return Value
+
+**Type:** `{ link: string; style: string; picture: string }`
+
+If the [`preload`](#preload) config option is set, then the `link` property will contain the `outerHTML` of the generated ` ` element to preload the image set of the asked format. Otherwise, `link` will be an empty string.
+
+If the [`placeholder`](#placeholder) config option is not set to `"none"`, then the `style` property will contain the `outerHTML` of the generated `` element to display the placeholder image. Otherwise, `style` will be an empty string.
+
+The `img` property will contain the `outerHTML` of the generated ` ` element. It's the primary return value of the `renderPicture` API.
+
+## Configuration Options
+
+Below is the list of configuration options supported by the `renderPicture` API. Only the `src` and `alt` configs are required.
+
+
diff --git a/packages/imagetools_3/docs/src/pages/en/components-and-apis.mdx b/packages/imagetools_3/docs/src/pages/en/components-and-apis.mdx
new file mode 100644
index 0000000..4c5969c
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/components-and-apis.mdx
@@ -0,0 +1,251 @@
+---
+title: Components and APIs
+description: Components and APIs provided by Astro ImageTools
+layout: ../../layouts/MainLayout.astro
+---
+
+Here is a brief overview on the components and APIs provided by **Astro ImageTools**.
+
+## Components
+
+### ` `
+
+The ` ` component is an Astro component that renders an optimized and responsive ` ` element. This component is for simple use cases where you don't need advanced features like **Art Direction**, **multiple source formats**, or the **onload fade-in transition**.
+
+#### Example Usage of ` `
+
+```astro
+---
+import { Img } from "astro-imagetools/components";
+---
+
+
+```
+
+To know more about the ` ` component and the available configuration options, please check out the [` `](/en/components/Img) documentation.
+
+### ` `
+
+The ` ` component is an Astro component that renders an optimized and responsive ` ` element. This component supports all the features that **Astro ImageTools** has to offer for regular images. It's for advanced use cases where you need to offer **multiple source formats**, need **Art Direction**, and the **onload fade-in transition**. It's the component that you may want to use most of the times.
+
+#### Example Usage of ` `
+
+```astro
+---
+import { Picture } from "astro-imagetools/components";
+---
+
+
+```
+
+To know more about the ` ` component and the available configuration options, please check out the [` `](/en/components/Picture) documentation.
+
+### ` `
+
+The ` ` component offers **Background Image Optimization**. It uses the plain CSS `background-image` property to display the background image.
+
+As the component is using the `background-image` property, it lacks the features provided by the HTML `` and ` ` elements such as **Lazy Loading**, **Asynchronous Decoding**, the `sizes` attribute, and the **onload fade-in transition**. But it still offers **Art Direction** and the ability to offer **multiple source formats**.
+
+The browesrs don't offer any native CSS API or feature to detect support for a specific source format and provide multiple source formats. So the ` ` component depends on JavaScript to detect the support of the `webp` and `avif` formats.
+
+To make the ` ` component work, you need to import the [` `](#imagesupportdetection) component in the `` of your **Layout** component. This component adds **655 bytes** to the generated pages.
+
+The body of the ` ` component will be used as the content of the container element.
+
+> **Note:** Layouts don't make sense for background images. So, they aren't supported by the ` ` component.
+
+#### Example Usage of ` `
+
+```astro
+---
+import {
+ BackgroundImage,
+ ImageSupportDetection,
+} from "astro-imagetools/components";
+
+const content = await fetch(import.meta.env.CONTENT_URL).then((r) => r.text());
+---
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+To know more about the ` ` component and the available configuration options, please check out the [` `](/en/components/BackgroundImage) documentation.
+
+### ` `
+
+Similar to the [` `](#backgroundimage) component, the ` ` component offers **Background Image Optimization**. But instead of using the `background-image` property, it uses the `` element with `z-index` set to `-1` to display the background image.
+
+Unlike the ` ` component, the ` ` supports **Lazy Loading**, **Asynchronous Decoding**, the `sizes` attribute, and the **onload fade-in transition**. It doesn't need any JavaScript too.
+
+The body of the ` ` component will be used as the content of the container element.
+
+> **Note:** Layouts don't make sense for background images. So, they aren't supported by the ` ` component.
+
+#### Example Usage of ` `
+
+```astro
+---
+import { BackgroundPicture } from "astro-imagetools/components";
+
+const content = await fetch(import.meta.env.CONTENT_URL).then((r) => r.text());
+---
+
+
+
+
+```
+
+To know more about the ` ` component and the available configuration options, please check out the [` `](/en/components/BackgroundPicture) documentation.
+
+### ` `
+
+The ` ` component is a dependency of the ` ` components. It's used to detect the support of the `webp` and `avif` formats and make the ` ` component work.
+
+> **Note:** The ` ` component is needed by the ` ` component because of a bug in the `astro` package that prevents hoisted scripts from being included in the generated pages if they are coming from Astro components inside an **npm package**. Once the bug is fixed, the ` ` component can be removed.
+>
+> However, you'll still need it if you use the `renderBackgroundImage` API.
+>
+> The component doesn't have any configuration options.
+
+## APIs
+
+### `renderImg`
+
+The `renderImg` API is a function for rendering optimized and responsive images. The generated images will use the ` ` element. Similar to the [` `](#img) component, it's for simple use cases where you don't need advanced features like **Art Direction**, **multiple source formats**, or the **onload fade-in transition**.
+
+#### Example Usage of `renderImg`
+
+```js
+import { renderImg } from "astro-imagetools/api";
+
+const { link, style, img } = await renderImg({
+ src: "https://picsum.photos/1024/768",
+ alt: "A random image",
+});
+```
+
+To know more about the `renderImg` API and the available configuration options, please check out the [`renderImg`](/en/api/renderimg) documentation.
+
+### `renderPicture`
+
+The `renderPicture` API is a function for rendering an optimized and responsive images. The generated images will use the ` ` element. Similar to the [` `](#picture) component, it's for advanced use cases where you need to offer **multiple source formats**, **Art Direction**, and the **onload fade-in transition**.
+
+#### Example Usage of `renderPicture`
+
+```js
+import { renderPicture } from "astro-imagetools/api";
+
+const { link, style, picture } = await renderPicture({
+ src: "https://picsum.photos/1024/768",
+ alt: "A random image",
+ artDirectives: [
+ {
+ src: "https://picsum.photos/1024/768?image=1",
+ media: "(orientation: potrait)",
+ },
+ ],
+});
+```
+
+To know more about the `renderPicture` API and the available configuration options, please check out the [`renderPicture`](/en/api/renderpicture) documentation.
+
+### `renderBackgroundImage`
+
+The `renderBackgroundImage` API is a function for rendering an optimized and responsive **Background Images**. The CSS `background-image` property will be used to display the generated background images.
+
+Similar to the [` `](#backgroundimage) component, the `renderBackgroundImage` API lacks the **Lazy Loading**, **Asynchronous Decoding**, the `sizes` attribute, and the **onload fade-in transition** features. And it too depends on the [` `](#imagesupportdetection) component to work.
+
+#### Example Usage of `renderBackgroundImage`
+
+```astro
+---
+import { renderBackgroundImage } from "astro-imagetools/api";
+import { ImageSupportDetection } from "astro-imagetools/components";
+
+const content = await fetch(import.meta.env.CONTENT_URL).then((r) => r.text());
+
+const { link, style, htmlElement } = await renderBackgroundImage({
+ src: "https://picsum.photos/1024/768",
+ content,
+ artDirectives: [
+ {
+ src: "https://picsum.photos/1024/768?image=1",
+ media: "(orientation: potrait)",
+ },
+ ],
+});
+---
+
+
+
+
+
+
+
+
+
+
+```
+
+To know more about the `renderBackgroundImage` API and the available configuration options, please check out the [`renderBackgroundImage`](/en/api/renderbackgroundimage) documentation.
+
+### `renderBackgroundPicture`
+
+The `renderBackgroundPicture` API is a function for rendering an optimized and responsive **Background Images**. The generated images will be displayed as the background using the `` element with `z-index` set to `-1`.
+
+Unlike the [`renderBackgroundImage`](#renderbackgroundimage) API, the `renderBackgroundPicture` API supports **Lazy Loading**, **Asynchronous Decoding**, the `sizes` attribute, and the **onload fade-in transition**. It doesn't need any JavaScript too.
+
+#### Example Usage of `renderBackgroundPicture`
+
+```js
+import { renderBackgroundPicture } from "astro-imagetools/api";
+
+const content = await fetch(import.meta.env.CONTENT_URL).then((r) => r.text());
+
+const { link, style, htmlElement } = await renderBackgroundPicture({
+ src: "https://picsum.photos/1024/768",
+ artDirectives: [
+ {
+ src: "https://picsum.photos/1024/768?image=1",
+ media: "(orientation: potrait)",
+ },
+ ],
+});
+```
+
+To know more about the `renderBackgroundPicture` API and the available configuration options, please check out the [`renderBackgroundPicture`](/en/api/renderbackgroundpicture) documentation.
diff --git a/packages/imagetools_3/docs/src/pages/en/components/BackgroundImage.mdx b/packages/imagetools_3/docs/src/pages/en/components/BackgroundImage.mdx
new file mode 100644
index 0000000..c76fc59
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/components/BackgroundImage.mdx
@@ -0,0 +1,58 @@
+---
+title:
+description: The Component Documentation
+layout: ../../../layouts/MainLayout.astro
+---
+
+import ConfigOptions from "../../../components/ConfigOptions.astro";
+
+The ` ` component offers **Background Image Optimization**. It uses the plain CSS `background-image` property to display the generated background image sets.
+
+As the component is using the `background-image` property, it lacks the features provided by the HTML `` and ` ` elements such as **Lazy Loading**, **Asynchronous Decoding**, the `sizes` attribute, and the **onload fade-in transition**. But the component still offers **Art Direction** support and the ability to offer **multiple source formats**.
+
+The browesrs don't offer any native CSS API or feature to detect support for a specific source format and provide multiple source formats. So the ` ` component depends on JavaScript to detect the support of the `webp` and `avif` formats.
+
+To make the ` ` component work, you need to import the [` `](/en/components-and-apis#imagesupportdetection) component in the `` of your **Layout** component. This component adds **655 bytes** to the generated pages.
+
+The body of the ` ` component will be used as the content of the container element.
+
+> **Note:** Layouts don't make sense for background images. So, they aren't supported by the ` ` component.
+
+## Code Example
+
+```astro
+---
+import {
+ BackgroundImage,
+ ImageSupportDetection,
+} from "astro-imagetools/components";
+
+const content = await fetch(import.meta.env.CONTENT_URL).then((r) => r.text());
+---
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Component Props
+
+Below is the list of props that the ` ` component accepts. Only the `src` prop is required.
+
+
diff --git a/packages/imagetools_3/docs/src/pages/en/components/BackgroundPicture.mdx b/packages/imagetools_3/docs/src/pages/en/components/BackgroundPicture.mdx
new file mode 100644
index 0000000..f481f77
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/components/BackgroundPicture.mdx
@@ -0,0 +1,54 @@
+---
+title:
+description: The Component Documentation
+layout: ../../../layouts/MainLayout.astro
+---
+
+import ConfigOptions from "../../../components/ConfigOptions.astro";
+
+Similar to the [` `](/en/components/BackgroundImage) component, the ` ` component offers **Background Image Optimization**. But instead of using the `background-image` property, it uses the `` element with `z-index` set to `-1` to display the background image.
+
+Unlike the ` ` component, the ` ` supports **Lazy Loading**, **Asynchronous Decoding**, the `sizes` attribute, and the **onload fade-in transition**. It doesn't need any JavaScript too.
+
+The body of the ` ` component will be used as the content of the container element.
+
+> **Note:** Layouts don't make sense for background images. So, they aren't supported by the ` ` component.
+
+## Code Example
+
+```astro
+---
+import {
+ BackgroundImage,
+ ImageSupportDetection,
+} from "astro-imagetools/components";
+
+const content = await fetch(import.meta.env.CONTENT_URL).then((r) => r.text());
+---
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Component Props
+
+Below is the list of props that the ` ` component accepts. Only the `src` prop is required.
+
+
diff --git a/packages/imagetools_3/docs/src/pages/en/components/Img.mdx b/packages/imagetools_3/docs/src/pages/en/components/Img.mdx
new file mode 100644
index 0000000..44d202f
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/components/Img.mdx
@@ -0,0 +1,25 @@
+---
+title:
+description: The Component Documentation
+layout: ../../../layouts/MainLayout.astro
+---
+
+import ConfigOptions from "../../../components/ConfigOptions.astro";
+
+The ` ` component is an Astro component that renders an optimized and responsive ` ` element. This component is for simple use cases where you don't need advanced features like **Art Direction**, **multiple source formats**, or the **onload fade-in transition**.
+
+## Code Example
+
+```astro
+---
+import { Img } from "astro-imagetools/components";
+---
+
+
+```
+
+## Component Props
+
+Below is the list of props that the ` ` component accepts. Only the `src` and `alt` props are required.
+
+
diff --git a/packages/imagetools_3/docs/src/pages/en/components/Picture.mdx b/packages/imagetools_3/docs/src/pages/en/components/Picture.mdx
new file mode 100644
index 0000000..17d2393
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/components/Picture.mdx
@@ -0,0 +1,34 @@
+---
+title:
+description: The Component Documentation
+layout: ../../../layouts/MainLayout.astro
+---
+
+import ConfigOptions from "../../../components/ConfigOptions.astro";
+
+The ` ` component is an Astro component that renders an optimized and responsive ` ` element. This component supports all the features that **Astro ImageTools** has to offer for regular images. It's perfect for advanced use cases where you need to offer **multiple source formats**, need **Art Direction**, and the **onload fade-in transition**. It's the component that you may want to use most of the times.
+
+## Code Example
+
+```astro
+---
+import { Picture } from "astro-imagetools/components";
+---
+
+
+```
+
+## Component Props
+
+Below is the list of props that the ` ` component accepts. Only the `src` and `alt` props are required.
+
+
diff --git a/packages/imagetools_3/docs/src/pages/en/deprecations.mdx b/packages/imagetools_3/docs/src/pages/en/deprecations.mdx
new file mode 100644
index 0000000..ad5af1a
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/deprecations.mdx
@@ -0,0 +1,30 @@
+---
+title: Deprecations & Migration Guide
+description: Astro ImageTools Deprecations & Migration Guide
+layout: ../../layouts/MainLayout.astro
+---
+
+### `v0.6.0`
+
+The ` ` component and the `renderImage` API have been removed in the `v0.6.0` release.
+
+And the Vite plugin now can't be registered directly. Instead, you have to add the Astro integration provided in the latest release in your `astro.config.mjs` file. The integration will handle registering the plugin and the other required things automatically.
+
+```js
+import { defineConfig } from "astro/config";
+import { astroImageTools } from "astro-imagetools";
+
+export default defineConfig({
+ integrations: [astroImageTools],
+});
+```
+
+### `v0.5.1`
+
+The ` ` component and the `renderImage` API have been deprecated in favor of the new ` ` and ` ` components and the `renderImg` and `renderPicture` APIs.
+
+Currently, the ` ` component and the `renderImage` API are still available in the `astro-imagetools` package for backward-compatibility. They are aliased to the ` ` component and the `renderPicture` API respectively.
+
+They will be removed in the upcoming minor releases of **Astro ImageTools**. So, please migrate to the new ` ` and ` ` components and the `renderImg` and `renderPicture` APIs as soon as possible.
+
+> **Note:** According to the [Semantic Versioning](https://semver.org/) standard, any minor release before `v1.0.0` is considered _breaking_.
diff --git a/packages/imagetools_3/docs/src/pages/en/global-config-options.mdx b/packages/imagetools_3/docs/src/pages/en/global-config-options.mdx
new file mode 100644
index 0000000..64bf68d
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/global-config-options.mdx
@@ -0,0 +1,76 @@
+---
+title: Global Config Options
+description: Astro ImageTools Global Configuration Options
+layout: ../../layouts/MainLayout.astro
+---
+
+import ConfigOptions from "../../components/ConfigOptions.astro";
+
+It's possible to set config options globally to provide the default values for the config options across the entire application. If for a config, no value is passed via `formatOptions`, components props or config properties, query parameters, **Astro ImageTools** will resort to global config options.
+
+All the global configs are optional. Any configs supported by any components or APIs can be defined globally except `src`, `alt`, `content`, and `artDirectives`. The only two additions are the [`cacheDir`](#cacheDir) and [`assetFileNames`](#assetFileNames) configs.
+
+To set global config options, create a `astro-imagetools.config.mjs` file inside the project directory and export an object with all the config options defined inside it.
+
+## Config Intellisense
+
+**Astro ImageTools** ships with TypeScript typings so that you can leverage your IDE's intellisense with the `defineConfig` helper:
+
+```js
+import { defineConfig } from "astro-imagetools/config";
+
+export default defineConfig({
+ // ...
+});
+```
+
+Or using JSDoc type hints:
+
+```js
+/**
+ * @type {import('astro-imagetools').GlobalConfigOptions}
+ */
+const config = {
+ // ...
+};
+
+export default config;
+```
+
+## Code Example
+
+```js
+import { defineConfig } from "astro-imagetools/config";
+
+export default defineConfig({
+ placeholder: "tracedSVG",
+ format: ["webp", "jpg"],
+ fallbackFormat: "png",
+ includeSourceFormat: false,
+ formatOptions: {
+ jpg: {
+ quality: 80,
+ },
+ png: {
+ quality: 80,
+ },
+ webp: {
+ quality: 50,
+ },
+ tracedSVG: {
+ options: {
+ background: "#fff",
+ color: "#000",
+ turnPolicy: "black",
+ turdSize: 1,
+ alphaMax: 1,
+ optCurve: true,
+ threshold: 100,
+ blackOnWhite: false,
+ },
+ },
+ },
+});
+```
+
+
diff --git a/packages/imagetools_3/docs/src/pages/en/installation.mdx b/packages/imagetools_3/docs/src/pages/en/installation.mdx
new file mode 100644
index 0000000..d930866
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/installation.mdx
@@ -0,0 +1,29 @@
+---
+title: Installation
+description: Astro ImageTools Installation Guide
+layout: ../../layouts/MainLayout.astro
+---
+
+To install the `astro-imagetools` package, run the following command:
+
+```bash
+npm install astro-imagetools
+
+# yarn
+yarn add astro-imagetools
+
+# pnpm
+pnpm add astro-imagetools
+```
+
+Register the _Astro Integration_ provided by **Astro ImageTools** in your `astro.config.mjs` file:
+
+```js
+import { astroImageTools } from "astro-imagetools";
+
+export default {
+ integrations: [astroImageTools],
+};
+```
+
+Then, you'll be able to use the components and APIs inside your Astro pages and components. To know more about how to use the components and APIs, please check out the [Usage](/en/usage) documentation.
diff --git a/packages/imagetools_3/docs/src/pages/en/introduction.mdx b/packages/imagetools_3/docs/src/pages/en/introduction.mdx
new file mode 100644
index 0000000..c4ef0d1
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/introduction.mdx
@@ -0,0 +1,45 @@
+---
+title: Introduction
+description: A basic intro to Astro ImageTools
+layout: ../../layouts/MainLayout.astro
+---
+
+## **Welcome to Astro ImageTools!**
+
+**Astro ImageTools** is a collection of tools for optimizing images, background images, and generating responsive images for the **Astro JS** framework.
+
+## Features
+
+Below is a short list of features that **Astro ImageTools** offers. For more information, please see component-specific or API-specific documentation.
+
+- ✅ **Regular Image Optimization** (` ` and ` ` component, both absolute paths, remote, and data URIs are supported as the source path. But in addition to that, relative paths are also supported for markdown images. 🎉🎉🎉
+
+In complex scenarios where you need more config options, you can pass them as query parameters. Or, if you have to set their values dynamically, you can import the ` ` component (and any other components too)! **Astro** supports importing and using Astro components inside MD files. Check the official [Astro Markdown documentation](https://docs.astro.build/en/guides/markdown-content/#using-components-in-markdown) for more info on this.
+
+> **Note:** Automatic markdown image optimization is supported only for markdown files. If you are using the ` ` component, you have to use the ` ` component instead.
+>
+> Both the Markdown Syntax `` and HTML Syntax ` ` are supported.
+
+### Example Markdown Images Usage
+
+```md
+---
+src: https://picsum.photos/1024/768
+alt: A random image
+setup: |
+ import { Picture } from "astro-imagetools/components";
+---
+
+# Hello Markdown Images
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/packages/imagetools_3/docs/src/pages/en/ssr.mdx b/packages/imagetools_3/docs/src/pages/en/ssr.mdx
new file mode 100644
index 0000000..72756c1
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/ssr.mdx
@@ -0,0 +1,80 @@
+---
+title: SSR
+description: Guide to using Astro ImageTools in SSR
+layout: ../../layouts/MainLayout.astro
+---
+
+Recently, **Astro** has added experimental support for server-side rendering (SSR). To use **Astro ImageTools** in SSR, you need to have at least `v0.6.0` of the `astro-imagetools` package installed.
+
+## How to use Astro ImageTools in SSR Mode
+
+### Install the required dependencies
+
+The `v0.6.0` release adds experimental support for server-side rendering (SSR). At this moment, only **Node.js** is supported. You need to have the `@astrojs/node` adapter and the latest version of `astro-imagetools` installed on your Astro project.
+
+```bash
+pnpm i @astrojs/node @astrojs/imagetools@^0.6.0
+```
+
+You need to have the latest version of `astro-imagetools` installed on the server too.
+
+```bash
+pnpm i @astrojs/imagetools@^0.6.0
+```
+
+To learn more about how to do set up the Node adapter and the Node server with **Astro**, please check out the [`@astrojs/node`](https://www.npmjs.com/package/@astrojs/node) readme.
+
+### Use the exported `middleware`
+
+Like any other component, the components and APIs provided by **Astro ImageTools** will be executed on the server. Due to how the Astro build process works, it's not possible to emit assets during the build process.
+
+When handling the incoming requests on the server, you need to use the `middleware` exported by the `astro-imagetools` package. The `middleware` returns an instance of a `Buffer`.
+
+**Code Example:**
+
+```js
+import http from "http";
+import { middleware } from "astro-imagetools/ssr";
+import { handler as ssrHandler } from "./dist/server/entry.mjs";
+
+http
+ .createServer(function (req, res) {
+ ssrHandler(req, res, async (err) => {
+ if (err) {
+ res.writeHead(500);
+ res.end(err.toString());
+ } else {
+ const buffer = await middleware(req, res);
+
+ if (buffer) {
+ res.writeHead(200);
+ res.end(buffer);
+ } else {
+ // Serve your other static assets or return 404
+ res.writeHead(404);
+ res.end();
+ }
+ }
+ });
+ })
+ .listen(8080);
+```
+
+### Notes
+
+The components and APIs provided by **Astro ImageTools** will be executed on the server. So, the path that you have provided via the `src` property won't exist on the server. This limitation applies for local images only.
+
+To use local images with SSR, you have to generate assets for them first and then you have to pass the path to the assets to the `src` property.
+
+Below is an example of how to do this.
+
+```astro
+---
+import src from "../images/image.jpg?raw";
+import { Picture } from "astro-imagetools/components";
+---
+
+
+```
+
+> The `raw` query parameter has been used to tell the internal Vite plugin to emit the asset from the source image unchanged.
diff --git a/packages/imagetools_3/docs/src/pages/en/usage.mdx b/packages/imagetools_3/docs/src/pages/en/usage.mdx
new file mode 100644
index 0000000..a3b28ee
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/en/usage.mdx
@@ -0,0 +1,99 @@
+---
+title: Usage
+description: Astro ImageTools Usage Guide
+layout: ../../layouts/MainLayout.astro
+---
+
+Here is a brief overview on the usage of the Vite plugin, components and APIs provided by **Astro ImageTools**.
+
+## Plugin Usage
+
+**Astro ImageTools** comes with a Vite plugin and it gets registered automatically once you add the integration. The Vite plugin is used by the components and APIs interally to perform all kinds of image transformations and optimizations. After it's been registered, it starts looking for and handling image imports.
+
+So, you can leverage the power of the plugin using ESM imports to perform simple image transformations and optimizations on your own. It may come in handy in the scenarios where using the provided components and APIs is not possible. Imports inside framework components too will be handled!
+
+```js
+import React from "react";
+// The Vite plugin will handle the below import automatically and return a path to the optimized image
+import src from "../images/image.jpg";
+
+export default function ReactImage() {
+ return ;
+}
+```
+
+You can pass configuration options via query parameters.
+
+```js
+import src from "../images/image.jpg?w=200&h=200&format=avif&q=80";
+```
+
+If you want the import to return a `srcset` instead of a `src`, pass multiple values to the `w` or `width` query parameter.
+
+```js
+import srcset from "../images/image.jpg?w=200;400;800";
+```
+
+## Components Usage
+
+**Astro ImageTools** provides a set of components that abstract away all the complexities of image transformations and optimizations. The components are highly customizable and provide a number of excellent features.
+
+All the components, `Img`, `Picture`, `BackgroundImage`, `BackgroundPicture`, and `ImageSupportDetection` are exported using named exports from `astro-imagetools/components`.
+
+```astro
+---
+import { Picture } from "astro-imagetools/components";
+---
+```
+
+You can pass configuration options to the components via props.
+
+```astro
+---
+import { Picture } from "astro-imagetools/components";
+---
+
+
+
+
+
+
+```
+
+To know more about the components and available configuration options, please check out the [Components](/en/components-and-apis#components) documentation.
+
+## APIs Usage
+
+**Astro ImageTools** provides a set of APIs that allow you to generate the rendered HTML for the images programmatically.
+
+All the APIs, `renderImg`, `renderPicture`, `renderBackgroundImage`, and `renderBackgroundPicture` are exported using named exports from `astro-imagetools/api`.
+
+```astro
+---
+import { renderPicture } from "astro-imagetools/api";
+---
+```
+
+All the APIs support a single config object as the only argument. You can pass configuration options to the APIs via defining properties in the config object.
+
+```astro
+---
+import { renderPicture } from "astro-imagetools/api";
+
+const { link, style, picture } = await renderPicture({
+ src: "https://picsum.photos/1024/768",
+ alt: "A random image",
+});
+---
+```
+
+To know more about the APIs and available configuration options, please check out the [APIs](/en/components-and-apis#api) documentation.
diff --git a/packages/imagetools_3/docs/src/pages/index.astro b/packages/imagetools_3/docs/src/pages/index.astro
new file mode 100644
index 0000000..d5f7485
--- /dev/null
+++ b/packages/imagetools_3/docs/src/pages/index.astro
@@ -0,0 +1,5 @@
+
diff --git a/packages/imagetools_3/docs/src/styles/index.css b/packages/imagetools_3/docs/src/styles/index.css
new file mode 100644
index 0000000..1f6d279
--- /dev/null
+++ b/packages/imagetools_3/docs/src/styles/index.css
@@ -0,0 +1,405 @@
+* {
+ box-sizing: border-box;
+ margin: 0;
+}
+
+/* Global focus outline reset */
+*:focus:not(:focus-visible) {
+ outline: none;
+}
+
+:root {
+ --user-font-scale: 1rem - 16px;
+ --max-width: calc(100% - 1rem);
+}
+
+@media (min-width: 50em) {
+ :root {
+ --max-width: 46em;
+ }
+}
+
+body {
+ display: flex;
+ flex-direction: column;
+ min-height: 100vh;
+ font-family: var(--font-body);
+ font-size: 1rem;
+ font-size: clamp(0.9rem, 0.75rem + 0.375vw + var(--user-font-scale), 1rem);
+ line-height: 1.5;
+ max-width: 100vw;
+}
+
+nav ul {
+ list-style: none;
+ padding: 0;
+}
+
+.content > section > * + * {
+ margin-top: 1.25rem;
+}
+
+.content > section > :first-child {
+ margin-top: 0;
+}
+
+.content > section > blockquote > * + * {
+ margin-top: 1.25rem;
+}
+
+.content > section > blockquote > :first-child {
+ margin-top: 0;
+}
+
+/* Typography */
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin-bottom: 1rem;
+ font-weight: bold;
+ line-height: 1;
+}
+
+h1,
+h2 {
+ max-width: 40ch;
+}
+
+:is(h2, h3):not(:first-child) {
+ margin-top: 3rem;
+}
+
+:is(h4, h5, h6):not(:first-child) {
+ margin-top: 2rem;
+}
+
+h1 {
+ font-size: 3.25rem;
+ font-weight: 800;
+}
+
+h2 {
+ font-size: 2.75rem;
+}
+
+h3 {
+ font-size: 2rem;
+}
+
+h4 {
+ font-size: 1.6rem;
+}
+
+h5 {
+ font-size: 1.35rem;
+}
+
+h6 {
+ font-size: 1.1rem;
+}
+
+p {
+ line-height: 1.65em;
+}
+
+.content ul {
+ line-height: 1.6em;
+}
+
+p,
+.content ul {
+ color: var(--theme-text-light);
+}
+
+small,
+.text_small {
+ font-size: 0.833rem;
+}
+
+a {
+ color: var(--theme-text-accent);
+ font-weight: 400;
+ text-underline-offset: 0.08em;
+ align-items: center;
+ gap: 0.5rem;
+}
+
+article > section :is(ul, ol) > * + * {
+ margin-top: 0.75rem;
+}
+
+article > section nav :is(ul, ol) > * + * {
+ margin-top: inherit;
+}
+
+article > section li > :is(p, pre, blockquote):not(:first-child) {
+ margin-top: 1rem;
+}
+
+article > section :is(ul, ol) {
+ padding-left: 1em;
+}
+
+article > section nav :is(ul, ol) {
+ padding-left: inherit;
+}
+
+article > section nav {
+ margin-top: 1rem;
+ margin-bottom: 2rem;
+}
+
+article > section ::marker {
+ font-weight: bold;
+ color: var(--theme-text-light);
+}
+
+article > section iframe {
+ width: 100%;
+ height: auto;
+ aspect-ratio: 16 / 9;
+}
+
+a > code {
+ position: relative;
+ color: var(--theme-text-accent);
+ background: transparent;
+ text-underline-offset: var(--padding-block);
+}
+
+a > code::before {
+ content: "";
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ background: var(--theme-accent);
+ opacity: var(--theme-accent-opacity);
+ border-radius: var(--border-radius);
+}
+
+a:hover,
+a:focus {
+ text-decoration: underline;
+}
+
+a:focus {
+ outline: 2px solid currentColor;
+ outline-offset: 0.25em;
+}
+
+strong {
+ font-weight: 600;
+ color: inherit;
+}
+
+/* Supporting Content */
+
+code {
+ --border-radius: 3px;
+ --padding-block: 0.2rem;
+ --padding-inline: 0.33rem;
+
+ font-family: var(--font-mono);
+ font-size: 0.85em;
+ color: inherit;
+ background-color: var(--theme-code-inline-bg);
+ padding: var(--padding-block) var(--padding-inline);
+ margin: calc(var(--padding-block) * -1) -0.125em;
+ border-radius: var(--border-radius);
+ word-break: break-word;
+}
+
+pre.astro-code > code {
+ all: unset;
+}
+
+pre > code {
+ font-size: 1em;
+}
+
+table,
+pre {
+ position: relative;
+ --padding-block: 1rem;
+ --padding-inline: 2rem;
+ padding: var(--padding-block) var(--padding-inline);
+ padding-right: calc(var(--padding-inline) * 2);
+ margin-left: calc(var(--padding-inline) * -1);
+ margin-right: calc(var(--padding-inline) * -1);
+ font-family: var(--font-mono);
+
+ line-height: 1.5;
+ font-size: 0.85em;
+ overflow-y: hidden;
+ overflow-x: auto;
+}
+
+table {
+ width: 100%;
+ padding: var(--padding-block) 0;
+ margin: 0;
+ border-collapse: collapse;
+}
+
+/* Zebra striping */
+tr:nth-of-type(odd) {
+ background: var(--theme-bg-hover);
+}
+
+th {
+ background: var(--color-black);
+ color: var(--theme-color);
+ font-weight: bold;
+}
+
+td,
+th {
+ padding: 6px;
+ text-align: left;
+}
+
+pre {
+ background-color: var(--theme-code-bg);
+ color: var(--theme-code-text);
+}
+
+blockquote code {
+ background-color: var(--theme-bg);
+}
+
+@media (min-width: 37.75em) {
+ pre {
+ --padding-inline: 1.25rem;
+ border-radius: 8px;
+ margin-left: 0;
+ margin-right: 0;
+ }
+}
+
+blockquote {
+ margin: 2rem 0;
+ padding: 1.25em 1.5rem;
+ border-left: 3px solid var(--theme-text-light);
+ background-color: var(--theme-bg-offset);
+ border-radius: 0 0.25rem 0.25rem 0;
+ line-height: 1.7;
+}
+
+img {
+ max-width: 100%;
+}
+
+.flex {
+ display: flex;
+ align-items: center;
+}
+
+.flex-grow {
+ flex-grow: 1;
+}
+
+button {
+ display: flex;
+ align-items: center;
+ justify-items: center;
+ gap: 0.25em;
+ padding: 0.33em 0.67em;
+ border: 0;
+ background: var(--theme-bg);
+ display: flex;
+ font-size: 1rem;
+ align-items: center;
+ gap: 0.25em;
+ border-radius: 99em;
+ color: var(--theme-text);
+ background-color: var(--theme-bg);
+}
+
+h2.heading {
+ font-size: 1rem;
+ font-weight: 700;
+ padding: 0.1rem 1rem;
+ text-transform: uppercase;
+ margin-bottom: 0.5rem;
+}
+
+.header-link {
+ font-size: 1rem;
+ padding: 0.1rem 0 0.1rem 1rem;
+ border-left: 4px solid var(--theme-divider);
+}
+
+.header-link:hover,
+.header-link:focus {
+ border-left-color: var(--theme-accent);
+ color: var(--theme-accent);
+}
+
+.header-link:focus-within {
+ color: var(--theme-text-light);
+ border-left-color: hsla(var(--color-gray-40), 1);
+}
+
+.header-link svg {
+ opacity: 0.6;
+}
+
+.header-link:hover svg {
+ opacity: 0.8;
+}
+
+.header-link a {
+ display: inline-flex;
+ gap: 0.5em;
+ width: 100%;
+ padding: 0.15em 0 0.15em 0;
+}
+
+.header-link.depth-3 {
+ padding-left: 2rem;
+}
+
+.header-link.depth-4 {
+ padding-left: 3rem;
+}
+
+.header-link a {
+ font: inherit;
+ color: inherit;
+ text-decoration: none;
+}
+
+/* Screenreader Only Text */
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border-width: 0;
+}
+
+.focus\:not-sr-only:focus,
+.focus\:not-sr-only:focus-visible {
+ position: static;
+ width: auto;
+ height: auto;
+ padding: 0;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+ white-space: normal;
+}
+
+:target {
+ scroll-margin: calc(var(--theme-sidebar-offset, 5rem) + 2rem) 0 2rem;
+}
diff --git a/packages/imagetools_3/docs/src/styles/theme.css b/packages/imagetools_3/docs/src/styles/theme.css
new file mode 100644
index 0000000..1f0623b
--- /dev/null
+++ b/packages/imagetools_3/docs/src/styles/theme.css
@@ -0,0 +1,126 @@
+:root {
+ --font-fallback: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,
+ sans-serif, Apple Color Emoji, Segoe UI Emoji;
+ --font-body: system-ui, var(--font-fallback);
+ --font-mono: "IBM Plex Mono", Consolas, "Andale Mono WT", "Andale Mono",
+ "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono",
+ "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco,
+ "Courier New", Courier, monospace;
+
+ /*
+ * Variables with --color-base prefix define
+ * the hue, and saturation values to be used for
+ * hsla colors.
+ *
+ * ex:
+ *
+ * --color-base-{color}: {hue}, {saturation};
+ *
+ */
+
+ --color-base-white: 0, 0%;
+ --color-base-black: 240, 100%;
+ --color-base-gray: 215, 14%;
+ --color-base-blue: 212, 100%;
+ --color-base-blue-dark: 212, 72%;
+ --color-base-green: 158, 79%;
+ --color-base-orange: 22, 100%;
+ --color-base-purple: 269, 79%;
+ --color-base-red: 351, 100%;
+ --color-base-yellow: 41, 100%;
+
+ /*
+ * Color palettes are made using --color-base
+ * variables, along with a lightness value to
+ * define different variants.
+ *
+ */
+
+ --color-gray-5: var(--color-base-gray), 5%;
+ --color-gray-10: var(--color-base-gray), 10%;
+ --color-gray-20: var(--color-base-gray), 20%;
+ --color-gray-30: var(--color-base-gray), 30%;
+ --color-gray-40: var(--color-base-gray), 40%;
+ --color-gray-50: var(--color-base-gray), 50%;
+ --color-gray-60: var(--color-base-gray), 60%;
+ --color-gray-70: var(--color-base-gray), 70%;
+ --color-gray-80: var(--color-base-gray), 80%;
+ --color-gray-90: var(--color-base-gray), 90%;
+ --color-gray-95: var(--color-base-gray), 95%;
+
+ --color-blue: var(--color-base-blue), 61%;
+ --color-blue-dark: var(--color-base-blue-dark), 39%;
+ --color-green: var(--color-base-green), 42%;
+ --color-orange: var(--color-base-orange), 50%;
+ --color-purple: var(--color-base-purple), 54%;
+ --color-red: var(--color-base-red), 54%;
+ --color-yellow: var(--color-base-yellow), 59%;
+}
+
+:root {
+ color-scheme: light;
+ --theme-accent: hsla(var(--color-blue), 1);
+ --theme-text-accent: hsla(var(--color-blue), 1);
+ --theme-accent-opacity: 0.15;
+ --theme-divider: hsla(var(--color-gray-95), 1);
+ --theme-text: hsla(var(--color-gray-10), 1);
+ --theme-text-light: hsla(var(--color-gray-40), 1);
+ /* @@@: not used anywhere */
+ --theme-text-lighter: hsla(var(--color-gray-80), 1);
+ --theme-bg: hsla(var(--color-base-white), 100%, 1);
+ --theme-bg-hover: hsla(var(--color-gray-95), 1);
+ --theme-bg-offset: hsla(var(--color-gray-90), 1);
+ --theme-bg-accent: hsla(var(--color-blue), var(--theme-accent-opacity));
+ --theme-code-inline-bg: hsla(var(--color-gray-95), 1);
+ --theme-code-inline-text: var(--theme-text);
+ --theme-code-bg: hsla(217, 19%, 27%, 1);
+ --theme-code-text: hsla(var(--color-gray-95), 1);
+ --theme-navbar-bg: hsla(var(--color-base-white), 100%, 1);
+ --theme-navbar-height: 6rem;
+ --theme-selection-color: hsla(var(--color-blue), 1);
+ --theme-selection-bg: hsla(var(--color-blue), var(--theme-accent-opacity));
+}
+
+body {
+ background: var(--theme-bg);
+ color: var(--theme-text);
+}
+
+:root.theme-dark {
+ color-scheme: dark;
+ --theme-accent-opacity: 0.15;
+ --theme-accent: hsla(var(--color-blue), 1);
+ --theme-text-accent: hsla(var(--color-blue), 1);
+ --theme-divider: hsla(var(--color-gray-10), 1);
+ --theme-text: hsla(var(--color-gray-90), 1);
+ --theme-text-light: hsla(var(--color-gray-80), 1);
+
+ /* @@@: not used anywhere */
+ --theme-text-lighter: hsla(var(--color-gray-40), 1);
+ --theme-bg: hsla(215, 28%, 17%, 1);
+ --theme-bg-hover: hsla(var(--color-gray-40), 1);
+ --theme-bg-offset: hsla(var(--color-gray-5), 1);
+ --theme-code-inline-bg: hsla(var(--color-gray-10), 1);
+ --theme-code-inline-text: hsla(var(--color-base-white), 100%, 1);
+ --theme-code-bg: hsla(var(--color-gray-5), 1);
+ --theme-code-text: hsla(var(--color-base-white), 100%, 1);
+ --theme-navbar-bg: hsla(215, 28%, 17%, 1);
+ --theme-selection-color: hsla(var(--color-base-white), 100%, 1);
+ --theme-selection-bg: hsla(var(--color-purple), var(--theme-accent-opacity));
+
+ /* DocSearch [Algolia] */
+ --docsearch-modal-background: var(--theme-bg);
+ --docsearch-searchbox-focus-background: var(--theme-divider);
+ --docsearch-footer-background: var(--theme-divider);
+ --docsearch-text-color: var(--theme-text);
+ --docsearch-hit-background: var(--theme-divider);
+ --docsearch-hit-shadow: none;
+ --docsearch-hit-color: var(--theme-text);
+ --docsearch-footer-shadow: inset 0 2px 10px #000;
+ --docsearch-modal-shadow: inset 0 0 8px #000;
+}
+
+::selection {
+ color: var(--theme-selection-color);
+ background-color: var(--theme-selection-bg);
+}
diff --git a/packages/imagetools_3/docs/tsconfig.json b/packages/imagetools_3/docs/tsconfig.json
new file mode 100644
index 0000000..2074b80
--- /dev/null
+++ b/packages/imagetools_3/docs/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "compilerOptions": {
+ "target": "es2020",
+ "module": "esnext",
+ "jsx": "preserve",
+ "baseUrl": ".",
+ "paths": {
+ "@config/*": ["src/components/ConfigOptions/*"]
+ }
+ },
+ "moduleResolution": "node"
+}
diff --git a/packages/imagetools_3/index.js b/packages/imagetools_3/index.js
new file mode 100644
index 0000000..b5e1b78
--- /dev/null
+++ b/packages/imagetools_3/index.js
@@ -0,0 +1,3 @@
+import astroImageTools from "./integration/index.js";
+
+export { astroImageTools as imagetools }
diff --git a/packages/imagetools_3/integration/index.js b/packages/imagetools_3/integration/index.js
new file mode 100644
index 0000000..81fd5c2
--- /dev/null
+++ b/packages/imagetools_3/integration/index.js
@@ -0,0 +1,120 @@
+// @ts-check
+import fs from "node:fs"
+import { fileURLToPath } from "node:url"
+import { posix as path, resolve } from "node:path"
+import { saveAndCopyAsset } from "./utils/saveAndCopyAsset.js"
+import vitePluginAstroImageTools, { store } from "../plugin/index.js"
+import pMap from "p-map"
+
+const filename = fileURLToPath(import.meta.url);
+const astroViteConfigsPath = resolve(filename, "../../astroViteConfigs.js");
+
+export default {
+ name: "imagetools",
+ hooks: {
+ "astro:config:setup": async function ({ config, command, updateConfig }) {
+ const environment = command;
+ const isSsrBuild =
+ command === "build" && !!config.adapter && config.output === "server";
+
+ console.log(`[imagetools] config:setup command: ${command}`);
+ let projectBase = path.normalize(config.base);
+ if (projectBase.startsWith("./")) projectBase = projectBase.slice(1);
+ if (!projectBase.startsWith("/")) projectBase = "/" + projectBase;
+ if (projectBase.endsWith("/")) projectBase = projectBase.slice(0, -1);
+
+ const astroViteConfigs = {
+ environment,
+ isSsrBuild,
+ projectBase,
+ publicDir: fileURLToPath(config.publicDir.href),
+ rootDir: fileURLToPath(config.root.href),
+ };
+
+ await fs.promises.writeFile(
+ astroViteConfigsPath,
+ `export default ${JSON.stringify(astroViteConfigs)}`
+ );
+
+ updateConfig({
+ vite: {
+ plugins: [vitePluginAstroImageTools],
+ },
+ });
+ },
+
+ "astro:build:done": async function closeBundle() {
+ const { default: astroViteConfigs } = await import(
+ // @ts-ignore
+ "../astroViteConfigs.js"
+ );
+
+ const { mode, outDir, assetsDir, isSsrBuild } = astroViteConfigs;
+ console.log(`[imagetools] build:done mode: ${mode}`);
+ if (mode === "production") {
+ const allEntries = [...store.entries()];
+ const assetPaths = allEntries.filter( ([, { hash = null } = {}]) => hash );
+
+ if(assetPaths.length === 0) {
+ console.log('No images to process');
+ return;
+ }
+
+ await pMap(
+ assetPaths,
+ async ([assetPath, { hash, image, buffer }]) => {
+ // Retry mechanism with exponential backoff for image processing
+ /*
+ const retryWithBackoff = async (fn, retries = 3, baseDelay = 10) => {
+ for (let i = 0; i < retries; i++) {
+ try {
+ return await fn();
+ } catch (error) {
+ if (i === retries - 1) {
+ throw error; // Last attempt failed
+ }
+
+ // Check if it's a vips/sharp related error that we should retry
+ const isRetryableError = error.message.includes('vips') ||
+ error.message.includes('sharp') ||
+ error.message.includes('UNKNOWN: unknown error') ||
+ error.code === 'EBUSY' ||
+ error.code === 'ENOENT' ||
+ error.errno === -4094;
+
+ if (!isRetryableError) {
+ throw error; // Don't retry non-transient errors
+ }
+
+ const delay = baseDelay * Math.pow(2, i); // Exponential backoff
+ console.warn(`Retry attempt ${i + 1}/${retries} for image ${assetPath} after ${delay}ms delay:`, error.message);
+ await new Promise(resolve => setTimeout(resolve, delay));
+ }
+ }
+ };
+ */
+
+ try {
+ // await retryWithBackoff(async () => {
+ await saveAndCopyAsset(
+ hash,
+ image,
+ buffer,
+ outDir,
+ assetsDir,
+ assetPath,
+ isSsrBuild
+ );
+ // });
+ } catch (error) {
+ console.error(`Failed to process image ${assetPath} after retries:`, error);
+ // Continue processing other images even if one fails
+ }
+ },
+ // higher concurrency causes sharp/vips errors as well
+ { concurrency: 1 }
+ );
+ }
+ },
+ },
+};
diff --git a/packages/imagetools_3/integration/utils/saveAndCopyAsset.js b/packages/imagetools_3/integration/utils/saveAndCopyAsset.js
new file mode 100644
index 0000000..f075377
--- /dev/null
+++ b/packages/imagetools_3/integration/utils/saveAndCopyAsset.js
@@ -0,0 +1,46 @@
+import fs from "node:fs/promises";
+import { posix as path } from "node:path";
+import { fsCachePath } from "../../utils/runtimeChecks.js";
+
+const copied = [];
+let assetsDirExists;
+
+export async function saveAndCopyAsset(
+ hash,
+ image,
+ buffer,
+ outDir,
+ assetsDir,
+ assetPath,
+ isSsrBuild
+) {
+ const src = fsCachePath + hash;
+
+ const dest = path.join(outDir, isSsrBuild ? "/client" : "", assetPath);
+
+ assetsDir = path.join(outDir, isSsrBuild ? "/client" : "/", assetsDir);
+
+ if (copied.includes(assetPath)) return;
+
+ if (!assetsDirExists) {
+ await fs.mkdir(assetsDir, {
+ recursive: true,
+ });
+
+ assetsDirExists = true;
+ }
+
+ await fs.copyFile(src, dest).catch(async (error) => {
+ if (error.code === "ENOENT") {
+ const imageBuffer = buffer || (await image.toBuffer());
+
+ await Promise.all(
+ [src, dest].map(async (dir) => {
+ await fs.writeFile(dir, imageBuffer);
+ })
+ );
+ } else throw error;
+ });
+
+ copied.push(assetPath);
+}
diff --git a/packages/imagetools_3/package.json b/packages/imagetools_3/package.json
new file mode 100644
index 0000000..257da62
--- /dev/null
+++ b/packages/imagetools_3/package.json
@@ -0,0 +1,67 @@
+{
+ "name": "imagetools",
+ "version": "0.9.0",
+ "description": "Image Optimization tools for the Astro JS framework",
+ "type": "module",
+ "types": "./types.d.ts",
+ "exports": {
+ ".": "./index.js",
+ "./ssr": "./ssr/index.js",
+ "./api": "./api/index.js",
+ "./config": "./config.mjs",
+ "./components": "./components/index.js"
+ },
+ "scripts": {
+ "test:watch": "vitest",
+ "test": "vitest run"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/RafidMuhymin/astro-imagetools.git"
+ },
+ "keywords": [
+ "astro",
+ "astro-component",
+ "image",
+ "images",
+ "optimization",
+ "responsive-image",
+ "vite",
+ "vite-plugin",
+ "sharp",
+ "imagetools",
+ "codecs",
+ "astropub"
+ ],
+ "author": "Rafid Muhymin",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/RafidMuhymin/astro-imagetools/issues"
+ },
+ "homepage": "https://github.com/RafidMuhymin/astro-imagetools#readme",
+ "dependencies": {
+ "@astropub/codecs": "0.4.4",
+ "@polymech/cache": "file:../../../polymech-mono/packages/cache",
+ "@polymech/commons": "file:../../../polymech-mono/packages/commons",
+ "@polymech/fs": "file:../../../polymech-mono/packages/fs",
+ "file-type": "17.1.1",
+ "find-cache-dir": "3.3.2",
+ "find-up": "^6.3.0",
+ "object-hash": "3.0.0",
+ "p-map": "^7.0.3",
+ "p-timeout": "^6.1.4",
+ "potrace": "2.1.8"
+ },
+ "optionalDependencies": {
+ "imagetools-core": "3.0.2"
+ },
+ "peerDependencies": {
+ "astro": ">=0.26 || >=1.0.0-beta"
+ },
+ "devDependencies": {
+ "vitest": "^0.12.4"
+ },
+ "engines": {
+ "node": "^14.15.0 || >=16.0.0"
+ }
+}
diff --git a/packages/imagetools_3/plugin/hooks/config.js b/packages/imagetools_3/plugin/hooks/config.js
new file mode 100644
index 0000000..0562971
--- /dev/null
+++ b/packages/imagetools_3/plugin/hooks/config.js
@@ -0,0 +1,19 @@
+// @ts-check
+
+export default function config() {
+ return {
+ optimizeDeps: {
+ exclude: ["@astropub/codecs", "imagetools-core", "sharp"],
+ },
+ ssr: {
+ external: [
+ "sharp",
+ "potrace",
+ "file-type",
+ "object-hash",
+ "find-cache-dir",
+ "@astropub/codecs",
+ ],
+ },
+ };
+}
diff --git a/packages/imagetools_3/plugin/hooks/load.js b/packages/imagetools_3/plugin/hooks/load.js
new file mode 100644
index 0000000..b8bfbc4
--- /dev/null
+++ b/packages/imagetools_3/plugin/hooks/load.js
@@ -0,0 +1,195 @@
+// @ts-check
+import path from "node:path";
+import objectHash from "object-hash";
+
+import { store } from "../index.js";
+import { getCachedBuffer } from "../utils/cache.js";
+import { getSrcPath } from "../../api/utils/getSrcPath.js";
+import { getAssetPath, getConfigOptions } from "../utils/shared.js";
+import { sharp, supportedImageTypes } from "../../utils/runtimeChecks.js";
+import { get_cached_object, set_cached_object } from '@polymech/cache';
+
+const { getLoadedImage, getTransformedImage } = await (sharp
+ ? import("../utils/imagetools.js")
+ : import("../utils/codecs.js"));
+
+export default async function load(id) {
+ try {
+ var fileURL = new URL(`file://${id}`);
+ } catch (error) {
+ return null;
+ }
+
+ const { search, searchParams } = fileURL;
+
+ id = id.replace(search, "");
+
+ const ext = path.extname(id).slice(1);
+
+
+ if (!supportedImageTypes.includes(ext)) return null;
+
+ const { default: astroViteConfigs } = await import(
+ // @ts-ignore
+ "../../astroViteConfigs.js"
+ );
+
+ const { environment, projectBase, assetFileNames } = astroViteConfigs;
+
+ const src = await getSrcPath(id);
+
+ const rootRelativePosixSrc = path.posix.normalize(
+ path.relative("", src).split(path.sep).join(path.posix.sep)
+ );
+
+ const getHash = (width) =>
+ objectHash(
+ { width, options, rootRelativePosixSrc },
+ // @ts-ignore
+ { algorithm: "sha256" }
+ );
+
+ const base =
+ typeof arguments[1] === "string"
+ ? arguments[1]
+ : path.basename(src, path.extname(src));
+
+ const config = Object.fromEntries(searchParams);
+
+ const { image: loadedImage, width: imageWidth } =
+ store.get(src) || store.set(src, await getLoadedImage(src, ext)).get(src);
+
+ const { type, widths, options, extension, raw, inline } = getConfigOptions(
+ config,
+ ext,
+ imageWidth
+ );
+
+ if (raw) {
+ const testConfig = { ...config };
+
+ delete testConfig.raw;
+ delete testConfig.inline;
+ delete testConfig.base64;
+
+ if (Object.keys(testConfig).length > 0) {
+ throw new Error(
+ "If raw is set, no other options can be set except inline and base64"
+ );
+ }
+ }
+
+ if (inline) {
+ if (widths.length > 1) {
+ throw new Error(
+ `The base64 or inline parameter can't be used with multiple widths`
+ );
+ }
+
+ const [width] = widths;
+
+ const hash = getHash(width);
+
+ if (store.has(hash)) {
+ return `export default "${store.get(hash)}"`;
+ } else {
+ const config = { width, ...options };
+
+ const { image, buffer } = raw
+ ? {
+ image: sharp ? loadedImage : null,
+ buffer: !sharp ? loadedImage.data : null,
+ }
+ : await getTransformedImage({
+ src,
+ image: loadedImage,
+ config,
+ type,
+ });
+
+ const dataUri = `data:${type};base64,${(
+ buffer || (await getCachedBuffer(hash, image))
+ ).toString("base64")}`;
+
+ store.set(hash, dataUri);
+ console.log('store.set', hash);
+ return `export default "${dataUri}"`;
+ }
+ } else {
+ const sources = await Promise.all(
+ widths.map(async (width) => {
+ const hash = getHash(width);
+ const assetPath = getAssetPath(
+ base,
+ assetFileNames,
+ extension,
+ width,
+ hash
+ );
+
+ if (!store.has(assetPath)) {
+ const config = { width, ...options };
+ // Create cache key for this specific image transformation
+ const cacheKey = {
+ src: id,
+ width,
+ type,
+ extension,
+ options: objectHash(options)
+ };
+
+ let imageObject = null;
+
+ // Only use cache in production builds
+ if (environment === "production") {
+ imageObject = await get_cached_object(cacheKey, 'imagetools-plugin');
+ if (imageObject) {
+ console.log(`[imagetools-cache] Cache hit for ${assetPath}`);
+ }
+ }
+
+ // Process image if not cached
+ if (!imageObject) {
+ const { image, buffer } = raw
+ ? {
+ image: sharp && loadedImage,
+ buffer: !sharp && loadedImage.data,
+ }
+ : await getTransformedImage({
+ src,
+ image: loadedImage,
+ config,
+ type,
+ });
+
+ imageObject = { hash, type, image, buffer };
+
+ // Cache the processed result in production
+ if (environment === "production") {
+ await set_cached_object(cacheKey, 'imagetools-plugin', imageObject, {
+ src: id,
+ width,
+ type,
+ timestamp: Date.now()
+ });
+ console.log(`[imagetools-cache] Cached ${assetPath}`);
+ }
+ }
+ store.set(assetPath, imageObject);
+ }
+ const modulePath = environment === "dev" ? assetPath : projectBase + assetPath;
+
+ return { width, modulePath };
+ })
+ );
+
+ const srcset =
+ sources.length > 1
+ ? sources
+ .map(({ width, modulePath }) => `${modulePath} ${width}w`)
+ .join(", ")
+ : sources[0].modulePath;
+
+ return `export default "${srcset}"`;
+ }
+}
diff --git a/packages/imagetools_3/plugin/hooks/transform.js b/packages/imagetools_3/plugin/hooks/transform.js
new file mode 100644
index 0000000..5851419
--- /dev/null
+++ b/packages/imagetools_3/plugin/hooks/transform.js
@@ -0,0 +1,62 @@
+// @ts-check
+import path from "node:path";
+import crypto from "node:crypto";
+import MagicString from "magic-string";
+import { cwd } from "../../utils/runtimeChecks.js";
+
+const regexTestPattern =
+ / ]*>/;
+const regexExecPattern = new RegExp(regexTestPattern, "gs");
+const regexRenderPattern = /\$\$render`(.*)`/gs;
+
+export default async function transform(code, id) {
+ if (id.endsWith(".md") && regexTestPattern.test(code)) {
+ const { default: astroViteConfigs } = await import(
+ // @ts-ignore
+ "../../astroViteConfigs.js"
+ );
+
+ const { sourcemap } = astroViteConfigs;
+
+ // Extract the "$$render`" part of the markdown string
+ const [result] = [...code.matchAll(regexRenderPattern)];
+ const [, renderString] = result;
+ const renderIndex = result.index + "$$render`".length;
+
+ const matches = renderString.matchAll(regexExecPattern);
+ if (matches !== null) {
+ const s = new MagicString(code);
+
+ const uuid = crypto.randomBytes(4).toString("hex");
+
+ const Picture = "Picture" + uuid;
+
+ const renderComponent = "renderComponent" + uuid;
+
+ s.prepend(
+ `import { Picture as ${Picture} } from "astro-imagetools/components";\nimport { renderComponent as ${renderComponent} } from "${
+ cwd + "/node_modules/astro/dist/runtime/server/index.js"
+ }"\n;`
+ );
+
+ for (const match of matches) {
+ const [matchedText, rawSrc, alt] = match;
+
+ const src = rawSrc.match("(http://|https://|data:image/).*")
+ ? rawSrc
+ : path.resolve(path.dirname(id), rawSrc).replace(cwd, "");
+
+ s.overwrite(
+ renderIndex + match.index,
+ renderIndex + match.index + matchedText.length,
+ `\${${renderComponent}($$result, "${Picture}", ${Picture}, { "src": "${src}", "alt": "${alt}" })}`
+ );
+ }
+
+ return {
+ code: s.toString(),
+ map: sourcemap ? s.generateMap({ hires: true }) : null,
+ };
+ }
+ }
+}
diff --git a/packages/imagetools_3/plugin/index.js b/packages/imagetools_3/plugin/index.js
new file mode 100644
index 0000000..f45f36f
--- /dev/null
+++ b/packages/imagetools_3/plugin/index.js
@@ -0,0 +1,88 @@
+// @ts-check
+import fs from "node:fs";
+import stream from "node:stream";
+import { fileURLToPath } from "node:url";
+import { posix as path, resolve } from "node:path";
+
+import load from "./hooks/load.js";
+import config from "./hooks/config.js";
+import transform from "./hooks/transform.js";
+import { middleware } from "../ssr/index.js";
+import { GlobalConfigOptions } from "../utils/runtimeChecks.js";
+
+if (!globalThis.astroImageToolsStore)
+ globalThis.astroImageToolsStore = new Map();
+
+export const store = globalThis.astroImageToolsStore;
+
+const filename = fileURLToPath(import.meta.url);
+
+const astroViteConfigsPath = resolve(filename, "../../astroViteConfigs.js");
+
+const vitePluginAstroImageTools = {
+ name: "vite-plugin-astro-imagetools",
+ enforce: "pre",
+
+ config,
+
+ async configResolved(config) {
+ const { mode } = config;
+
+ const { outDir, sourcemap } = config.build;
+
+ let inheritedPattern =
+ config.build.rollupOptions.output?.assetFileNames?.replace(
+ "[name]",
+ "[name]@[width]"
+ );
+
+ let assetFileNames = path.normalize(
+ GlobalConfigOptions.assetFileNames ||
+ inheritedPattern ||
+ `/_astro/[name]@[width].[hash][extname]`
+ );
+
+ const { dir: assetsDir } = path.posix.parse(
+ assetFileNames.replaceAll(path.sep, path.posix.sep)
+ );
+
+ if (!assetFileNames.startsWith("/"))
+ assetFileNames = path.join("/", assetFileNames);
+
+ const astroViteConfigs = JSON.parse(
+ (await fs.promises.readFile(astroViteConfigsPath, "utf8")).slice(15)
+ );
+
+ const newAstroViteConfigs = {
+ ...astroViteConfigs,
+ mode,
+ outDir,
+ assetsDir,
+ sourcemap,
+ assetFileNames,
+ };
+
+ await fs.promises.writeFile(
+ astroViteConfigsPath,
+ `export default ${JSON.stringify(newAstroViteConfigs, null, 2)}`
+ );
+ },
+
+ load,
+
+ transform,
+
+ configureServer(server) {
+ server.middlewares.use(async (request, response, next) => {
+ const buffer = await middleware(request, response);
+
+ if (buffer) {
+ return stream.Readable.from(buffer).pipe(response);
+ }
+
+ next();
+ });
+ },
+};
+
+export default vitePluginAstroImageTools;
diff --git a/packages/imagetools_3/plugin/utils/cache.js b/packages/imagetools_3/plugin/utils/cache.js
new file mode 100644
index 0000000..6e5ee76
--- /dev/null
+++ b/packages/imagetools_3/plugin/utils/cache.js
@@ -0,0 +1,17 @@
+// @ts-check
+import fs from "node:fs";
+import { fsCachePath } from "../../utils/runtimeChecks.js";
+
+export async function getCachedBuffer(hash, image) {
+ const cacheFilePath = fsCachePath + hash;
+
+ if (fs.existsSync(cacheFilePath)) {
+ return fs.promises.readFile(cacheFilePath);
+ }
+
+ const buffer = await image.clone().toBuffer();
+
+ await fs.promises.writeFile(cacheFilePath, buffer);
+
+ return buffer;
+}
diff --git a/packages/imagetools_3/plugin/utils/codecs.js b/packages/imagetools_3/plugin/utils/codecs.js
new file mode 100644
index 0000000..1476e94
--- /dev/null
+++ b/packages/imagetools_3/plugin/utils/codecs.js
@@ -0,0 +1,41 @@
+// @ts-check
+import fs from "node:fs";
+import * as codecs from "@astropub/codecs";
+
+const resizedImages = new Map();
+
+export const getLoadedImage = async (src, ext) => {
+ const buffer = fs.readFileSync(src);
+
+ const image = await codecs[ext].decode(buffer);
+
+ const { width } = image;
+
+ const resizedImageKey = `${src}@${image.width}`;
+
+ resizedImages.set(resizedImageKey, image);
+
+ return { image, width };
+};
+
+export const getTransformedImage = async ({ src, image, config, type }) => {
+ const { width, format, quality } = config;
+
+ const resizedImageKey = `${src}@${width}`;
+
+ const resizedImage =
+ resizedImages.get(resizedImageKey) ||
+ resizedImages
+ .set(resizedImageKey, await image.resize({ width }))
+ .get(resizedImageKey);
+
+ const encodedImage = quality
+ ? await codecs[format].encode(resizedImage, {
+ quality: parseInt(quality),
+ })
+ : await resizedImage.encode(type);
+
+ const buffer = Buffer.from(encodedImage.data);
+
+ return { image, buffer };
+};
diff --git a/packages/imagetools_3/plugin/utils/imagetools.js b/packages/imagetools_3/plugin/utils/imagetools.js
new file mode 100644
index 0000000..f969207
--- /dev/null
+++ b/packages/imagetools_3/plugin/utils/imagetools.js
@@ -0,0 +1,26 @@
+// @ts-check
+import {
+ builtins,
+ loadImage,
+ applyTransforms,
+ generateTransforms,
+} from "imagetools-core";
+
+export const getLoadedImage = async (src) => {
+ const image = loadImage(src);
+
+ const { width } = await image.metadata();
+
+ return { image, width };
+};
+
+export const getTransformedImage = async ({ image, config }) => {
+ const { transforms } = generateTransforms(config, builtins);
+
+ const { image: encodedImage } = await applyTransforms(
+ transforms,
+ image.clone()
+ );
+
+ return { image: encodedImage, buffer: null };
+};
diff --git a/packages/imagetools_3/plugin/utils/shared.js b/packages/imagetools_3/plugin/utils/shared.js
new file mode 100644
index 0000000..bac7c05
--- /dev/null
+++ b/packages/imagetools_3/plugin/utils/shared.js
@@ -0,0 +1,47 @@
+// @ts-check
+
+export function getConfigOptions(config, ext, imageWidth) {
+ const { w, width = w, format = ext, base64, raw, inline, ...rest } = config;
+
+ const imageFormat = format === "jpeg" ? "jpg" : format;
+
+ const widths = width
+ ? width.split(";").map((w) => parseInt(w))
+ : [imageWidth];
+
+ const extension = format === "jpg" ? "jpeg" : format;
+ const type = `image/${extension}`;
+
+ const options = {
+ format: imageFormat,
+ ...rest,
+ };
+
+ return {
+ type,
+ widths,
+ options,
+ extension,
+ raw: typeof raw === "string",
+ inline: typeof base64 === "string" || typeof inline === "string",
+ };
+}
+
+export function getAssetPath(base, assetFileNames, ext, width, hash) {
+ const regexExecArray = /(?<=\[hash:)\d+(?=\])/g.exec(assetFileNames),
+ hashLength = regexExecArray ? regexExecArray[0] : 8,
+ extname = `.${ext}`,
+ name = base;
+
+ width = width + "w";
+ hash = hash.slice(0, hashLength);
+
+ const assetPath = assetFileNames
+ .replace("[name]", name)
+ .replace("[width]", width)
+ .replace(regexExecArray ? `[hash:${hashLength}]` : "[hash]", hash)
+ .replace("[ext]", ext)
+ .replace("[extname]", extname);
+
+ return assetPath;
+}
diff --git a/packages/imagetools_3/pnpm-lock.yaml b/packages/imagetools_3/pnpm-lock.yaml
new file mode 100644
index 0000000..5f69ffe
--- /dev/null
+++ b/packages/imagetools_3/pnpm-lock.yaml
@@ -0,0 +1,8852 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ devDependencies:
+ eslint:
+ specifier: ^8.33.0
+ version: 8.57.0
+ eslint-plugin-unicorn:
+ specifier: ^42.0.0
+ version: 42.0.0(eslint@8.57.0)
+ prettier:
+ specifier: ^2.8.3
+ version: 2.8.8
+ prettier-plugin-astro:
+ specifier: ^0.1.3
+ version: 0.1.3
+
+ demo:
+ dependencies:
+ astro-spa:
+ specifier: ^1.3.9
+ version: 1.3.9
+ react:
+ specifier: ^18.2.0
+ version: 18.3.1
+ react-dom:
+ specifier: ^18.2.0
+ version: 18.3.1(react@18.3.1)
+ devDependencies:
+ '@astrojs/lit':
+ specifier: ^1.1.2
+ version: 1.3.0(@webcomponents/template-shadowroot@0.1.0)(lit@3.2.0)
+ '@astrojs/preact':
+ specifier: ^2.0.2
+ version: 2.2.2(preact@10.23.2)
+ '@astrojs/react':
+ specifier: ^2.0.2
+ version: 2.3.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@astrojs/solid-js':
+ specifier: ^2.0.2
+ version: 2.2.1(@babel/core@7.25.2)(solid-js@1.8.22)(vite@4.5.3(@types/node@16.18.106))
+ '@astrojs/svelte':
+ specifier: ^2.0.1
+ version: 2.2.0(astro@2.10.15(@types/node@16.18.106))(svelte@3.59.2)(typescript@5.5.4)(vite@4.5.3(@types/node@16.18.106))
+ '@astrojs/vue':
+ specifier: ^2.0.1
+ version: 2.2.1(@babel/core@7.25.2)(astro@2.10.15(@types/node@16.18.106))(vite@4.5.3(@types/node@16.18.106))(vue@3.5.0(typescript@5.5.4))
+ astro:
+ specifier: ^2.0.6
+ version: 2.10.15(@types/node@16.18.106)
+ astro-imagetools:
+ specifier: workspace:^0.9.0
+ version: link:../packages/astro-imagetools
+
+ docs:
+ dependencies:
+ '@algolia/client-search':
+ specifier: ^4.14.3
+ version: 4.24.0
+ '@astrojs/markdown-component':
+ specifier: ^1.0.2
+ version: 1.0.5
+ '@astrojs/mdx':
+ specifier: ^0.14.0
+ version: 0.14.0(rollup@3.29.4)
+ '@docsearch/css':
+ specifier: ^3.3.2
+ version: 3.6.1
+ '@docsearch/react':
+ specifier: ^3.3.2
+ version: 3.6.1(@algolia/client-search@4.24.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.1)
+ '@types/react':
+ specifier: ^18.0.26
+ version: 18.3.5
+ preact:
+ specifier: ^10.11.3
+ version: 10.23.2
+ react:
+ specifier: ^18.2.0
+ version: 18.3.1
+ react-dom:
+ specifier: ^18.2.0
+ version: 18.3.1(react@18.3.1)
+ unplugin-auto-import:
+ specifier: ^0.9.5
+ version: 0.9.5(esbuild@0.18.20)(rollup@3.29.4)(vite@3.2.10(@types/node@16.18.106))
+ devDependencies:
+ '@astrojs/preact':
+ specifier: ^0.2.0
+ version: 0.2.0(@babel/core@7.25.2)(preact@10.23.2)
+ '@astrojs/react':
+ specifier: ^0.2.1
+ version: 0.2.1(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ astro:
+ specifier: ^1.9.2
+ version: 1.9.2(@types/node@16.18.106)
+
+ packages/astro-imagetools:
+ dependencies:
+ '@astropub/codecs':
+ specifier: 0.4.4
+ version: 0.4.4
+ astro:
+ specifier: '>=0.26 || >=1.0.0-beta'
+ version: 2.10.15(@types/node@16.18.106)
+ file-type:
+ specifier: 17.1.1
+ version: 17.1.1
+ find-cache-dir:
+ specifier: 3.3.2
+ version: 3.3.2
+ find-up:
+ specifier: ^6.3.0
+ version: 6.3.0
+ object-hash:
+ specifier: 3.0.0
+ version: 3.0.0
+ potrace:
+ specifier: 2.1.8
+ version: 2.1.8
+ optionalDependencies:
+ imagetools-core:
+ specifier: 3.0.2
+ version: 3.0.2
+ devDependencies:
+ vitest:
+ specifier: ^0.12.4
+ version: 0.12.10
+
+packages:
+
+ '@algolia/autocomplete-core@1.9.3':
+ resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==}
+
+ '@algolia/autocomplete-plugin-algolia-insights@1.9.3':
+ resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==}
+ peerDependencies:
+ search-insights: '>= 1 < 3'
+
+ '@algolia/autocomplete-preset-algolia@1.9.3':
+ resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==}
+ peerDependencies:
+ '@algolia/client-search': '>= 4.9.1 < 6'
+ algoliasearch: '>= 4.9.1 < 6'
+
+ '@algolia/autocomplete-shared@1.9.3':
+ resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==}
+ peerDependencies:
+ '@algolia/client-search': '>= 4.9.1 < 6'
+ algoliasearch: '>= 4.9.1 < 6'
+
+ '@algolia/cache-browser-local-storage@4.24.0':
+ resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==}
+
+ '@algolia/cache-common@4.24.0':
+ resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==}
+
+ '@algolia/cache-in-memory@4.24.0':
+ resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==}
+
+ '@algolia/client-account@4.24.0':
+ resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==}
+
+ '@algolia/client-analytics@4.24.0':
+ resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==}
+
+ '@algolia/client-common@4.24.0':
+ resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==}
+
+ '@algolia/client-personalization@4.24.0':
+ resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==}
+
+ '@algolia/client-search@4.24.0':
+ resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==}
+
+ '@algolia/logger-common@4.24.0':
+ resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==}
+
+ '@algolia/logger-console@4.24.0':
+ resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==}
+
+ '@algolia/recommend@4.24.0':
+ resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==}
+
+ '@algolia/requester-browser-xhr@4.24.0':
+ resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==}
+
+ '@algolia/requester-common@4.24.0':
+ resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==}
+
+ '@algolia/requester-node-http@4.24.0':
+ resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==}
+
+ '@algolia/transporter@4.24.0':
+ resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==}
+
+ '@ampproject/remapping@2.3.0':
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
+ engines: {node: '>=6.0.0'}
+
+ '@antfu/utils@0.5.2':
+ resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==}
+
+ '@astrojs/compiler@0.19.0':
+ resolution: {integrity: sha512-8nvyxZTfCXLyRmYfTttpJT6EPhfBRg0/q4J/Jj3/pNPLzp+vs05ZdktsY6QxAREaOMAnNEtSqcrB4S5DsXOfRg==}
+
+ '@astrojs/compiler@0.31.4':
+ resolution: {integrity: sha512-6bBFeDTtPOn4jZaiD3p0f05MEGQL9pw2Zbfj546oFETNmjJFWO3nzHz6/m+P53calknCvyVzZ5YhoBLIvzn5iw==}
+
+ '@astrojs/compiler@1.8.2':
+ resolution: {integrity: sha512-o/ObKgtMzl8SlpIdzaxFnt7SATKPxu4oIP/1NL+HDJRzxfJcAkOTAb/ZKMRyULbz4q+1t2/DAebs2Z1QairkZw==}
+
+ '@astrojs/internal-helpers@0.1.2':
+ resolution: {integrity: sha512-YXLk1CUDdC9P5bjFZcGjz+cE/ZDceXObDTXn/GCID4r8LjThuexxi+dlJqukmUpkSItzQqgzfWnrPLxSFPejdA==}
+
+ '@astrojs/language-server@0.28.3':
+ resolution: {integrity: sha512-fPovAX/X46eE2w03jNRMpQ7W9m2mAvNt4Ay65lD9wl1Z5vIQYxlg7Enp9qP225muTr4jSVB5QiLumFJmZMAaVA==}
+ hasBin: true
+
+ '@astrojs/language-server@1.0.8':
+ resolution: {integrity: sha512-gssRxLGb8XnvKpqSzrDW5jdzdFnXD7eBXVkPCkkt2hv7Qzb+SAzv6hVgMok3jDCxpR1aeB+XNd9Qszj2h29iog==}
+ hasBin: true
+
+ '@astrojs/lit@1.3.0':
+ resolution: {integrity: sha512-mAh0WUNsdBChNRR6t+WznhG4+FzON745u0eH5lJKBOErcIIoHkCb248l9iR7Z4UvVEp24AYYpo4t9WkIb8vTEg==}
+ peerDependencies:
+ '@webcomponents/template-shadowroot': ^0.1.0
+ lit: ^2.1.3
+
+ '@astrojs/markdown-component@1.0.5':
+ resolution: {integrity: sha512-e7pzVfEZmjyZMmKGwLbfds36idAt9Yi8c0N0VQw2cVEgK8QdQecZLc07JvUSugoZxINtoVA0Afpm8EcIP52Ncw==}
+
+ '@astrojs/markdown-remark@1.2.0':
+ resolution: {integrity: sha512-Cb+uhSuukyfERknfJ8K4iJLeKJaiZWi1BTwPS4fzw0bc9kGKe5VeTRzd2E25+vaMnRTk0tN/y6QfYEMMN3Q97g==}
+
+ '@astrojs/markdown-remark@2.2.1':
+ resolution: {integrity: sha512-VF0HRv4GpC1XEMLnsKf6jth7JSmlt9qpqP0josQgA2eSpCIAC/Et+y94mgdBIZVBYH/yFnMoIxgKVe93xfO2GA==}
+ peerDependencies:
+ astro: ^2.5.0
+
+ '@astrojs/mdx@0.14.0':
+ resolution: {integrity: sha512-lmNh/7CeQmdZ0OCbnDnoDxQTKWleFdlT5YkjsutGIOhabY0xgCcWwb1Rbs/9m4vvTdCkp9zsZdRzUKEPFPbcsA==}
+ engines: {node: ^14.18.0 || >=16.12.0}
+
+ '@astrojs/micromark-extension-mdx-jsx@1.0.3':
+ resolution: {integrity: sha512-O15+i2DGG0qb1R/1SYbFXgOKDGbYdV8iJMtuboVb1S9YFQfMOJxaCMco0bhXQI7PmZcQ4pZWIjT5oZ64dXUtRA==}
+
+ '@astrojs/preact@0.2.0':
+ resolution: {integrity: sha512-AedeRz65mmW8qvS2TR20lS1TdRSXzKY9g3X8k1OlL585XE8ZI5WfucpzNMYMQxNuRvRDoh7imO8JoKt19O/mgg==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ peerDependencies:
+ preact: ^10.6.5
+
+ '@astrojs/preact@2.2.2':
+ resolution: {integrity: sha512-4B9h73z6qNtDokwvw9ztpcpxdowdqJnaXU0GNgjrdkBXlDl57IzqIpJ0JpNd5nP+LUGywyp/n6kJndDnOkWO6w==}
+ engines: {node: '>=16.12.0'}
+ peerDependencies:
+ preact: ^10.6.5
+
+ '@astrojs/prism@1.0.2':
+ resolution: {integrity: sha512-o3cUVoAuALDqdN5puNlsN2eO4Yi1kDh68YO8V7o6U4Ts+J/mMayzlJ7JsgYAmob0xrf/XnADVgu8khfMv/w3uA==}
+ engines: {node: ^14.18.0 || >=16.12.0}
+
+ '@astrojs/prism@2.1.2':
+ resolution: {integrity: sha512-3antim1gb34689GHRQFJ88JEo93HuZKQBnmxDT5W/nxiNz1p/iRxnCTEhIbJhqMOTRbbo5h2ldm5qSxx+TMFQA==}
+ engines: {node: '>=16.12.0'}
+
+ '@astrojs/react@0.2.1':
+ resolution: {integrity: sha512-SkEXXdGQ9+OV1kHUSD7PX9JxR/oe9hiiRmePdlP+B8ab5kItZTkSWNsziHjLwhj/zHWPCpGHU2GQEX5SYIHTzA==}
+ engines: {node: ^14.15.0 || >=16.0.0}
+ peerDependencies:
+ react: ^17.0.2 || ^18.0.0
+ react-dom: ^17.0.2 || ^18.0.0
+
+ '@astrojs/react@2.3.2':
+ resolution: {integrity: sha512-hGOnvLA7xA0rry0tr0g0LiO7bsYK9yyrs0k+OVakVkXsWgBVgqXI2a2KBVc/W+vOBB9mFXMG4EnrqdMPcttT5Q==}
+ engines: {node: '>=16.12.0'}
+ peerDependencies:
+ '@types/react': ^17.0.50 || ^18.0.21
+ '@types/react-dom': ^17.0.17 || ^18.0.6
+ react: ^17.0.2 || ^18.0.0
+ react-dom: ^17.0.2 || ^18.0.0
+
+ '@astrojs/solid-js@2.2.1':
+ resolution: {integrity: sha512-LJRKX1raHePOWE5lL7OjYvtap/S4fQoZLPB0pVw6RKUJtCeRIYD44x5DxFk52dFCkjnlVuWFlQkvtefT8kotcQ==}
+ engines: {node: '>=16.12.0'}
+ peerDependencies:
+ solid-js: ^1.4.3
+
+ '@astrojs/svelte@2.2.0':
+ resolution: {integrity: sha512-4kfh3GEIIOqH/wwTwLloRsZJ3z7rJ1eZWZ1oFrfEIjiQny5XqxyRJp/tUseKfaeDwKQGL+9t31ePTuwxx5oung==}
+ engines: {node: '>=16.12.0'}
+ peerDependencies:
+ astro: ^2.5.0
+ svelte: ^3.54.0
+
+ '@astrojs/telemetry@1.0.1':
+ resolution: {integrity: sha512-SJVfZHp00f8VZsT1fsx1+6acJGUNt/84xZytV5znPzzNE8RXjlE0rv03llgTsEeUHYZc6uJah91jNojS7RldFg==}
+ engines: {node: ^14.18.0 || >=16.12.0}
+
+ '@astrojs/telemetry@2.1.1':
+ resolution: {integrity: sha512-4pRhyeQr0MLB5PKYgkdu+YE8sSpMbHL8dUuslBWBIdgcYjtD1SufPMBI8pgXJ+xlwrQJHKKfK2X1KonHYuOS9A==}
+ engines: {node: '>=16.12.0'}
+
+ '@astrojs/vue@2.2.1':
+ resolution: {integrity: sha512-fq+RKFAKpIRcobF/803kMJWv/lobf9IIk6K5As5fWE/eYTpykkgHtxd+zDnf7d4I2V7K9XLKV06Oi6Q+oTJmDw==}
+ engines: {node: '>=16.12.0'}
+ peerDependencies:
+ astro: ^2.5.6
+ vue: ^3.2.30
+
+ '@astrojs/webapi@1.1.1':
+ resolution: {integrity: sha512-yeUvP27PoiBK/WCxyQzC4HLYZo4Hg6dzRd/dTsL50WGlAQVCwWcqzVJrIZKvzNDNaW/fIXutZTmdj6nec0PIGg==}
+
+ '@astrojs/webapi@2.2.0':
+ resolution: {integrity: sha512-mHAOApWyjqSe5AQMOUD9rsZJqbMQqe3Wosb1a40JV6Okvyxj1G6GTlthwYadWCymq/lbgwh0PLiY8Fr4eFxtuQ==}
+
+ '@astropub/codecs@0.4.4':
+ resolution: {integrity: sha512-jHmdZK2B7dfelTsVzkWVb93WPjuKkHz07xUcyg5WtUxTeCCxdDVLnvZlsB5PC2r7HmJLf03TP1QYb1ZgrEebyQ==}
+
+ '@babel/code-frame@7.24.7':
+ resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.25.4':
+ resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.25.2':
+ resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.25.6':
+ resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-annotate-as-pure@7.24.7':
+ resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.25.2':
+ resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-create-class-features-plugin@7.25.4':
+ resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-member-expression-to-functions@7.24.8':
+ resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.18.6':
+ resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.22.15':
+ resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.24.7':
+ resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.25.2':
+ resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-optimise-call-expression@7.24.7':
+ resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-plugin-utils@7.24.8':
+ resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-replace-supers@7.25.0':
+ resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-simple-access@7.24.7':
+ resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.24.7':
+ resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.24.8':
+ resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.24.7':
+ resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-option@7.24.8':
+ resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.25.6':
+ resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/highlight@7.24.7':
+ resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.25.6':
+ resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-syntax-jsx@7.24.7':
+ resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-typescript@7.25.4':
+ resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-react-jsx@7.25.2':
+ resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-typescript@7.25.2':
+ resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/runtime@7.25.6':
+ resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/template@7.25.0':
+ resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.25.6':
+ resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.25.6':
+ resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==}
+ engines: {node: '>=6.9.0'}
+
+ '@docsearch/css@3.6.1':
+ resolution: {integrity: sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==}
+
+ '@docsearch/react@3.6.1':
+ resolution: {integrity: sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==}
+ peerDependencies:
+ '@types/react': '>= 16.8.0 < 19.0.0'
+ react: '>= 16.8.0 < 19.0.0'
+ react-dom: '>= 16.8.0 < 19.0.0'
+ search-insights: '>= 1 < 3'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ search-insights:
+ optional: true
+
+ '@emmetio/abbreviation@2.3.3':
+ resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==}
+
+ '@emmetio/css-abbreviation@2.1.8':
+ resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==}
+
+ '@emmetio/scanner@1.0.4':
+ resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==}
+
+ '@esbuild/android-arm64@0.17.19':
+ resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm64@0.18.20':
+ resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.15.18':
+ resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-arm@0.17.19':
+ resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-arm@0.18.20':
+ resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.17.19':
+ resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/android-x64@0.18.20':
+ resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.17.19':
+ resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-arm64@0.18.20':
+ resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.17.19':
+ resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.18.20':
+ resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.17.19':
+ resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-arm64@0.18.20':
+ resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.17.19':
+ resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.18.20':
+ resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.17.19':
+ resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm64@0.18.20':
+ resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.17.19':
+ resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.18.20':
+ resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.17.19':
+ resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.18.20':
+ resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.14.54':
+ resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.15.18':
+ resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.17.19':
+ resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.18.20':
+ resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.17.19':
+ resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.18.20':
+ resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.17.19':
+ resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.18.20':
+ resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.17.19':
+ resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.18.20':
+ resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.17.19':
+ resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.18.20':
+ resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.17.19':
+ resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.18.20':
+ resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-x64@0.17.19':
+ resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.18.20':
+ resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-x64@0.17.19':
+ resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.18.20':
+ resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/sunos-x64@0.17.19':
+ resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/sunos-x64@0.18.20':
+ resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.17.19':
+ resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-arm64@0.18.20':
+ resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.17.19':
+ resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.18.20':
+ resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.17.19':
+ resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.18.20':
+ resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@eslint-community/eslint-utils@4.4.0':
+ resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
+ '@eslint-community/regexpp@4.11.0':
+ resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ '@eslint/eslintrc@2.1.4':
+ resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@eslint/js@8.57.0':
+ resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@fastify/busboy@2.1.1':
+ resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
+ engines: {node: '>=14'}
+
+ '@humanwhocodes/config-array@0.11.14':
+ resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
+ engines: {node: '>=10.10.0'}
+ deprecated: Use @eslint/config-array instead
+
+ '@humanwhocodes/module-importer@1.0.1':
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+
+ '@humanwhocodes/object-schema@2.0.3':
+ resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
+ deprecated: Use @eslint/object-schema instead
+
+ '@jimp/bmp@0.14.0':
+ resolution: {integrity: sha512-5RkX6tSS7K3K3xNEb2ygPuvyL9whjanhoaB/WmmXlJS6ub4DjTqrapu8j4qnIWmO4YYtFeTbDTXV6v9P1yMA5A==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/core@0.14.0':
+ resolution: {integrity: sha512-S62FcKdtLtj3yWsGfJRdFXSutjvHg7aQNiFogMbwq19RP4XJWqS2nOphu7ScB8KrSlyy5nPF2hkWNhLRLyD82w==}
+
+ '@jimp/custom@0.14.0':
+ resolution: {integrity: sha512-kQJMeH87+kWJdVw8F9GQhtsageqqxrvzg7yyOw3Tx/s7v5RToe8RnKyMM+kVtBJtNAG+Xyv/z01uYQ2jiZ3GwA==}
+
+ '@jimp/gif@0.14.0':
+ resolution: {integrity: sha512-DHjoOSfCaCz72+oGGEh8qH0zE6pUBaBxPxxmpYJjkNyDZP7RkbBkZJScIYeQ7BmJxmGN4/dZn+MxamoQlr+UYg==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/jpeg@0.14.0':
+ resolution: {integrity: sha512-561neGbr+87S/YVQYnZSTyjWTHBm9F6F1obYHiyU3wVmF+1CLbxY3FQzt4YolwyQHIBv36Bo0PY2KkkU8BEeeQ==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-blit@0.14.0':
+ resolution: {integrity: sha512-YoYOrnVHeX3InfgbJawAU601iTZMwEBZkyqcP1V/S33Qnz9uzH1Uj1NtC6fNgWzvX6I4XbCWwtr4RrGFb5CFrw==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-blur@0.14.0':
+ resolution: {integrity: sha512-9WhZcofLrT0hgI7t0chf7iBQZib//0gJh9WcQMUt5+Q1Bk04dWs8vTgLNj61GBqZXgHSPzE4OpCrrLDBG8zlhQ==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-circle@0.14.0':
+ resolution: {integrity: sha512-o5L+wf6QA44tvTum5HeLyLSc5eVfIUd5ZDVi5iRfO4o6GT/zux9AxuTSkKwnjhsG8bn1dDmywAOQGAx7BjrQVA==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-color@0.14.0':
+ resolution: {integrity: sha512-JJz512SAILYV0M5LzBb9sbOm/XEj2fGElMiHAxb7aLI6jx+n0agxtHpfpV/AePTLm1vzzDxx6AJxXbKv355hBQ==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-contain@0.14.0':
+ resolution: {integrity: sha512-RX2q233lGyaxiMY6kAgnm9ScmEkNSof0hdlaJAVDS1OgXphGAYAeSIAwzESZN4x3ORaWvkFefeVH9O9/698Evg==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+ '@jimp/plugin-blit': '>=0.3.5'
+ '@jimp/plugin-resize': '>=0.3.5'
+ '@jimp/plugin-scale': '>=0.3.5'
+
+ '@jimp/plugin-cover@0.14.0':
+ resolution: {integrity: sha512-0P/5XhzWES4uMdvbi3beUgfvhn4YuQ/ny8ijs5kkYIw6K8mHcl820HahuGpwWMx56DJLHRl1hFhJwo9CeTRJtQ==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+ '@jimp/plugin-crop': '>=0.3.5'
+ '@jimp/plugin-resize': '>=0.3.5'
+ '@jimp/plugin-scale': '>=0.3.5'
+
+ '@jimp/plugin-crop@0.14.0':
+ resolution: {integrity: sha512-Ojtih+XIe6/XSGtpWtbAXBozhCdsDMmy+THUJAGu2x7ZgKrMS0JotN+vN2YC3nwDpYkM+yOJImQeptSfZb2Sug==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-displace@0.14.0':
+ resolution: {integrity: sha512-c75uQUzMgrHa8vegkgUvgRL/PRvD7paFbFJvzW0Ugs8Wl+CDMGIPYQ3j7IVaQkIS+cAxv+NJ3TIRBQyBrfVEOg==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-dither@0.14.0':
+ resolution: {integrity: sha512-g8SJqFLyYexXQQsoh4dc1VP87TwyOgeTElBcxSXX2LaaMZezypmxQfLTzOFzZoK8m39NuaoH21Ou1Ftsq7LzVQ==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-fisheye@0.14.0':
+ resolution: {integrity: sha512-BFfUZ64EikCaABhCA6mR3bsltWhPpS321jpeIQfJyrILdpFsZ/OccNwCgpW1XlbldDHIoNtXTDGn3E+vCE7vDg==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-flip@0.14.0':
+ resolution: {integrity: sha512-WtL1hj6ryqHhApih+9qZQYA6Ye8a4HAmdTzLbYdTMrrrSUgIzFdiZsD0WeDHpgS/+QMsWwF+NFmTZmxNWqKfXw==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+ '@jimp/plugin-rotate': '>=0.3.5'
+
+ '@jimp/plugin-gaussian@0.14.0':
+ resolution: {integrity: sha512-uaLwQ0XAQoydDlF9tlfc7iD9drYPriFe+jgYnWm8fbw5cN+eOIcnneEX9XCOOzwgLPkNCxGox6Kxjn8zY6GxtQ==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-invert@0.14.0':
+ resolution: {integrity: sha512-UaQW9X9vx8orQXYSjT5VcITkJPwDaHwrBbxxPoDG+F/Zgv4oV9fP+udDD6qmkgI9taU+44Fy+zm/J/gGcMWrdg==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-mask@0.14.0':
+ resolution: {integrity: sha512-tdiGM69OBaKtSPfYSQeflzFhEpoRZ+BvKfDEoivyTjauynbjpRiwB1CaiS8En1INTDwzLXTT0Be9SpI3LkJoEA==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-normalize@0.14.0':
+ resolution: {integrity: sha512-AfY8sqlsbbdVwFGcyIPy5JH/7fnBzlmuweb+Qtx2vn29okq6+HelLjw2b+VT2btgGUmWWHGEHd86oRGSoWGyEQ==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-print@0.14.0':
+ resolution: {integrity: sha512-MwP3sH+VS5AhhSTXk7pui+tEJFsxnTKFY3TraFJb8WFbA2Vo2qsRCZseEGwpTLhENB7p/JSsLvWoSSbpmxhFAQ==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+ '@jimp/plugin-blit': '>=0.3.5'
+
+ '@jimp/plugin-resize@0.14.0':
+ resolution: {integrity: sha512-qFeMOyXE/Bk6QXN0GQo89+CB2dQcXqoxUcDb2Ah8wdYlKqpi53skABkgVy5pW3EpiprDnzNDboMltdvDslNgLQ==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/plugin-rotate@0.14.0':
+ resolution: {integrity: sha512-aGaicts44bvpTcq5Dtf93/8TZFu5pMo/61lWWnYmwJJU1RqtQlxbCLEQpMyRhKDNSfPbuP8nyGmaqXlM/82J0Q==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+ '@jimp/plugin-blit': '>=0.3.5'
+ '@jimp/plugin-crop': '>=0.3.5'
+ '@jimp/plugin-resize': '>=0.3.5'
+
+ '@jimp/plugin-scale@0.14.0':
+ resolution: {integrity: sha512-ZcJk0hxY5ZKZDDwflqQNHEGRblgaR+piePZm7dPwPUOSeYEH31P0AwZ1ziceR74zd8N80M0TMft+e3Td6KGBHw==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+ '@jimp/plugin-resize': '>=0.3.5'
+
+ '@jimp/plugin-shadow@0.14.0':
+ resolution: {integrity: sha512-p2igcEr/iGrLiTu0YePNHyby0WYAXM14c5cECZIVnq/UTOOIQ7xIcWZJ1lRbAEPxVVXPN1UibhZAbr3HAb5BjQ==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+ '@jimp/plugin-blur': '>=0.3.5'
+ '@jimp/plugin-resize': '>=0.3.5'
+
+ '@jimp/plugin-threshold@0.14.0':
+ resolution: {integrity: sha512-N4BlDgm/FoOMV/DQM2rSpzsgqAzkP0DXkWZoqaQrlRxQBo4zizQLzhEL00T/YCCMKnddzgEhnByaocgaaa0fKw==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+ '@jimp/plugin-color': '>=0.8.0'
+ '@jimp/plugin-resize': '>=0.8.0'
+
+ '@jimp/plugins@0.14.0':
+ resolution: {integrity: sha512-vDO3XT/YQlFlFLq5TqNjQkISqjBHT8VMhpWhAfJVwuXIpilxz5Glu4IDLK6jp4IjPR6Yg2WO8TmRY/HI8vLrOw==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/png@0.14.0':
+ resolution: {integrity: sha512-0RV/mEIDOrPCcNfXSPmPBqqSZYwGADNRVUTyMt47RuZh7sugbYdv/uvKmQSiqRdR0L1sfbCBMWUEa5G/8MSbdA==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/tiff@0.14.0':
+ resolution: {integrity: sha512-zBYDTlutc7j88G/7FBCn3kmQwWr0rmm1e0FKB4C3uJ5oYfT8645lftUsvosKVUEfkdmOaMAnhrf4ekaHcb5gQw==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/types@0.14.0':
+ resolution: {integrity: sha512-hx3cXAW1KZm+b+XCrY3LXtdWy2U+hNtq0rPyJ7NuXCjU7lZR3vIkpz1DLJ3yDdS70hTi5QDXY3Cd9kd6DtloHQ==}
+ peerDependencies:
+ '@jimp/custom': '>=0.3.5'
+
+ '@jimp/utils@0.14.0':
+ resolution: {integrity: sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==}
+
+ '@jridgewell/gen-mapping@0.3.5':
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/set-array@1.2.1':
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+
+ '@lit-labs/ssr-client@1.1.7':
+ resolution: {integrity: sha512-VvqhY/iif3FHrlhkzEPsuX/7h/NqnfxLwVf0p8ghNIlKegRyRqgeaJevZ57s/u/LiFyKgqksRP5n+LmNvpxN+A==}
+
+ '@lit-labs/ssr-dom-shim@1.2.1':
+ resolution: {integrity: sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==}
+
+ '@lit-labs/ssr@2.3.0':
+ resolution: {integrity: sha512-uPaJoNf5w3t8DOVDpuI4WR6wo552mZwiiE9n9TpIvinh75lDgvl1ki07wvfrFI6VEbDVPRj4jHiCduBr1dVJ7A==}
+ engines: {node: '>=13.9.0'}
+
+ '@lit/reactive-element@1.6.3':
+ resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==}
+
+ '@lit/reactive-element@2.0.4':
+ resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==}
+
+ '@ljharb/has-package-exports-patterns@0.0.2':
+ resolution: {integrity: sha512-4/RWEeXDO6bocPONheFe6gX/oQdP/bEpv0oL4HqjPP5DCenBSt0mHgahppY49N0CpsaqffdwPq+TlX9CYOq2Dw==}
+
+ '@mdx-js/mdx@2.3.0':
+ resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==}
+
+ '@mdx-js/rollup@2.3.0':
+ resolution: {integrity: sha512-wLvRfJS/M4UmdqTd+WoaySEE7q4BIejYf1xAHXYvtT1du/1Tl/z2450Gg2+Hu7fh05KwRRiehiTP9Yc/Dtn0fA==}
+ peerDependencies:
+ rollup: '>=2'
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@parse5/tools@0.1.0':
+ resolution: {integrity: sha512-VB9+4BsFoS+4HdB/Ph9jD4FHQt7GyiWESVNfBSh8Eu54LujWyy+NySGLjg8GZFWSZcESG72F67LjgmKZDZCvPg==}
+
+ '@pkgr/core@0.1.1':
+ resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+
+ '@pkgr/utils@2.4.2':
+ resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+
+ '@polka/url@1.0.0-next.25':
+ resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
+
+ '@preact/signals-core@1.8.0':
+ resolution: {integrity: sha512-OBvUsRZqNmjzCZXWLxkZfhcgT+Fk8DDcT/8vD6a1xhDemodyy87UJRJfASMuSD8FaAIeGgGm85ydXhm7lr4fyA==}
+
+ '@preact/signals@1.3.0':
+ resolution: {integrity: sha512-EOMeg42SlLS72dhoq6Vjq08havnLseWmPQ8A0YsgIAqMgWgx7V1a39+Pxo6i7SY5NwJtH4849JogFq3M67AzWg==}
+ peerDependencies:
+ preact: 10.x
+
+ '@proload/core@0.3.3':
+ resolution: {integrity: sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ==}
+
+ '@proload/plugin-tsm@0.2.1':
+ resolution: {integrity: sha512-Ex1sL2BxU+g8MHdAdq9SZKz+pU34o8Zcl9PHWo2WaG9hrnlZme607PU6gnpoAYsDBpHX327+eu60wWUk+d/b+A==}
+ peerDependencies:
+ '@proload/core': ^0.3.2
+
+ '@rollup/pluginutils@4.2.1':
+ resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
+ engines: {node: '>= 8.0.0'}
+
+ '@rollup/pluginutils@5.1.0':
+ resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@sveltejs/vite-plugin-svelte-inspector@1.0.4':
+ resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==}
+ engines: {node: ^14.18.0 || >= 16}
+ peerDependencies:
+ '@sveltejs/vite-plugin-svelte': ^2.2.0
+ svelte: ^3.54.0 || ^4.0.0
+ vite: ^4.0.0
+
+ '@sveltejs/vite-plugin-svelte@2.5.3':
+ resolution: {integrity: sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w==}
+ engines: {node: ^14.18.0 || >= 16}
+ peerDependencies:
+ svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0
+ vite: ^4.0.0
+
+ '@tokenizer/token@0.3.0':
+ resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
+
+ '@types/acorn@4.0.6':
+ resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==}
+
+ '@types/babel__core@7.20.5':
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+
+ '@types/babel__generator@7.6.8':
+ resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
+
+ '@types/babel__template@7.4.4':
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+
+ '@types/babel__traverse@7.20.6':
+ resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
+
+ '@types/chai-subset@1.3.5':
+ resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==}
+
+ '@types/chai@4.3.19':
+ resolution: {integrity: sha512-2hHHvQBVE2FiSK4eN0Br6snX9MtolHaTo/batnLjlGRhoQzlCL61iVpxoqO7SfFyOw+P/pwv+0zNHzKoGWz9Cw==}
+
+ '@types/debug@4.1.12':
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+
+ '@types/dom-view-transitions@1.0.5':
+ resolution: {integrity: sha512-N2sILR7fxSMnaFaAPwGj4DtHCXjIyQTHt+xJyf9jATpzUsTkMNM0DWtqZB6W7f501B/Y0tq3uqat/VlbjuTpMA==}
+
+ '@types/estree-jsx@0.0.1':
+ resolution: {integrity: sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==}
+
+ '@types/estree-jsx@1.0.5':
+ resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
+
+ '@types/estree@1.0.5':
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+
+ '@types/hast@2.3.10':
+ resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==}
+
+ '@types/html-escaper@3.0.2':
+ resolution: {integrity: sha512-A8vk09eyYzk8J/lFO4OUMKCmRN0rRzfZf4n3Olwapgox/PtTiU8zPYlL1UEkJ/WeHvV6v9Xnj3o/705PKz9r4Q==}
+
+ '@types/json5@0.0.30':
+ resolution: {integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==}
+
+ '@types/mdast@3.0.15':
+ resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==}
+
+ '@types/mdx@2.0.13':
+ resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==}
+
+ '@types/ms@0.7.34':
+ resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+
+ '@types/nlcst@1.0.4':
+ resolution: {integrity: sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==}
+
+ '@types/node@16.18.106':
+ resolution: {integrity: sha512-YTgQUcpdXRc7iiEMutkkXl9WUx5lGUCVYvnfRg9CV+IA4l9epctEhCTbaw4KgzXaKYv8emvFJkEM65+MkNUhsQ==}
+
+ '@types/node@16.9.1':
+ resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==}
+
+ '@types/normalize-package-data@2.4.4':
+ resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
+
+ '@types/parse5@6.0.3':
+ resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==}
+
+ '@types/prop-types@15.7.12':
+ resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
+
+ '@types/react-dom@18.3.0':
+ resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
+
+ '@types/react@18.3.5':
+ resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==}
+
+ '@types/resolve@1.20.6':
+ resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==}
+
+ '@types/trusted-types@2.0.7':
+ resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+
+ '@types/unist@2.0.11':
+ resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
+
+ '@types/unist@3.0.3':
+ resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+
+ '@types/yargs-parser@21.0.3':
+ resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
+
+ '@ungap/structured-clone@1.2.0':
+ resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+
+ '@vitejs/plugin-vue-jsx@3.1.0':
+ resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^4.0.0 || ^5.0.0
+ vue: ^3.0.0
+
+ '@vitejs/plugin-vue@4.6.2':
+ resolution: {integrity: sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^4.0.0 || ^5.0.0
+ vue: ^3.2.25
+
+ '@vscode/emmet-helper@2.9.3':
+ resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==}
+
+ '@vscode/l10n@0.0.18':
+ resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==}
+
+ '@vue/babel-helper-vue-transform-on@1.2.2':
+ resolution: {integrity: sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==}
+
+ '@vue/babel-plugin-jsx@1.2.2':
+ resolution: {integrity: sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+
+ '@vue/babel-plugin-resolve-type@1.2.2':
+ resolution: {integrity: sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@vue/compiler-core@3.5.0':
+ resolution: {integrity: sha512-ja7cpqAOfw4tyFAxgBz70Z42miNDeaqTxExTsnXDLomRpqfyCgyvZvFp482fmsElpfvsoMJUsvzULhvxUTW6Iw==}
+
+ '@vue/compiler-dom@3.5.0':
+ resolution: {integrity: sha512-xYjUybWZXl+1R/toDy815i4PbeehL2hThiSGkcpmIOCy2HoYyeeC/gAWK/Y/xsoK+GSw198/T5O31bYuQx5uvQ==}
+
+ '@vue/compiler-sfc@3.5.0':
+ resolution: {integrity: sha512-B9DgLtrqok2GLuaFjLlSL15ZG3ZDBiitUH1ecex9guh/ZcA5MCdwuVE6nsfQxktuZY/QY0awJ35/ripIviCQTQ==}
+
+ '@vue/compiler-ssr@3.5.0':
+ resolution: {integrity: sha512-E263QZmA1dqRd7c3u/sWTLRMpQOT0aZ8av/L9SoD/v/BVMZaWFHPUUBswS+bzrfvG2suJF8vSLKx6k6ba5SUdA==}
+
+ '@vue/reactivity@3.5.0':
+ resolution: {integrity: sha512-Ew3F5riP3B3ZDGjD3ZKb9uZylTTPSqt8hAf4sGbvbjrjDjrFb3Jm15Tk1/w7WwTE5GbQ2Qhwxx1moc9hr8A/OQ==}
+
+ '@vue/runtime-core@3.5.0':
+ resolution: {integrity: sha512-mQyW0F9FaNRdt8ghkAs+BMG3iQ7LGgWKOpkzUzR5AI5swPNydHGL5hvVTqFaeMzwecF1g0c86H4yFQsSxJhH1w==}
+
+ '@vue/runtime-dom@3.5.0':
+ resolution: {integrity: sha512-NQQXjpdXgyYVJ2M56FJ+lSJgZiecgQ2HhxhnQBN95FymXegRNY/N2htI7vOTwpP75pfxhIeYOJ8mE8sW8KAW6A==}
+
+ '@vue/server-renderer@3.5.0':
+ resolution: {integrity: sha512-HyDIFUg+l7L4PKrEnJlCYWHUOlm6NxZhmSxIefZ5MTYjkIPfDfkwhX7hqxAQHfgIAE1uLMLQZwuNR/ozI0NhZg==}
+ peerDependencies:
+ vue: 3.5.0
+
+ '@vue/shared@3.5.0':
+ resolution: {integrity: sha512-m9IgiteBpCkFaMNwCOBkFksA7z8QiKc30ooRuoXWUFRDu0mGyNPlFHmbncF0/Kra1RlX8QrmBbRaIxVvikaR0Q==}
+
+ '@webcomponents/template-shadowroot@0.1.0':
+ resolution: {integrity: sha512-ry84Vft6xtRBbd4M/ptRodbOLodV5AD15TYhyRghCRgIcJJKmYmJ2v2BaaWxygENwh6Uq3zTfGPmlckKT/GXsQ==}
+
+ acorn-jsx@5.3.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn@8.12.1:
+ resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+
+ algoliasearch@4.24.0:
+ resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==}
+
+ ansi-align@3.0.1:
+ resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@6.0.1:
+ resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+ engines: {node: '>=12'}
+
+ ansi-sequence-parser@1.1.1:
+ resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==}
+
+ ansi-styles@3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ ansi-styles@6.2.1:
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ engines: {node: '>=12'}
+
+ any-base@1.1.0:
+ resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ argparse@1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ array-iterate@2.0.1:
+ resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
+
+ assertion-error@1.1.0:
+ resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
+
+ ast-types@0.14.2:
+ resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==}
+ engines: {node: '>=4'}
+
+ astring@1.9.0:
+ resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==}
+ hasBin: true
+
+ astro-spa@1.3.9:
+ resolution: {integrity: sha512-VmXMUsKNHA1gjJYq/SO5EqRAmqifOhBOpOAaXnlH5skgTy0tq9fwANJhh1LJpaahPBGqXAaoIw6Gdq/SBRz9Ww==}
+
+ astro@1.9.2:
+ resolution: {integrity: sha512-L+Ma0eR0Aa6QZg7RF0lEs+106Ye1/zukvtq3KtsYIogAojltlwllwU9X5CwMBzFwA55NxpNp4gSRh5US/xb+8Q==}
+ engines: {node: ^14.18.0 || >=16.12.0, npm: '>=6.14.0'}
+ hasBin: true
+
+ astro@2.10.15:
+ resolution: {integrity: sha512-7jgkCZexxOX541g2kKHGOcDDUVKYc+sGi87GtLOkbWwTsKqEIp9GU0o7DpKe1rhItm9VVEiHz4uxvMh3wGmJdA==}
+ engines: {node: '>=16.12.0', npm: '>=6.14.0'}
+ hasBin: true
+ peerDependencies:
+ sharp: '>=0.31.0'
+ peerDependenciesMeta:
+ sharp:
+ optional: true
+
+ babel-plugin-jsx-dom-expressions@0.38.5:
+ resolution: {integrity: sha512-JfjHYKOKGwoiOYQ56Oo8gbZPb9wNMpPuEEUhSCjMpnuHM9K21HFIUBm83TZPB40Av4caCIW4Tfjzpkp/MtFpMw==}
+ peerDependencies:
+ '@babel/core': ^7.20.12
+
+ babel-plugin-module-resolver@5.0.2:
+ resolution: {integrity: sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg==}
+
+ babel-preset-solid@1.8.22:
+ resolution: {integrity: sha512-nKwisb//lZsiRF2NErlRP64zVTJqa1OSZiDnSl0YbcTiCZoMt52CY2Pg+9fsYAPtjYMT7RHBmzU41pxK6hFOcg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ bail@2.0.2:
+ resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ big-integer@1.6.52:
+ resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==}
+ engines: {node: '>=0.6'}
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ bl@4.1.0:
+ resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+
+ bl@5.1.0:
+ resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==}
+
+ bmp-js@0.1.0:
+ resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==}
+
+ boolean@3.2.0:
+ resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==}
+
+ boxen@6.2.1:
+ resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ bplist-parser@0.2.0:
+ resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==}
+ engines: {node: '>= 5.10.0'}
+
+ brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+
+ brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browserslist@4.23.3:
+ resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ buffer-equal@0.0.1:
+ resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==}
+ engines: {node: '>=0.4.0'}
+
+ buffer@5.7.1:
+ resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+
+ buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+
+ builtin-modules@3.3.0:
+ resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
+ engines: {node: '>=6'}
+
+ bundle-name@3.0.0:
+ resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==}
+ engines: {node: '>=12'}
+
+ callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ camelcase@6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+
+ caniuse-lite@1.0.30001655:
+ resolution: {integrity: sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==}
+
+ ccount@2.0.1:
+ resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+
+ centra@2.7.0:
+ resolution: {integrity: sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==}
+
+ chai@4.5.0:
+ resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
+ engines: {node: '>=4'}
+
+ chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ chalk@5.3.0:
+ resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+
+ character-entities-html4@2.1.0:
+ resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+
+ character-entities-legacy@3.0.0:
+ resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+
+ 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==}
+
+ check-error@1.0.3:
+ resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
+
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+
+ chownr@1.1.4:
+ resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
+
+ ci-info@3.9.0:
+ resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
+ engines: {node: '>=8'}
+
+ clean-regexp@1.0.0:
+ resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==}
+ engines: {node: '>=4'}
+
+ cli-boxes@3.0.0:
+ resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
+ engines: {node: '>=10'}
+
+ cli-cursor@4.0.0:
+ resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ cli-spinners@2.9.2:
+ resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+ engines: {node: '>=6'}
+
+ clone@1.0.4:
+ resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
+
+ color-convert@1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ color-string@1.9.1:
+ resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+
+ color@4.2.3:
+ resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
+ engines: {node: '>=12.5.0'}
+
+ comma-separated-tokens@2.0.3:
+ resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+
+ common-ancestor-path@1.0.1:
+ resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==}
+
+ commondir@1.0.1:
+ resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ confbox@0.1.7:
+ resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ cookie@0.5.0:
+ resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
+ engines: {node: '>= 0.6'}
+
+ cross-spawn@7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
+
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
+ data-uri-to-buffer@4.0.1:
+ resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
+ engines: {node: '>= 12'}
+
+ debug@4.3.6:
+ resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decode-named-character-reference@1.0.2:
+ resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
+
+ decompress-response@6.0.0:
+ resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
+ engines: {node: '>=10'}
+
+ dedent-js@1.0.1:
+ resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==}
+
+ deep-eql@4.1.4:
+ resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
+ engines: {node: '>=6'}
+
+ deep-extend@0.6.0:
+ resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
+ engines: {node: '>=4.0.0'}
+
+ deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
+ deepmerge-ts@4.3.0:
+ resolution: {integrity: sha512-if3ZYdkD2dClhnXR5reKtG98cwyaRT1NeugQoAPTTfsOpV9kqyeiBF9Qa5RHjemb3KzD5ulqygv6ED3t5j9eJw==}
+ engines: {node: '>=12.4.0'}
+
+ deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
+ default-browser-id@3.0.0:
+ resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==}
+ engines: {node: '>=12'}
+
+ default-browser@4.0.0:
+ resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==}
+ engines: {node: '>=14.16'}
+
+ defaults@1.0.4:
+ resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
+
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ define-lazy-prop@3.0.0:
+ resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
+ engines: {node: '>=12'}
+
+ define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
+ detect-libc@1.0.3:
+ resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+
+ detect-libc@2.0.3:
+ resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
+ engines: {node: '>=8'}
+
+ detect-node@2.1.0:
+ resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
+
+ devalue@4.3.3:
+ resolution: {integrity: sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg==}
+
+ diff@5.2.0:
+ resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
+ engines: {node: '>=0.3.1'}
+
+ dlv@1.1.3:
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+
+ doctrine@3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+
+ dom-walk@0.1.2:
+ resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==}
+
+ dset@3.1.3:
+ resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==}
+ engines: {node: '>=4'}
+
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ electron-to-chromium@1.5.13:
+ resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==}
+
+ emmet@2.4.7:
+ resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ end-of-stream@1.4.4:
+ resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+
+ enhanced-resolve@5.17.1:
+ resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
+ engines: {node: '>=10.13.0'}
+
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ error-ex@1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+
+ es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-module-lexer@0.10.5:
+ resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==}
+
+ es-module-lexer@1.5.4:
+ resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
+
+ es6-error@4.1.1:
+ resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==}
+
+ esbuild-android-64@0.14.54:
+ resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ esbuild-android-64@0.15.18:
+ resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ esbuild-android-arm64@0.14.54:
+ resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ esbuild-android-arm64@0.15.18:
+ resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ esbuild-darwin-64@0.14.54:
+ resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ esbuild-darwin-64@0.15.18:
+ resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ esbuild-darwin-arm64@0.14.54:
+ resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ esbuild-darwin-arm64@0.15.18:
+ resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ esbuild-freebsd-64@0.14.54:
+ resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ esbuild-freebsd-64@0.15.18:
+ resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ esbuild-freebsd-arm64@0.14.54:
+ resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ esbuild-freebsd-arm64@0.15.18:
+ resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ esbuild-linux-32@0.14.54:
+ resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ esbuild-linux-32@0.15.18:
+ resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ esbuild-linux-64@0.14.54:
+ resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ esbuild-linux-64@0.15.18:
+ resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ esbuild-linux-arm64@0.14.54:
+ resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ esbuild-linux-arm64@0.15.18:
+ resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ esbuild-linux-arm@0.14.54:
+ resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ esbuild-linux-arm@0.15.18:
+ resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ esbuild-linux-mips64le@0.14.54:
+ resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ esbuild-linux-mips64le@0.15.18:
+ resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ esbuild-linux-ppc64le@0.14.54:
+ resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ esbuild-linux-ppc64le@0.15.18:
+ resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ esbuild-linux-riscv64@0.14.54:
+ resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ esbuild-linux-riscv64@0.15.18:
+ resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ esbuild-linux-s390x@0.14.54:
+ resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ esbuild-linux-s390x@0.15.18:
+ resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ esbuild-netbsd-64@0.14.54:
+ resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ esbuild-netbsd-64@0.15.18:
+ resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ esbuild-openbsd-64@0.14.54:
+ resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ esbuild-openbsd-64@0.15.18:
+ resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ esbuild-sunos-64@0.14.54:
+ resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ esbuild-sunos-64@0.15.18:
+ resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ esbuild-windows-32@0.14.54:
+ resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ esbuild-windows-32@0.15.18:
+ resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ esbuild-windows-64@0.14.54:
+ resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ esbuild-windows-64@0.15.18:
+ resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ esbuild-windows-arm64@0.14.54:
+ resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ esbuild-windows-arm64@0.15.18:
+ resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ esbuild@0.14.54:
+ resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ esbuild@0.15.18:
+ resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ esbuild@0.17.19:
+ resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ esbuild@0.18.20:
+ resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+
+ escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
+ escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+
+ eslint-plugin-unicorn@42.0.0:
+ resolution: {integrity: sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ eslint: '>=8.8.0'
+
+ eslint-scope@7.2.2:
+ resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint-utils@3.0.0:
+ resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
+ engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
+ peerDependencies:
+ eslint: '>=5'
+
+ eslint-visitor-keys@2.1.0:
+ resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
+ engines: {node: '>=10'}
+
+ eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint@8.57.0:
+ resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ hasBin: true
+
+ espree@9.6.1:
+ resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ esprima@4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ esquery@1.6.0:
+ resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
+ engines: {node: '>=0.10'}
+
+ esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ estree-util-attach-comments@2.1.1:
+ resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==}
+
+ estree-util-build-jsx@2.2.2:
+ resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==}
+
+ estree-util-is-identifier-name@2.1.0:
+ resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==}
+
+ estree-util-to-js@1.2.0:
+ resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==}
+
+ estree-util-visit@1.2.1:
+ resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==}
+
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ estree-walker@3.0.0:
+ resolution: {integrity: sha512-s6ceX0NFiU/vKPiKvFdR83U1Zffu7upwZsGwpoqfg5rbbq1l50WQ5hCeIvM6E6oD4shUHCYMsiFPns4Jk0YfMQ==}
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
+ execa@5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+
+ execa@6.1.0:
+ resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ execa@7.2.0:
+ resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==}
+ engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
+
+ exif-parser@0.1.12:
+ resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==}
+
+ expand-template@2.0.3:
+ resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
+ engines: {node: '>=6'}
+
+ extend-shallow@2.0.1:
+ resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
+ engines: {node: '>=0.10.0'}
+
+ extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
+ engines: {node: '>=8.6.0'}
+
+ fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
+ fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+
+ fault@2.0.1:
+ resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==}
+
+ fetch-blob@3.2.0:
+ resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
+ engines: {node: ^12.20 || >= 14.13}
+
+ file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ file-type@17.1.1:
+ resolution: {integrity: sha512-heRUMZHby2Qj6wZAA3YHeMlRmZNQTcb6VxctkGmM+mcM6ROQKvHpr7SS6EgdfEhH+s25LDshBjvPx/Ecm+bOVQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ file-type@9.0.0:
+ resolution: {integrity: sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==}
+ engines: {node: '>=6'}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ find-babel-config@2.1.2:
+ resolution: {integrity: sha512-ZfZp1rQyp4gyuxqt1ZqjFGVeVBvmpURMqdIWXbPRfB97Bf6BzdK/xSIbylEINzQ0kB5tlDQfn9HkNXXWsqTqLg==}
+
+ find-cache-dir@3.3.2:
+ resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
+ engines: {node: '>=8'}
+
+ find-up@3.0.0:
+ resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==}
+ engines: {node: '>=6'}
+
+ find-up@4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+
+ find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+
+ find-up@6.3.0:
+ resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ find-yarn-workspace-root2@1.2.16:
+ resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==}
+
+ flat-cache@3.2.0:
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ flatted@3.3.1:
+ resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
+
+ follow-redirects@1.15.6:
+ resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
+ format@0.2.2:
+ resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
+ engines: {node: '>=0.4.x'}
+
+ formdata-polyfill@4.0.10:
+ resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
+ engines: {node: '>=12.20.0'}
+
+ fs-constants@1.0.0:
+ resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-func-name@2.0.2:
+ resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
+
+ get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
+
+ get-stream@6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+
+ gifwrap@0.9.4:
+ resolution: {integrity: sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==}
+
+ github-from-package@0.0.0:
+ resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
+
+ github-slugger@1.5.0:
+ resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==}
+
+ github-slugger@2.0.0:
+ resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ glob@9.3.5:
+ resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ global-agent@3.0.0:
+ resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==}
+ engines: {node: '>=10.0'}
+
+ global@4.4.0:
+ resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==}
+
+ globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+
+ globals@13.24.0:
+ resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
+ engines: {node: '>=8'}
+
+ globalthis@1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
+ engines: {node: '>= 0.4'}
+
+ gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ graphemer@1.4.0:
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+
+ gray-matter@4.0.3:
+ resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
+ engines: {node: '>=6.0'}
+
+ has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-package-exports@1.3.0:
+ resolution: {integrity: sha512-e9OeXPQnmPhYoJ63lXC4wWe34TxEGZDZ3OQX9XRqp2VwsfLl3bQBy7VehLnd34g3ef8CmYlBLGqEMKXuz8YazQ==}
+
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
+ has-proto@1.0.3:
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ engines: {node: '>= 0.4'}
+
+ has-symbols@1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ hast-util-from-parse5@7.1.2:
+ resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==}
+
+ hast-util-parse-selector@3.1.1:
+ resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==}
+
+ hast-util-raw@7.2.3:
+ resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==}
+
+ hast-util-to-estree@2.3.3:
+ resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==}
+
+ hast-util-to-html@8.0.4:
+ resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==}
+
+ hast-util-to-parse5@7.1.0:
+ resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==}
+
+ hast-util-whitespace@2.0.1:
+ resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==}
+
+ hastscript@7.2.0:
+ resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==}
+
+ hosted-git-info@2.8.9:
+ resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
+
+ html-entities@2.3.3:
+ resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
+
+ html-entities@2.5.2:
+ resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==}
+
+ html-escaper@3.0.3:
+ resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==}
+
+ html-tags@3.3.1:
+ resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
+ engines: {node: '>=8'}
+
+ html-void-elements@2.0.1:
+ resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
+
+ http-cache-semantics@4.1.1:
+ resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
+
+ human-signals@2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+
+ human-signals@3.0.1:
+ resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==}
+ engines: {node: '>=12.20.0'}
+
+ human-signals@4.3.1:
+ resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
+ engines: {node: '>=14.18.0'}
+
+ ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
+ ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ image-q@4.0.0:
+ resolution: {integrity: sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==}
+
+ imagetools-core@3.0.2:
+ resolution: {integrity: sha512-DlArpNiefCc1syIqvOONcE8L8IahN8GjwaEjm6wIJIvuKoFoI1RcKmWWfS2dYxSlTiSp2X5b3JnHDjUXmWqlVA==}
+ engines: {node: '>=12.0.0'}
+
+ import-fresh@3.3.0:
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+ engines: {node: '>=6'}
+
+ import-meta-resolve@2.2.2:
+ resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==}
+
+ imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
+ indent-string@4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+
+ inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ ini@1.3.8:
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+
+ inline-style-parser@0.1.1:
+ resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==}
+
+ is-alphabetical@2.0.1:
+ resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
+
+ is-alphanumerical@2.0.1:
+ resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+
+ is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+
+ is-arrayish@0.3.2:
+ resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-buffer@2.0.5:
+ resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
+ engines: {node: '>=4'}
+
+ is-builtin-module@3.2.1:
+ resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==}
+ engines: {node: '>=6'}
+
+ is-core-module@2.15.1:
+ resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
+ engines: {node: '>= 0.4'}
+
+ is-decimal@2.0.1:
+ resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+
+ is-docker@2.2.1:
+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
+ engines: {node: '>=8'}
+ hasBin: 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}
+ hasBin: true
+
+ is-extendable@0.1.1:
+ resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
+ engines: {node: '>=0.10.0'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-function@1.0.2:
+ resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-hexadecimal@2.0.1:
+ resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+
+ is-inside-container@1.0.0:
+ resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
+ engines: {node: '>=14.16'}
+ hasBin: true
+
+ is-interactive@2.0.0:
+ resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==}
+ engines: {node: '>=12'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-path-inside@3.0.3:
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
+
+ is-plain-obj@4.1.0:
+ resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
+
+ is-reference@3.0.2:
+ resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
+
+ is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+
+ is-stream@3.0.0:
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ is-unicode-supported@1.3.0:
+ resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
+ engines: {node: '>=12'}
+
+ is-wsl@2.2.0:
+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
+ engines: {node: '>=8'}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ jimp@0.14.0:
+ resolution: {integrity: sha512-8BXU+J8+SPmwwyq9ELihpSV4dWPTiOKBWCEgtkbnxxAVMjXdf3yGmyaLSshBfXc8sP/JQ9OZj5R8nZzz2wPXgA==}
+
+ jpeg-js@0.4.4:
+ resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-yaml@3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+
+ js-yaml@4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+
+ jsesc@2.5.2:
+ resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+
+ json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
+ json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+
+ json-stringify-safe@5.0.1:
+ resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ jsonc-parser@2.3.1:
+ resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==}
+
+ jsonc-parser@3.3.1:
+ resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
+
+ keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+
+ kind-of@6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+
+ kleur@3.0.3:
+ resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
+ engines: {node: '>=6'}
+
+ kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
+
+ levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+
+ lilconfig@2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
+ engines: {node: '>=10'}
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ lit-element@3.3.3:
+ resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==}
+
+ lit-element@4.1.0:
+ resolution: {integrity: sha512-gSejRUQJuMQjV2Z59KAS/D4iElUhwKpIyJvZ9w+DIagIQjfJnhR20h2Q5ddpzXGS+fF0tMZ/xEYGMnKmaI/iww==}
+
+ lit-html@2.8.0:
+ resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==}
+
+ lit-html@3.2.0:
+ resolution: {integrity: sha512-pwT/HwoxqI9FggTrYVarkBKFN9MlTUpLrDHubTmW4SrkL3kkqW5gxwbxMMUnbbRHBC0WTZnYHcjDSCM559VyfA==}
+
+ lit@2.8.0:
+ resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==}
+
+ lit@3.2.0:
+ resolution: {integrity: sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw==}
+
+ load-bmfont@1.4.2:
+ resolution: {integrity: sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==}
+
+ load-yaml-file@0.2.0:
+ resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==}
+ engines: {node: '>=6'}
+
+ local-pkg@0.4.3:
+ resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==}
+ engines: {node: '>=14'}
+
+ locate-path@3.0.0:
+ resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
+ engines: {node: '>=6'}
+
+ locate-path@5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+
+ locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+
+ locate-path@7.2.0:
+ resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ log-symbols@5.1.0:
+ resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==}
+ engines: {node: '>=12'}
+
+ longest-streak@3.1.0:
+ resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ loupe@2.3.7:
+ resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
+
+ lower-case@2.0.2:
+ resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
+
+ lru-cache@10.4.3:
+ resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ magic-string@0.26.7:
+ resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==}
+ engines: {node: '>=12'}
+
+ magic-string@0.27.0:
+ resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
+ engines: {node: '>=12'}
+
+ magic-string@0.30.11:
+ resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==}
+
+ make-dir@3.1.0:
+ resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
+ engines: {node: '>=8'}
+
+ markdown-extensions@1.1.1:
+ resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==}
+ engines: {node: '>=0.10.0'}
+
+ markdown-table@3.0.3:
+ resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
+
+ matcher@3.0.0:
+ resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==}
+ engines: {node: '>=10'}
+
+ mdast-util-definitions@5.1.2:
+ resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==}
+
+ mdast-util-find-and-replace@2.2.2:
+ resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==}
+
+ mdast-util-from-markdown@1.3.1:
+ resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==}
+
+ mdast-util-frontmatter@1.0.1:
+ resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==}
+
+ mdast-util-gfm-autolink-literal@1.0.3:
+ resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==}
+
+ mdast-util-gfm-footnote@1.0.2:
+ resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==}
+
+ mdast-util-gfm-strikethrough@1.0.3:
+ resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==}
+
+ mdast-util-gfm-table@1.0.7:
+ resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==}
+
+ mdast-util-gfm-task-list-item@1.0.2:
+ resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==}
+
+ mdast-util-gfm@2.0.2:
+ resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==}
+
+ mdast-util-mdx-expression@1.3.2:
+ resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==}
+
+ mdast-util-mdx-jsx@1.2.0:
+ resolution: {integrity: sha512-5+ot/kfxYd3ChgEMwsMUO71oAfYjyRI3pADEK4I7xTmWLGQ8Y7ghm1CG36zUoUvDPxMlIYwQV/9DYHAUWdG4dA==}
+
+ mdast-util-mdx-jsx@2.1.4:
+ resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==}
+
+ mdast-util-mdx@2.0.1:
+ resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==}
+
+ mdast-util-mdxjs-esm@1.3.1:
+ resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==}
+
+ mdast-util-phrasing@3.0.1:
+ resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==}
+
+ mdast-util-to-hast@12.3.0:
+ resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==}
+
+ mdast-util-to-markdown@1.5.0:
+ resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==}
+
+ mdast-util-to-string@3.2.0:
+ resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ micromark-core-commonmark@1.1.0:
+ resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==}
+
+ micromark-extension-frontmatter@1.1.1:
+ resolution: {integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==}
+
+ micromark-extension-gfm-autolink-literal@1.0.5:
+ resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==}
+
+ micromark-extension-gfm-footnote@1.1.2:
+ resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==}
+
+ micromark-extension-gfm-strikethrough@1.0.7:
+ resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==}
+
+ micromark-extension-gfm-table@1.0.7:
+ resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==}
+
+ micromark-extension-gfm-tagfilter@1.0.2:
+ resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==}
+
+ micromark-extension-gfm-task-list-item@1.0.5:
+ resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==}
+
+ micromark-extension-gfm@2.0.3:
+ resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==}
+
+ micromark-extension-mdx-expression@1.0.8:
+ resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==}
+
+ micromark-extension-mdx-jsx@1.0.5:
+ resolution: {integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==}
+
+ micromark-extension-mdx-md@1.0.1:
+ resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==}
+
+ micromark-extension-mdxjs-esm@1.0.5:
+ resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==}
+
+ micromark-extension-mdxjs@1.0.1:
+ resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==}
+
+ micromark-factory-destination@1.1.0:
+ resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==}
+
+ micromark-factory-label@1.1.0:
+ resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==}
+
+ micromark-factory-mdx-expression@1.0.9:
+ resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==}
+
+ micromark-factory-space@1.1.0:
+ resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==}
+
+ micromark-factory-title@1.1.0:
+ resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==}
+
+ micromark-factory-whitespace@1.1.0:
+ resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==}
+
+ micromark-util-character@1.2.0:
+ resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==}
+
+ micromark-util-chunked@1.1.0:
+ resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==}
+
+ micromark-util-classify-character@1.1.0:
+ resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==}
+
+ micromark-util-combine-extensions@1.1.0:
+ resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==}
+
+ micromark-util-decode-numeric-character-reference@1.1.0:
+ resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==}
+
+ micromark-util-decode-string@1.1.0:
+ resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==}
+
+ micromark-util-encode@1.1.0:
+ resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==}
+
+ micromark-util-events-to-acorn@1.2.3:
+ resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==}
+
+ micromark-util-html-tag-name@1.2.0:
+ resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==}
+
+ micromark-util-normalize-identifier@1.1.0:
+ resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==}
+
+ micromark-util-resolve-all@1.1.0:
+ resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==}
+
+ micromark-util-sanitize-uri@1.2.0:
+ resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==}
+
+ micromark-util-subtokenize@1.1.0:
+ resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==}
+
+ micromark-util-symbol@1.1.0:
+ resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==}
+
+ micromark-util-types@1.1.0:
+ resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==}
+
+ micromark@3.2.0:
+ resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ mime@3.0.0:
+ resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+
+ mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
+ mimic-fn@4.0.0:
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
+
+ mimic-response@3.1.0:
+ resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
+ engines: {node: '>=10'}
+
+ min-document@2.19.0:
+ resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==}
+
+ min-indent@1.0.1:
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ minimatch@8.0.4:
+ resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ minipass@4.2.8:
+ resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
+ engines: {node: '>=8'}
+
+ minipass@7.1.2:
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ mkdirp-classic@0.5.3:
+ resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
+
+ mkdirp@0.5.6:
+ resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
+ hasBin: true
+
+ mlly@0.5.17:
+ resolution: {integrity: sha512-Rn+ai4G+CQXptDFSRNnChEgNr+xAEauYhwRvpPl/UHStTlgkIftplgJRsA2OXPuoUn86K4XAjB26+x5CEvVb6A==}
+
+ mlly@1.7.1:
+ resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==}
+
+ mri@1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
+
+ mrmime@2.0.0:
+ resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
+ engines: {node: '>=10'}
+
+ ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ napi-build-utils@1.0.2:
+ resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
+
+ natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+
+ network-information-types@0.1.1:
+ resolution: {integrity: sha512-mLXNafJYOkiJB6IlF727YWssTRpXitR+tKSLyA5VAdBi3SOvLf5gtizHgxf241YHPWocnAO/fAhVrB/68tPHDw==}
+ peerDependencies:
+ typescript: '>= 3.0.0'
+
+ nlcst-to-string@3.1.1:
+ resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==}
+
+ no-case@3.0.4:
+ resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
+
+ node-abi@3.67.0:
+ resolution: {integrity: sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==}
+ engines: {node: '>=10'}
+
+ node-addon-api@4.3.0:
+ resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==}
+
+ node-domexception@1.0.0:
+ resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
+ engines: {node: '>=10.5.0'}
+
+ node-fetch@3.3.2:
+ resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ node-releases@2.0.18:
+ resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
+
+ normalize-package-data@2.5.0:
+ resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ npm-run-path@4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+
+ npm-run-path@5.3.0:
+ resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ object-hash@3.0.0:
+ resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
+ engines: {node: '>= 6'}
+
+ object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+
+ omggif@1.0.10:
+ resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+
+ onetime@6.0.0:
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
+
+ open@9.1.0:
+ resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==}
+ engines: {node: '>=14.16'}
+
+ optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
+
+ ora@6.3.1:
+ resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ p-limit@2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+
+ p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+
+ p-limit@4.0.0:
+ resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ p-locate@3.0.0:
+ resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
+ engines: {node: '>=6'}
+
+ p-locate@4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+
+ p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+
+ p-locate@6.0.0:
+ resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ p-try@2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+
+ pako@1.0.11:
+ resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
+
+ parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+
+ parse-bmfont-ascii@1.0.6:
+ resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==}
+
+ parse-bmfont-binary@1.0.6:
+ resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==}
+
+ parse-bmfont-xml@1.1.6:
+ resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==}
+
+ parse-entities@4.0.1:
+ resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
+
+ parse-headers@2.0.5:
+ resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==}
+
+ parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+
+ parse-latin@5.0.1:
+ resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==}
+
+ parse5@6.0.1:
+ resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
+
+ parse5@7.1.2:
+ resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
+
+ pascal-case@3.1.2:
+ resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
+
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
+ path-exists@3.0.0:
+ resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
+ engines: {node: '>=4'}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ path-exists@5.0.0:
+ resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-key@4.0.0:
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-scurry@1.11.1:
+ resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+ engines: {node: '>=16 || 14 >=14.18'}
+
+ path-to-regexp@6.2.2:
+ resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==}
+
+ pathe@0.3.9:
+ resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==}
+
+ pathe@1.1.2:
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+
+ pathval@1.1.1:
+ resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
+
+ peek-readable@5.2.0:
+ resolution: {integrity: sha512-U94a+eXHzct7vAd19GH3UQ2dH4Satbng0MyYTMaQatL0pvYYL5CTPR25HBhKtecl+4bfu1/i3vC6k0hydO5Vcw==}
+ engines: {node: '>=14.16'}
+
+ periscopic@3.1.0:
+ resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
+
+ phin@2.9.3:
+ resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+
+ phin@3.7.1:
+ resolution: {integrity: sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==}
+ engines: {node: '>= 8'}
+
+ picocolors@1.1.0:
+ resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ pify@4.0.1:
+ resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
+ engines: {node: '>=6'}
+
+ pixelmatch@4.0.2:
+ resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==}
+ hasBin: true
+
+ pkg-dir@4.2.0:
+ resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
+ engines: {node: '>=8'}
+
+ pkg-types@1.2.0:
+ resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==}
+
+ pkg-up@3.1.0:
+ resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==}
+ engines: {node: '>=8'}
+
+ pluralize@8.0.0:
+ resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
+ engines: {node: '>=4'}
+
+ pngjs@3.4.0:
+ resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==}
+ engines: {node: '>=4.0.0'}
+
+ postcss-load-config@3.1.4:
+ resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
+ engines: {node: '>= 10'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+
+ postcss@8.4.44:
+ resolution: {integrity: sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ potrace@2.1.8:
+ resolution: {integrity: sha512-V9hI7UMJyEhNZjM8CbZaP/804ZRLgzWkCS9OOYnEZkszzj3zKR/erRdj0uFMcN3pp6x4B+AIZebmkQgGRinG/g==}
+
+ preact-render-to-string@5.2.6:
+ resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==}
+ peerDependencies:
+ preact: '>=10'
+
+ preact@10.23.2:
+ resolution: {integrity: sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA==}
+
+ prebuild-install@7.1.2:
+ resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ preferred-pm@3.1.4:
+ resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==}
+ engines: {node: '>=10'}
+
+ prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ prettier-plugin-astro@0.1.3:
+ resolution: {integrity: sha512-aYM85mlWqELhUf0riCIZEHKUiebzyQVwmjo9BJFzzz7ULckru1Tt7G9AGLoLaljzOfuyUnkzw1iR0LNsx+ptOg==}
+ engines: {node: ^14.15.0 || >=16.0.0, npm: '>=6.14.0'}
+
+ prettier-plugin-astro@0.7.2:
+ resolution: {integrity: sha512-mmifnkG160BtC727gqoimoxnZT/dwr8ASxpoGGl6EHevhfblSOeu+pwH1LAm5Qu1MynizktztFujHHaijLCkww==}
+ engines: {node: ^14.15.0 || >=16.0.0, pnpm: '>=7.14.0'}
+
+ prettier-plugin-astro@0.9.1:
+ resolution: {integrity: sha512-pYZXSbdq0eElvzoIMArzv1SBn1NUXzopjlcnt6Ql8VW32PjC12NovwBjXJ6rh8qQLi7vF8jNqAbraKW03UPfag==}
+ engines: {node: ^14.15.0 || >=16.0.0, pnpm: '>=7.14.0'}
+
+ prettier@2.8.8:
+ resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+
+ pretty-format@3.8.0:
+ resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==}
+
+ prismjs@1.29.0:
+ resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==}
+ engines: {node: '>=6'}
+
+ process@0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.0'}
+
+ prompts@2.4.2:
+ resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
+ engines: {node: '>= 6'}
+
+ property-information@6.5.0:
+ resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
+
+ pump@3.0.0:
+ resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
+
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ rc@1.2.8:
+ resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
+ hasBin: true
+
+ react-dom@18.3.1:
+ resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ peerDependencies:
+ react: ^18.3.1
+
+ react@18.3.1:
+ resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
+ engines: {node: '>=0.10.0'}
+
+ read-pkg-up@7.0.1:
+ resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
+ engines: {node: '>=8'}
+
+ read-pkg@5.2.0:
+ resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
+ engines: {node: '>=8'}
+
+ readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+
+ readable-web-to-node-stream@3.0.2:
+ resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==}
+ engines: {node: '>=8'}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
+ recast@0.20.5:
+ resolution: {integrity: sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==}
+ engines: {node: '>= 4'}
+
+ regenerator-runtime@0.13.11:
+ resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
+
+ regenerator-runtime@0.14.1:
+ resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+
+ regexp-tree@0.1.27:
+ resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
+ hasBin: true
+
+ rehype-parse@8.0.5:
+ resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==}
+
+ rehype-raw@6.1.1:
+ resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==}
+
+ rehype-stringify@9.0.4:
+ resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==}
+
+ rehype@12.0.1:
+ resolution: {integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==}
+
+ remark-frontmatter@4.0.1:
+ resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==}
+
+ remark-gfm@3.0.1:
+ resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==}
+
+ remark-mdx@2.3.0:
+ resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==}
+
+ remark-parse@10.0.2:
+ resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==}
+
+ remark-rehype@10.1.0:
+ resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==}
+
+ remark-smartypants@2.1.0:
+ resolution: {integrity: sha512-qoF6Vz3BjU2tP6OfZqHOvCU0ACmu/6jhGaINSQRI9mM7wCxNQTKB3JUAN4SVoN2ybElEDTxBIABRep7e569iJw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ reselect@4.1.8:
+ resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==}
+
+ resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ resolve@1.22.8:
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+ hasBin: true
+
+ restore-cursor@4.0.0:
+ resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ retext-latin@3.1.0:
+ resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==}
+
+ retext-smartypants@5.2.0:
+ resolution: {integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==}
+
+ retext-stringify@3.1.0:
+ resolution: {integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==}
+
+ retext@8.1.0:
+ resolution: {integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==}
+
+ reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ roarr@2.15.4:
+ resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==}
+ engines: {node: '>=8.0'}
+
+ rollup@2.77.3:
+ resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+
+ rollup@2.79.1:
+ resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+
+ rollup@3.29.4:
+ resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==}
+ engines: {node: '>=14.18.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ run-applescript@5.0.0:
+ resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==}
+ engines: {node: '>=12'}
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ s.color@0.0.15:
+ resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==}
+
+ sade@1.8.1:
+ resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
+ engines: {node: '>=6'}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safe-regex@2.1.1:
+ resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==}
+
+ sass-formatter@0.7.9:
+ resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==}
+
+ sax@1.4.1:
+ resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
+
+ scheduler@0.23.2:
+ resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+
+ scule@0.2.1:
+ resolution: {integrity: sha512-M9gnWtn3J0W+UhJOHmBxBTwv8mZCan5i1Himp60t6vvZcor0wr+IM0URKmIglsWJ7bRujNAVVN77fp+uZaWoKg==}
+
+ search-insights@2.17.1:
+ resolution: {integrity: sha512-HHFjYH/0AqXacETlIbe9EYc3UNlQYGNNTY0fZ/sWl6SweX+GDxq9NB5+RVoPLgEFuOtCz7M9dhYxqDnhbbF0eQ==}
+
+ section-matter@1.0.0:
+ resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
+ engines: {node: '>=4'}
+
+ semver-compare@1.0.0:
+ resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
+
+ semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ semver@7.6.3:
+ resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ serialize-error@7.0.1:
+ resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==}
+ engines: {node: '>=10'}
+
+ seroval-plugins@1.1.1:
+ resolution: {integrity: sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ seroval: ^1.0
+
+ seroval@1.1.1:
+ resolution: {integrity: sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==}
+ engines: {node: '>=10'}
+
+ server-destroy@1.0.1:
+ resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==}
+
+ sharp@0.29.3:
+ resolution: {integrity: sha512-fKWUuOw77E4nhpyzCCJR1ayrttHoFHBT2U/kR/qEMRhvPEcluG4BKj324+SCO1e84+knXHwhJ1HHJGnUt4ElGA==}
+ engines: {node: '>=12.13.0'}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ shiki@0.11.1:
+ resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==}
+
+ shiki@0.14.7:
+ resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==}
+
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ simple-concat@1.0.1:
+ resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
+
+ simple-get@4.0.1:
+ resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
+
+ simple-swizzle@0.2.2:
+ resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
+
+ sirv@2.0.4:
+ resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
+ engines: {node: '>= 10'}
+
+ sisteransi@1.0.5:
+ resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
+
+ slash@4.0.0:
+ resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
+ engines: {node: '>=12'}
+
+ solid-js@1.8.22:
+ resolution: {integrity: sha512-VBzN5j+9Y4rqIKEnK301aBk+S7fvFSTs9ljg+YEdFxjNjH0hkjXPiQRcws9tE5fUzMznSS6KToL5hwMfHDgpLA==}
+
+ source-map-js@1.2.0:
+ resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.7.4:
+ resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
+ engines: {node: '>= 8'}
+
+ sourcemap-codec@1.4.8:
+ resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+ deprecated: Please use @jridgewell/sourcemap-codec instead
+
+ space-separated-tokens@2.0.2:
+ resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+
+ spdx-correct@3.2.0:
+ resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+
+ spdx-exceptions@2.5.0:
+ resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
+
+ spdx-expression-parse@3.0.1:
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+
+ spdx-license-ids@3.0.20:
+ resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==}
+
+ sprintf-js@1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+
+ sprintf-js@1.1.3:
+ resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
+
+ stdin-discarder@0.1.0:
+ resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
+ stringify-entities@4.0.4:
+ resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+
+ strip-bom-string@1.0.0:
+ resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==}
+ engines: {node: '>=0.10.0'}
+
+ strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+
+ strip-bom@4.0.0:
+ resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
+ engines: {node: '>=8'}
+
+ strip-final-newline@2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+
+ strip-final-newline@3.0.0:
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
+
+ strip-indent@3.0.0:
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
+
+ strip-json-comments@2.0.1:
+ resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
+ engines: {node: '>=0.10.0'}
+
+ strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+
+ strip-literal@0.4.2:
+ resolution: {integrity: sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==}
+
+ strtok3@7.1.1:
+ resolution: {integrity: sha512-mKX8HA/cdBqMKUr0MMZAFssCkIGoZeSCMXgnt79yKxNFguMLVFgRe6wB+fsL0NmoHDbeyZXczy7vEPSoo3rkzg==}
+ engines: {node: '>=16'}
+
+ style-to-object@0.4.4:
+ resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==}
+
+ suf-log@2.5.3:
+ resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==}
+
+ supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+
+ supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+
+ supports-esm@1.0.0:
+ resolution: {integrity: sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ svelte-hmr@0.15.3:
+ resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==}
+ engines: {node: ^12.20 || ^14.13.1 || >= 16}
+ peerDependencies:
+ svelte: ^3.19.0 || ^4.0.0
+
+ svelte2tsx@0.5.23:
+ resolution: {integrity: sha512-jYFnugTQRFmUpvLXPQrKzVYcW5ErT+0QCxg027Zx9BuvYefMZFuoBSTDYe7viPEFGrPPiLgT2m7f5n9khE7f7Q==}
+ peerDependencies:
+ svelte: ^3.24
+ typescript: ^4.1.2
+
+ svelte@3.59.2:
+ resolution: {integrity: sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==}
+ engines: {node: '>= 8'}
+
+ svg-tags@1.0.0:
+ resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
+
+ synckit@0.7.3:
+ resolution: {integrity: sha512-jNroMv7Juy+mJ/CHW5H6TzsLWpa1qck6sCHbkv8YTur+irSq2PjbvmGnm2gy14BUQ6jF33vyR4DPssHqmqsDQw==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+
+ synckit@0.8.8:
+ resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+
+ tapable@2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
+
+ tar-fs@2.1.1:
+ resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
+
+ tar-stream@2.2.0:
+ resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
+ engines: {node: '>=6'}
+
+ text-table@0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+
+ timm@1.7.1:
+ resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==}
+
+ tinycolor2@1.6.0:
+ resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}
+
+ tinypool@0.1.3:
+ resolution: {integrity: sha512-2IfcQh7CP46XGWGGbdyO4pjcKqsmVqFAPcXfPxcPXmOWt9cYkTP9HcDmGgsfijYoAEc4z9qcpM/BaBz46Y9/CQ==}
+ engines: {node: '>=14.0.0'}
+
+ tinyspy@0.3.3:
+ resolution: {integrity: sha512-gRiUR8fuhUf0W9lzojPf1N1euJYA30ISebSfgca8z76FOvXtVXqd5ojEIaKLWbDQhAaC3ibxZIjqbyi4ybjcTw==}
+ engines: {node: '>=14.0.0'}
+
+ titleize@3.0.0:
+ resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
+ engines: {node: '>=12'}
+
+ to-fast-properties@2.0.0:
+ resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+ engines: {node: '>=4'}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ token-types@5.0.1:
+ resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==}
+ engines: {node: '>=14.16'}
+
+ totalist@3.0.1:
+ resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
+ engines: {node: '>=6'}
+
+ trim-lines@3.0.1:
+ resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+
+ trough@2.2.0:
+ resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
+
+ tsconfig-resolver@3.0.1:
+ resolution: {integrity: sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==}
+
+ tslib@2.7.0:
+ resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==}
+
+ tsm@2.3.0:
+ resolution: {integrity: sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ tunnel-agent@0.6.0:
+ resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+
+ type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+
+ type-detect@4.1.0:
+ resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
+ engines: {node: '>=4'}
+
+ type-fest@0.13.1:
+ resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
+ engines: {node: '>=10'}
+
+ type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+
+ type-fest@0.6.0:
+ resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
+ engines: {node: '>=8'}
+
+ type-fest@0.8.1:
+ resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
+ engines: {node: '>=8'}
+
+ type-fest@2.19.0:
+ resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
+ engines: {node: '>=12.20'}
+
+ typescript@5.5.4:
+ resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ ufo@1.5.4:
+ resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
+
+ ultrahtml@1.5.3:
+ resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==}
+
+ undici@5.28.4:
+ resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==}
+ engines: {node: '>=14.0'}
+
+ unherit@3.0.1:
+ resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==}
+
+ unified@10.1.2:
+ resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
+
+ unimport@0.4.7:
+ resolution: {integrity: sha512-V2Pbscd1VSdgWm1/OI2pjtydEOTjE7DDnHZKhpOq7bSUBc1i8+1f6PK8jI1lJ1plRDcSNr0DLtAmtU9NPkFQpw==}
+
+ unist-util-generated@2.0.1:
+ resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==}
+
+ unist-util-is@5.2.1:
+ resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
+
+ unist-util-is@6.0.0:
+ resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
+
+ unist-util-map@3.1.3:
+ resolution: {integrity: sha512-4/mDauoxqZ6geK97lJ6n2kDk6JK88Vh+hWMSJqyaaP/7eqN1dDhjcjnNxKNm3YU6Sw7PVJtcFMUbnmHvYzb6Vg==}
+
+ unist-util-modify-children@3.1.1:
+ resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==}
+
+ unist-util-position-from-estree@1.1.2:
+ resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==}
+
+ unist-util-position@4.0.4:
+ resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==}
+
+ unist-util-remove-position@4.0.2:
+ resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==}
+
+ unist-util-stringify-position@3.0.3:
+ resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==}
+
+ unist-util-visit-children@2.0.2:
+ resolution: {integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==}
+
+ unist-util-visit-parents@5.1.3:
+ resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
+
+ unist-util-visit-parents@6.0.1:
+ resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
+
+ unist-util-visit@4.1.2:
+ resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
+
+ unist-util-visit@5.0.0:
+ resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+
+ unplugin-auto-import@0.9.5:
+ resolution: {integrity: sha512-CskZjMM+p/QZev7y4JgaAFrf63ui4VGS4HrDMm6VIiVjwnmQ0wPugo58GGhYa+W2Hyv6zGffYO6uYHfeVlDZDA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@vueuse/core': '*'
+ peerDependenciesMeta:
+ '@vueuse/core':
+ optional: true
+
+ unplugin@0.7.2:
+ resolution: {integrity: sha512-m7thX4jP8l5sETpLdUASoDOGOcHaOVtgNyrYlToyQUvILUtEzEnngRBrHnAX3IKqooJVmXpoa/CwQ/QqzvGaHQ==}
+ peerDependencies:
+ esbuild: '>=0.13'
+ rollup: ^2.50.0
+ vite: ^2.3.0 || ^3.0.0-0
+ webpack: 4 || 5
+ peerDependenciesMeta:
+ esbuild:
+ optional: true
+ rollup:
+ optional: true
+ vite:
+ optional: true
+ webpack:
+ optional: true
+
+ untildify@4.0.0:
+ resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
+ engines: {node: '>=8'}
+
+ update-browserslist-db@1.1.0:
+ resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ utif@2.0.1:
+ resolution: {integrity: sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ uvu@0.5.6:
+ resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ validate-html-nesting@1.2.2:
+ resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==}
+
+ validate-npm-package-license@3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+
+ vfile-location@4.1.0:
+ resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==}
+
+ vfile-message@3.1.4:
+ resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==}
+
+ vfile@5.3.7:
+ resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==}
+
+ vite@2.9.18:
+ resolution: {integrity: sha512-sAOqI5wNM9QvSEE70W3UGMdT8cyEn0+PmJMTFvTB8wB0YbYUWw3gUbY62AOyrXosGieF2htmeLATvNxpv/zNyQ==}
+ engines: {node: '>=12.2.0'}
+ hasBin: true
+ peerDependencies:
+ less: '*'
+ sass: '*'
+ stylus: '*'
+ peerDependenciesMeta:
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+
+ vite@3.2.10:
+ resolution: {integrity: sha512-Dx3olBo/ODNiMVk/cA5Yft9Ws+snLOXrhLtrI3F4XLt4syz2Yg8fayZMWScPKoz12v5BUv7VEmQHnsfpY80fYw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+
+ vite@4.5.3:
+ resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+
+ vitefu@0.2.5:
+ resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
+ peerDependencies:
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
+ vitest@0.12.10:
+ resolution: {integrity: sha512-TVoI6fM7rZ1zIMDjcviY8Dg5XIaPqBwDweaI3oUwvWqUz68cbM49CIHNMkF+UVoSjl94wXiBRdNhsT4ekgWuGA==}
+ engines: {node: '>=v14.16.0'}
+ hasBin: true
+ peerDependencies:
+ '@vitest/ui': '*'
+ c8: '*'
+ happy-dom: '*'
+ jsdom: '*'
+ peerDependenciesMeta:
+ '@vitest/ui':
+ optional: true
+ c8:
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+
+ vscode-css-languageservice@6.3.1:
+ resolution: {integrity: sha512-1BzTBuJfwMc3A0uX4JBdJgoxp74cjj4q2mDJdp49yD/GuAq4X0k5WtK6fNcMYr+FfJ9nqgR6lpfCSZDkARJ5qQ==}
+
+ vscode-html-languageservice@5.3.1:
+ resolution: {integrity: sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==}
+
+ vscode-jsonrpc@8.1.0:
+ resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==}
+ engines: {node: '>=14.0.0'}
+
+ vscode-jsonrpc@8.2.0:
+ resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==}
+ engines: {node: '>=14.0.0'}
+
+ vscode-languageserver-protocol@3.17.3:
+ resolution: {integrity: sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==}
+
+ vscode-languageserver-protocol@3.17.5:
+ resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==}
+
+ vscode-languageserver-textdocument@1.0.12:
+ resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==}
+
+ vscode-languageserver-types@3.17.3:
+ resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==}
+
+ vscode-languageserver-types@3.17.5:
+ resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==}
+
+ vscode-languageserver@8.1.0:
+ resolution: {integrity: sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==}
+ hasBin: true
+
+ vscode-oniguruma@1.7.0:
+ resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==}
+
+ vscode-textmate@6.0.0:
+ resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==}
+
+ vscode-textmate@8.0.0:
+ resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==}
+
+ vscode-uri@2.1.2:
+ resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==}
+
+ vscode-uri@3.0.8:
+ resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
+
+ vue@3.5.0:
+ resolution: {integrity: sha512-1t70favYoFijwfWJ7g81aTd32obGaAnKYE9FNyMgnEzn3F4YncRi/kqAHHKloG0VXTD8vBYMhbgLKCA+Sk6QDw==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ wcwidth@1.0.1:
+ resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+
+ web-namespaces@2.0.1:
+ resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
+
+ web-streams-polyfill@3.3.3:
+ resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
+ engines: {node: '>= 8'}
+
+ webpack-sources@3.2.3:
+ resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
+ engines: {node: '>=10.13.0'}
+
+ webpack-virtual-modules@0.4.6:
+ resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==}
+
+ which-pm-runs@1.1.0:
+ resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==}
+ engines: {node: '>=4'}
+
+ which-pm@2.2.0:
+ resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==}
+ engines: {node: '>=8.15'}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ widest-line@4.0.1:
+ resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==}
+ engines: {node: '>=12'}
+
+ word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+
+ wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ xhr@2.6.0:
+ resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==}
+
+ xml-parse-from-string@1.0.1:
+ resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==}
+
+ xml2js@0.5.0:
+ resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==}
+ engines: {node: '>=4.0.0'}
+
+ xmlbuilder@11.0.1:
+ resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
+ engines: {node: '>=4.0'}
+
+ xtend@4.0.2:
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
+ engines: {node: '>=0.4'}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yaml@1.10.2:
+ resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
+ engines: {node: '>= 6'}
+
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
+ yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+
+ yocto-queue@1.1.1:
+ resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}
+ engines: {node: '>=12.20'}
+
+ zod@3.23.8:
+ resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
+
+ zwitch@2.0.4:
+ resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+
+snapshots:
+
+ '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.1)':
+ dependencies:
+ '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.1)
+ '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - algoliasearch
+ - search-insights
+
+ '@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.1)':
+ dependencies:
+ '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)
+ search-insights: 2.17.1
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - algoliasearch
+
+ '@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)':
+ dependencies:
+ '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)
+ '@algolia/client-search': 4.24.0
+ algoliasearch: 4.24.0
+
+ '@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)':
+ dependencies:
+ '@algolia/client-search': 4.24.0
+ algoliasearch: 4.24.0
+
+ '@algolia/cache-browser-local-storage@4.24.0':
+ dependencies:
+ '@algolia/cache-common': 4.24.0
+
+ '@algolia/cache-common@4.24.0': {}
+
+ '@algolia/cache-in-memory@4.24.0':
+ dependencies:
+ '@algolia/cache-common': 4.24.0
+
+ '@algolia/client-account@4.24.0':
+ dependencies:
+ '@algolia/client-common': 4.24.0
+ '@algolia/client-search': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ '@algolia/client-analytics@4.24.0':
+ dependencies:
+ '@algolia/client-common': 4.24.0
+ '@algolia/client-search': 4.24.0
+ '@algolia/requester-common': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ '@algolia/client-common@4.24.0':
+ dependencies:
+ '@algolia/requester-common': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ '@algolia/client-personalization@4.24.0':
+ dependencies:
+ '@algolia/client-common': 4.24.0
+ '@algolia/requester-common': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ '@algolia/client-search@4.24.0':
+ dependencies:
+ '@algolia/client-common': 4.24.0
+ '@algolia/requester-common': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ '@algolia/logger-common@4.24.0': {}
+
+ '@algolia/logger-console@4.24.0':
+ dependencies:
+ '@algolia/logger-common': 4.24.0
+
+ '@algolia/recommend@4.24.0':
+ dependencies:
+ '@algolia/cache-browser-local-storage': 4.24.0
+ '@algolia/cache-common': 4.24.0
+ '@algolia/cache-in-memory': 4.24.0
+ '@algolia/client-common': 4.24.0
+ '@algolia/client-search': 4.24.0
+ '@algolia/logger-common': 4.24.0
+ '@algolia/logger-console': 4.24.0
+ '@algolia/requester-browser-xhr': 4.24.0
+ '@algolia/requester-common': 4.24.0
+ '@algolia/requester-node-http': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ '@algolia/requester-browser-xhr@4.24.0':
+ dependencies:
+ '@algolia/requester-common': 4.24.0
+
+ '@algolia/requester-common@4.24.0': {}
+
+ '@algolia/requester-node-http@4.24.0':
+ dependencies:
+ '@algolia/requester-common': 4.24.0
+
+ '@algolia/transporter@4.24.0':
+ dependencies:
+ '@algolia/cache-common': 4.24.0
+ '@algolia/logger-common': 4.24.0
+ '@algolia/requester-common': 4.24.0
+
+ '@ampproject/remapping@2.3.0':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@antfu/utils@0.5.2': {}
+
+ '@astrojs/compiler@0.19.0': {}
+
+ '@astrojs/compiler@0.31.4': {}
+
+ '@astrojs/compiler@1.8.2': {}
+
+ '@astrojs/internal-helpers@0.1.2': {}
+
+ '@astrojs/language-server@0.28.3':
+ dependencies:
+ '@vscode/emmet-helper': 2.9.3
+ events: 3.3.0
+ prettier: 2.8.8
+ prettier-plugin-astro: 0.7.2
+ source-map: 0.7.4
+ vscode-css-languageservice: 6.3.1
+ vscode-html-languageservice: 5.3.1
+ vscode-languageserver: 8.1.0
+ vscode-languageserver-protocol: 3.17.5
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 3.0.8
+
+ '@astrojs/language-server@1.0.8':
+ dependencies:
+ '@astrojs/compiler': 1.8.2
+ '@jridgewell/trace-mapping': 0.3.25
+ '@vscode/emmet-helper': 2.9.3
+ events: 3.3.0
+ prettier: 2.8.8
+ prettier-plugin-astro: 0.9.1
+ vscode-css-languageservice: 6.3.1
+ vscode-html-languageservice: 5.3.1
+ vscode-languageserver: 8.1.0
+ vscode-languageserver-protocol: 3.17.5
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 3.0.8
+
+ '@astrojs/lit@1.3.0(@webcomponents/template-shadowroot@0.1.0)(lit@3.2.0)':
+ dependencies:
+ '@lit-labs/ssr': 2.3.0
+ '@webcomponents/template-shadowroot': 0.1.0
+ lit: 3.2.0
+ parse5: 7.1.2
+
+ '@astrojs/markdown-component@1.0.5': {}
+
+ '@astrojs/markdown-remark@1.2.0':
+ dependencies:
+ '@astrojs/micromark-extension-mdx-jsx': 1.0.3
+ '@astrojs/prism': 1.0.2
+ acorn: 8.12.1
+ acorn-jsx: 5.3.2(acorn@8.12.1)
+ github-slugger: 1.5.0
+ hast-util-to-html: 8.0.4
+ import-meta-resolve: 2.2.2
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-mdx-expression: 1.3.2
+ mdast-util-mdx-jsx: 1.2.0
+ micromark-extension-mdx-expression: 1.0.8
+ micromark-extension-mdx-md: 1.0.1
+ micromark-util-combine-extensions: 1.1.0
+ rehype-raw: 6.1.1
+ rehype-stringify: 9.0.4
+ remark-gfm: 3.0.1
+ remark-parse: 10.0.2
+ remark-rehype: 10.1.0
+ remark-smartypants: 2.1.0
+ shiki: 0.11.1
+ unified: 10.1.2
+ unist-util-map: 3.1.3
+ unist-util-visit: 4.1.2
+ vfile: 5.3.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@astrojs/markdown-remark@2.2.1(astro@2.10.15(@types/node@16.18.106))':
+ dependencies:
+ '@astrojs/prism': 2.1.2
+ astro: 2.10.15(@types/node@16.18.106)
+ github-slugger: 1.5.0
+ import-meta-resolve: 2.2.2
+ rehype-raw: 6.1.1
+ rehype-stringify: 9.0.4
+ remark-gfm: 3.0.1
+ remark-parse: 10.0.2
+ remark-rehype: 10.1.0
+ remark-smartypants: 2.1.0
+ shiki: 0.14.7
+ unified: 10.1.2
+ unist-util-visit: 4.1.2
+ vfile: 5.3.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@astrojs/mdx@0.14.0(rollup@3.29.4)':
+ dependencies:
+ '@astrojs/markdown-remark': 1.2.0
+ '@astrojs/prism': 1.0.2
+ '@mdx-js/mdx': 2.3.0
+ '@mdx-js/rollup': 2.3.0(rollup@3.29.4)
+ acorn: 8.12.1
+ es-module-lexer: 0.10.5
+ estree-util-visit: 1.2.1
+ github-slugger: 1.5.0
+ gray-matter: 4.0.3
+ kleur: 4.1.5
+ rehype-raw: 6.1.1
+ remark-frontmatter: 4.0.1
+ remark-gfm: 3.0.1
+ remark-smartypants: 2.1.0
+ shiki: 0.11.1
+ unist-util-visit: 4.1.2
+ vfile: 5.3.7
+ transitivePeerDependencies:
+ - rollup
+ - supports-color
+
+ '@astrojs/micromark-extension-mdx-jsx@1.0.3':
+ dependencies:
+ '@types/acorn': 4.0.6
+ estree-util-is-identifier-name: 2.1.0
+ micromark-factory-mdx-expression: 1.0.9
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+
+ '@astrojs/preact@0.2.0(@babel/core@7.25.2)(preact@10.23.2)':
+ dependencies:
+ '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2)
+ preact: 10.23.2
+ preact-render-to-string: 5.2.6(preact@10.23.2)
+ transitivePeerDependencies:
+ - '@babel/core'
+ - supports-color
+
+ '@astrojs/preact@2.2.2(preact@10.23.2)':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2)
+ '@preact/signals': 1.3.0(preact@10.23.2)
+ babel-plugin-module-resolver: 5.0.2
+ preact: 10.23.2
+ preact-render-to-string: 5.2.6(preact@10.23.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@astrojs/prism@1.0.2':
+ dependencies:
+ prismjs: 1.29.0
+
+ '@astrojs/prism@2.1.2':
+ dependencies:
+ prismjs: 1.29.0
+
+ '@astrojs/react@0.2.1(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ transitivePeerDependencies:
+ - '@babel/core'
+ - supports-color
+
+ '@astrojs/react@2.3.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2)
+ '@types/react': 18.3.5
+ '@types/react-dom': 18.3.0
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ ultrahtml: 1.5.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@astrojs/solid-js@2.2.1(@babel/core@7.25.2)(solid-js@1.8.22)(vite@4.5.3(@types/node@16.18.106))':
+ dependencies:
+ babel-preset-solid: 1.8.22(@babel/core@7.25.2)
+ solid-js: 1.8.22
+ vitefu: 0.2.5(vite@4.5.3(@types/node@16.18.106))
+ transitivePeerDependencies:
+ - '@babel/core'
+ - vite
+
+ '@astrojs/svelte@2.2.0(astro@2.10.15(@types/node@16.18.106))(svelte@3.59.2)(typescript@5.5.4)(vite@4.5.3(@types/node@16.18.106))':
+ dependencies:
+ '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@3.59.2)(vite@4.5.3(@types/node@16.18.106))
+ astro: 2.10.15(@types/node@16.18.106)
+ svelte: 3.59.2
+ svelte2tsx: 0.5.23(svelte@3.59.2)(typescript@5.5.4)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ - vite
+
+ '@astrojs/telemetry@1.0.1':
+ dependencies:
+ ci-info: 3.9.0
+ debug: 4.3.6
+ dlv: 1.1.3
+ dset: 3.1.3
+ is-docker: 3.0.0
+ is-wsl: 2.2.0
+ node-fetch: 3.3.2
+ which-pm-runs: 1.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@astrojs/telemetry@2.1.1':
+ dependencies:
+ ci-info: 3.9.0
+ debug: 4.3.6
+ dlv: 1.1.3
+ dset: 3.1.3
+ is-docker: 3.0.0
+ is-wsl: 2.2.0
+ undici: 5.28.4
+ which-pm-runs: 1.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@astrojs/vue@2.2.1(@babel/core@7.25.2)(astro@2.10.15(@types/node@16.18.106))(vite@4.5.3(@types/node@16.18.106))(vue@3.5.0(typescript@5.5.4))':
+ dependencies:
+ '@vitejs/plugin-vue': 4.6.2(vite@4.5.3(@types/node@16.18.106))(vue@3.5.0(typescript@5.5.4))
+ '@vitejs/plugin-vue-jsx': 3.1.0(vite@4.5.3(@types/node@16.18.106))(vue@3.5.0(typescript@5.5.4))
+ '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2)
+ '@vue/compiler-sfc': 3.5.0
+ astro: 2.10.15(@types/node@16.18.106)
+ vue: 3.5.0(typescript@5.5.4)
+ transitivePeerDependencies:
+ - '@babel/core'
+ - supports-color
+ - vite
+
+ '@astrojs/webapi@1.1.1':
+ dependencies:
+ global-agent: 3.0.0
+ node-fetch: 3.3.2
+
+ '@astrojs/webapi@2.2.0':
+ dependencies:
+ undici: 5.28.4
+
+ '@astropub/codecs@0.4.4': {}
+
+ '@babel/code-frame@7.24.7':
+ dependencies:
+ '@babel/highlight': 7.24.7
+ picocolors: 1.1.0
+
+ '@babel/compat-data@7.25.4': {}
+
+ '@babel/core@7.25.2':
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.25.6
+ '@babel/helper-compilation-targets': 7.25.2
+ '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2)
+ '@babel/helpers': 7.25.6
+ '@babel/parser': 7.25.6
+ '@babel/template': 7.25.0
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
+ convert-source-map: 2.0.0
+ debug: 4.3.6
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.25.6':
+ dependencies:
+ '@babel/types': 7.25.6
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 2.5.2
+
+ '@babel/helper-annotate-as-pure@7.24.7':
+ dependencies:
+ '@babel/types': 7.25.6
+
+ '@babel/helper-compilation-targets@7.25.2':
+ dependencies:
+ '@babel/compat-data': 7.25.4
+ '@babel/helper-validator-option': 7.24.8
+ browserslist: 4.23.3
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2)':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-member-expression-to-functions': 7.24.8
+ '@babel/helper-optimise-call-expression': 7.24.7
+ '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ '@babel/traverse': 7.25.6
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-member-expression-to-functions@7.24.8':
+ dependencies:
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-imports@7.18.6':
+ dependencies:
+ '@babel/types': 7.25.6
+
+ '@babel/helper-module-imports@7.22.15':
+ dependencies:
+ '@babel/types': 7.25.6
+
+ '@babel/helper-module-imports@7.24.7':
+ dependencies:
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-simple-access': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
+ '@babel/traverse': 7.25.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-optimise-call-expression@7.24.7':
+ dependencies:
+ '@babel/types': 7.25.6
+
+ '@babel/helper-plugin-utils@7.24.8': {}
+
+ '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/helper-member-expression-to-functions': 7.24.8
+ '@babel/helper-optimise-call-expression': 7.24.7
+ '@babel/traverse': 7.25.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-simple-access@7.24.7':
+ dependencies:
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.24.7':
+ dependencies:
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-string-parser@7.24.8': {}
+
+ '@babel/helper-validator-identifier@7.24.7': {}
+
+ '@babel/helper-validator-option@7.24.8': {}
+
+ '@babel/helpers@7.25.6':
+ dependencies:
+ '@babel/template': 7.25.0
+ '@babel/types': 7.25.6
+
+ '@babel/highlight@7.24.7':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.24.7
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ picocolors: 1.1.0
+
+ '@babel/parser@7.25.6':
+ dependencies:
+ '@babel/types': 7.25.6
+
+ '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/helper-plugin-utils': 7.24.8
+
+ '@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.25.2)':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/helper-plugin-utils': 7.24.8
+
+ '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.8
+ '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2)
+ '@babel/types': 7.25.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2)
+ '@babel/helper-plugin-utils': 7.24.8
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/runtime@7.25.6':
+ dependencies:
+ regenerator-runtime: 0.14.1
+
+ '@babel/template@7.25.0':
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ '@babel/parser': 7.25.6
+ '@babel/types': 7.25.6
+
+ '@babel/traverse@7.25.6':
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.25.6
+ '@babel/parser': 7.25.6
+ '@babel/template': 7.25.0
+ '@babel/types': 7.25.6
+ debug: 4.3.6
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.25.6':
+ dependencies:
+ '@babel/helper-string-parser': 7.24.8
+ '@babel/helper-validator-identifier': 7.24.7
+ to-fast-properties: 2.0.0
+
+ '@docsearch/css@3.6.1': {}
+
+ '@docsearch/react@3.6.1(@algolia/client-search@4.24.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.1)':
+ dependencies:
+ '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)(search-insights@2.17.1)
+ '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.24.0)(algoliasearch@4.24.0)
+ '@docsearch/css': 3.6.1
+ algoliasearch: 4.24.0
+ optionalDependencies:
+ '@types/react': 18.3.5
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ search-insights: 2.17.1
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+
+ '@emmetio/abbreviation@2.3.3':
+ dependencies:
+ '@emmetio/scanner': 1.0.4
+
+ '@emmetio/css-abbreviation@2.1.8':
+ dependencies:
+ '@emmetio/scanner': 1.0.4
+
+ '@emmetio/scanner@1.0.4': {}
+
+ '@esbuild/android-arm64@0.17.19':
+ optional: true
+
+ '@esbuild/android-arm64@0.18.20':
+ optional: true
+
+ '@esbuild/android-arm@0.15.18':
+ optional: true
+
+ '@esbuild/android-arm@0.17.19':
+ optional: true
+
+ '@esbuild/android-arm@0.18.20':
+ optional: true
+
+ '@esbuild/android-x64@0.17.19':
+ optional: true
+
+ '@esbuild/android-x64@0.18.20':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.17.19':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.18.20':
+ optional: true
+
+ '@esbuild/darwin-x64@0.17.19':
+ optional: true
+
+ '@esbuild/darwin-x64@0.18.20':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.17.19':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.18.20':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.17.19':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.18.20':
+ optional: true
+
+ '@esbuild/linux-arm64@0.17.19':
+ optional: true
+
+ '@esbuild/linux-arm64@0.18.20':
+ optional: true
+
+ '@esbuild/linux-arm@0.17.19':
+ optional: true
+
+ '@esbuild/linux-arm@0.18.20':
+ optional: true
+
+ '@esbuild/linux-ia32@0.17.19':
+ optional: true
+
+ '@esbuild/linux-ia32@0.18.20':
+ optional: true
+
+ '@esbuild/linux-loong64@0.14.54':
+ optional: true
+
+ '@esbuild/linux-loong64@0.15.18':
+ optional: true
+
+ '@esbuild/linux-loong64@0.17.19':
+ optional: true
+
+ '@esbuild/linux-loong64@0.18.20':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.17.19':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.18.20':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.17.19':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.18.20':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.17.19':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.18.20':
+ optional: true
+
+ '@esbuild/linux-s390x@0.17.19':
+ optional: true
+
+ '@esbuild/linux-s390x@0.18.20':
+ optional: true
+
+ '@esbuild/linux-x64@0.17.19':
+ optional: true
+
+ '@esbuild/linux-x64@0.18.20':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.17.19':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.18.20':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.17.19':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.18.20':
+ optional: true
+
+ '@esbuild/sunos-x64@0.17.19':
+ optional: true
+
+ '@esbuild/sunos-x64@0.18.20':
+ optional: true
+
+ '@esbuild/win32-arm64@0.17.19':
+ optional: true
+
+ '@esbuild/win32-arm64@0.18.20':
+ optional: true
+
+ '@esbuild/win32-ia32@0.17.19':
+ optional: true
+
+ '@esbuild/win32-ia32@0.18.20':
+ optional: true
+
+ '@esbuild/win32-x64@0.17.19':
+ optional: true
+
+ '@esbuild/win32-x64@0.18.20':
+ optional: true
+
+ '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
+ dependencies:
+ eslint: 8.57.0
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/regexpp@4.11.0': {}
+
+ '@eslint/eslintrc@2.1.4':
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.3.6
+ espree: 9.6.1
+ globals: 13.24.0
+ ignore: 5.3.2
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/js@8.57.0': {}
+
+ '@fastify/busboy@2.1.1': {}
+
+ '@humanwhocodes/config-array@0.11.14':
+ dependencies:
+ '@humanwhocodes/object-schema': 2.0.3
+ debug: 4.3.6
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@humanwhocodes/module-importer@1.0.1': {}
+
+ '@humanwhocodes/object-schema@2.0.3': {}
+
+ '@jimp/bmp@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+ bmp-js: 0.1.0
+
+ '@jimp/core@0.14.0':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/utils': 0.14.0
+ any-base: 1.1.0
+ buffer: 5.7.1
+ exif-parser: 0.1.12
+ file-type: 9.0.0
+ load-bmfont: 1.4.2
+ mkdirp: 0.5.6
+ phin: 2.9.3
+ pixelmatch: 4.0.2
+ tinycolor2: 1.6.0
+ transitivePeerDependencies:
+ - debug
+
+ '@jimp/custom@0.14.0':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/core': 0.14.0
+ transitivePeerDependencies:
+ - debug
+
+ '@jimp/gif@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+ gifwrap: 0.9.4
+ omggif: 1.0.10
+
+ '@jimp/jpeg@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+ jpeg-js: 0.4.4
+
+ '@jimp/plugin-blit@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-blur@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-circle@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-color@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+ tinycolor2: 1.6.0
+
+ '@jimp/plugin-contain@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-blit@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-scale@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0)))':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/plugin-blit': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-resize': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-scale': 0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-cover@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-crop@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-scale@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0)))':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/plugin-crop': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-resize': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-scale': 0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-crop@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-displace@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-dither@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-fisheye@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-flip@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-rotate@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-blit@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-crop@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0)))':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/plugin-rotate': 0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-blit@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-crop@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-gaussian@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-invert@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-mask@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-normalize@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-print@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-blit@0.14.0(@jimp/custom@0.14.0))':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/plugin-blit': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/utils': 0.14.0
+ load-bmfont: 1.4.2
+ transitivePeerDependencies:
+ - debug
+
+ '@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-rotate@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-blit@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-crop@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/plugin-blit': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-crop': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-resize': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-scale@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/plugin-resize': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-shadow@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-blur@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/plugin-blur': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-resize': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugin-threshold@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-color@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/plugin-color': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-resize': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/utils': 0.14.0
+
+ '@jimp/plugins@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/plugin-blit': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-blur': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-circle': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-color': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-contain': 0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-blit@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-scale@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0)))
+ '@jimp/plugin-cover': 0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-crop@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-scale@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0)))
+ '@jimp/plugin-crop': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-displace': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-dither': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-fisheye': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-flip': 0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-rotate@0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-blit@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-crop@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0)))
+ '@jimp/plugin-gaussian': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-invert': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-mask': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-normalize': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-print': 0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-blit@0.14.0(@jimp/custom@0.14.0))
+ '@jimp/plugin-resize': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/plugin-rotate': 0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-blit@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-crop@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))
+ '@jimp/plugin-scale': 0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))
+ '@jimp/plugin-shadow': 0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-blur@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))
+ '@jimp/plugin-threshold': 0.14.0(@jimp/custom@0.14.0)(@jimp/plugin-color@0.14.0(@jimp/custom@0.14.0))(@jimp/plugin-resize@0.14.0(@jimp/custom@0.14.0))
+ timm: 1.7.1
+ transitivePeerDependencies:
+ - debug
+
+ '@jimp/png@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/utils': 0.14.0
+ pngjs: 3.4.0
+
+ '@jimp/tiff@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ utif: 2.0.1
+
+ '@jimp/types@0.14.0(@jimp/custom@0.14.0)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/bmp': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/custom': 0.14.0
+ '@jimp/gif': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/jpeg': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/png': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/tiff': 0.14.0(@jimp/custom@0.14.0)
+ timm: 1.7.1
+
+ '@jimp/utils@0.14.0':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ regenerator-runtime: 0.13.11
+
+ '@jridgewell/gen-mapping@0.3.5':
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/set-array@1.2.1': {}
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ '@lit-labs/ssr-client@1.1.7':
+ dependencies:
+ '@lit/reactive-element': 2.0.4
+ lit: 3.2.0
+ lit-html: 3.2.0
+
+ '@lit-labs/ssr-dom-shim@1.2.1': {}
+
+ '@lit-labs/ssr@2.3.0':
+ dependencies:
+ '@lit-labs/ssr-client': 1.1.7
+ '@lit/reactive-element': 1.6.3
+ '@parse5/tools': 0.1.0
+ '@types/node': 16.18.106
+ enhanced-resolve: 5.17.1
+ lit: 2.8.0
+ lit-element: 3.3.3
+ lit-html: 2.8.0
+ node-fetch: 3.3.2
+ parse5: 7.1.2
+
+ '@lit/reactive-element@1.6.3':
+ dependencies:
+ '@lit-labs/ssr-dom-shim': 1.2.1
+
+ '@lit/reactive-element@2.0.4':
+ dependencies:
+ '@lit-labs/ssr-dom-shim': 1.2.1
+
+ '@ljharb/has-package-exports-patterns@0.0.2': {}
+
+ '@mdx-js/mdx@2.3.0':
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/mdx': 2.0.13
+ estree-util-build-jsx: 2.2.2
+ estree-util-is-identifier-name: 2.1.0
+ estree-util-to-js: 1.2.0
+ estree-walker: 3.0.3
+ hast-util-to-estree: 2.3.3
+ markdown-extensions: 1.1.1
+ periscopic: 3.1.0
+ remark-mdx: 2.3.0
+ remark-parse: 10.0.2
+ remark-rehype: 10.1.0
+ unified: 10.1.2
+ unist-util-position-from-estree: 1.1.2
+ unist-util-stringify-position: 3.0.3
+ unist-util-visit: 4.1.2
+ vfile: 5.3.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@mdx-js/rollup@2.3.0(rollup@3.29.4)':
+ dependencies:
+ '@mdx-js/mdx': 2.3.0
+ '@rollup/pluginutils': 5.1.0(rollup@3.29.4)
+ rollup: 3.29.4
+ source-map: 0.7.4
+ vfile: 5.3.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.17.1
+
+ '@parse5/tools@0.1.0':
+ dependencies:
+ parse5: 7.1.2
+
+ '@pkgr/core@0.1.1': {}
+
+ '@pkgr/utils@2.4.2':
+ dependencies:
+ cross-spawn: 7.0.3
+ fast-glob: 3.3.2
+ is-glob: 4.0.3
+ open: 9.1.0
+ picocolors: 1.1.0
+ tslib: 2.7.0
+
+ '@polka/url@1.0.0-next.25': {}
+
+ '@preact/signals-core@1.8.0': {}
+
+ '@preact/signals@1.3.0(preact@10.23.2)':
+ dependencies:
+ '@preact/signals-core': 1.8.0
+ preact: 10.23.2
+
+ '@proload/core@0.3.3':
+ dependencies:
+ deepmerge: 4.3.1
+ escalade: 3.2.0
+
+ '@proload/plugin-tsm@0.2.1(@proload/core@0.3.3)':
+ dependencies:
+ '@proload/core': 0.3.3
+ tsm: 2.3.0
+
+ '@rollup/pluginutils@4.2.1':
+ dependencies:
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+
+ '@rollup/pluginutils@5.1.0(rollup@3.29.4)':
+ dependencies:
+ '@types/estree': 1.0.5
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+ optionalDependencies:
+ rollup: 3.29.4
+
+ '@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3(svelte@3.59.2)(vite@4.5.3(@types/node@16.18.106)))(svelte@3.59.2)(vite@4.5.3(@types/node@16.18.106))':
+ dependencies:
+ '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@3.59.2)(vite@4.5.3(@types/node@16.18.106))
+ debug: 4.3.6
+ svelte: 3.59.2
+ vite: 4.5.3(@types/node@16.18.106)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@sveltejs/vite-plugin-svelte@2.5.3(svelte@3.59.2)(vite@4.5.3(@types/node@16.18.106))':
+ dependencies:
+ '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3(svelte@3.59.2)(vite@4.5.3(@types/node@16.18.106)))(svelte@3.59.2)(vite@4.5.3(@types/node@16.18.106))
+ debug: 4.3.6
+ deepmerge: 4.3.1
+ kleur: 4.1.5
+ magic-string: 0.30.11
+ svelte: 3.59.2
+ svelte-hmr: 0.15.3(svelte@3.59.2)
+ vite: 4.5.3(@types/node@16.18.106)
+ vitefu: 0.2.5(vite@4.5.3(@types/node@16.18.106))
+ transitivePeerDependencies:
+ - supports-color
+
+ '@tokenizer/token@0.3.0': {}
+
+ '@types/acorn@4.0.6':
+ dependencies:
+ '@types/estree': 1.0.5
+
+ '@types/babel__core@7.20.5':
+ dependencies:
+ '@babel/parser': 7.25.6
+ '@babel/types': 7.25.6
+ '@types/babel__generator': 7.6.8
+ '@types/babel__template': 7.4.4
+ '@types/babel__traverse': 7.20.6
+
+ '@types/babel__generator@7.6.8':
+ dependencies:
+ '@babel/types': 7.25.6
+
+ '@types/babel__template@7.4.4':
+ dependencies:
+ '@babel/parser': 7.25.6
+ '@babel/types': 7.25.6
+
+ '@types/babel__traverse@7.20.6':
+ dependencies:
+ '@babel/types': 7.25.6
+
+ '@types/chai-subset@1.3.5':
+ dependencies:
+ '@types/chai': 4.3.19
+
+ '@types/chai@4.3.19': {}
+
+ '@types/debug@4.1.12':
+ dependencies:
+ '@types/ms': 0.7.34
+
+ '@types/dom-view-transitions@1.0.5': {}
+
+ '@types/estree-jsx@0.0.1':
+ dependencies:
+ '@types/estree': 1.0.5
+
+ '@types/estree-jsx@1.0.5':
+ dependencies:
+ '@types/estree': 1.0.5
+
+ '@types/estree@1.0.5': {}
+
+ '@types/hast@2.3.10':
+ dependencies:
+ '@types/unist': 2.0.11
+
+ '@types/html-escaper@3.0.2': {}
+
+ '@types/json5@0.0.30': {}
+
+ '@types/mdast@3.0.15':
+ dependencies:
+ '@types/unist': 2.0.11
+
+ '@types/mdx@2.0.13': {}
+
+ '@types/ms@0.7.34': {}
+
+ '@types/nlcst@1.0.4':
+ dependencies:
+ '@types/unist': 2.0.11
+
+ '@types/node@16.18.106': {}
+
+ '@types/node@16.9.1': {}
+
+ '@types/normalize-package-data@2.4.4': {}
+
+ '@types/parse5@6.0.3': {}
+
+ '@types/prop-types@15.7.12': {}
+
+ '@types/react-dom@18.3.0':
+ dependencies:
+ '@types/react': 18.3.5
+
+ '@types/react@18.3.5':
+ dependencies:
+ '@types/prop-types': 15.7.12
+ csstype: 3.1.3
+
+ '@types/resolve@1.20.6': {}
+
+ '@types/trusted-types@2.0.7': {}
+
+ '@types/unist@2.0.11': {}
+
+ '@types/unist@3.0.3': {}
+
+ '@types/yargs-parser@21.0.3': {}
+
+ '@ungap/structured-clone@1.2.0': {}
+
+ '@vitejs/plugin-vue-jsx@3.1.0(vite@4.5.3(@types/node@16.18.106))(vue@3.5.0(typescript@5.5.4))':
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2)
+ '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2)
+ vite: 4.5.3(@types/node@16.18.106)
+ vue: 3.5.0(typescript@5.5.4)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vitejs/plugin-vue@4.6.2(vite@4.5.3(@types/node@16.18.106))(vue@3.5.0(typescript@5.5.4))':
+ dependencies:
+ vite: 4.5.3(@types/node@16.18.106)
+ vue: 3.5.0(typescript@5.5.4)
+
+ '@vscode/emmet-helper@2.9.3':
+ dependencies:
+ emmet: 2.4.7
+ jsonc-parser: 2.3.1
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 2.1.2
+
+ '@vscode/l10n@0.0.18': {}
+
+ '@vue/babel-helper-vue-transform-on@1.2.2': {}
+
+ '@vue/babel-plugin-jsx@1.2.2(@babel/core@7.25.2)':
+ dependencies:
+ '@babel/helper-module-imports': 7.22.15
+ '@babel/helper-plugin-utils': 7.24.8
+ '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2)
+ '@babel/template': 7.25.0
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
+ '@vue/babel-helper-vue-transform-on': 1.2.2
+ '@vue/babel-plugin-resolve-type': 1.2.2(@babel/core@7.25.2)
+ camelcase: 6.3.0
+ html-tags: 3.3.1
+ svg-tags: 1.0.0
+ optionalDependencies:
+ '@babel/core': 7.25.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vue/babel-plugin-resolve-type@1.2.2(@babel/core@7.25.2)':
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ '@babel/core': 7.25.2
+ '@babel/helper-module-imports': 7.22.15
+ '@babel/helper-plugin-utils': 7.24.8
+ '@babel/parser': 7.25.6
+ '@vue/compiler-sfc': 3.5.0
+
+ '@vue/compiler-core@3.5.0':
+ dependencies:
+ '@babel/parser': 7.25.6
+ '@vue/shared': 3.5.0
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.0
+
+ '@vue/compiler-dom@3.5.0':
+ dependencies:
+ '@vue/compiler-core': 3.5.0
+ '@vue/shared': 3.5.0
+
+ '@vue/compiler-sfc@3.5.0':
+ dependencies:
+ '@babel/parser': 7.25.6
+ '@vue/compiler-core': 3.5.0
+ '@vue/compiler-dom': 3.5.0
+ '@vue/compiler-ssr': 3.5.0
+ '@vue/shared': 3.5.0
+ estree-walker: 2.0.2
+ magic-string: 0.30.11
+ postcss: 8.4.44
+ source-map-js: 1.2.0
+
+ '@vue/compiler-ssr@3.5.0':
+ dependencies:
+ '@vue/compiler-dom': 3.5.0
+ '@vue/shared': 3.5.0
+
+ '@vue/reactivity@3.5.0':
+ dependencies:
+ '@vue/shared': 3.5.0
+
+ '@vue/runtime-core@3.5.0':
+ dependencies:
+ '@vue/reactivity': 3.5.0
+ '@vue/shared': 3.5.0
+
+ '@vue/runtime-dom@3.5.0':
+ dependencies:
+ '@vue/reactivity': 3.5.0
+ '@vue/runtime-core': 3.5.0
+ '@vue/shared': 3.5.0
+ csstype: 3.1.3
+
+ '@vue/server-renderer@3.5.0(vue@3.5.0(typescript@5.5.4))':
+ dependencies:
+ '@vue/compiler-ssr': 3.5.0
+ '@vue/shared': 3.5.0
+ vue: 3.5.0(typescript@5.5.4)
+
+ '@vue/shared@3.5.0': {}
+
+ '@webcomponents/template-shadowroot@0.1.0': {}
+
+ acorn-jsx@5.3.2(acorn@8.12.1):
+ dependencies:
+ acorn: 8.12.1
+
+ acorn@8.12.1: {}
+
+ ajv@6.12.6:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ algoliasearch@4.24.0:
+ dependencies:
+ '@algolia/cache-browser-local-storage': 4.24.0
+ '@algolia/cache-common': 4.24.0
+ '@algolia/cache-in-memory': 4.24.0
+ '@algolia/client-account': 4.24.0
+ '@algolia/client-analytics': 4.24.0
+ '@algolia/client-common': 4.24.0
+ '@algolia/client-personalization': 4.24.0
+ '@algolia/client-search': 4.24.0
+ '@algolia/logger-common': 4.24.0
+ '@algolia/logger-console': 4.24.0
+ '@algolia/recommend': 4.24.0
+ '@algolia/requester-browser-xhr': 4.24.0
+ '@algolia/requester-common': 4.24.0
+ '@algolia/requester-node-http': 4.24.0
+ '@algolia/transporter': 4.24.0
+
+ ansi-align@3.0.1:
+ dependencies:
+ string-width: 4.2.3
+
+ ansi-regex@5.0.1: {}
+
+ ansi-regex@6.0.1: {}
+
+ ansi-sequence-parser@1.1.1: {}
+
+ ansi-styles@3.2.1:
+ dependencies:
+ color-convert: 1.9.3
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@6.2.1: {}
+
+ any-base@1.1.0: {}
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ argparse@1.0.10:
+ dependencies:
+ sprintf-js: 1.0.3
+
+ argparse@2.0.1: {}
+
+ array-iterate@2.0.1: {}
+
+ assertion-error@1.1.0: {}
+
+ ast-types@0.14.2:
+ dependencies:
+ tslib: 2.7.0
+
+ astring@1.9.0: {}
+
+ astro-spa@1.3.9: {}
+
+ astro@1.9.2(@types/node@16.18.106):
+ dependencies:
+ '@astrojs/compiler': 0.31.4
+ '@astrojs/language-server': 0.28.3
+ '@astrojs/markdown-remark': 1.2.0
+ '@astrojs/telemetry': 1.0.1
+ '@astrojs/webapi': 1.1.1
+ '@babel/core': 7.25.2
+ '@babel/generator': 7.25.6
+ '@babel/parser': 7.25.6
+ '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2)
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
+ '@proload/core': 0.3.3
+ '@proload/plugin-tsm': 0.2.1(@proload/core@0.3.3)
+ '@types/babel__core': 7.20.5
+ '@types/html-escaper': 3.0.2
+ '@types/yargs-parser': 21.0.3
+ acorn: 8.12.1
+ boxen: 6.2.1
+ ci-info: 3.9.0
+ common-ancestor-path: 1.0.1
+ cookie: 0.5.0
+ debug: 4.3.6
+ deepmerge-ts: 4.3.0
+ devalue: 4.3.3
+ diff: 5.2.0
+ es-module-lexer: 1.5.4
+ estree-walker: 3.0.3
+ execa: 6.1.0
+ fast-glob: 3.3.2
+ github-slugger: 2.0.0
+ gray-matter: 4.0.3
+ html-entities: 2.5.2
+ html-escaper: 3.0.3
+ import-meta-resolve: 2.2.2
+ kleur: 4.1.5
+ magic-string: 0.27.0
+ mime: 3.0.0
+ ora: 6.3.1
+ path-browserify: 1.0.1
+ path-to-regexp: 6.2.2
+ postcss: 8.4.44
+ postcss-load-config: 3.1.4(postcss@8.4.44)
+ preferred-pm: 3.1.4
+ prompts: 2.4.2
+ recast: 0.20.5
+ rehype: 12.0.1
+ resolve: 1.22.8
+ rollup: 2.79.1
+ semver: 7.6.3
+ shiki: 0.11.1
+ sirv: 2.0.4
+ slash: 4.0.0
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+ supports-esm: 1.0.0
+ tsconfig-resolver: 3.0.1
+ typescript: 5.5.4
+ unist-util-visit: 4.1.2
+ vfile: 5.3.7
+ vite: 3.2.10(@types/node@16.18.106)
+ vitefu: 0.2.5(vite@3.2.10(@types/node@16.18.106))
+ yargs-parser: 21.1.1
+ zod: 3.23.8
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - ts-node
+
+ astro@2.10.15(@types/node@16.18.106):
+ dependencies:
+ '@astrojs/compiler': 1.8.2
+ '@astrojs/internal-helpers': 0.1.2
+ '@astrojs/language-server': 1.0.8
+ '@astrojs/markdown-remark': 2.2.1(astro@2.10.15(@types/node@16.18.106))
+ '@astrojs/telemetry': 2.1.1
+ '@astrojs/webapi': 2.2.0
+ '@babel/core': 7.25.2
+ '@babel/generator': 7.25.6
+ '@babel/parser': 7.25.6
+ '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2)
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
+ '@types/babel__core': 7.20.5
+ '@types/dom-view-transitions': 1.0.5
+ '@types/yargs-parser': 21.0.3
+ acorn: 8.12.1
+ boxen: 6.2.1
+ chokidar: 3.6.0
+ ci-info: 3.9.0
+ common-ancestor-path: 1.0.1
+ cookie: 0.5.0
+ debug: 4.3.6
+ devalue: 4.3.3
+ diff: 5.2.0
+ es-module-lexer: 1.5.4
+ esbuild: 0.17.19
+ estree-walker: 3.0.0
+ execa: 6.1.0
+ fast-glob: 3.3.2
+ github-slugger: 2.0.0
+ gray-matter: 4.0.3
+ html-escaper: 3.0.3
+ http-cache-semantics: 4.1.1
+ js-yaml: 4.1.0
+ kleur: 4.1.5
+ magic-string: 0.30.11
+ mime: 3.0.0
+ network-information-types: 0.1.1(typescript@5.5.4)
+ ora: 6.3.1
+ p-limit: 4.0.0
+ path-to-regexp: 6.2.2
+ preferred-pm: 3.1.4
+ prompts: 2.4.2
+ rehype: 12.0.1
+ semver: 7.6.3
+ server-destroy: 1.0.1
+ shiki: 0.14.7
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+ tsconfig-resolver: 3.0.1
+ typescript: 5.5.4
+ unist-util-visit: 4.1.2
+ vfile: 5.3.7
+ vite: 4.5.3(@types/node@16.18.106)
+ vitefu: 0.2.5(vite@4.5.3(@types/node@16.18.106))
+ which-pm: 2.2.0
+ yargs-parser: 21.1.1
+ zod: 3.23.8
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - lightningcss
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ babel-plugin-jsx-dom-expressions@0.38.5(@babel/core@7.25.2):
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2)
+ '@babel/types': 7.25.6
+ html-entities: 2.3.3
+ validate-html-nesting: 1.2.2
+
+ babel-plugin-module-resolver@5.0.2:
+ dependencies:
+ find-babel-config: 2.1.2
+ glob: 9.3.5
+ pkg-up: 3.1.0
+ reselect: 4.1.8
+ resolve: 1.22.8
+
+ babel-preset-solid@1.8.22(@babel/core@7.25.2):
+ dependencies:
+ '@babel/core': 7.25.2
+ babel-plugin-jsx-dom-expressions: 0.38.5(@babel/core@7.25.2)
+
+ bail@2.0.2: {}
+
+ balanced-match@1.0.2: {}
+
+ base64-js@1.5.1: {}
+
+ big-integer@1.6.52: {}
+
+ binary-extensions@2.3.0: {}
+
+ bl@4.1.0:
+ dependencies:
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ optional: true
+
+ bl@5.1.0:
+ dependencies:
+ buffer: 6.0.3
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
+ bmp-js@0.1.0: {}
+
+ boolean@3.2.0: {}
+
+ boxen@6.2.1:
+ dependencies:
+ ansi-align: 3.0.1
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ cli-boxes: 3.0.0
+ string-width: 5.1.2
+ type-fest: 2.19.0
+ widest-line: 4.0.1
+ wrap-ansi: 8.1.0
+
+ bplist-parser@0.2.0:
+ dependencies:
+ big-integer: 1.6.52
+
+ brace-expansion@1.1.11:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@2.0.1:
+ dependencies:
+ balanced-match: 1.0.2
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browserslist@4.23.3:
+ dependencies:
+ caniuse-lite: 1.0.30001655
+ electron-to-chromium: 1.5.13
+ node-releases: 2.0.18
+ update-browserslist-db: 1.1.0(browserslist@4.23.3)
+
+ buffer-equal@0.0.1: {}
+
+ buffer@5.7.1:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ buffer@6.0.3:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ builtin-modules@3.3.0: {}
+
+ bundle-name@3.0.0:
+ dependencies:
+ run-applescript: 5.0.0
+
+ callsites@3.1.0: {}
+
+ camelcase@6.3.0: {}
+
+ caniuse-lite@1.0.30001655: {}
+
+ ccount@2.0.1: {}
+
+ centra@2.7.0:
+ dependencies:
+ follow-redirects: 1.15.6
+ transitivePeerDependencies:
+ - debug
+
+ chai@4.5.0:
+ dependencies:
+ assertion-error: 1.1.0
+ check-error: 1.0.3
+ deep-eql: 4.1.4
+ get-func-name: 2.0.2
+ loupe: 2.3.7
+ pathval: 1.1.1
+ type-detect: 4.1.0
+
+ chalk@2.4.2:
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ chalk@5.3.0: {}
+
+ character-entities-html4@2.1.0: {}
+
+ character-entities-legacy@3.0.0: {}
+
+ character-entities@2.0.2: {}
+
+ character-reference-invalid@2.0.1: {}
+
+ check-error@1.0.3:
+ dependencies:
+ get-func-name: 2.0.2
+
+ chokidar@3.6.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ chownr@1.1.4:
+ optional: true
+
+ ci-info@3.9.0: {}
+
+ clean-regexp@1.0.0:
+ dependencies:
+ escape-string-regexp: 1.0.5
+
+ cli-boxes@3.0.0: {}
+
+ cli-cursor@4.0.0:
+ dependencies:
+ restore-cursor: 4.0.0
+
+ cli-spinners@2.9.2: {}
+
+ clone@1.0.4: {}
+
+ color-convert@1.9.3:
+ dependencies:
+ color-name: 1.1.3
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.3: {}
+
+ color-name@1.1.4: {}
+
+ color-string@1.9.1:
+ dependencies:
+ color-name: 1.1.4
+ simple-swizzle: 0.2.2
+ optional: true
+
+ color@4.2.3:
+ dependencies:
+ color-convert: 2.0.1
+ color-string: 1.9.1
+ optional: true
+
+ comma-separated-tokens@2.0.3: {}
+
+ common-ancestor-path@1.0.1: {}
+
+ commondir@1.0.1: {}
+
+ concat-map@0.0.1: {}
+
+ confbox@0.1.7: {}
+
+ convert-source-map@2.0.0: {}
+
+ cookie@0.5.0: {}
+
+ cross-spawn@7.0.3:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ csstype@3.1.3: {}
+
+ data-uri-to-buffer@4.0.1: {}
+
+ debug@4.3.6:
+ dependencies:
+ ms: 2.1.2
+
+ decode-named-character-reference@1.0.2:
+ dependencies:
+ character-entities: 2.0.2
+
+ decompress-response@6.0.0:
+ dependencies:
+ mimic-response: 3.1.0
+ optional: true
+
+ dedent-js@1.0.1: {}
+
+ deep-eql@4.1.4:
+ dependencies:
+ type-detect: 4.1.0
+
+ deep-extend@0.6.0:
+ optional: true
+
+ deep-is@0.1.4: {}
+
+ deepmerge-ts@4.3.0: {}
+
+ deepmerge@4.3.1: {}
+
+ default-browser-id@3.0.0:
+ dependencies:
+ bplist-parser: 0.2.0
+ untildify: 4.0.0
+
+ default-browser@4.0.0:
+ dependencies:
+ bundle-name: 3.0.0
+ default-browser-id: 3.0.0
+ execa: 7.2.0
+ titleize: 3.0.0
+
+ defaults@1.0.4:
+ dependencies:
+ clone: 1.0.4
+
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ gopd: 1.0.1
+
+ define-lazy-prop@3.0.0: {}
+
+ define-properties@1.2.1:
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+
+ dequal@2.0.3: {}
+
+ detect-libc@1.0.3:
+ optional: true
+
+ detect-libc@2.0.3:
+ optional: true
+
+ detect-node@2.1.0: {}
+
+ devalue@4.3.3: {}
+
+ diff@5.2.0: {}
+
+ dlv@1.1.3: {}
+
+ doctrine@3.0.0:
+ dependencies:
+ esutils: 2.0.3
+
+ dom-walk@0.1.2: {}
+
+ dset@3.1.3: {}
+
+ eastasianwidth@0.2.0: {}
+
+ electron-to-chromium@1.5.13: {}
+
+ emmet@2.4.7:
+ dependencies:
+ '@emmetio/abbreviation': 2.3.3
+ '@emmetio/css-abbreviation': 2.1.8
+
+ emoji-regex@8.0.0: {}
+
+ emoji-regex@9.2.2: {}
+
+ end-of-stream@1.4.4:
+ dependencies:
+ once: 1.4.0
+ optional: true
+
+ enhanced-resolve@5.17.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+
+ entities@4.5.0: {}
+
+ error-ex@1.3.2:
+ dependencies:
+ is-arrayish: 0.2.1
+
+ es-define-property@1.0.0:
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ es-errors@1.3.0: {}
+
+ es-module-lexer@0.10.5: {}
+
+ es-module-lexer@1.5.4: {}
+
+ es6-error@4.1.1: {}
+
+ esbuild-android-64@0.14.54:
+ optional: true
+
+ esbuild-android-64@0.15.18:
+ optional: true
+
+ esbuild-android-arm64@0.14.54:
+ optional: true
+
+ esbuild-android-arm64@0.15.18:
+ optional: true
+
+ esbuild-darwin-64@0.14.54:
+ optional: true
+
+ esbuild-darwin-64@0.15.18:
+ optional: true
+
+ esbuild-darwin-arm64@0.14.54:
+ optional: true
+
+ esbuild-darwin-arm64@0.15.18:
+ optional: true
+
+ esbuild-freebsd-64@0.14.54:
+ optional: true
+
+ esbuild-freebsd-64@0.15.18:
+ optional: true
+
+ esbuild-freebsd-arm64@0.14.54:
+ optional: true
+
+ esbuild-freebsd-arm64@0.15.18:
+ optional: true
+
+ esbuild-linux-32@0.14.54:
+ optional: true
+
+ esbuild-linux-32@0.15.18:
+ optional: true
+
+ esbuild-linux-64@0.14.54:
+ optional: true
+
+ esbuild-linux-64@0.15.18:
+ optional: true
+
+ esbuild-linux-arm64@0.14.54:
+ optional: true
+
+ esbuild-linux-arm64@0.15.18:
+ optional: true
+
+ esbuild-linux-arm@0.14.54:
+ optional: true
+
+ esbuild-linux-arm@0.15.18:
+ optional: true
+
+ esbuild-linux-mips64le@0.14.54:
+ optional: true
+
+ esbuild-linux-mips64le@0.15.18:
+ optional: true
+
+ esbuild-linux-ppc64le@0.14.54:
+ optional: true
+
+ esbuild-linux-ppc64le@0.15.18:
+ optional: true
+
+ esbuild-linux-riscv64@0.14.54:
+ optional: true
+
+ esbuild-linux-riscv64@0.15.18:
+ optional: true
+
+ esbuild-linux-s390x@0.14.54:
+ optional: true
+
+ esbuild-linux-s390x@0.15.18:
+ optional: true
+
+ esbuild-netbsd-64@0.14.54:
+ optional: true
+
+ esbuild-netbsd-64@0.15.18:
+ optional: true
+
+ esbuild-openbsd-64@0.14.54:
+ optional: true
+
+ esbuild-openbsd-64@0.15.18:
+ optional: true
+
+ esbuild-sunos-64@0.14.54:
+ optional: true
+
+ esbuild-sunos-64@0.15.18:
+ optional: true
+
+ esbuild-windows-32@0.14.54:
+ optional: true
+
+ esbuild-windows-32@0.15.18:
+ optional: true
+
+ esbuild-windows-64@0.14.54:
+ optional: true
+
+ esbuild-windows-64@0.15.18:
+ optional: true
+
+ esbuild-windows-arm64@0.14.54:
+ optional: true
+
+ esbuild-windows-arm64@0.15.18:
+ optional: true
+
+ esbuild@0.14.54:
+ optionalDependencies:
+ '@esbuild/linux-loong64': 0.14.54
+ esbuild-android-64: 0.14.54
+ esbuild-android-arm64: 0.14.54
+ esbuild-darwin-64: 0.14.54
+ esbuild-darwin-arm64: 0.14.54
+ esbuild-freebsd-64: 0.14.54
+ esbuild-freebsd-arm64: 0.14.54
+ esbuild-linux-32: 0.14.54
+ esbuild-linux-64: 0.14.54
+ esbuild-linux-arm: 0.14.54
+ esbuild-linux-arm64: 0.14.54
+ esbuild-linux-mips64le: 0.14.54
+ esbuild-linux-ppc64le: 0.14.54
+ esbuild-linux-riscv64: 0.14.54
+ esbuild-linux-s390x: 0.14.54
+ esbuild-netbsd-64: 0.14.54
+ esbuild-openbsd-64: 0.14.54
+ esbuild-sunos-64: 0.14.54
+ esbuild-windows-32: 0.14.54
+ esbuild-windows-64: 0.14.54
+ esbuild-windows-arm64: 0.14.54
+
+ esbuild@0.15.18:
+ optionalDependencies:
+ '@esbuild/android-arm': 0.15.18
+ '@esbuild/linux-loong64': 0.15.18
+ esbuild-android-64: 0.15.18
+ esbuild-android-arm64: 0.15.18
+ esbuild-darwin-64: 0.15.18
+ esbuild-darwin-arm64: 0.15.18
+ esbuild-freebsd-64: 0.15.18
+ esbuild-freebsd-arm64: 0.15.18
+ esbuild-linux-32: 0.15.18
+ esbuild-linux-64: 0.15.18
+ esbuild-linux-arm: 0.15.18
+ esbuild-linux-arm64: 0.15.18
+ esbuild-linux-mips64le: 0.15.18
+ esbuild-linux-ppc64le: 0.15.18
+ esbuild-linux-riscv64: 0.15.18
+ esbuild-linux-s390x: 0.15.18
+ esbuild-netbsd-64: 0.15.18
+ esbuild-openbsd-64: 0.15.18
+ esbuild-sunos-64: 0.15.18
+ esbuild-windows-32: 0.15.18
+ esbuild-windows-64: 0.15.18
+ esbuild-windows-arm64: 0.15.18
+
+ esbuild@0.17.19:
+ optionalDependencies:
+ '@esbuild/android-arm': 0.17.19
+ '@esbuild/android-arm64': 0.17.19
+ '@esbuild/android-x64': 0.17.19
+ '@esbuild/darwin-arm64': 0.17.19
+ '@esbuild/darwin-x64': 0.17.19
+ '@esbuild/freebsd-arm64': 0.17.19
+ '@esbuild/freebsd-x64': 0.17.19
+ '@esbuild/linux-arm': 0.17.19
+ '@esbuild/linux-arm64': 0.17.19
+ '@esbuild/linux-ia32': 0.17.19
+ '@esbuild/linux-loong64': 0.17.19
+ '@esbuild/linux-mips64el': 0.17.19
+ '@esbuild/linux-ppc64': 0.17.19
+ '@esbuild/linux-riscv64': 0.17.19
+ '@esbuild/linux-s390x': 0.17.19
+ '@esbuild/linux-x64': 0.17.19
+ '@esbuild/netbsd-x64': 0.17.19
+ '@esbuild/openbsd-x64': 0.17.19
+ '@esbuild/sunos-x64': 0.17.19
+ '@esbuild/win32-arm64': 0.17.19
+ '@esbuild/win32-ia32': 0.17.19
+ '@esbuild/win32-x64': 0.17.19
+
+ esbuild@0.18.20:
+ optionalDependencies:
+ '@esbuild/android-arm': 0.18.20
+ '@esbuild/android-arm64': 0.18.20
+ '@esbuild/android-x64': 0.18.20
+ '@esbuild/darwin-arm64': 0.18.20
+ '@esbuild/darwin-x64': 0.18.20
+ '@esbuild/freebsd-arm64': 0.18.20
+ '@esbuild/freebsd-x64': 0.18.20
+ '@esbuild/linux-arm': 0.18.20
+ '@esbuild/linux-arm64': 0.18.20
+ '@esbuild/linux-ia32': 0.18.20
+ '@esbuild/linux-loong64': 0.18.20
+ '@esbuild/linux-mips64el': 0.18.20
+ '@esbuild/linux-ppc64': 0.18.20
+ '@esbuild/linux-riscv64': 0.18.20
+ '@esbuild/linux-s390x': 0.18.20
+ '@esbuild/linux-x64': 0.18.20
+ '@esbuild/netbsd-x64': 0.18.20
+ '@esbuild/openbsd-x64': 0.18.20
+ '@esbuild/sunos-x64': 0.18.20
+ '@esbuild/win32-arm64': 0.18.20
+ '@esbuild/win32-ia32': 0.18.20
+ '@esbuild/win32-x64': 0.18.20
+
+ escalade@3.2.0: {}
+
+ escape-string-regexp@1.0.5: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ escape-string-regexp@5.0.0: {}
+
+ eslint-plugin-unicorn@42.0.0(eslint@8.57.0):
+ dependencies:
+ '@babel/helper-validator-identifier': 7.24.7
+ ci-info: 3.9.0
+ clean-regexp: 1.0.0
+ eslint: 8.57.0
+ eslint-utils: 3.0.0(eslint@8.57.0)
+ esquery: 1.6.0
+ indent-string: 4.0.0
+ is-builtin-module: 3.2.1
+ lodash: 4.17.21
+ pluralize: 8.0.0
+ read-pkg-up: 7.0.1
+ regexp-tree: 0.1.27
+ safe-regex: 2.1.1
+ semver: 7.6.3
+ strip-indent: 3.0.0
+
+ eslint-scope@7.2.2:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-utils@3.0.0(eslint@8.57.0):
+ dependencies:
+ eslint: 8.57.0
+ eslint-visitor-keys: 2.1.0
+
+ eslint-visitor-keys@2.1.0: {}
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint@8.57.0:
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+ '@eslint-community/regexpp': 4.11.0
+ '@eslint/eslintrc': 2.1.4
+ '@eslint/js': 8.57.0
+ '@humanwhocodes/config-array': 0.11.14
+ '@humanwhocodes/module-importer': 1.0.1
+ '@nodelib/fs.walk': 1.2.8
+ '@ungap/structured-clone': 1.2.0
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.3
+ debug: 4.3.6
+ doctrine: 3.0.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 7.2.2
+ eslint-visitor-keys: 3.4.3
+ espree: 9.6.1
+ esquery: 1.6.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ globals: 13.24.0
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ is-path-inside: 3.0.3
+ js-yaml: 4.1.0
+ json-stable-stringify-without-jsonify: 1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ strip-ansi: 6.0.1
+ text-table: 0.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ espree@9.6.1:
+ dependencies:
+ acorn: 8.12.1
+ acorn-jsx: 5.3.2(acorn@8.12.1)
+ eslint-visitor-keys: 3.4.3
+
+ esprima@4.0.1: {}
+
+ esquery@1.6.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@5.3.0: {}
+
+ estree-util-attach-comments@2.1.1:
+ dependencies:
+ '@types/estree': 1.0.5
+
+ estree-util-build-jsx@2.2.2:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ estree-util-is-identifier-name: 2.1.0
+ estree-walker: 3.0.3
+
+ estree-util-is-identifier-name@2.1.0: {}
+
+ estree-util-to-js@1.2.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ astring: 1.9.0
+ source-map: 0.7.4
+
+ estree-util-visit@1.2.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/unist': 2.0.11
+
+ estree-walker@2.0.2: {}
+
+ estree-walker@3.0.0: {}
+
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.5
+
+ esutils@2.0.3: {}
+
+ events@3.3.0: {}
+
+ execa@5.1.1:
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+
+ execa@6.1.0:
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 3.0.1
+ is-stream: 3.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 5.3.0
+ onetime: 6.0.0
+ signal-exit: 3.0.7
+ strip-final-newline: 3.0.0
+
+ execa@7.2.0:
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 4.3.1
+ is-stream: 3.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 5.3.0
+ onetime: 6.0.0
+ signal-exit: 3.0.7
+ strip-final-newline: 3.0.0
+
+ exif-parser@0.1.12: {}
+
+ expand-template@2.0.3:
+ optional: true
+
+ extend-shallow@2.0.1:
+ dependencies:
+ is-extendable: 0.1.1
+
+ extend@3.0.2: {}
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-glob@3.3.2:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fastq@1.17.1:
+ dependencies:
+ reusify: 1.0.4
+
+ fault@2.0.1:
+ dependencies:
+ format: 0.2.2
+
+ fetch-blob@3.2.0:
+ dependencies:
+ node-domexception: 1.0.0
+ web-streams-polyfill: 3.3.3
+
+ file-entry-cache@6.0.1:
+ dependencies:
+ flat-cache: 3.2.0
+
+ file-type@17.1.1:
+ dependencies:
+ readable-web-to-node-stream: 3.0.2
+ strtok3: 7.1.1
+ token-types: 5.0.1
+
+ file-type@9.0.0: {}
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ find-babel-config@2.1.2:
+ dependencies:
+ json5: 2.2.3
+
+ find-cache-dir@3.3.2:
+ dependencies:
+ commondir: 1.0.1
+ make-dir: 3.1.0
+ pkg-dir: 4.2.0
+
+ find-up@3.0.0:
+ dependencies:
+ locate-path: 3.0.0
+
+ find-up@4.1.0:
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ find-up@6.3.0:
+ dependencies:
+ locate-path: 7.2.0
+ path-exists: 5.0.0
+
+ find-yarn-workspace-root2@1.2.16:
+ dependencies:
+ micromatch: 4.0.8
+ pkg-dir: 4.2.0
+
+ flat-cache@3.2.0:
+ dependencies:
+ flatted: 3.3.1
+ keyv: 4.5.4
+ rimraf: 3.0.2
+
+ flatted@3.3.1: {}
+
+ follow-redirects@1.15.6: {}
+
+ format@0.2.2: {}
+
+ formdata-polyfill@4.0.10:
+ dependencies:
+ fetch-blob: 3.2.0
+
+ fs-constants@1.0.0:
+ optional: true
+
+ fs.realpath@1.0.0: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ gensync@1.0.0-beta.2: {}
+
+ get-func-name@2.0.2: {}
+
+ get-intrinsic@1.2.4:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ hasown: 2.0.2
+
+ get-stream@6.0.1: {}
+
+ gifwrap@0.9.4:
+ dependencies:
+ image-q: 4.0.0
+ omggif: 1.0.10
+
+ github-from-package@0.0.0:
+ optional: true
+
+ github-slugger@1.5.0: {}
+
+ github-slugger@2.0.0: {}
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob@7.2.3:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ glob@9.3.5:
+ dependencies:
+ fs.realpath: 1.0.0
+ minimatch: 8.0.4
+ minipass: 4.2.8
+ path-scurry: 1.11.1
+
+ global-agent@3.0.0:
+ dependencies:
+ boolean: 3.2.0
+ es6-error: 4.1.1
+ matcher: 3.0.0
+ roarr: 2.15.4
+ semver: 7.6.3
+ serialize-error: 7.0.1
+
+ global@4.4.0:
+ dependencies:
+ min-document: 2.19.0
+ process: 0.11.10
+
+ globals@11.12.0: {}
+
+ globals@13.24.0:
+ dependencies:
+ type-fest: 0.20.2
+
+ globalthis@1.0.4:
+ dependencies:
+ define-properties: 1.2.1
+ gopd: 1.0.1
+
+ gopd@1.0.1:
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ graceful-fs@4.2.11: {}
+
+ graphemer@1.4.0: {}
+
+ gray-matter@4.0.3:
+ dependencies:
+ js-yaml: 3.14.1
+ kind-of: 6.0.3
+ section-matter: 1.0.0
+ strip-bom-string: 1.0.0
+
+ has-flag@3.0.0: {}
+
+ has-flag@4.0.0: {}
+
+ has-package-exports@1.3.0:
+ dependencies:
+ '@ljharb/has-package-exports-patterns': 0.0.2
+
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.0
+
+ has-proto@1.0.3: {}
+
+ has-symbols@1.0.3: {}
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ hast-util-from-parse5@7.1.2:
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/unist': 2.0.11
+ hastscript: 7.2.0
+ property-information: 6.5.0
+ vfile: 5.3.7
+ vfile-location: 4.1.0
+ web-namespaces: 2.0.1
+
+ hast-util-parse-selector@3.1.1:
+ dependencies:
+ '@types/hast': 2.3.10
+
+ hast-util-raw@7.2.3:
+ 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
+
+ hast-util-to-estree@2.3.3:
+ dependencies:
+ '@types/estree': 1.0.5
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 2.3.10
+ '@types/unist': 2.0.11
+ comma-separated-tokens: 2.0.3
+ estree-util-attach-comments: 2.1.1
+ estree-util-is-identifier-name: 2.1.0
+ hast-util-whitespace: 2.0.1
+ mdast-util-mdx-expression: 1.3.2
+ mdast-util-mdxjs-esm: 1.3.1
+ property-information: 6.5.0
+ space-separated-tokens: 2.0.2
+ style-to-object: 0.4.4
+ unist-util-position: 4.0.4
+ zwitch: 2.0.4
+ transitivePeerDependencies:
+ - supports-color
+
+ hast-util-to-html@8.0.4:
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/unist': 2.0.11
+ 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.5.0
+ space-separated-tokens: 2.0.2
+ stringify-entities: 4.0.4
+ zwitch: 2.0.4
+
+ hast-util-to-parse5@7.1.0:
+ dependencies:
+ '@types/hast': 2.3.10
+ comma-separated-tokens: 2.0.3
+ property-information: 6.5.0
+ space-separated-tokens: 2.0.2
+ web-namespaces: 2.0.1
+ zwitch: 2.0.4
+
+ hast-util-whitespace@2.0.1: {}
+
+ hastscript@7.2.0:
+ dependencies:
+ '@types/hast': 2.3.10
+ comma-separated-tokens: 2.0.3
+ hast-util-parse-selector: 3.1.1
+ property-information: 6.5.0
+ space-separated-tokens: 2.0.2
+
+ hosted-git-info@2.8.9: {}
+
+ html-entities@2.3.3: {}
+
+ html-entities@2.5.2: {}
+
+ html-escaper@3.0.3: {}
+
+ html-tags@3.3.1: {}
+
+ html-void-elements@2.0.1: {}
+
+ http-cache-semantics@4.1.1: {}
+
+ human-signals@2.1.0: {}
+
+ human-signals@3.0.1: {}
+
+ human-signals@4.3.1: {}
+
+ ieee754@1.2.1: {}
+
+ ignore@5.3.2: {}
+
+ image-q@4.0.0:
+ dependencies:
+ '@types/node': 16.9.1
+
+ imagetools-core@3.0.2:
+ dependencies:
+ sharp: 0.29.3
+ optional: true
+
+ import-fresh@3.3.0:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ import-meta-resolve@2.2.2: {}
+
+ imurmurhash@0.1.4: {}
+
+ indent-string@4.0.0: {}
+
+ inflight@1.0.6:
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ inherits@2.0.4: {}
+
+ ini@1.3.8:
+ optional: true
+
+ inline-style-parser@0.1.1: {}
+
+ is-alphabetical@2.0.1: {}
+
+ is-alphanumerical@2.0.1:
+ dependencies:
+ is-alphabetical: 2.0.1
+ is-decimal: 2.0.1
+
+ is-arrayish@0.2.1: {}
+
+ is-arrayish@0.3.2:
+ optional: true
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
+ is-buffer@2.0.5: {}
+
+ is-builtin-module@3.2.1:
+ dependencies:
+ builtin-modules: 3.3.0
+
+ is-core-module@2.15.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-decimal@2.0.1: {}
+
+ is-docker@2.2.1: {}
+
+ is-docker@3.0.0: {}
+
+ is-extendable@0.1.1: {}
+
+ is-extglob@2.1.1: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-function@1.0.2: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-hexadecimal@2.0.1: {}
+
+ is-inside-container@1.0.0:
+ dependencies:
+ is-docker: 3.0.0
+
+ is-interactive@2.0.0: {}
+
+ is-number@7.0.0: {}
+
+ is-path-inside@3.0.3: {}
+
+ is-plain-obj@4.1.0: {}
+
+ is-reference@3.0.2:
+ dependencies:
+ '@types/estree': 1.0.5
+
+ is-stream@2.0.1: {}
+
+ is-stream@3.0.0: {}
+
+ is-unicode-supported@1.3.0: {}
+
+ is-wsl@2.2.0:
+ dependencies:
+ is-docker: 2.2.1
+
+ isexe@2.0.0: {}
+
+ jimp@0.14.0:
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@jimp/custom': 0.14.0
+ '@jimp/plugins': 0.14.0(@jimp/custom@0.14.0)
+ '@jimp/types': 0.14.0(@jimp/custom@0.14.0)
+ regenerator-runtime: 0.13.11
+ transitivePeerDependencies:
+ - debug
+
+ jpeg-js@0.4.4: {}
+
+ js-tokens@4.0.0: {}
+
+ js-yaml@3.14.1:
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+
+ js-yaml@4.1.0:
+ dependencies:
+ argparse: 2.0.1
+
+ jsesc@2.5.2: {}
+
+ json-buffer@3.0.1: {}
+
+ json-parse-even-better-errors@2.3.1: {}
+
+ json-schema-traverse@0.4.1: {}
+
+ json-stable-stringify-without-jsonify@1.0.1: {}
+
+ json-stringify-safe@5.0.1: {}
+
+ json5@2.2.3: {}
+
+ jsonc-parser@2.3.1: {}
+
+ jsonc-parser@3.3.1: {}
+
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
+
+ kind-of@6.0.3: {}
+
+ kleur@3.0.3: {}
+
+ kleur@4.1.5: {}
+
+ levn@0.4.1:
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ lilconfig@2.1.0: {}
+
+ lines-and-columns@1.2.4: {}
+
+ lit-element@3.3.3:
+ dependencies:
+ '@lit-labs/ssr-dom-shim': 1.2.1
+ '@lit/reactive-element': 1.6.3
+ lit-html: 2.8.0
+
+ lit-element@4.1.0:
+ dependencies:
+ '@lit-labs/ssr-dom-shim': 1.2.1
+ '@lit/reactive-element': 2.0.4
+ lit-html: 3.2.0
+
+ lit-html@2.8.0:
+ dependencies:
+ '@types/trusted-types': 2.0.7
+
+ lit-html@3.2.0:
+ dependencies:
+ '@types/trusted-types': 2.0.7
+
+ lit@2.8.0:
+ dependencies:
+ '@lit/reactive-element': 1.6.3
+ lit-element: 3.3.3
+ lit-html: 2.8.0
+
+ lit@3.2.0:
+ dependencies:
+ '@lit/reactive-element': 2.0.4
+ lit-element: 4.1.0
+ lit-html: 3.2.0
+
+ load-bmfont@1.4.2:
+ dependencies:
+ buffer-equal: 0.0.1
+ mime: 1.6.0
+ parse-bmfont-ascii: 1.0.6
+ parse-bmfont-binary: 1.0.6
+ parse-bmfont-xml: 1.1.6
+ phin: 3.7.1
+ xhr: 2.6.0
+ xtend: 4.0.2
+ transitivePeerDependencies:
+ - debug
+
+ load-yaml-file@0.2.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ js-yaml: 3.14.1
+ pify: 4.0.1
+ strip-bom: 3.0.0
+
+ local-pkg@0.4.3: {}
+
+ locate-path@3.0.0:
+ dependencies:
+ p-locate: 3.0.0
+ path-exists: 3.0.0
+
+ locate-path@5.0.0:
+ dependencies:
+ p-locate: 4.1.0
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ locate-path@7.2.0:
+ dependencies:
+ p-locate: 6.0.0
+
+ lodash.merge@4.6.2: {}
+
+ lodash@4.17.21: {}
+
+ log-symbols@5.1.0:
+ dependencies:
+ chalk: 5.3.0
+ is-unicode-supported: 1.3.0
+
+ longest-streak@3.1.0: {}
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ loupe@2.3.7:
+ dependencies:
+ get-func-name: 2.0.2
+
+ lower-case@2.0.2:
+ dependencies:
+ tslib: 2.7.0
+
+ lru-cache@10.4.3: {}
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ magic-string@0.26.7:
+ dependencies:
+ sourcemap-codec: 1.4.8
+
+ magic-string@0.27.0:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ magic-string@0.30.11:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ make-dir@3.1.0:
+ dependencies:
+ semver: 6.3.1
+
+ markdown-extensions@1.1.1: {}
+
+ markdown-table@3.0.3: {}
+
+ matcher@3.0.0:
+ dependencies:
+ escape-string-regexp: 4.0.0
+
+ mdast-util-definitions@5.1.2:
+ dependencies:
+ '@types/mdast': 3.0.15
+ '@types/unist': 2.0.11
+ unist-util-visit: 4.1.2
+
+ mdast-util-find-and-replace@2.2.2:
+ dependencies:
+ '@types/mdast': 3.0.15
+ escape-string-regexp: 5.0.0
+ unist-util-is: 5.2.1
+ unist-util-visit-parents: 5.1.3
+
+ mdast-util-from-markdown@1.3.1:
+ dependencies:
+ '@types/mdast': 3.0.15
+ '@types/unist': 2.0.11
+ decode-named-character-reference: 1.0.2
+ mdast-util-to-string: 3.2.0
+ micromark: 3.2.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-decode-string: 1.1.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ unist-util-stringify-position: 3.0.3
+ uvu: 0.5.6
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-frontmatter@1.0.1:
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ micromark-extension-frontmatter: 1.1.1
+
+ mdast-util-gfm-autolink-literal@1.0.3:
+ dependencies:
+ '@types/mdast': 3.0.15
+ ccount: 2.0.1
+ mdast-util-find-and-replace: 2.2.2
+ micromark-util-character: 1.2.0
+
+ mdast-util-gfm-footnote@1.0.2:
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ micromark-util-normalize-identifier: 1.1.0
+
+ mdast-util-gfm-strikethrough@1.0.3:
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+
+ mdast-util-gfm-table@1.0.7:
+ dependencies:
+ '@types/mdast': 3.0.15
+ markdown-table: 3.0.3
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-task-list-item@1.0.2:
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+
+ mdast-util-gfm@2.0.2:
+ dependencies:
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-gfm-autolink-literal: 1.0.3
+ mdast-util-gfm-footnote: 1.0.2
+ mdast-util-gfm-strikethrough: 1.0.3
+ mdast-util-gfm-table: 1.0.7
+ mdast-util-gfm-task-list-item: 1.0.2
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-expression@1.3.2:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 2.3.10
+ '@types/mdast': 3.0.15
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-jsx@1.2.0:
+ dependencies:
+ '@types/estree-jsx': 0.0.1
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ parse-entities: 4.0.1
+ stringify-entities: 4.0.4
+ unist-util-remove-position: 4.0.2
+ unist-util-stringify-position: 3.0.3
+ vfile-message: 3.1.4
+
+ mdast-util-mdx-jsx@2.1.4:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 2.3.10
+ '@types/mdast': 3.0.15
+ '@types/unist': 2.0.11
+ ccount: 2.0.1
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-to-markdown: 1.5.0
+ parse-entities: 4.0.1
+ stringify-entities: 4.0.4
+ unist-util-remove-position: 4.0.2
+ unist-util-stringify-position: 3.0.3
+ vfile-message: 3.1.4
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx@2.0.1:
+ dependencies:
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-mdx-expression: 1.3.2
+ mdast-util-mdx-jsx: 2.1.4
+ mdast-util-mdxjs-esm: 1.3.1
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdxjs-esm@1.3.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 2.3.10
+ '@types/mdast': 3.0.15
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-phrasing@3.0.1:
+ dependencies:
+ '@types/mdast': 3.0.15
+ unist-util-is: 5.2.1
+
+ mdast-util-to-hast@12.3.0:
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/mdast': 3.0.15
+ mdast-util-definitions: 5.1.2
+ micromark-util-sanitize-uri: 1.2.0
+ trim-lines: 3.0.1
+ unist-util-generated: 2.0.1
+ unist-util-position: 4.0.4
+ unist-util-visit: 4.1.2
+
+ mdast-util-to-markdown@1.5.0:
+ dependencies:
+ '@types/mdast': 3.0.15
+ '@types/unist': 2.0.11
+ longest-streak: 3.1.0
+ mdast-util-phrasing: 3.0.1
+ mdast-util-to-string: 3.2.0
+ micromark-util-decode-string: 1.1.0
+ unist-util-visit: 4.1.2
+ zwitch: 2.0.4
+
+ mdast-util-to-string@3.2.0:
+ dependencies:
+ '@types/mdast': 3.0.15
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ micromark-core-commonmark@1.1.0:
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-factory-destination: 1.1.0
+ micromark-factory-label: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-factory-title: 1.1.0
+ micromark-factory-whitespace: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-chunked: 1.1.0
+ micromark-util-classify-character: 1.1.0
+ micromark-util-html-tag-name: 1.2.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-subtokenize: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+
+ micromark-extension-frontmatter@1.1.1:
+ dependencies:
+ fault: 2.0.1
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+
+ micromark-extension-gfm-autolink-literal@1.0.5:
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+
+ micromark-extension-gfm-footnote@1.1.2:
+ dependencies:
+ micromark-core-commonmark: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+
+ micromark-extension-gfm-strikethrough@1.0.7:
+ dependencies:
+ micromark-util-chunked: 1.1.0
+ micromark-util-classify-character: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+
+ micromark-extension-gfm-table@1.0.7:
+ dependencies:
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+
+ micromark-extension-gfm-tagfilter@1.0.2:
+ dependencies:
+ micromark-util-types: 1.1.0
+
+ micromark-extension-gfm-task-list-item@1.0.5:
+ dependencies:
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+
+ micromark-extension-gfm@2.0.3:
+ dependencies:
+ micromark-extension-gfm-autolink-literal: 1.0.5
+ micromark-extension-gfm-footnote: 1.1.2
+ micromark-extension-gfm-strikethrough: 1.0.7
+ micromark-extension-gfm-table: 1.0.7
+ micromark-extension-gfm-tagfilter: 1.0.2
+ micromark-extension-gfm-task-list-item: 1.0.5
+ micromark-util-combine-extensions: 1.1.0
+ micromark-util-types: 1.1.0
+
+ micromark-extension-mdx-expression@1.0.8:
+ dependencies:
+ '@types/estree': 1.0.5
+ micromark-factory-mdx-expression: 1.0.9
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-events-to-acorn: 1.2.3
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+
+ micromark-extension-mdx-jsx@1.0.5:
+ dependencies:
+ '@types/acorn': 4.0.6
+ '@types/estree': 1.0.5
+ estree-util-is-identifier-name: 2.1.0
+ micromark-factory-mdx-expression: 1.0.9
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+
+ micromark-extension-mdx-md@1.0.1:
+ dependencies:
+ micromark-util-types: 1.1.0
+
+ micromark-extension-mdxjs-esm@1.0.5:
+ dependencies:
+ '@types/estree': 1.0.5
+ micromark-core-commonmark: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-events-to-acorn: 1.2.3
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ unist-util-position-from-estree: 1.1.2
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+
+ micromark-extension-mdxjs@1.0.1:
+ dependencies:
+ acorn: 8.12.1
+ acorn-jsx: 5.3.2(acorn@8.12.1)
+ micromark-extension-mdx-expression: 1.0.8
+ micromark-extension-mdx-jsx: 1.0.5
+ micromark-extension-mdx-md: 1.0.1
+ micromark-extension-mdxjs-esm: 1.0.5
+ micromark-util-combine-extensions: 1.1.0
+ micromark-util-types: 1.1.0
+
+ micromark-factory-destination@1.1.0:
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+
+ micromark-factory-label@1.1.0:
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+
+ micromark-factory-mdx-expression@1.0.9:
+ dependencies:
+ '@types/estree': 1.0.5
+ micromark-util-character: 1.2.0
+ micromark-util-events-to-acorn: 1.2.3
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ unist-util-position-from-estree: 1.1.2
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+
+ micromark-factory-space@1.1.0:
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-types: 1.1.0
+
+ micromark-factory-title@1.1.0:
+ dependencies:
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+
+ micromark-factory-whitespace@1.1.0:
+ dependencies:
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+
+ micromark-util-character@1.2.0:
+ dependencies:
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+
+ micromark-util-chunked@1.1.0:
+ dependencies:
+ micromark-util-symbol: 1.1.0
+
+ micromark-util-classify-character@1.1.0:
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+
+ micromark-util-combine-extensions@1.1.0:
+ dependencies:
+ micromark-util-chunked: 1.1.0
+ micromark-util-types: 1.1.0
+
+ micromark-util-decode-numeric-character-reference@1.1.0:
+ dependencies:
+ micromark-util-symbol: 1.1.0
+
+ micromark-util-decode-string@1.1.0:
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-util-character: 1.2.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-symbol: 1.1.0
+
+ micromark-util-encode@1.1.0: {}
+
+ micromark-util-events-to-acorn@1.2.3:
+ dependencies:
+ '@types/acorn': 4.0.6
+ '@types/estree': 1.0.5
+ '@types/unist': 2.0.11
+ estree-util-visit: 1.2.1
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+
+ micromark-util-html-tag-name@1.2.0: {}
+
+ micromark-util-normalize-identifier@1.1.0:
+ dependencies:
+ micromark-util-symbol: 1.1.0
+
+ micromark-util-resolve-all@1.1.0:
+ dependencies:
+ micromark-util-types: 1.1.0
+
+ micromark-util-sanitize-uri@1.2.0:
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-encode: 1.1.0
+ micromark-util-symbol: 1.1.0
+
+ micromark-util-subtokenize@1.1.0:
+ dependencies:
+ micromark-util-chunked: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+
+ micromark-util-symbol@1.1.0: {}
+
+ micromark-util-types@1.1.0: {}
+
+ micromark@3.2.0:
+ dependencies:
+ '@types/debug': 4.1.12
+ debug: 4.3.6
+ decode-named-character-reference: 1.0.2
+ micromark-core-commonmark: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-chunked: 1.1.0
+ micromark-util-combine-extensions: 1.1.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-encode: 1.1.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-subtokenize: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ transitivePeerDependencies:
+ - supports-color
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ mime@1.6.0: {}
+
+ mime@3.0.0: {}
+
+ mimic-fn@2.1.0: {}
+
+ mimic-fn@4.0.0: {}
+
+ mimic-response@3.1.0:
+ optional: true
+
+ min-document@2.19.0:
+ dependencies:
+ dom-walk: 0.1.2
+
+ min-indent@1.0.1: {}
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.11
+
+ minimatch@8.0.4:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minimist@1.2.8: {}
+
+ minipass@4.2.8: {}
+
+ minipass@7.1.2: {}
+
+ mkdirp-classic@0.5.3:
+ optional: true
+
+ mkdirp@0.5.6:
+ dependencies:
+ minimist: 1.2.8
+
+ mlly@0.5.17:
+ dependencies:
+ acorn: 8.12.1
+ pathe: 1.1.2
+ pkg-types: 1.2.0
+ ufo: 1.5.4
+
+ mlly@1.7.1:
+ dependencies:
+ acorn: 8.12.1
+ pathe: 1.1.2
+ pkg-types: 1.2.0
+ ufo: 1.5.4
+
+ mri@1.2.0: {}
+
+ mrmime@2.0.0: {}
+
+ ms@2.1.2: {}
+
+ nanoid@3.3.7: {}
+
+ napi-build-utils@1.0.2:
+ optional: true
+
+ natural-compare@1.4.0: {}
+
+ network-information-types@0.1.1(typescript@5.5.4):
+ dependencies:
+ typescript: 5.5.4
+
+ nlcst-to-string@3.1.1:
+ dependencies:
+ '@types/nlcst': 1.0.4
+
+ no-case@3.0.4:
+ dependencies:
+ lower-case: 2.0.2
+ tslib: 2.7.0
+
+ node-abi@3.67.0:
+ dependencies:
+ semver: 7.6.3
+ optional: true
+
+ node-addon-api@4.3.0:
+ optional: true
+
+ node-domexception@1.0.0: {}
+
+ node-fetch@3.3.2:
+ dependencies:
+ data-uri-to-buffer: 4.0.1
+ fetch-blob: 3.2.0
+ formdata-polyfill: 4.0.10
+
+ node-releases@2.0.18: {}
+
+ normalize-package-data@2.5.0:
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.22.8
+ semver: 5.7.2
+ validate-npm-package-license: 3.0.4
+
+ normalize-path@3.0.0: {}
+
+ npm-run-path@4.0.1:
+ dependencies:
+ path-key: 3.1.1
+
+ npm-run-path@5.3.0:
+ dependencies:
+ path-key: 4.0.0
+
+ object-hash@3.0.0: {}
+
+ object-keys@1.1.1: {}
+
+ omggif@1.0.10: {}
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.0
+
+ onetime@6.0.0:
+ dependencies:
+ mimic-fn: 4.0.0
+
+ open@9.1.0:
+ dependencies:
+ default-browser: 4.0.0
+ define-lazy-prop: 3.0.0
+ is-inside-container: 1.0.0
+ is-wsl: 2.2.0
+
+ optionator@0.9.4:
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.5
+
+ ora@6.3.1:
+ dependencies:
+ chalk: 5.3.0
+ cli-cursor: 4.0.0
+ cli-spinners: 2.9.2
+ is-interactive: 2.0.0
+ is-unicode-supported: 1.3.0
+ log-symbols: 5.1.0
+ stdin-discarder: 0.1.0
+ strip-ansi: 7.1.0
+ wcwidth: 1.0.1
+
+ p-limit@2.3.0:
+ dependencies:
+ p-try: 2.2.0
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-limit@4.0.0:
+ dependencies:
+ yocto-queue: 1.1.1
+
+ p-locate@3.0.0:
+ dependencies:
+ p-limit: 2.3.0
+
+ p-locate@4.1.0:
+ dependencies:
+ p-limit: 2.3.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ p-locate@6.0.0:
+ dependencies:
+ p-limit: 4.0.0
+
+ p-try@2.2.0: {}
+
+ pako@1.0.11: {}
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ parse-bmfont-ascii@1.0.6: {}
+
+ parse-bmfont-binary@1.0.6: {}
+
+ parse-bmfont-xml@1.1.6:
+ dependencies:
+ xml-parse-from-string: 1.0.1
+ xml2js: 0.5.0
+
+ parse-entities@4.0.1:
+ dependencies:
+ '@types/unist': 2.0.11
+ 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
+
+ parse-headers@2.0.5: {}
+
+ parse-json@5.2.0:
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+
+ parse-latin@5.0.1:
+ dependencies:
+ nlcst-to-string: 3.1.1
+ unist-util-modify-children: 3.1.1
+ unist-util-visit-children: 2.0.2
+
+ parse5@6.0.1: {}
+
+ parse5@7.1.2:
+ dependencies:
+ entities: 4.5.0
+
+ pascal-case@3.1.2:
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.7.0
+
+ path-browserify@1.0.1: {}
+
+ path-exists@3.0.0: {}
+
+ path-exists@4.0.0: {}
+
+ path-exists@5.0.0: {}
+
+ path-is-absolute@1.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-key@4.0.0: {}
+
+ path-parse@1.0.7: {}
+
+ path-scurry@1.11.1:
+ dependencies:
+ lru-cache: 10.4.3
+ minipass: 7.1.2
+
+ path-to-regexp@6.2.2: {}
+
+ pathe@0.3.9: {}
+
+ pathe@1.1.2: {}
+
+ pathval@1.1.1: {}
+
+ peek-readable@5.2.0: {}
+
+ periscopic@3.1.0:
+ dependencies:
+ '@types/estree': 1.0.5
+ estree-walker: 3.0.3
+ is-reference: 3.0.2
+
+ phin@2.9.3: {}
+
+ phin@3.7.1:
+ dependencies:
+ centra: 2.7.0
+ transitivePeerDependencies:
+ - debug
+
+ picocolors@1.1.0: {}
+
+ picomatch@2.3.1: {}
+
+ pify@4.0.1: {}
+
+ pixelmatch@4.0.2:
+ dependencies:
+ pngjs: 3.4.0
+
+ pkg-dir@4.2.0:
+ dependencies:
+ find-up: 4.1.0
+
+ pkg-types@1.2.0:
+ dependencies:
+ confbox: 0.1.7
+ mlly: 1.7.1
+ pathe: 1.1.2
+
+ pkg-up@3.1.0:
+ dependencies:
+ find-up: 3.0.0
+
+ pluralize@8.0.0: {}
+
+ pngjs@3.4.0: {}
+
+ postcss-load-config@3.1.4(postcss@8.4.44):
+ dependencies:
+ lilconfig: 2.1.0
+ yaml: 1.10.2
+ optionalDependencies:
+ postcss: 8.4.44
+
+ postcss@8.4.44:
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.1.0
+ source-map-js: 1.2.0
+
+ potrace@2.1.8:
+ dependencies:
+ jimp: 0.14.0
+ transitivePeerDependencies:
+ - debug
+
+ preact-render-to-string@5.2.6(preact@10.23.2):
+ dependencies:
+ preact: 10.23.2
+ pretty-format: 3.8.0
+
+ preact@10.23.2: {}
+
+ prebuild-install@7.1.2:
+ dependencies:
+ detect-libc: 2.0.3
+ expand-template: 2.0.3
+ github-from-package: 0.0.0
+ minimist: 1.2.8
+ mkdirp-classic: 0.5.3
+ napi-build-utils: 1.0.2
+ node-abi: 3.67.0
+ pump: 3.0.0
+ rc: 1.2.8
+ simple-get: 4.0.1
+ tar-fs: 2.1.1
+ tunnel-agent: 0.6.0
+ optional: true
+
+ preferred-pm@3.1.4:
+ dependencies:
+ find-up: 5.0.0
+ find-yarn-workspace-root2: 1.2.16
+ path-exists: 4.0.0
+ which-pm: 2.2.0
+
+ prelude-ls@1.2.1: {}
+
+ prettier-plugin-astro@0.1.3:
+ dependencies:
+ '@astrojs/compiler': 0.19.0
+ prettier: 2.8.8
+ sass-formatter: 0.7.9
+ synckit: 0.7.3
+
+ prettier-plugin-astro@0.7.2:
+ dependencies:
+ '@astrojs/compiler': 0.31.4
+ prettier: 2.8.8
+ sass-formatter: 0.7.9
+ synckit: 0.8.8
+
+ prettier-plugin-astro@0.9.1:
+ dependencies:
+ '@astrojs/compiler': 1.8.2
+ prettier: 2.8.8
+ sass-formatter: 0.7.9
+ synckit: 0.8.8
+
+ prettier@2.8.8: {}
+
+ pretty-format@3.8.0: {}
+
+ prismjs@1.29.0: {}
+
+ process@0.11.10: {}
+
+ prompts@2.4.2:
+ dependencies:
+ kleur: 3.0.3
+ sisteransi: 1.0.5
+
+ property-information@6.5.0: {}
+
+ pump@3.0.0:
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+ optional: true
+
+ punycode@2.3.1: {}
+
+ queue-microtask@1.2.3: {}
+
+ rc@1.2.8:
+ dependencies:
+ deep-extend: 0.6.0
+ ini: 1.3.8
+ minimist: 1.2.8
+ strip-json-comments: 2.0.1
+ optional: true
+
+ react-dom@18.3.1(react@18.3.1):
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.3.1
+ scheduler: 0.23.2
+
+ react@18.3.1:
+ dependencies:
+ loose-envify: 1.4.0
+
+ read-pkg-up@7.0.1:
+ dependencies:
+ find-up: 4.1.0
+ read-pkg: 5.2.0
+ type-fest: 0.8.1
+
+ read-pkg@5.2.0:
+ dependencies:
+ '@types/normalize-package-data': 2.4.4
+ normalize-package-data: 2.5.0
+ parse-json: 5.2.0
+ type-fest: 0.6.0
+
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
+ readable-web-to-node-stream@3.0.2:
+ dependencies:
+ readable-stream: 3.6.2
+
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.1
+
+ recast@0.20.5:
+ dependencies:
+ ast-types: 0.14.2
+ esprima: 4.0.1
+ source-map: 0.6.1
+ tslib: 2.7.0
+
+ regenerator-runtime@0.13.11: {}
+
+ regenerator-runtime@0.14.1: {}
+
+ regexp-tree@0.1.27: {}
+
+ rehype-parse@8.0.5:
+ dependencies:
+ '@types/hast': 2.3.10
+ hast-util-from-parse5: 7.1.2
+ parse5: 6.0.1
+ unified: 10.1.2
+
+ rehype-raw@6.1.1:
+ dependencies:
+ '@types/hast': 2.3.10
+ hast-util-raw: 7.2.3
+ unified: 10.1.2
+
+ rehype-stringify@9.0.4:
+ dependencies:
+ '@types/hast': 2.3.10
+ hast-util-to-html: 8.0.4
+ unified: 10.1.2
+
+ rehype@12.0.1:
+ dependencies:
+ '@types/hast': 2.3.10
+ rehype-parse: 8.0.5
+ rehype-stringify: 9.0.4
+ unified: 10.1.2
+
+ remark-frontmatter@4.0.1:
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-frontmatter: 1.0.1
+ micromark-extension-frontmatter: 1.1.1
+ unified: 10.1.2
+
+ remark-gfm@3.0.1:
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-gfm: 2.0.2
+ micromark-extension-gfm: 2.0.3
+ unified: 10.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-mdx@2.3.0:
+ dependencies:
+ mdast-util-mdx: 2.0.1
+ micromark-extension-mdxjs: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-parse@10.0.2:
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-from-markdown: 1.3.1
+ unified: 10.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-rehype@10.1.0:
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/mdast': 3.0.15
+ mdast-util-to-hast: 12.3.0
+ unified: 10.1.2
+
+ remark-smartypants@2.1.0:
+ dependencies:
+ retext: 8.1.0
+ retext-smartypants: 5.2.0
+ unist-util-visit: 5.0.0
+
+ reselect@4.1.8: {}
+
+ resolve-from@4.0.0: {}
+
+ resolve@1.22.8:
+ dependencies:
+ is-core-module: 2.15.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ restore-cursor@4.0.0:
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+
+ retext-latin@3.1.0:
+ dependencies:
+ '@types/nlcst': 1.0.4
+ parse-latin: 5.0.1
+ unherit: 3.0.1
+ unified: 10.1.2
+
+ retext-smartypants@5.2.0:
+ dependencies:
+ '@types/nlcst': 1.0.4
+ nlcst-to-string: 3.1.1
+ unified: 10.1.2
+ unist-util-visit: 4.1.2
+
+ retext-stringify@3.1.0:
+ dependencies:
+ '@types/nlcst': 1.0.4
+ nlcst-to-string: 3.1.1
+ unified: 10.1.2
+
+ retext@8.1.0:
+ dependencies:
+ '@types/nlcst': 1.0.4
+ retext-latin: 3.1.0
+ retext-stringify: 3.1.0
+ unified: 10.1.2
+
+ reusify@1.0.4: {}
+
+ rimraf@3.0.2:
+ dependencies:
+ glob: 7.2.3
+
+ roarr@2.15.4:
+ dependencies:
+ boolean: 3.2.0
+ detect-node: 2.1.0
+ globalthis: 1.0.4
+ json-stringify-safe: 5.0.1
+ semver-compare: 1.0.0
+ sprintf-js: 1.1.3
+
+ rollup@2.77.3:
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ rollup@2.79.1:
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ rollup@3.29.4:
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ run-applescript@5.0.0:
+ dependencies:
+ execa: 5.1.1
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ s.color@0.0.15: {}
+
+ sade@1.8.1:
+ dependencies:
+ mri: 1.2.0
+
+ safe-buffer@5.2.1: {}
+
+ safe-regex@2.1.1:
+ dependencies:
+ regexp-tree: 0.1.27
+
+ sass-formatter@0.7.9:
+ dependencies:
+ suf-log: 2.5.3
+
+ sax@1.4.1: {}
+
+ scheduler@0.23.2:
+ dependencies:
+ loose-envify: 1.4.0
+
+ scule@0.2.1: {}
+
+ search-insights@2.17.1: {}
+
+ section-matter@1.0.0:
+ dependencies:
+ extend-shallow: 2.0.1
+ kind-of: 6.0.3
+
+ semver-compare@1.0.0: {}
+
+ semver@5.7.2: {}
+
+ semver@6.3.1: {}
+
+ semver@7.6.3: {}
+
+ serialize-error@7.0.1:
+ dependencies:
+ type-fest: 0.13.1
+
+ seroval-plugins@1.1.1(seroval@1.1.1):
+ dependencies:
+ seroval: 1.1.1
+
+ seroval@1.1.1: {}
+
+ server-destroy@1.0.1: {}
+
+ sharp@0.29.3:
+ dependencies:
+ color: 4.2.3
+ detect-libc: 1.0.3
+ node-addon-api: 4.3.0
+ prebuild-install: 7.1.2
+ semver: 7.6.3
+ simple-get: 4.0.1
+ tar-fs: 2.1.1
+ tunnel-agent: 0.6.0
+ optional: true
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ shiki@0.11.1:
+ dependencies:
+ jsonc-parser: 3.3.1
+ vscode-oniguruma: 1.7.0
+ vscode-textmate: 6.0.0
+
+ shiki@0.14.7:
+ dependencies:
+ ansi-sequence-parser: 1.1.1
+ jsonc-parser: 3.3.1
+ vscode-oniguruma: 1.7.0
+ vscode-textmate: 8.0.0
+
+ signal-exit@3.0.7: {}
+
+ simple-concat@1.0.1:
+ optional: true
+
+ simple-get@4.0.1:
+ dependencies:
+ decompress-response: 6.0.0
+ once: 1.4.0
+ simple-concat: 1.0.1
+ optional: true
+
+ simple-swizzle@0.2.2:
+ dependencies:
+ is-arrayish: 0.3.2
+ optional: true
+
+ sirv@2.0.4:
+ dependencies:
+ '@polka/url': 1.0.0-next.25
+ mrmime: 2.0.0
+ totalist: 3.0.1
+
+ sisteransi@1.0.5: {}
+
+ slash@4.0.0: {}
+
+ solid-js@1.8.22:
+ dependencies:
+ csstype: 3.1.3
+ seroval: 1.1.1
+ seroval-plugins: 1.1.1(seroval@1.1.1)
+
+ source-map-js@1.2.0: {}
+
+ source-map@0.6.1: {}
+
+ source-map@0.7.4: {}
+
+ sourcemap-codec@1.4.8: {}
+
+ space-separated-tokens@2.0.2: {}
+
+ spdx-correct@3.2.0:
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.20
+
+ spdx-exceptions@2.5.0: {}
+
+ spdx-expression-parse@3.0.1:
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.20
+
+ spdx-license-ids@3.0.20: {}
+
+ sprintf-js@1.0.3: {}
+
+ sprintf-js@1.1.3: {}
+
+ stdin-discarder@0.1.0:
+ dependencies:
+ bl: 5.1.0
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string-width@5.1.2:
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.0
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ stringify-entities@4.0.4:
+ dependencies:
+ character-entities-html4: 2.1.0
+ character-entities-legacy: 3.0.0
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-ansi@7.1.0:
+ dependencies:
+ ansi-regex: 6.0.1
+
+ strip-bom-string@1.0.0: {}
+
+ strip-bom@3.0.0: {}
+
+ strip-bom@4.0.0: {}
+
+ strip-final-newline@2.0.0: {}
+
+ strip-final-newline@3.0.0: {}
+
+ strip-indent@3.0.0:
+ dependencies:
+ min-indent: 1.0.1
+
+ strip-json-comments@2.0.1:
+ optional: true
+
+ strip-json-comments@3.1.1: {}
+
+ strip-literal@0.4.2:
+ dependencies:
+ acorn: 8.12.1
+
+ strtok3@7.1.1:
+ dependencies:
+ '@tokenizer/token': 0.3.0
+ peek-readable: 5.2.0
+
+ style-to-object@0.4.4:
+ dependencies:
+ inline-style-parser: 0.1.1
+
+ suf-log@2.5.3:
+ dependencies:
+ s.color: 0.0.15
+
+ supports-color@5.5.0:
+ dependencies:
+ has-flag: 3.0.0
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-esm@1.0.0:
+ dependencies:
+ has-package-exports: 1.3.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ svelte-hmr@0.15.3(svelte@3.59.2):
+ dependencies:
+ svelte: 3.59.2
+
+ svelte2tsx@0.5.23(svelte@3.59.2)(typescript@5.5.4):
+ dependencies:
+ dedent-js: 1.0.1
+ pascal-case: 3.1.2
+ svelte: 3.59.2
+ typescript: 5.5.4
+
+ svelte@3.59.2: {}
+
+ svg-tags@1.0.0: {}
+
+ synckit@0.7.3:
+ dependencies:
+ '@pkgr/utils': 2.4.2
+ tslib: 2.7.0
+
+ synckit@0.8.8:
+ dependencies:
+ '@pkgr/core': 0.1.1
+ tslib: 2.7.0
+
+ tapable@2.2.1: {}
+
+ tar-fs@2.1.1:
+ dependencies:
+ chownr: 1.1.4
+ mkdirp-classic: 0.5.3
+ pump: 3.0.0
+ tar-stream: 2.2.0
+ optional: true
+
+ tar-stream@2.2.0:
+ dependencies:
+ bl: 4.1.0
+ end-of-stream: 1.4.4
+ fs-constants: 1.0.0
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ optional: true
+
+ text-table@0.2.0: {}
+
+ timm@1.7.1: {}
+
+ tinycolor2@1.6.0: {}
+
+ tinypool@0.1.3: {}
+
+ tinyspy@0.3.3: {}
+
+ titleize@3.0.0: {}
+
+ to-fast-properties@2.0.0: {}
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ token-types@5.0.1:
+ dependencies:
+ '@tokenizer/token': 0.3.0
+ ieee754: 1.2.1
+
+ totalist@3.0.1: {}
+
+ trim-lines@3.0.1: {}
+
+ trough@2.2.0: {}
+
+ tsconfig-resolver@3.0.1:
+ dependencies:
+ '@types/json5': 0.0.30
+ '@types/resolve': 1.20.6
+ json5: 2.2.3
+ resolve: 1.22.8
+ strip-bom: 4.0.0
+ type-fest: 0.13.1
+
+ tslib@2.7.0: {}
+
+ tsm@2.3.0:
+ dependencies:
+ esbuild: 0.15.18
+
+ tunnel-agent@0.6.0:
+ dependencies:
+ safe-buffer: 5.2.1
+ optional: true
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ type-detect@4.1.0: {}
+
+ type-fest@0.13.1: {}
+
+ type-fest@0.20.2: {}
+
+ type-fest@0.6.0: {}
+
+ type-fest@0.8.1: {}
+
+ type-fest@2.19.0: {}
+
+ typescript@5.5.4: {}
+
+ ufo@1.5.4: {}
+
+ ultrahtml@1.5.3: {}
+
+ undici@5.28.4:
+ dependencies:
+ '@fastify/busboy': 2.1.1
+
+ unherit@3.0.1: {}
+
+ unified@10.1.2:
+ dependencies:
+ '@types/unist': 2.0.11
+ bail: 2.0.2
+ extend: 3.0.2
+ is-buffer: 2.0.5
+ is-plain-obj: 4.1.0
+ trough: 2.2.0
+ vfile: 5.3.7
+
+ unimport@0.4.7(esbuild@0.18.20)(rollup@3.29.4)(vite@3.2.10(@types/node@16.18.106)):
+ dependencies:
+ '@rollup/pluginutils': 4.2.1
+ escape-string-regexp: 5.0.0
+ fast-glob: 3.3.2
+ local-pkg: 0.4.3
+ magic-string: 0.26.7
+ mlly: 0.5.17
+ pathe: 0.3.9
+ scule: 0.2.1
+ strip-literal: 0.4.2
+ unplugin: 0.7.2(esbuild@0.18.20)(rollup@3.29.4)(vite@3.2.10(@types/node@16.18.106))
+ transitivePeerDependencies:
+ - esbuild
+ - rollup
+ - vite
+ - webpack
+
+ unist-util-generated@2.0.1: {}
+
+ unist-util-is@5.2.1:
+ dependencies:
+ '@types/unist': 2.0.11
+
+ unist-util-is@6.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-map@3.1.3:
+ dependencies:
+ '@types/unist': 2.0.11
+
+ unist-util-modify-children@3.1.1:
+ dependencies:
+ '@types/unist': 2.0.11
+ array-iterate: 2.0.1
+
+ unist-util-position-from-estree@1.1.2:
+ dependencies:
+ '@types/unist': 2.0.11
+
+ unist-util-position@4.0.4:
+ dependencies:
+ '@types/unist': 2.0.11
+
+ unist-util-remove-position@4.0.2:
+ dependencies:
+ '@types/unist': 2.0.11
+ unist-util-visit: 4.1.2
+
+ unist-util-stringify-position@3.0.3:
+ dependencies:
+ '@types/unist': 2.0.11
+
+ unist-util-visit-children@2.0.2:
+ dependencies:
+ '@types/unist': 2.0.11
+
+ unist-util-visit-parents@5.1.3:
+ dependencies:
+ '@types/unist': 2.0.11
+ unist-util-is: 5.2.1
+
+ unist-util-visit-parents@6.0.1:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.0
+
+ unist-util-visit@4.1.2:
+ dependencies:
+ '@types/unist': 2.0.11
+ unist-util-is: 5.2.1
+ unist-util-visit-parents: 5.1.3
+
+ unist-util-visit@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.0
+ unist-util-visit-parents: 6.0.1
+
+ unplugin-auto-import@0.9.5(esbuild@0.18.20)(rollup@3.29.4)(vite@3.2.10(@types/node@16.18.106)):
+ dependencies:
+ '@antfu/utils': 0.5.2
+ '@rollup/pluginutils': 4.2.1
+ local-pkg: 0.4.3
+ magic-string: 0.26.7
+ unimport: 0.4.7(esbuild@0.18.20)(rollup@3.29.4)(vite@3.2.10(@types/node@16.18.106))
+ unplugin: 0.7.2(esbuild@0.18.20)(rollup@3.29.4)(vite@3.2.10(@types/node@16.18.106))
+ transitivePeerDependencies:
+ - esbuild
+ - rollup
+ - vite
+ - webpack
+
+ unplugin@0.7.2(esbuild@0.18.20)(rollup@3.29.4)(vite@3.2.10(@types/node@16.18.106)):
+ dependencies:
+ acorn: 8.12.1
+ chokidar: 3.6.0
+ webpack-sources: 3.2.3
+ webpack-virtual-modules: 0.4.6
+ optionalDependencies:
+ esbuild: 0.18.20
+ rollup: 3.29.4
+ vite: 3.2.10(@types/node@16.18.106)
+
+ untildify@4.0.0: {}
+
+ update-browserslist-db@1.1.0(browserslist@4.23.3):
+ dependencies:
+ browserslist: 4.23.3
+ escalade: 3.2.0
+ picocolors: 1.1.0
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ utif@2.0.1:
+ dependencies:
+ pako: 1.0.11
+
+ util-deprecate@1.0.2: {}
+
+ uvu@0.5.6:
+ dependencies:
+ dequal: 2.0.3
+ diff: 5.2.0
+ kleur: 4.1.5
+ sade: 1.8.1
+
+ validate-html-nesting@1.2.2: {}
+
+ validate-npm-package-license@3.0.4:
+ dependencies:
+ spdx-correct: 3.2.0
+ spdx-expression-parse: 3.0.1
+
+ vfile-location@4.1.0:
+ dependencies:
+ '@types/unist': 2.0.11
+ vfile: 5.3.7
+
+ vfile-message@3.1.4:
+ dependencies:
+ '@types/unist': 2.0.11
+ unist-util-stringify-position: 3.0.3
+
+ vfile@5.3.7:
+ dependencies:
+ '@types/unist': 2.0.11
+ is-buffer: 2.0.5
+ unist-util-stringify-position: 3.0.3
+ vfile-message: 3.1.4
+
+ vite@2.9.18:
+ dependencies:
+ esbuild: 0.14.54
+ postcss: 8.4.44
+ resolve: 1.22.8
+ rollup: 2.77.3
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ vite@3.2.10(@types/node@16.18.106):
+ dependencies:
+ esbuild: 0.15.18
+ postcss: 8.4.44
+ resolve: 1.22.8
+ rollup: 2.79.1
+ optionalDependencies:
+ '@types/node': 16.18.106
+ fsevents: 2.3.3
+
+ vite@4.5.3(@types/node@16.18.106):
+ dependencies:
+ esbuild: 0.18.20
+ postcss: 8.4.44
+ rollup: 3.29.4
+ optionalDependencies:
+ '@types/node': 16.18.106
+ fsevents: 2.3.3
+
+ vitefu@0.2.5(vite@3.2.10(@types/node@16.18.106)):
+ optionalDependencies:
+ vite: 3.2.10(@types/node@16.18.106)
+
+ vitefu@0.2.5(vite@4.5.3(@types/node@16.18.106)):
+ optionalDependencies:
+ vite: 4.5.3(@types/node@16.18.106)
+
+ vitest@0.12.10:
+ dependencies:
+ '@types/chai': 4.3.19
+ '@types/chai-subset': 1.3.5
+ chai: 4.5.0
+ debug: 4.3.6
+ local-pkg: 0.4.3
+ tinypool: 0.1.3
+ tinyspy: 0.3.3
+ vite: 2.9.18
+ transitivePeerDependencies:
+ - less
+ - sass
+ - stylus
+ - supports-color
+
+ vscode-css-languageservice@6.3.1:
+ dependencies:
+ '@vscode/l10n': 0.0.18
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 3.0.8
+
+ vscode-html-languageservice@5.3.1:
+ dependencies:
+ '@vscode/l10n': 0.0.18
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 3.0.8
+
+ vscode-jsonrpc@8.1.0: {}
+
+ vscode-jsonrpc@8.2.0: {}
+
+ vscode-languageserver-protocol@3.17.3:
+ dependencies:
+ vscode-jsonrpc: 8.1.0
+ vscode-languageserver-types: 3.17.3
+
+ vscode-languageserver-protocol@3.17.5:
+ dependencies:
+ vscode-jsonrpc: 8.2.0
+ vscode-languageserver-types: 3.17.5
+
+ vscode-languageserver-textdocument@1.0.12: {}
+
+ vscode-languageserver-types@3.17.3: {}
+
+ vscode-languageserver-types@3.17.5: {}
+
+ vscode-languageserver@8.1.0:
+ dependencies:
+ vscode-languageserver-protocol: 3.17.3
+
+ vscode-oniguruma@1.7.0: {}
+
+ vscode-textmate@6.0.0: {}
+
+ vscode-textmate@8.0.0: {}
+
+ vscode-uri@2.1.2: {}
+
+ vscode-uri@3.0.8: {}
+
+ vue@3.5.0(typescript@5.5.4):
+ dependencies:
+ '@vue/compiler-dom': 3.5.0
+ '@vue/compiler-sfc': 3.5.0
+ '@vue/runtime-dom': 3.5.0
+ '@vue/server-renderer': 3.5.0(vue@3.5.0(typescript@5.5.4))
+ '@vue/shared': 3.5.0
+ optionalDependencies:
+ typescript: 5.5.4
+
+ wcwidth@1.0.1:
+ dependencies:
+ defaults: 1.0.4
+
+ web-namespaces@2.0.1: {}
+
+ web-streams-polyfill@3.3.3: {}
+
+ webpack-sources@3.2.3: {}
+
+ webpack-virtual-modules@0.4.6: {}
+
+ which-pm-runs@1.1.0: {}
+
+ which-pm@2.2.0:
+ dependencies:
+ load-yaml-file: 0.2.0
+ path-exists: 4.0.0
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ widest-line@4.0.1:
+ dependencies:
+ string-width: 5.1.2
+
+ word-wrap@1.2.5: {}
+
+ wrap-ansi@8.1.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+
+ wrappy@1.0.2: {}
+
+ xhr@2.6.0:
+ dependencies:
+ global: 4.4.0
+ is-function: 1.0.2
+ parse-headers: 2.0.5
+ xtend: 4.0.2
+
+ xml-parse-from-string@1.0.1: {}
+
+ xml2js@0.5.0:
+ dependencies:
+ sax: 1.4.1
+ xmlbuilder: 11.0.1
+
+ xmlbuilder@11.0.1: {}
+
+ xtend@4.0.2: {}
+
+ yallist@3.1.1: {}
+
+ yaml@1.10.2: {}
+
+ yargs-parser@21.1.1: {}
+
+ yocto-queue@0.1.0: {}
+
+ yocto-queue@1.1.1: {}
+
+ zod@3.23.8: {}
+
+ zwitch@2.0.4: {}
diff --git a/packages/imagetools_3/pnpm-workspace.yaml b/packages/imagetools_3/pnpm-workspace.yaml
new file mode 100644
index 0000000..61acd18
--- /dev/null
+++ b/packages/imagetools_3/pnpm-workspace.yaml
@@ -0,0 +1,4 @@
+packages:
+ - "packages/**/*"
+ - "docs"
+ - "demo"
diff --git a/packages/imagetools_3/ssr/index.d.ts b/packages/imagetools_3/ssr/index.d.ts
new file mode 100644
index 0000000..87ae242
--- /dev/null
+++ b/packages/imagetools_3/ssr/index.d.ts
@@ -0,0 +1,6 @@
+import type { IncomingMessage, ServerResponse } from "http";
+
+export function middleware(
+ request: IncomingMessage,
+ response: ServerResponse
+): Buffer;
diff --git a/packages/imagetools_3/ssr/index.js b/packages/imagetools_3/ssr/index.js
new file mode 100644
index 0000000..f25f02e
--- /dev/null
+++ b/packages/imagetools_3/ssr/index.js
@@ -0,0 +1,27 @@
+// @ts-check
+import { store } from "../plugin/index.js";
+import { getCachedBuffer } from "../plugin/utils/cache.js";
+
+export async function middleware(request, response) {
+ const url = request.url || request.path;
+ const imageObject = store.get(url);
+/*
+ // Debug logging
+ if (url?.includes('_astro/') && url?.includes('.avif')) {
+ console.log(`[imagetools-debug] Looking for: ${url}`);
+ console.log(`[imagetools-debug] Store has ${store.size} entries`);
+ console.log(`[imagetools-debug] Found: ${!!imageObject}`);
+ if (!imageObject && store.size > 0) {
+ console.log(`[imagetools-debug] Available keys:`, [...store.keys()].slice(0, 5));
+ }
+ }*/
+
+ if (imageObject) {
+ const { hash, type, image, buffer } = imageObject;
+
+ response.setHeader("Content-Type", type);
+ response.setHeader("Cache-Control", "no-cache");
+
+ return buffer || (await getCachedBuffer(hash, image));
+ }
+}
diff --git a/packages/imagetools_3/test-fixtures/getSrcPath/out/out.jpeg b/packages/imagetools_3/test-fixtures/getSrcPath/out/out.jpeg
new file mode 100644
index 0000000..c8b7e65
Binary files /dev/null and b/packages/imagetools_3/test-fixtures/getSrcPath/out/out.jpeg differ
diff --git a/packages/imagetools_3/test-fixtures/getSrcPath/root.jpeg b/packages/imagetools_3/test-fixtures/getSrcPath/root.jpeg
new file mode 100644
index 0000000..87f9f0c
Binary files /dev/null and b/packages/imagetools_3/test-fixtures/getSrcPath/root.jpeg differ
diff --git a/packages/imagetools_3/types.d.ts b/packages/imagetools_3/types.d.ts
new file mode 100644
index 0000000..d44c18c
--- /dev/null
+++ b/packages/imagetools_3/types.d.ts
@@ -0,0 +1,268 @@
+declare type format =
+ | "heic"
+ | "heif"
+ | "avif"
+ | "jpg"
+ | "jpeg"
+ | "png"
+ | "tiff"
+ | "webp"
+ | "gif";
+
+declare type PotraceOptions = TraceOptions | PosterizeOptions;
+
+declare interface SharedTracingOptions {
+ turnPolicy?: "black" | "white" | "left" | "right" | "minority" | "majority";
+ turdSize?: number;
+ alphaMax?: number;
+ optCurve?: boolean;
+ optTolerance?: number;
+ threshold?: number;
+ blackOnWhite?: boolean;
+ color?: "auto" | string;
+ background?: "transparent" | string;
+}
+
+declare interface TraceOptions {
+ function?: "trace";
+ options?: SharedTracingOptions;
+}
+
+declare interface PosterizeOptions {
+ function?: "posterize";
+ options?: SharedTracingOptions & {
+ fill?: "spread" | "dominant" | "median" | "mean";
+ ranges?: "auto" | "equal";
+ steps?: number | number[];
+ };
+}
+
+declare interface FormatOptions {
+ formatOptions?: Partial> & {
+ tracedSVG?: PotraceOptions;
+ };
+}
+
+declare interface PictureFormatOptions extends FormatOptions {
+ format?: format | format[] | [] | null;
+ fallbackFormat?: format;
+ includeSourceFormat?: boolean;
+}
+
+declare interface ImgFormatOptions extends FormatOptions {
+ format?: format;
+}
+
+declare interface ImageToolsConfigs {
+ flip?: boolean;
+ flop?: boolean;
+ invert?: boolean;
+ flatten?: boolean;
+ normalize?: boolean;
+ grayscale?: boolean;
+ hue?: number;
+ saturation?: number;
+ brightness?: number;
+ w?: number;
+ h?: number;
+ ar?: number;
+ width?: number;
+ height?: number;
+ aspect?: number;
+ background?: string;
+ tint?: string;
+ blur?: number | boolean;
+ median?: number | boolean;
+ rotate?: number;
+ quality?: number;
+ fit?: "cover" | "contain" | "fill" | "inside" | "outside";
+ kernel?: "nearest" | "cubic" | "mitchell" | "lanczos2" | "lanczos3";
+ position?:
+ | "top"
+ | "right top"
+ | "right"
+ | "right bottom"
+ | "bottom"
+ | "left bottom"
+ | "left"
+ | "left top"
+ | "north"
+ | "northeast"
+ | "east"
+ | "southeast"
+ | "south"
+ | "southwest"
+ | "west"
+ | "northwest"
+ | "center"
+ | "centre"
+ | "cover"
+ | "entropy"
+ | "attention";
+}
+
+declare interface ObjectStyles {
+ objectPosition?: string;
+ objectFit?: "fill" | "contain" | "cover" | "none" | "scale-down";
+}
+
+declare interface BackgroundStyles {
+ backgroundPosition?: string;
+ backgroundSize?: "fill" | "contain" | "cover" | "none" | "scale-down";
+}
+
+declare interface ArtDirective
+ extends PrimaryProps,
+ ObjectStyles,
+ PictureFormatOptions,
+ ImageToolsConfigs {
+ media: string;
+}
+
+declare interface BackgroundImageArtDirective
+ extends PrimaryProps,
+ BackgroundStyles,
+ PictureFormatOptions,
+ ImageToolsConfigs {
+ media: string;
+}
+
+declare type sizesFunction = {
+ (breakpoints: number[]): string;
+};
+
+declare type breakpointsFunction = {
+ (imageWidth: number): number[];
+};
+
+declare interface PrimaryProps {
+ src: string;
+ sizes?: string | sizesFunction;
+ placeholder?: "dominantColor" | "blurred" | "tracedSVG" | "none";
+ breakpoints?:
+ | number[]
+ | breakpointsFunction
+ | {
+ count?: number;
+ minWidth?: number;
+ maxWidth?: number;
+ };
+}
+
+declare interface ConfigOptions extends PrimaryProps, ImageToolsConfigs {
+ alt: string;
+ preload?: format;
+ loading?: "lazy" | "eager" | "auto" | null;
+ decoding?: "async" | "sync" | "auto" | null;
+ layout?: "constrained" | "fixed" | "fullWidth" | "fill";
+}
+
+declare interface Attributes {
+ container?: Record;
+ picture?: Record;
+ style?: Record;
+ link?: Omit, "as" | "rel" | "imagesizes" | "imagesrcset">;
+ img?: Omit<
+ Record,
+ | "src"
+ | "alt"
+ | "srcset"
+ | "sizes"
+ | "width"
+ | "height"
+ | "loading"
+ | "decoding"
+ >;
+}
+
+export interface PictureConfigOptions
+ extends ConfigOptions,
+ ObjectStyles,
+ PictureFormatOptions {
+ artDirectives?: ArtDirective[];
+ attributes?: Omit;
+ fadeInTransition?:
+ | boolean
+ | {
+ delay?: string;
+ duration?: string;
+ timingFunction?: string;
+ };
+}
+
+export interface ImgConfigOptions
+ extends ConfigOptions,
+ ObjectStyles,
+ ImgFormatOptions {
+ attributes?: Omit;
+}
+
+declare interface BackgroundProps {
+ tag?: string;
+ content?: string;
+}
+
+export interface BackgroundImageConfigOptions
+ extends BackgroundProps,
+ BackgroundStyles,
+ Pick<
+ PictureConfigOptions,
+ Exclude<
+ keyof PictureConfigOptions,
+ | "alt"
+ | "sizes"
+ | "loading"
+ | "decoding"
+ | "layout"
+ | "objectFit"
+ | "objectPosition"
+ | "artDirective"
+ | "fadeInTransition"
+ >
+ > {
+ attributes?: Omit;
+ artDirectives?: BackgroundImageArtDirective[];
+}
+
+export interface BackgroundPictureConfigOptions
+ extends BackgroundProps,
+ Pick<
+ PictureConfigOptions,
+ Exclude
+ > {
+ attributes?: Attributes;
+}
+
+export interface GlobalConfigOptions
+ extends BackgroundStyles,
+ Pick<
+ PictureConfigOptions,
+ Exclude
+ > {
+ tag?: string;
+ cacheDir?: string;
+ assetFileNames?: string;
+}
+
+declare interface HTMLData {
+ link: string;
+ style: string;
+}
+
+export interface ImageHTMLData extends HTMLData {
+ image: string;
+}
+
+export interface PictureHTMLData extends HTMLData {
+ picture: string;
+}
+
+export interface ImgHTMLData extends HTMLData {
+ img: string;
+}
+
+export interface BackgroundImageHTMLData extends HTMLData {
+ htmlElement: string;
+}
+
+export type BackgroundPictureHTMLData = BackgroundImageHTMLData;
diff --git a/packages/imagetools_3/utils/filterConfigs.js b/packages/imagetools_3/utils/filterConfigs.js
new file mode 100644
index 0000000..1fd64da
--- /dev/null
+++ b/packages/imagetools_3/utils/filterConfigs.js
@@ -0,0 +1,51 @@
+// @ts-check
+import printWarning from "./printWarning.js";
+
+export default function filterConfigs(
+ type,
+ configs,
+ supportedConfigs,
+ { warn = true } = {}
+) {
+ const clonedConfigs = { ...configs };
+
+ const requiredConfigs = [];
+
+ type !== "Global" && requiredConfigs.push("src");
+
+ ["Img", "Picture"].includes(type) && requiredConfigs.push("alt");
+
+ requiredConfigs.forEach((key) => {
+ if (typeof clonedConfigs[key] === "undefined") {
+ throw new Error(`The "${key}" property is required by ${type}`);
+ }
+ });
+
+ Object.keys(clonedConfigs).forEach((key) => {
+ if (!supportedConfigs.includes(key)) {
+ if (warn) {
+ if (key !== "class") {
+ printWarning({ key, type });
+ } else if (!onlyAstroClass(clonedConfigs[key])) {
+ /*
+ printWarning({
+ message: `Do not provide a "class" directly to ${type}. Instead, use attributes: https://astro-imagetools-docs.vercel.app/en/components/${type}#attributes`,
+ });
+ */
+ }
+ }
+
+ delete clonedConfigs[key];
+ }
+ });
+
+ return clonedConfigs;
+}
+
+/**
+ * Checks if the `class` attribute string is only an astro-generated scoped style class.
+ */
+function onlyAstroClass(classAttr) {
+ const astroClassPattern = /^astro-[0-9A-Z]{8}$/;
+ return astroClassPattern.test(classAttr);
+}
diff --git a/packages/imagetools_3/utils/filterConfigs.test.js b/packages/imagetools_3/utils/filterConfigs.test.js
new file mode 100644
index 0000000..d3d5100
--- /dev/null
+++ b/packages/imagetools_3/utils/filterConfigs.test.js
@@ -0,0 +1,100 @@
+import { describe, expect, afterAll, it, vi, beforeEach } from "vitest";
+import { supportedConfigs } from "./runtimeChecks";
+import filterConfigs from "./filterConfigs";
+import printWarning from "./printWarning.js";
+
+// Workaround for https://github.com/vitest-dev/vitest/issues/855
+vi.mock("./printWarning.js", async () => {
+ return { default: vi.fn() };
+});
+
+const warningSpy = vi.mocked(printWarning);
+
+describe("filterConfigs", () => {
+ beforeEach(() => {
+ warningSpy.mockReset();
+ });
+ afterAll(() => {
+ vi.unmock("./printWarning.js");
+ });
+
+ it("should require a `src` attribute for all components", () => {
+ expect(() => {
+ filterConfigs("Img", { alt: "" }, supportedConfigs);
+ }).toThrowError('The "src" property is required by Img');
+ expect(() => {
+ filterConfigs("Picture", { alt: "" }, supportedConfigs);
+ }).toThrowError('The "src" property is required by Picture');
+ expect(() => {
+ filterConfigs("BackgroundImage", {}, supportedConfigs);
+ }).toThrowError('The "src" property is required by BackgroundImage');
+ expect(() => {
+ filterConfigs("BackgroundPicture", {}, supportedConfigs);
+ }).toThrowError('The "src" property is required by BackgroundPicture');
+ expect(() => {
+ filterConfigs("Global", {}, supportedConfigs);
+ }).not.toThrowError();
+ });
+
+ it("should require an `alt` attribute for Picture and Img, but not others", () => {
+ expect(() => {
+ filterConfigs("Img", { src: "src" }, supportedConfigs);
+ }).toThrowError('The "alt" property is required by Img');
+ expect(() => {
+ filterConfigs("Picture", { src: "src" }, supportedConfigs);
+ }).toThrowError('The "alt" property is required by Picture');
+ expect(() => {
+ filterConfigs("BackgroundImage", { src: "src" }, supportedConfigs);
+ }).not.toThrowError();
+ expect(() => {
+ filterConfigs("BackgroundPicture", { src: "src" }, supportedConfigs);
+ }).not.toThrowError();
+ expect(() => {
+ filterConfigs("Global", {}, supportedConfigs);
+ }).not.toThrowError();
+ });
+
+ it("should remove unsupported configs", () => {
+ const filteredConfig = filterConfigs("Global", { foo: "foo" }, [], {
+ warn: false,
+ });
+ const filteredConfigFooSupported = filterConfigs(
+ "Global",
+ { foo: "foo" },
+ ["foo"],
+ {
+ warn: false,
+ }
+ );
+ expect(filteredConfig).not.toContain({ foo: "foo" });
+ expect(filteredConfigFooSupported).toContain({ foo: "foo" });
+ });
+
+ it("should warn about unsupported configs", () => {
+ filterConfigs("Global", { foo: "foo" }, []);
+ expect(warningSpy).toHaveBeenCalledWith({ type: "Global", key: "foo" });
+ });
+
+ it("should warn about unsupported 'class' config", () => {
+ filterConfigs(
+ "Img",
+ { class: "astro-ASDF1234 my-class", src: "src", alt: "" },
+ supportedConfigs
+ );
+ expect(warningSpy).toHaveBeenCalledWith({
+ message:
+ 'Do not provide a "class" directly to Img. Instead, use attributes: https://astro-imagetools-docs.vercel.app/en/components/Img#attributes',
+ });
+ });
+
+ it("should not warn about astro-generated 'class' config", () => {
+ const filteredConfig = filterConfigs(
+ "Img",
+ { class: "astro-ASDF1234", src: "src", alt: "" },
+ supportedConfigs
+ );
+ expect(warningSpy).not.toHaveBeenCalled();
+ // class is still stripped out
+ expect(filteredConfig).not.toContain({ class: "astro-ASDF1234" });
+ });
+});
diff --git a/packages/imagetools_3/utils/printWarning.js b/packages/imagetools_3/utils/printWarning.js
new file mode 100644
index 0000000..efeac3d
--- /dev/null
+++ b/packages/imagetools_3/utils/printWarning.js
@@ -0,0 +1,57 @@
+// @ts-check
+
+const colours = {
+ reset: "\x1b[0m",
+ bright: "\x1b[1m",
+ dim: "\x1b[2m",
+ underscore: "\x1b[4m",
+ blink: "\x1b[5m",
+ reverse: "\x1b[7m",
+ hidden: "\x1b[8m",
+
+ fg: {
+ black: "\x1b[30m",
+ red: "\x1b[31m",
+ green: "\x1b[32m",
+ yellow: "\x1b[33m",
+ blue: "\x1b[34m",
+ magenta: "\x1b[35m",
+ cyan: "\x1b[36m",
+ white: "\x1b[37m",
+ },
+
+ bg: {
+ black: "\x1b[40m",
+ red: "\x1b[41m",
+ green: "\x1b[42m",
+ yellow: "\x1b[43m",
+ blue: "\x1b[44m",
+ magenta: "\x1b[45m",
+ cyan: "\x1b[46m",
+ white: "\x1b[47m",
+ },
+};
+
+export default function printWarning({
+ key = "",
+ type = "",
+ message = "",
+ element = "",
+}) {
+ const flag =
+ colours.bright + colours.fg.cyan + "[astro-imagetools]" + colours.reset;
+
+ const keyLog = key
+ ? " " + colours.bg.yellow + ` ${key} ` + colours.reset
+ : "";
+
+ const messageLog =
+ colours.fg.yellow +
+ (message ||
+ (!element
+ ? `is not a valid ${type} Config Option`
+ : `can't be defined inside attributes.${element}`)) +
+ colours.reset;
+
+ // console.log(flag + keyLog, messageLog);
+}
diff --git a/packages/imagetools_3/utils/runtimeChecks.js b/packages/imagetools_3/utils/runtimeChecks.js
new file mode 100644
index 0000000..19036b8
--- /dev/null
+++ b/packages/imagetools_3/utils/runtimeChecks.js
@@ -0,0 +1,79 @@
+// @ts-check
+import fs from "node:fs";
+import path from "node:path";
+import findCacheDir from "find-cache-dir";
+import filterConfigs from "./filterConfigs.js";
+import { findUpSync } from "find-up"
+
+// Sharp related checks
+export const sharp = await (async () => {
+ try {
+ if (await import("sharp")) {
+ return true;
+ }
+ } catch (error) {
+ return false;
+ }
+})();
+
+export const supportedImageTypes = [
+ "avif",
+ "jpeg",
+ "jpg",
+ "png",
+ "webp",
+ ...(sharp ? ["heic", "heif", "tiff", "gif"] : ["jxl", "wp2"]),
+];
+
+// prettier-ignore
+export const supportedConfigs = [
+ "src", "alt", "tag", "content", "sizes", "preload", "loading", "decoding", "attributes",
+ "layout", "placeholder", "breakpoints", "objectFit", "objectPosition", "backgroundSize",
+ "backgroundPosition", "format", "fallbackFormat", "includeSourceFormat", "formatOptions",
+ "fadeInTransition", "artDirectives", "flip", "flop", "invert", "flatten", "normalize",
+ "grayscale", "hue", "saturation", "brightness", "w", "h", "ar", "width", "height", "aspect",
+ "background", "tint", "blur", "median", "rotate", "quality", "fit", "kernel", "position",
+ "cacheDir", "assetFileNames",
+];
+
+const configFile = findUpSync([
+ "astro-imagetools.config.js",
+ "astro-imagetools.config.mjs",
+]);
+
+const configFunction = configFile
+ ? await import(configFile).catch(async () => await import("/" + configFile))
+ : null;
+
+const rawGlobalConfigOptions = configFunction?.default ?? {};
+
+const NonGlobalConfigOptions = ["src", "alt", "content"];
+
+const GlobalConfigs = supportedConfigs.filter(
+ (key) => !NonGlobalConfigOptions.includes(key)
+);
+
+const GlobalConfigOptions = filterConfigs(
+ "Global",
+ rawGlobalConfigOptions,
+ GlobalConfigs
+);
+
+export { GlobalConfigOptions };
+
+// CWD
+export const cwd = process.cwd().split(path.sep).join(path.posix.sep);
+
+const { cacheDir } = GlobalConfigOptions;
+
+// FS Cache related checks
+const fsCachePath =
+ (cacheDir
+ ? cwd + cacheDir
+ : findCacheDir({
+ name: "astro-imagetools",
+ })) + "/";
+
+fs.existsSync(fsCachePath) || fs.mkdirSync(fsCachePath, { recursive: true });
+
+export { fsCachePath };
diff --git a/packages/imagetools_3/utils/runtimeChecks.test.ts b/packages/imagetools_3/utils/runtimeChecks.test.ts
new file mode 100644
index 0000000..622592e
--- /dev/null
+++ b/packages/imagetools_3/utils/runtimeChecks.test.ts
@@ -0,0 +1,36 @@
+import { beforeEach, describe, expect, it, vi } from "vitest";
+
+describe("GlobalConfigOptions", () => {
+ beforeEach(() => {
+ // Need to reset the modules so that we can change the mock implementation between tests
+ vi.resetModules();
+ });
+
+ it("Should be an empty object by default, if a config file isn't found", async () => {
+ // Simulate not finding a config file
+ vi.doMock("find-up", () => {
+ return {
+ findUp: async () => undefined,
+ };
+ });
+ // Need to import this after the mocks are set up with `doMock`.
+ const { GlobalConfigOptions } = await import("./runtimeChecks");
+ expect(GlobalConfigOptions).toEqual({});
+ });
+
+ it("should return the configuration from a global config file", async () => {
+ // Find a config file, and mock the contents of that file
+ vi.doMock("find-up", () => {
+ return {
+ findUp: async () => "mockedConfigFile",
+ };
+ });
+ vi.doMock("mockedConfigFile", () => {
+ return {
+ default: { breakpoints: [800, 1200] },
+ };
+ });
+ const { GlobalConfigOptions } = await import("./runtimeChecks");
+ expect(GlobalConfigOptions).toEqual({ breakpoints: [800, 1200] });
+ });
+});
diff --git a/packages/imagetools_3/vitest.config.ts b/packages/imagetools_3/vitest.config.ts
new file mode 100644
index 0000000..29dc63d
--- /dev/null
+++ b/packages/imagetools_3/vitest.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ // https://vitest.dev/config/#configuration
+ },
+});
diff --git a/packages/polymech/package.json b/packages/polymech/package.json
index c2b5221..b212c98 100644
--- a/packages/polymech/package.json
+++ b/packages/polymech/package.json
@@ -18,7 +18,6 @@
"./integration": "./dist/integration.js",
"./registry": "./src/registry.ts"
},
-
"dependencies": {
"@astrojs/compiler": "^2.12.2",
"@astrojs/react": "^4.3.0",
@@ -38,7 +37,7 @@
"hast-util-select": "^6.0.4",
"hast-util-to-string": "^3.0.1",
"html-entities": "^2.5.2",
- "imagetools": "file:../imagetools",
+ "imagetools": "file:../imagetools_3",
"marked": "^16.1.2",
"mdast-util-to-string": "^4.0.0",
"node-xlsx": "^0.24.0",
diff --git a/packages/polymech/src/utils/path-resolution.ts b/packages/polymech/src/utils/path-resolution.ts
index f7457c0..9ace4a1 100644
--- a/packages/polymech/src/utils/path-resolution.ts
+++ b/packages/polymech/src/utils/path-resolution.ts
@@ -67,7 +67,7 @@ export function resolveImagePath(src: string, entryPath?: string, astroUrl?: URL
// --- Strategy 2.2: Fallback to URL parsing ---
else if (astroUrl) {
strategy = 'URL';
- if (enableDebugErrors) console.warn(`[resolveImagePath] [INFO-URL] No entryPath provided. Falling back to URL-based resolution for "${src}". This is less reliable.`);
+ // if (enableDebugErrors) console.warn(`[resolveImagePath] [INFO-URL] No entryPath provided. Falling back to URL-based resolution for "${src}". This is less reliable.`);
const isFolderUrl = astroUrl.pathname.endsWith('/');
const pathSegments = astroUrl.pathname.split('/').filter(p => p);