diff --git a/packages/imagetools/.npmignore b/packages/imagetools/.npmignore deleted file mode 100644 index 77b2318..0000000 --- a/packages/imagetools/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -*.test.ts -test-fixtures -astroViteConfigs.js -vitest.config.ts diff --git a/packages/imagetools/README.md b/packages/imagetools/README.md deleted file mode 100644 index 5168cf7..0000000 --- a/packages/imagetools/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# **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 ``) -- ✅ **Background Image Optimization** -- ✅ **Responsive Images** -- ✅ **Simple and intuitive Art Direction API** -- ✅ **Lazy Loading** -- ✅ **Programmatic APIs** -- ✅ **Asynchronous Decoding** -- ✅ **Unique Breakpoints Calculation** -- ✅ **Preloading for urgent images** -- ✅ **SVG Tracing and Posterization** -- ✅ **100% Scoped CSS** -- ✅ **Four kind of Layouts: `constrained`, `fixed`, `fullWidth` & `fill`** -- ✅ **Three kind of Placeholder Images: `blurred`, `dominantColor` & `tracedSVG`** -- ✅ **Long list of supported Image Formats** -- ✅ **Long List of supported Configuration Options** -- ✅ **Supports Remote Images and Data URIs too** -- ✅ **Support for _`sharp`less_ Environments** -- ✅ **Both Memory-based and FS-based Caching for better Performance** -- ✅ **Respects to _Semantics of HTML_ as much as possible** - -## Getting Started - -To get started with **Astro ImageTools**, first check out the [Installation](https://astro-imagetools-docs.vercel.app/en/installation) documentation for instructions on how to install the `astro-imagetools` package. - -If you are looking for the available components and APIs, please check out the [Components and APIs](https://astro-imagetools-docs.vercel.app/en/components-and-apis) documentation. - -If you want to view live examples of the components, APIs, layouts, and placeholder images, check out the [Astro ImageTools Demo](https://astro-imagetools-demo.vercel.app/) website. - -If you want to report any issues or have found a missing feature, please report it on [GitHub](https://github.com/RafidMuhymin/astro-imagetools/)! - -Good luck out there, Astronaut. 🧑‍🚀 diff --git a/packages/imagetools/api/importImage.d.ts b/packages/imagetools/api/importImage.d.ts deleted file mode 100644 index 96e6f95..0000000 --- a/packages/imagetools/api/importImage.d.ts +++ /dev/null @@ -1 +0,0 @@ -export default function importImage(url: string): Promise; diff --git a/packages/imagetools/api/importImage.js b/packages/imagetools/api/importImage.js deleted file mode 100644 index d50b2de..0000000 --- a/packages/imagetools/api/importImage.js +++ /dev/null @@ -1,23 +0,0 @@ -import load from "../plugin/hooks/load.js"; -import { getSrcPath } from "./utils/getSrcPath.js"; -import getResolvedSrc from "./utils/getResolvedSrc.js"; - -export default async function importImage(path) { - try { - const { search, protocol, pathname } = new URL(path); - - const { src: id, base } = await getResolvedSrc( - protocol === "data:" ? protocol + pathname : path - ); - - const src = (await load(id + search, base)).slice(16, -1); - - return src; - } catch (error) { - const id = await getSrcPath(path); - - const src = (await load(id)).slice(16, -1); - - return src; - } -} diff --git a/packages/imagetools/api/index.js b/packages/imagetools/api/index.js deleted file mode 100644 index 6096b59..0000000 --- a/packages/imagetools/api/index.js +++ /dev/null @@ -1,6 +0,0 @@ -export { default as renderImg } from "./renderImg.js"; -export { default as renderPicture } from "./renderPicture.js"; -export { default as renderBackgroundImage } from "./renderBackgroundImage.js"; -export { default as renderBackgroundPicture } from "./renderBackgroundPicture.js"; -export { default as importImage } from "./importImage.js"; -export { getImageDetails, loadImage } from "./utils/imagetools.js" diff --git a/packages/imagetools/api/renderBackgroundImage.d.ts b/packages/imagetools/api/renderBackgroundImage.d.ts deleted file mode 100644 index af6a45a..0000000 --- a/packages/imagetools/api/renderBackgroundImage.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { - BackgroundImageConfigOptions, - BackgroundImageHTMLData, -} from "../types"; - -export default function renderBackgroundImage( - config: BackgroundImageConfigOptions -): Promise; diff --git a/packages/imagetools/api/renderBackgroundImage.js b/packages/imagetools/api/renderBackgroundImage.js deleted file mode 100644 index 8c30baf..0000000 --- a/packages/imagetools/api/renderBackgroundImage.js +++ /dev/null @@ -1,156 +0,0 @@ -// @ts-check -import crypto from "node:crypto"; -import getImage from "./utils/getImage.js"; -import getLinkElement from "./utils/getLinkElement.js"; -import getStyleElement from "./utils/getStyleElement.js"; -import getFilteredProps from "./utils/getFilteredProps.js"; -import getContainerElement from "./utils/getContainerElement.js"; - -export default async function renderBackgroundImage(props) { - const type = "BackgroundImage"; - - const { filteredProps, transformConfigs } = getFilteredProps(type, props); - - const { - src, - tag, - content, - preload, - attributes, - placeholder, - breakpoints, - backgroundSize, - backgroundPosition, - format, - fallbackFormat, - includeSourceFormat, - formatOptions, - artDirectives, - } = filteredProps; - - const { - link: linkAttributes = {}, - style: styleAttributes = {}, - container: containerAttributes = {}, - } = attributes; - - const sizes = ""; - - const { uuid, images } = await getImage({ - src, - type, - sizes, - format, - breakpoints, - placeholder, - artDirectives, - fallbackFormat, - includeSourceFormat, - formatOptions, - transformConfigs, - }); - - const className = `astro-imagetools-background-image-${uuid}`; - - const { imagesizes } = images[images.length - 1]; - - const link = getLinkElement({ images, preload, imagesizes, linkAttributes }); - - const backgroundImageStylesArray = images.map(({ media, sources }) => { - const uuid = crypto.randomBytes(4).toString("hex").toUpperCase() - const fallbackUrlCustomVariable = `--astro-imagetools-background-image-fallback-url${uuid}` - const newSources = {}; - sources.forEach(({ src, format, srcset }) => { - const sources = srcset - .split(", ") - .map((source) => [ - source.slice(0, source.lastIndexOf(" ")), - source.slice(source.lastIndexOf(" ") + 1, -1), - ]); - - sources.forEach(([path, width]) => { - if (!newSources[width]) { - newSources[width] = []; - } - - newSources[width].push({ src, format, path }); - }); - }); - - const widths = Object.keys(newSources) - .map((width) => parseInt(width)) - .reverse(); - - const maxWidth = Math.max(...widths); - - const styles = widths - .map((width) => { - const sources = newSources[width]; - - const styles = sources - .map( - ({ format, path }, i) => - ` - ${i !== sources.length - 1 ? `.${format} ` : ""}.${className} { - background-repeat: no-repeat; - background-image: url(${path}), - var(${fallbackUrlCustomVariable}); - background-size: ${backgroundSize}; - background-position: ${backgroundPosition}; - } - ` - ) - .reverse() - .join(""); - - return width === maxWidth - ? styles - : ` - @media screen and (max-width: ${width}px) { - ${styles} - } - `; - }) - .join(""); - - return { - fallbackUrlCustomVariable, - styles: media - ? ` - @media ${media} { - ${styles} - } - ` - : styles, - }; - }); - - const containerStyles = ` - .${className} { - position: relative; - ${images - .map(({ fallback }, i) => { - const fallbackUrlCustomVariable = - backgroundImageStylesArray[i].fallbackUrlCustomVariable; - - return `${fallbackUrlCustomVariable}: url("${encodeURI(fallback)}");`; - }) - .join("\n")} - } - `; - - const backgroundStyles = - backgroundImageStylesArray.map(({ styles }) => styles).join("\n") + - containerStyles; - - const style = getStyleElement({ styleAttributes, backgroundStyles }); - - const htmlElement = getContainerElement({ - tag, - content, - className, - containerAttributes, - }); - - return { link, style, htmlElement }; -} diff --git a/packages/imagetools/api/renderBackgroundPicture.d.ts b/packages/imagetools/api/renderBackgroundPicture.d.ts deleted file mode 100644 index c38de62..0000000 --- a/packages/imagetools/api/renderBackgroundPicture.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { - BackgroundPictureConfigOptions, - BackgroundPictureHTMLData, -} from "../types"; - -export default function renderBackgroundPicture( - config: BackgroundPictureConfigOptions -): Promise; diff --git a/packages/imagetools/api/renderBackgroundPicture.js b/packages/imagetools/api/renderBackgroundPicture.js deleted file mode 100644 index 605f935..0000000 --- a/packages/imagetools/api/renderBackgroundPicture.js +++ /dev/null @@ -1,127 +0,0 @@ -// @ts-check -import getImage from "./utils/getImage.js"; -import getImgElement from "./utils/getImgElement.js"; -import getLinkElement from "./utils/getLinkElement.js"; -import getStyleElement from "./utils/getStyleElement.js"; -import getLayoutStyles from "./utils/getLayoutStyles.js"; -import getFilteredProps from "./utils/getFilteredProps.js"; -import getPictureElement from "./utils/getPictureElement.js"; -import getBackgroundStyles from "./utils/getBackgroundStyles.js"; -import getContainerElement from "./utils/getContainerElement.js"; - -export default async function renderBackgroundPicture(props) { - const type = "BackgroundPicture"; - - const { filteredProps, transformConfigs } = getFilteredProps(type, props); - - const { - src, - tag, - content, - sizes, - preload, - loading, - decoding, - attributes, - placeholder, - breakpoints, - objectFit, - objectPosition, - format, - fallbackFormat, - includeSourceFormat, - formatOptions, - fadeInTransition, - artDirectives, - } = filteredProps; - - const { - img: imgAttributes = {}, - link: linkAttributes = {}, - style: styleAttributes = {}, - picture: pictureAttributes = {}, - container: containerAttributes = {}, - } = attributes; - - const { uuid, images } = await getImage({ - src, - type, - sizes, - format, - breakpoints, - placeholder, - artDirectives, - fallbackFormat, - includeSourceFormat, - formatOptions, - transformConfigs, - }); - - const className = `imagetools-picture-${uuid}`, - containerClassName = `astro-imagetools-background-picture-${uuid}`; - - const { imagesizes } = images[images.length - 1]; - - const backgroundStyles = getBackgroundStyles( - images, - className, - objectFit, - objectPosition, - fadeInTransition, - { isBackgroundPicture: true, containerClassName } - ); - - const style = getStyleElement({ styleAttributes, backgroundStyles }); - - const link = getLinkElement({ images, preload, imagesizes, linkAttributes }); - - const layoutStyles = getLayoutStyles({ isBackgroundImage: true }); - - // Background Images shouldn't convey important information - const alt = ""; - - const sources = images.flatMap(({ media, sources, sizes, imagesizes }) => - sources.map(({ format, src, srcset }) => - src - ? getImgElement({ - src, - alt, - sizes, - style, - srcset, - loading, - decoding, - imagesizes, - fadeInTransition, - layoutStyles, - imgAttributes, - }) - : `` - ) - ); - - const picture = getPictureElement({ - sources, - className, - layoutStyles, - pictureAttributes, - isBackgroundPicture: true, - }); - - const htmlElement = getContainerElement({ - tag, - content: picture + content, - containerAttributes, - isBackgroundPicture: true, - containerClassName, - }); - - return { link, style, htmlElement }; -} diff --git a/packages/imagetools/api/renderImg.d.ts b/packages/imagetools/api/renderImg.d.ts deleted file mode 100644 index 338ef90..0000000 --- a/packages/imagetools/api/renderImg.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { ImgConfigOptions, ImgHTMLData } from "../types"; - -export default function renderImg( - config: ImgConfigOptions -): Promise; diff --git a/packages/imagetools/api/renderImg.js b/packages/imagetools/api/renderImg.js deleted file mode 100644 index 31fb130..0000000 --- a/packages/imagetools/api/renderImg.js +++ /dev/null @@ -1,93 +0,0 @@ -// @ts-check -import getImage from "./utils/getImage.js" -import getImgElement from "./utils/getImgElement.js" -import getLinkElement from "./utils/getLinkElement.js" -import getStyleElement from "./utils/getStyleElement.js" -import getLayoutStyles from "./utils/getLayoutStyles.js" -import getFilteredProps from "./utils/getFilteredProps.js" -import getBackgroundStyles from "./utils/getBackgroundStyles.js" - -export default async function renderImg(props) { - const type = "Img" - const { filteredProps, transformConfigs } = getFilteredProps(type, props) - const { - src, - alt, - sizes, - preload, - loading, - decoding, - attributes, - layout, - breakpoints, - placeholder, - objectFit, - objectPosition, - format, - formatOptions, - } = filteredProps; - - const artDirectives = [], - fallbackFormat = format, - fadeInTransition = false, - includeSourceFormat = false - - const { - img: imgAttributes = {}, - link: linkAttributes = {}, - style: styleAttributes = {}, - } = attributes - - const { uuid, images } = await getImage({ - src, - type, - sizes, - format, - breakpoints, - placeholder, - artDirectives, - fallbackFormat, - includeSourceFormat, - formatOptions, - transformConfigs, - }) - - const className = `imagetools-img-${uuid}` - const { imagesizes } = images[images.length - 1] - const backgroundStyles = getBackgroundStyles( - images, - className, - objectFit, - objectPosition, - fadeInTransition, - { isImg: true } - ); - - const style = getStyleElement({ styleAttributes, backgroundStyles }) - const link = getLinkElement({ images, preload, imagesizes, linkAttributes }) - const layoutStyles = getLayoutStyles({ layout }) - - const sources = images.flatMap(({ sources, sizes, imagesizes }) => - sources.map(({ src, srcset }) => - getImgElement({ - src, - alt, - sizes, - style, - srcset, - loading, - decoding, - imagesizes, - fadeInTransition, - layoutStyles, - imgAttributes, - imgClassName: className, - uuid - }) - ) - ); - - const [img] = sources; - - return { link, style, img } -} diff --git a/packages/imagetools/api/renderPicture.d.ts b/packages/imagetools/api/renderPicture.d.ts deleted file mode 100644 index a0fc9c3..0000000 --- a/packages/imagetools/api/renderPicture.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { PictureConfigOptions, PictureHTMLData } from "../types.d.ts" - -export default function renderPicture( - config: PictureConfigOptions -): Promise; diff --git a/packages/imagetools/api/renderPicture.js b/packages/imagetools/api/renderPicture.js deleted file mode 100644 index 84fc7c9..0000000 --- a/packages/imagetools/api/renderPicture.js +++ /dev/null @@ -1,106 +0,0 @@ -// @ts-check -import getImage from "./utils/getImage.js" -import getImgElement from "./utils/getImgElement.js" -import getLinkElement from "./utils/getLinkElement.js" -import getStyleElement from "./utils/getStyleElement.js" -import getLayoutStyles from "./utils/getLayoutStyles.js" -import getFilteredProps from "./utils/getFilteredProps.js" -import getPictureElement from "./utils/getPictureElement.js" -import getBackgroundStyles from "./utils/getBackgroundStyles.js" - -export default async function renderPicture(props) { - const type = "Picture" - const { filteredProps, transformConfigs } = getFilteredProps(type, props) - const { - src, - alt, - sizes, - preload, - loading, - decoding, - attributes, - layout, - placeholder, - breakpoints, - objectFit, - objectPosition, - format, - fallbackFormat, - includeSourceFormat, - formatOptions, - fadeInTransition, - artDirectives, - } = filteredProps; - - const { - img: imgAttributes = {}, - link: linkAttributes = {}, - style: styleAttributes = {}, - picture: pictureAttributes = {}, - } = attributes; - - const { uuid, images } = await getImage({ - src, - type, - sizes, - format, - breakpoints, - placeholder, - fallbackFormat, - includeSourceFormat, - formatOptions, - artDirectives, - transformConfigs, - }) - - const className = `imagetools-picture-${uuid}` - - const { imagesizes } = images[images.length - 1] - - const backgroundStyles = getBackgroundStyles( - images, - className, - objectFit, - objectPosition, - fadeInTransition - ) - - const style = getStyleElement({ styleAttributes, backgroundStyles }) - const link = getLinkElement({ images, preload, imagesizes, linkAttributes }) - const layoutStyles = getLayoutStyles({ layout }) - const sources = images.flatMap(({ media, sources, sizes, imagesizes }) => - sources.map(({ format, src, srcset }) => - src - ? getImgElement({ - src, - alt, - sizes, - style, - srcset, - loading, - decoding, - imagesizes, - fadeInTransition, - layoutStyles, - imgAttributes, - }) - : `` - ) - ) - - const picture = getPictureElement({ - sources, - className, - layoutStyles, - pictureAttributes, - }) - - return { link, style, picture } -} diff --git a/packages/imagetools/api/utils/codecs.js b/packages/imagetools/api/utils/codecs.js deleted file mode 100644 index 8dfb21d..0000000 --- a/packages/imagetools/api/utils/codecs.js +++ /dev/null @@ -1,36 +0,0 @@ -// @ts-check -import fs from "node:fs"; -import { extname } from "node:path"; -import * as codecs from "@astropub/codecs"; - -export async function getImageDetails(path, width, height, aspect) { - const extension = extname(path).slice(1); - const imageFormat = extension === "jpeg" ? "jpg" : extension; - const buffer = fs.readFileSync(path); - const decodedImage = await codecs.jpg.decode(buffer); - - if (aspect && !width && !height) { - if (!width && !height) { - ({ width } = decodedImage); - } - - if (width) { - height = width / aspect; - } - - if (height) { - width = height * aspect; - } - } - - const image = await decodedImage.resize({ width, height }); - - const { width: imageWidth, height: imageHeight } = image; - - return { - image, - imageWidth, - imageHeight, - imageFormat, - }; -} diff --git a/packages/imagetools/api/utils/getArtDirectedImages.js b/packages/imagetools/api/utils/getArtDirectedImages.js deleted file mode 100644 index ca23e50..0000000 --- a/packages/imagetools/api/utils/getArtDirectedImages.js +++ /dev/null @@ -1,137 +0,0 @@ -// @ts-check -import getSrcset from "./getSrcset.js"; -import getConfigOptions from "./getConfigOptions.js"; -import getFallbackImage from "./getFallbackImage.js"; -import getProcessedImage from "./getProcessedImage.js"; - -export default async function getArtDirectedImages( - artDirectives = [], - placeholder, - format, - imagesizes, - breakpoints, - fallbackFormat, - includeSourceFormat, - formatOptions, - rest -) { - const images = await Promise.all( - artDirectives.map( - async ({ - src, - media, - sizes: directiveImagesizes, - placeholder: directivePlaceholder, - breakpoints: directiveBreakpoints, - objectFit, - objectPosition, - backgroundSize, - backgroundPosition, - format: directiveFormat, - fallbackFormat: directiveFallbackFormat, - includeSourceFormat: directiveIncludeSourceFormat, - formatOptions: directiveFormatOptions = {}, - ...configOptions - }) => { - const { - path, - base, - rest: rest2, - image, - imageWidth, - imageHeight, - imageFormat, - } = await getProcessedImage(src, configOptions); - - rest2.aspect = `${imageWidth / imageHeight}`; - - const calculatedConfigs = getConfigOptions( - imageWidth, - directiveImagesizes || imagesizes, - directiveBreakpoints || breakpoints, - directiveFormat || format, - imageFormat, - directiveFallbackFormat || fallbackFormat, - directiveIncludeSourceFormat || includeSourceFormat - ); - - const { formats, requiredBreakpoints } = calculatedConfigs; - - imagesizes = calculatedConfigs.imagesizes; - - const maxWidth = requiredBreakpoints[requiredBreakpoints.length - 1]; - - const sources = await Promise.all( - formats.map(async (format) => { - const srcset = await getSrcset( - path, - base, - requiredBreakpoints, - format, - { - ...rest, - ...rest2, - ...formatOptions[format], - ...directiveFormatOptions[format], - } - ); - - return { - format, - srcset, - }; - }) - ); - - const sizes = { - width: maxWidth, - height: Math.round(maxWidth / rest2.aspect), - }; - - const object = { - fit: objectFit, - position: objectPosition, - }; - - const background = { - size: backgroundSize, - position: backgroundPosition, - }; - - const fallback = await getFallbackImage( - path, - directivePlaceholder || placeholder, - image, - imageFormat, - { ...formatOptions, ...directiveFormatOptions }, - { ...rest, ...rest2 } - ); - - const returnValue = { - media, - sources, - sizes, - fallback, - imagesizes, - }; - - const isBackgroundImage = !!backgroundSize || !!backgroundPosition; - - isBackgroundImage - ? (returnValue.background = background) - : (returnValue.object = object); - - return { - media, - sources, - sizes, - object, - fallback, - imagesizes, - }; - } - ) - ); - - return images; -} diff --git a/packages/imagetools/api/utils/getAttributesString.js b/packages/imagetools/api/utils/getAttributesString.js deleted file mode 100644 index 22975e5..0000000 --- a/packages/imagetools/api/utils/getAttributesString.js +++ /dev/null @@ -1,27 +0,0 @@ -// @ts-check - -import printWarning from "../../utils/printWarning.js"; - -export default function getAttributesString({ - attributes, - element = "", - excludeArray = [], -}) { - const attributesString = Object.keys(attributes) - .filter((key) => { - if (excludeArray.includes(key)) { - printWarning({ - key, - element, - }); - - return false; - } - - return true; - }) - .map((key) => `${key}="${attributes[key]}"`) - .join(" "); - - return attributesString; -} diff --git a/packages/imagetools/api/utils/getBackgroundStyles.js b/packages/imagetools/api/utils/getBackgroundStyles.js deleted file mode 100644 index fff3ad3..0000000 --- a/packages/imagetools/api/utils/getBackgroundStyles.js +++ /dev/null @@ -1,97 +0,0 @@ -// @ts-check - -export default function getBackgroundStyles( - images, - className, - objectFit, - objectPosition, - fadeInTransition, - { isImg = false, isBackgroundPicture = false, containerClassName = "" } = {} -) { - const sourcesWithFallback = images.filter(({ fallback }) => fallback); - - if (sourcesWithFallback.length === 0) return ""; - - const staticStyles = !fadeInTransition - ? "" - : ` - ${ - isBackgroundPicture - ? ` - .${containerClassName} * { - z-index: 1; - position: relative; - } - ` - : "" - } - - .${className} { - --opacity: 1; - --z-index: 0; - } - - ${ - !isBackgroundPicture - ? ` - .${className} img { - z-index: 1; - position: relative; - } - ` - : "" - } - - .${className}::after { - inset: 0; - content: ""; - left: 0; - width: 100%; - height: 100%; - position: absolute; - pointer-events: none; - transition: opacity ${ - typeof fadeInTransition !== "object" - ? "1s" - : (() => { - const { - delay = "0s", - duration = "1s", - timingFunction = "ease", - } = fadeInTransition; - - return `${duration} ${timingFunction} ${delay}`; - })() - }; - opacity: var(--opacity); - z-index: var(--z-index); - } - `; - - const dynamicStyles = images - .map(({ media, fallback, object }) => { - const elementSelector = className + (!isImg ? " img" : ""), - backgroundElementSelector = - className + (fadeInTransition ? "::after" : ""); - - const style = ` - .${elementSelector} { - object-fit: ${object?.fit || objectFit}; - object-position: ${object?.position || objectPosition}; - } - - .${backgroundElementSelector} { - background-size: ${object?.fit || objectFit}; - background-image: url("${encodeURI(fallback)}"); - background-position: ${object?.position || objectPosition}; - } - `; - - return media ? `@media ${media} { ${style} }` : style; - }) - .reverse(); - - const backgroundStyles = [staticStyles, ...dynamicStyles].join(""); - - return backgroundStyles; -} diff --git a/packages/imagetools/api/utils/getBreakpoints.js b/packages/imagetools/api/utils/getBreakpoints.js deleted file mode 100644 index edfb827..0000000 --- a/packages/imagetools/api/utils/getBreakpoints.js +++ /dev/null @@ -1,77 +0,0 @@ -// @ts-check -import printWarning from "../../utils/printWarning.js"; - -export default function getBreakpoints(breakpoints, imageWidth) { - if (Array.isArray(breakpoints)) { - return breakpoints.sort((a, b) => a - b); - } - - const { count, minWidth = 320 } = breakpoints || {}; - - const maxWidth = (() => { - if (breakpoints?.maxWidth) return breakpoints.maxWidth; - - if (imageWidth > 3840) { - printWarning({ - message: - "The width of the source image is greater than 3840px. The generated breakpoints will be capped at 3840px. If you need breakpoints larger than this, please pass the maxWidth option to the breakpoints property.", - }); - - return 3840; - } - - return imageWidth; - })(); - - const breakPoints = []; - - const diff = maxWidth - minWidth; - - const n = - count || - (maxWidth <= 400 - ? 1 - : maxWidth <= 640 - ? 2 - : maxWidth <= 800 - ? 3 - : maxWidth <= 1024 - ? 4 - : maxWidth <= 1280 - ? 5 - : maxWidth <= 1440 - ? 6 - : maxWidth <= 1920 - ? 7 - : maxWidth <= 2560 - ? 8 - : maxWidth <= 2880 - ? 9 - : maxWidth <= 3840 - ? 10 - : 11); - - let currentWidth = minWidth; - - n > 1 && breakPoints.push(currentWidth); - - let steps = 0; - - for (let i = 1; i < n; i++) { - steps += i; - } - - const pixelsPerStep = diff / steps; - - for (let i = 1; i < n - 1; i++) { - const next = pixelsPerStep * (n - i) + currentWidth; - - breakPoints.push(Math.round(next)); - - currentWidth = next; - } - - breakPoints.push(maxWidth); - - return [...new Set(breakPoints)]; -} diff --git a/packages/imagetools/api/utils/getConfigOptions.js b/packages/imagetools/api/utils/getConfigOptions.js deleted file mode 100644 index 16220e5..0000000 --- a/packages/imagetools/api/utils/getConfigOptions.js +++ /dev/null @@ -1,34 +0,0 @@ -// @ts-check -import getBreakpoints from "./getBreakpoints.js"; - -export default function getConfigOptions( - imageWidth, - imagesizes, - breakpoints, - format, - imageFormat, - fallbackFormat, - includeSourceFormat -) { - const formats = [ - ...new Set( - [format, includeSourceFormat && imageFormat] - .flat() - .filter((f) => f && f !== fallbackFormat) - ), - fallbackFormat, - ]; - - const requiredBreakpoints = getBreakpoints(breakpoints, imageWidth); - - imagesizes = - typeof imagesizes === "string" - ? imagesizes - : imagesizes(requiredBreakpoints); - - return { - formats, - imagesizes, - requiredBreakpoints, - }; -} diff --git a/packages/imagetools/api/utils/getContainerElement.js b/packages/imagetools/api/utils/getContainerElement.js deleted file mode 100644 index 8ae04d6..0000000 --- a/packages/imagetools/api/utils/getContainerElement.js +++ /dev/null @@ -1,48 +0,0 @@ -// @ts-check -import getAttributesString from "./getAttributesString.js"; - -export default function getContainerElement({ - tag, - content, - className = "", - containerAttributes, - isBackgroundPicture = false, - containerClassName = "", -}) { - const { - class: customClasses = "", - style: customInlineStyles = "", - ...restContainerAttributes - } = containerAttributes; - - const attributesString = getAttributesString({ - attributes: restContainerAttributes, - }); - - const classAttribute = [ - isBackgroundPicture - ? "astro-imagetools-background-picture" - : "astro-imagetools-background-image", - isBackgroundPicture ? containerClassName : className, - customClasses, - ] - .join(" ") - .trim(); - - const styleAttribute = [ - isBackgroundPicture ? "position: relative;" : "", - customInlineStyles + (customInlineStyles.endsWith(";") ? "" : ";"), - ] - .join(" ") - .trim(); - - const containerElement = `<${tag} - ${attributesString} - class="${classAttribute}" - style="${styleAttribute}" - > - ${content} - `; - - return containerElement; -} diff --git a/packages/imagetools/api/utils/getFallbackImage.js b/packages/imagetools/api/utils/getFallbackImage.js deleted file mode 100644 index 91d1fad..0000000 --- a/packages/imagetools/api/utils/getFallbackImage.js +++ /dev/null @@ -1,58 +0,0 @@ -// @ts-check - -import util from "node:util"; -import potrace from "potrace"; -import getSrcset from "./getSrcset.js"; -import { sharp } from "../../utils/runtimeChecks.js"; - -export default async function getFallbackImage( - src, - placeholder, - image, - format, - formatOptions, - rest -) { - const base = null; - - switch (placeholder) { - case "blurred": { - const dataUri = await getSrcset(src, base, [20], format, { - inline: true, - ...rest, - ...formatOptions[format], - }); - - return dataUri; - } - case "tracedSVG": { - const { function: fn, options } = formatOptions.tracedSVG; - - const traceSVG = util.promisify(potrace[fn]); - - const imageBuffer = sharp - ? await image.toBuffer() - : Buffer.from( - (await image.encode(`image/${format === "jpg" ? "jpeg" : format}`)) - .data - ); - - const tracedSVG = await traceSVG(imageBuffer, options); - - return `data:image/svg+xml;utf8,${tracedSVG}`; - } - case "dominantColor": { - if (sharp) { - var { r, g, b } = (await image.stats()).dominant; - } else { - [r, g, b] = image.color; - } - - const svg = ``; - - return `data:image/svg+xml;utf8,${svg}`; - } - default: - return null; - } -} diff --git a/packages/imagetools/api/utils/getFilteredProps.js b/packages/imagetools/api/utils/getFilteredProps.js deleted file mode 100644 index 4d9d7f0..0000000 --- a/packages/imagetools/api/utils/getFilteredProps.js +++ /dev/null @@ -1,138 +0,0 @@ -// @ts-check -import filterConfigs from "../../utils/filterConfigs.js"; -import { - supportedConfigs, - GlobalConfigOptions, -} from "../../utils/runtimeChecks.js"; - -const GlobalOnlyProperties = ["cacheDir", "assetFileNames"]; - -const NonGlobalSupportedConfigs = supportedConfigs.filter( - (key) => !GlobalOnlyProperties.includes(key) -); - -const NonProperties = { - Img: [ - "tag", - "content", - "backgroundSize", - "backgroundPosition", - "fallbackFormat", - "includeSourceFormat", - "fadeInTransition", - "artDirectives", - ], - Picture: ["tag", "content", "backgroundSize", "backgroundPosition"], - BackgroundImage: [ - "alt", - "loading", - "decoding", - "layout", - "objectFit", - "objectPosition", - "fadeInTransition", - ], - BackgroundPicture: ["alt", "backgroundSize", "backgroundPosition"], -}; - -const ImgProperties = NonGlobalSupportedConfigs.filter( - (key) => !NonProperties.Img.includes(key) - ), - PictureProperties = NonGlobalSupportedConfigs.filter( - (key) => !NonProperties.Picture.includes(key) - ), - BackgroundImageProperties = NonGlobalSupportedConfigs.filter( - (key) => !NonProperties.BackgroundImage.includes(key) - ), - BackgroundPictureProperties = NonGlobalSupportedConfigs.filter( - (key) => !NonProperties.BackgroundPicture.includes(key) - ); - -const SupportedProperties = { - Img: ImgProperties, - Picture: PictureProperties, - BackgroundImage: BackgroundImageProperties, - BackgroundPicture: BackgroundPictureProperties, -}; - -export default function getFilteredProps(type, props) { - const filteredGlobalConfigs = filterConfigs( - "Global", - GlobalConfigOptions, - SupportedProperties[type], - { warn: false } - ); - - const { search, searchParams } = new URL(props.src, "file://"); - - props.src = props.src.replace(search, ""); - - const paramOptions = Object.fromEntries(searchParams); - - const filteredLocalProps = filterConfigs( - type, - { - ...paramOptions, - ...props, - }, - SupportedProperties[type] - ); - - const resolvedProps = { - ...filteredGlobalConfigs, - ...filteredLocalProps, - }; - - const { - src, - alt, - tag = "section", - content = "", - sizes = function (breakpoints) { - const maxWidth = breakpoints[breakpoints.length - 1]; - return `(min-width: ${maxWidth}px) ${maxWidth}px, 100vw`; - }, - preload, - loading = preload ? "eager" : "lazy", - decoding = "async", - attributes = {}, - layout = "constrained", - placeholder = "blurred", - breakpoints, - objectFit = "cover", - objectPosition = "50% 50%", - backgroundSize = "cover", - backgroundPosition = "50% 50%", - format = type === "Img" ? undefined : ["avif", "webp"], - fallbackFormat, - includeSourceFormat = true, - formatOptions = { - tracedSVG: { - function: "trace", - }, - }, - fadeInTransition = true, - artDirectives, - ...transformConfigs - } = resolvedProps; - - // prettier-ignore - const allProps = { - src, alt, tag, content, sizes, preload, loading, decoding, attributes, layout, placeholder, - breakpoints, objectFit, objectPosition, backgroundSize, backgroundPosition, format, - fallbackFormat, includeSourceFormat, formatOptions, fadeInTransition, artDirectives, - ...transformConfigs, - }; - - const filteredProps = filterConfigs( - type, - allProps, - SupportedProperties[type], - { warn: false } - ); - - return { - filteredProps, - transformConfigs, - }; -} diff --git a/packages/imagetools/api/utils/getFilteredProps.test.ts b/packages/imagetools/api/utils/getFilteredProps.test.ts deleted file mode 100644 index cdca949..0000000 --- a/packages/imagetools/api/utils/getFilteredProps.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { describe, expect, it } from "vitest"; -import getFilteredProps from "./getFilteredProps"; - -describe("getFilteredProps", () => { - it("should should merge in default props", () => { - const result = getFilteredProps("Img", { src: "/img.jpeg", alt: "alt" }); - expect(result).toEqual({ - filteredProps: { - alt: "alt", - attributes: {}, - breakpoints: undefined, - decoding: "async", - format: undefined, - formatOptions: { - tracedSVG: { - function: "trace", - }, - }, - layout: "constrained", - loading: "lazy", - objectFit: "cover", - objectPosition: "50% 50%", - placeholder: "blurred", - preload: undefined, - sizes: expect.any(Function), - src: "/img.jpeg", - }, - transformConfigs: {}, - }); - }); - - it("should accept empty string for `alt` prop on Img", () => { - const result = getFilteredProps("Img", { src: "/img.jpeg", alt: "" }); - expect(result).toMatchObject({ - filteredProps: { - alt: "", - }, - }); - }); - - it("should accept empty string for `alt` prop on Picture", () => { - const result = getFilteredProps("Picture", { src: "/img.jpeg", alt: "" }); - expect(result).toMatchObject({ - filteredProps: { - alt: "", - }, - }); - }); -}); diff --git a/packages/imagetools/api/utils/getImage.js b/packages/imagetools/api/utils/getImage.js deleted file mode 100644 index 21865ea..0000000 --- a/packages/imagetools/api/utils/getImage.js +++ /dev/null @@ -1,80 +0,0 @@ -// @ts-check -import crypto from "node:crypto"; -import objectHash from "object-hash"; -import getImageSources from "./getImageSources.js"; -import getProcessedImage from "./getProcessedImage.js"; -import getArtDirectedImages from "./getArtDirectedImages.js"; - -const imagesData = new Map(); - -export default async function ({ - src, - type, - sizes: imagesizes, - format, - breakpoints, - placeholder, - fallbackFormat, - includeSourceFormat, - formatOptions, - artDirectives, - transformConfigs, -}) { - const args = Array.from(arguments); - const hash = objectHash(args); - if (imagesData.has(hash)) { - return imagesData.get(hash); - } - const { path, base, rest, image, imageWidth, imageHeight, imageFormat } = - await getProcessedImage(src, transformConfigs); - - src = path; - - rest.aspect = `${imageWidth / imageHeight}`; - - if (!fallbackFormat) { - fallbackFormat = imageFormat; - } - try { - const [mainImage, artDirectedImages] = await Promise.all([ - getImageSources( - src, - base, - image, - format, - imageWidth, - imagesizes, - breakpoints, - placeholder, - imageFormat, - formatOptions, - fallbackFormat, - includeSourceFormat, - rest - ), - getArtDirectedImages( - artDirectives, - placeholder, - format, - imagesizes, - breakpoints, - fallbackFormat, - includeSourceFormat, - formatOptions, - rest - ), - ]); - - const images = [...artDirectedImages, mainImage] - //const uuid = crypto.createHash('md5').update(src).digest('hex').substring(0, 5) - const uuid = crypto.randomBytes(4).toString("hex").toUpperCase() - const returnObject = { - uuid, - images, - } - imagesData.set(hash, returnObject) - return returnObject; - } catch (error) { - console.error(`Error getImage :${src}`, error) - } -} diff --git a/packages/imagetools/api/utils/getImageSources.js b/packages/imagetools/api/utils/getImageSources.js deleted file mode 100644 index 7a728e4..0000000 --- a/packages/imagetools/api/utils/getImageSources.js +++ /dev/null @@ -1,74 +0,0 @@ -// @ts-check -import getSrcset from "./getSrcset.js"; -import getConfigOptions from "./getConfigOptions.js"; -import getFallbackImage from "./getFallbackImage.js"; - -export default async function getImageSources( - src, - base, - image, - format, - imageWidth, - imagesizes, - breakpoints, - placeholder, - imageFormat, - formatOptions, - fallbackFormat, - includeSourceFormat, - rest -) { - const calculatedConfigs = getConfigOptions( - imageWidth, - imagesizes, - breakpoints, - format, - imageFormat, - fallbackFormat, - includeSourceFormat - ); - - const { formats, requiredBreakpoints } = calculatedConfigs; - - imagesizes = calculatedConfigs.imagesizes; - - const maxWidth = requiredBreakpoints[requiredBreakpoints.length - 1]; - const sliceLength = -(maxWidth.toString().length + 2); - - const sources = await Promise.all( - formats.map(async (format) => { - const srcset = await getSrcset(src, base, requiredBreakpoints, format, { - ...rest, - ...formatOptions[format], - }); - - const srcsets = srcset.split(", "); - const srcObject = - format === fallbackFormat - ? { src: srcsets[srcsets.length - 1].slice(0, sliceLength) } - : {}; - - return { - ...srcObject, - format, - srcset, - }; - }) - ); - - const sizes = { - width: maxWidth, - height: Math.round(maxWidth / rest.aspect), - }; - - const fallback = await getFallbackImage( - src, - placeholder, - image, - fallbackFormat, - formatOptions, - rest - ); - - return { sources, sizes, fallback, imagesizes }; -} diff --git a/packages/imagetools/api/utils/getImgElement.js b/packages/imagetools/api/utils/getImgElement.js deleted file mode 100644 index a119a5f..0000000 --- a/packages/imagetools/api/utils/getImgElement.js +++ /dev/null @@ -1,80 +0,0 @@ -// @ts-check -import getAttributesString from "./getAttributesString.js" -export default function getImgElement({ - src, - alt, - sizes, - style, - srcset, - loading, - decoding, - imagesizes, - fadeInTransition, - layoutStyles, - imgAttributes, - imgClassName = "", - uuid = "" -}) { - const { - class: customClasses = "", - style: customInlineStyles = "", - onload: customOnload = "", - ...restImgAttributes - } = imgAttributes; - - const attributesString = getAttributesString({ - attributes: restImgAttributes, - element: "img", - excludeArray: [ - "src", - "alt", - "srcset", - "sizes", - "width", - "height", - "loading", - "decoding", - ], - }); - - const classAttribute = ["imagetools-img", imgClassName, customClasses] - .join(" ") - .trim(); - - const styleAttribute = [ - "display: inline-block; overflow: hidden; vertical-align: middle;", - customInlineStyles + (customInlineStyles.endsWith(";") ? "" : ";"), - layoutStyles, - ] - .join(" ") - .trim(); - - const onloadAttribute = [ - !imgClassName && style - ? fadeInTransition - ? `parentElement.style.setProperty('--z-index', 1); parentElement.style.setProperty('--opacity', 0);` - : `parentElement.style.backgroundImage = 'unset';` - : "", - customOnload, - ] - .join(" ") - .trim(); - - const imgElement = `==`; - - return imgElement; -} diff --git a/packages/imagetools/api/utils/getLayoutStyles.js b/packages/imagetools/api/utils/getLayoutStyles.js deleted file mode 100644 index 296c6d1..0000000 --- a/packages/imagetools/api/utils/getLayoutStyles.js +++ /dev/null @@ -1,9 +0,0 @@ -// @ts-check - -export default function getLayoutStyles({ - layout = null, - isBackgroundImage = false, -}) { - return isBackgroundImage ? - "max-width: 100%; height: 100%;" : "" ; -} diff --git a/packages/imagetools/api/utils/getLinkElement.js b/packages/imagetools/api/utils/getLinkElement.js deleted file mode 100644 index ad2a1aa..0000000 --- a/packages/imagetools/api/utils/getLinkElement.js +++ /dev/null @@ -1,34 +0,0 @@ -// @ts-check -import getAttributesString from "./getAttributesString.js"; - -export default function getLinkElement({ - images = [], - preload = "", - imagesizes = "", - linkAttributes, -}) { - const imagesrcset = - preload && - images[images.length - 1]?.sources.find( - ({ format: fmt }) => fmt === preload - )?.srcset; - - const attributesString = getAttributesString({ - element: "link", - attributes: linkAttributes, - excludeArray: ["as", "rel", "imagesizes", "imagesrcset"], - }); - - const linkElement = - preload && images.length - ? `` - : ""; - - return linkElement; -} diff --git a/packages/imagetools/api/utils/getLinkElement.test.ts b/packages/imagetools/api/utils/getLinkElement.test.ts deleted file mode 100644 index ead19e4..0000000 --- a/packages/imagetools/api/utils/getLinkElement.test.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { describe, expect, it } from "vitest"; -import getLinkElement from "./getLinkElement"; - -describe("getLinkElement", () => { - it("returns an empty string if preload is not set", () => { - const result = getLinkElement({ linkAttributes: {} }); - expect(result).toBe(""); - }); - - it("returns an empty string if no images are provided", () => { - const result = getLinkElement({ linkAttributes: {}, preload: "webp" }); - expect(result).toBe(""); - }); -}); diff --git a/packages/imagetools/api/utils/getPictureElement.js b/packages/imagetools/api/utils/getPictureElement.js deleted file mode 100644 index ba18092..0000000 --- a/packages/imagetools/api/utils/getPictureElement.js +++ /dev/null @@ -1,43 +0,0 @@ -// @ts-check -import getAttributesString from "./getAttributesString.js"; - -export default function getPictureElement({ - sources, - className, - layoutStyles, - pictureAttributes, - isBackgroundPicture = false, -}) { - const { - class: customClasses = "", - style: customInlineStyles = "", - ...restPictureAttributes - } = pictureAttributes; - - const attributesString = getAttributesString({ - attributes: restPictureAttributes, - }); - - const classAttribute = ["imagetools-picture", className, customClasses] - .join(" ") - .trim(); - - const styleAttribute = [ - isBackgroundPicture - ? `position: absolute; z-index: 0; width: 100%; height: 100%; display: inline-block;` - : `position: relative; display: inline-block;`, - customInlineStyles + (customInlineStyles.endsWith(";") ? "" : ";"), - layoutStyles, - ] - .join(" ") - .trim(); - - const pictureElement = `${sources.join("\n")} - `; - - return pictureElement; -} diff --git a/packages/imagetools/api/utils/getProcessedImage.js b/packages/imagetools/api/utils/getProcessedImage.js deleted file mode 100644 index ec6f619..0000000 --- a/packages/imagetools/api/utils/getProcessedImage.js +++ /dev/null @@ -1,52 +0,0 @@ -import { fileURLToPath } from "node:url" -import { extname, relative, resolve } from "node:path" -import { getSrcPath } from "./getSrcPath.js" -import getResolvedSrc from "./getResolvedSrc.js" -import { cwd, sharp, fsCachePath } from "../../utils/runtimeChecks.js" -import throwErrorIfUnsupported from "./throwErrorIfUnsupported.js" -import { getImageDetails } from "./imagetools.js" - -export default async function getProcessedImage(src, transformConfigs) { - throwErrorIfUnsupported(src, extname(src).slice(1)); - let base; - if (src.match("(http://|https://|data:image/).*")) { - ({ src, base } = await getResolvedSrc(src)); - } else { - const { - default: { isSsrBuild }, - } = await import("../../astroViteConfigs.js"); - - if (isSsrBuild) { - const filename = fileURLToPath(import.meta.url); - const assetPath = resolve(filename, "../../client") + src; - src = "/" + relative(cwd, assetPath); - } - } - - const { - w, - h, - ar, - width = w, - height = h, - aspect = ar, - ...rest - } = transformConfigs - - const path = src.replace(/\\/g, `/`) - const { image, imageWidth, imageHeight, imageFormat } = await getImageDetails( - await getSrcPath(src), - width, - height, - aspect - ) - return { - path, - base, - rest, - image, - imageWidth, - imageHeight, - imageFormat, - } -} diff --git a/packages/imagetools/api/utils/getResolvedSrc.js b/packages/imagetools/api/utils/getResolvedSrc.js deleted file mode 100644 index befa7e3..0000000 --- a/packages/imagetools/api/utils/getResolvedSrc.js +++ /dev/null @@ -1,45 +0,0 @@ -// @ts-check -import fs from "node:fs"; -import crypto from "node:crypto"; -import { join, parse, relative } from "node:path"; -import throwErrorIfUnsupported from "./throwErrorIfUnsupported.js"; -import { - cwd, - fsCachePath, - supportedImageTypes, -} from "../../utils/runtimeChecks.js"; - -const { fileTypeFromBuffer } = await import("file-type"); - -export default async function getResolvedSrc(src) { - // const token = crypto.createHash("md5").update(src).digest("hex"); - const token = crypto.randomBytes(4).toString("hex").toUpperCase() - - let filepath = fsCachePath + token; - - const fileExists = (() => { - for (const type of supportedImageTypes) { - const fileExists = fs.existsSync(filepath + `.${type}`); - - if (fileExists) { - filepath += `.${type}`; - - return true; - } - } - })(); - - if (!fileExists) { - const buffer = Buffer.from(await (await fetch(src)).arrayBuffer()) - const { ext } = (await fileTypeFromBuffer(buffer)) || {} - throwErrorIfUnsupported(src, ext) - filepath += `.${ext}` - fs.writeFileSync(filepath, buffer) - } - - const base = /^https?:/.test(src) - ? parse(new URL(src).pathname).name - : undefined - //src = join("/", relative(cwd, filepath)) - return { src: filepath, base } -} diff --git a/packages/imagetools/api/utils/getSrcPath.js b/packages/imagetools/api/utils/getSrcPath.js deleted file mode 100644 index 8878956..0000000 --- a/packages/imagetools/api/utils/getSrcPath.js +++ /dev/null @@ -1,32 +0,0 @@ -import fs from "node:fs"; -import path from "node:path"; - -// To strip off params when checking for file on disk. -const paramPattern = /\?.*/; - -/** - * getSrcPath allows the use of `src` attributes relative to either the public folder or project root. - * - * It first checks to see if the src is a file relative to the project root. - * If the file isn't found, it will look in the public folder. - * Finally, if it still can't be found, the original input will be returned. - */ -export async function getSrcPath(src) { - const { default: astroViteConfigs } = await import( - "../../astroViteConfigs.js" - ); - - // If this is already resolved to a file, return it. - if (fs.existsSync(src.replace(paramPattern, ""))) return src; - - const rootPath = path.join(astroViteConfigs.rootDir, src); - const rootTest = rootPath.replace(paramPattern, ""); - if (fs.existsSync(rootTest)) return rootPath; - - const publicPath = path.join(astroViteConfigs.publicDir, src); - const publicTest = publicPath.replace(paramPattern, ""); - if (fs.existsSync(publicTest)) return publicPath; - - // Fallback - return src; -} diff --git a/packages/imagetools/api/utils/getSrcPath.test.ts b/packages/imagetools/api/utils/getSrcPath.test.ts deleted file mode 100644 index 0dec2ce..0000000 --- a/packages/imagetools/api/utils/getSrcPath.test.ts +++ /dev/null @@ -1,67 +0,0 @@ -import path from "node:path"; -import { describe, expect, it, afterAll, vi } from "vitest"; -import { getSrcPath } from "./getSrcPath"; - -vi.mock("../../astroViteConfigs.js", () => { - return { - default: { - rootDir: buildPath(), - // Custom publicDir - publicDir: buildPath("out"), - }, - }; -}); - -/** - * Build an absolute path to the target in the fixture directory - */ -function buildPath(target = "") { - return path.resolve(__dirname, "../../test-fixtures/getSrcPath", target); -} - -describe("getLinkElement", () => { - afterAll(() => { - vi.unmock("../../astroViteConfigs.js"); - }); - - it("finds a file in the root of the project", async () => { - const result = await getSrcPath("root.jpeg"); - expect(result).toBe(buildPath("root.jpeg")); - }); - - it("finds a file in the public folder", async () => { - const result = await getSrcPath("out.jpeg"); - expect(result).toBe(buildPath("out/out.jpeg")); - }); - - it("returns an absolute path unchanged, if it exists", async () => { - const result = await getSrcPath(buildPath("out/out.jpeg")); - expect(result).toBe(buildPath("out/out.jpeg")); - }); - - it("handles query parameters", async () => { - const result = await getSrcPath("root.jpeg?w=200"); - expect(result).toBe(buildPath("root.jpeg?w=200")); - }); - - it("handles query parameters for public-resolved files", async () => { - const result = await getSrcPath("out.jpeg?w=200"); - expect(result).toBe(buildPath("out/out.jpeg?w=200")); - }); - - it("returns the original input if the file is not found", async () => { - const result = await getSrcPath( - "https://cdn.nedis.com/images/products_high_res/TVRC2080BK_P30.JPG" - ); - expect(result).toBe( - "https://cdn.nedis.com/images/products_high_res/TVRC2080BK_P30.JPG" - ); - }); - - it("finds relative paths correctly", async () => { - const outResult = await getSrcPath("./out/out.jpeg"); - const rootResult = await getSrcPath("./root.jpeg"); - expect(outResult).toBe(buildPath("out/out.jpeg")); - expect(rootResult).toBe(buildPath("root.jpeg")); - }); -}); diff --git a/packages/imagetools/api/utils/getSrcset.js b/packages/imagetools/api/utils/getSrcset.js deleted file mode 100644 index 6bc3991..0000000 --- a/packages/imagetools/api/utils/getSrcset.js +++ /dev/null @@ -1,39 +0,0 @@ -// @ts-check -import { getSrcPath } from "./getSrcPath.js"; - -export default async function getSrcset( - src, - base, - breakpoints, - format, - options -) { - options = { - format, - w: breakpoints, - ...options, - }; - - const keys = Object.keys(options); - - const params = keys.length - ? keys - .map((key) => - Array.isArray(options[key]) - ? `&${key}=${options[key].join(";")}` - : `&${key}=${options[key]}` - ) - .join("") - : ""; - - const id = `${src}?${params.slice(1)}`; - - const fullPath = await getSrcPath(id); - - const { default: load } = await import("../../plugin/hooks/load.js"); - - // @ts-ignore - const srcset = (await load(fullPath, base)).slice(16, -1); - - return srcset; -} diff --git a/packages/imagetools/api/utils/getStyleElement.js b/packages/imagetools/api/utils/getStyleElement.js deleted file mode 100644 index 1c1c19c..0000000 --- a/packages/imagetools/api/utils/getStyleElement.js +++ /dev/null @@ -1,15 +0,0 @@ -// @ts-check -import getAttributesString from "./getAttributesString.js"; - -export default function getStyleElement({ - styleAttributes, - backgroundStyles = "", -}) { - const attributesString = getAttributesString({ - attributes: styleAttributes, - }); - - const styleElement = ``; - - return styleElement; -} diff --git a/packages/imagetools/api/utils/imagetools.js b/packages/imagetools/api/utils/imagetools.js deleted file mode 100644 index c3d89c3..0000000 --- a/packages/imagetools/api/utils/imagetools.js +++ /dev/null @@ -1,41 +0,0 @@ -// @ts-check -import { - builtins, - loadImage, - applyTransforms, - generateTransforms, -} from "imagetools-core"; - -export { - loadImage -} from "imagetools-core"; - -export async function getImageDetails(path, width, height, aspect) { - const loadedImage = loadImage(path) - if (aspect && !width && !height) { - if (!width && !height) { - ({ width } = await loadedImage.metadata()); - } - - if (width) { - height = width / aspect; - } - - if (height) { - width = height * aspect; - } - } - - const { image, metadata } = await applyTransforms( - generateTransforms({ width, height }, builtins).transforms, - loadedImage - ); - - const { - width: imageWidth, - height: imageHeight, - format: imageFormat, - } = metadata; - - return { image, imageWidth, imageHeight, imageFormat }; -} diff --git a/packages/imagetools/api/utils/throwErrorIfUnsupported.js b/packages/imagetools/api/utils/throwErrorIfUnsupported.js deleted file mode 100644 index 730f47e..0000000 --- a/packages/imagetools/api/utils/throwErrorIfUnsupported.js +++ /dev/null @@ -1,14 +0,0 @@ -// @ts-check -import { supportedImageTypes } from "../../utils/runtimeChecks.js"; - -export default function throwErrorIfUnsupported(src, ext) { - if (!ext && typeof ext !== "string") { - throw new Error(`Failed to load ${src}; Invalid image format`); - } - - if (ext && !supportedImageTypes.includes(ext.toLowerCase())) { - throw new Error( - `Failed to load ${src}; Invalid image format ${ext} or the format is not supported by astro-imagetools` - ); - } -} diff --git a/packages/imagetools/astroViteConfigs.js b/packages/imagetools/astroViteConfigs.js deleted file mode 100644 index af59ac4..0000000 --- a/packages/imagetools/astroViteConfigs.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - "environment": "build", - "isSsrBuild": false, - "projectBase": "", - "publicDir": "C:\\Users\\zx\\Desktop\\polymech\\site-min\\public\\", - "rootDir": "C:\\Users\\zx\\Desktop\\polymech\\site-min\\", - "mode": "production", - "outDir": "C:\\Users\\zx\\Desktop\\polymech\\site-min\\dist\\", - "assetsDir": "_astro", - "sourcemap": false, - "assetFileNames": "/_astro/[name]@[width].[hash][extname]" -} \ No newline at end of file diff --git a/packages/imagetools/components/BackgroundImage.astro b/packages/imagetools/components/BackgroundImage.astro deleted file mode 100644 index 9ae417a..0000000 --- a/packages/imagetools/components/BackgroundImage.astro +++ /dev/null @@ -1,46 +0,0 @@ ---- -import renderBackgroundImage from "../api/renderBackgroundImage.js"; -import type { BackgroundImageConfigOptions } from "../types.d"; - -const content = await Astro.slots.render("default"); - -declare interface Props - extends Pick< - BackgroundImageConfigOptions, - Exclude - > {} - -const { link, style, htmlElement } = await renderBackgroundImage({ - content, - ...(Astro.props as Props), -}); ---- - - - - diff --git a/packages/imagetools/components/BackgroundPicture.astro b/packages/imagetools/components/BackgroundPicture.astro deleted file mode 100644 index 0919dcb..0000000 --- a/packages/imagetools/components/BackgroundPicture.astro +++ /dev/null @@ -1,19 +0,0 @@ ---- -import renderBackgroundPicture from "../api/renderBackgroundPicture.js"; -import { BackgroundPictureConfigOptions } from "../types.d"; - -declare interface Props - extends Pick< - BackgroundPictureConfigOptions, - Exclude - > {} - -const content = await Astro.slots.render("default"); - -const { link, style, htmlElement } = await renderBackgroundPicture({ - content, - ...(Astro.props as Props), -}); ---- - - diff --git a/packages/imagetools/components/Image.astro b/packages/imagetools/components/Image.astro deleted file mode 100644 index 28eda36..0000000 --- a/packages/imagetools/components/Image.astro +++ /dev/null @@ -1,8 +0,0 @@ ---- -import renderImage from "../api/renderImg.js" -import type { PictureConfigOptions as ImageConfigOptions } from "../types.d" -const { link, style, image } = await renderImage( - Astro.props as ImageConfigOptions -) ---- - diff --git a/packages/imagetools/components/ImageSupportDetection.astro b/packages/imagetools/components/ImageSupportDetection.astro deleted file mode 100644 index 2ddddf8..0000000 --- a/packages/imagetools/components/ImageSupportDetection.astro +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/packages/imagetools/components/Img.astro b/packages/imagetools/components/Img.astro deleted file mode 100644 index 21e573c..0000000 --- a/packages/imagetools/components/Img.astro +++ /dev/null @@ -1,10 +0,0 @@ ---- -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/components/Picture.astro b/packages/imagetools/components/Picture.astro deleted file mode 100644 index 54f2e09..0000000 --- a/packages/imagetools/components/Picture.astro +++ /dev/null @@ -1,7 +0,0 @@ ---- -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/components/index.js b/packages/imagetools/components/index.js deleted file mode 100644 index e639c8f..0000000 --- a/packages/imagetools/components/index.js +++ /dev/null @@ -1,5 +0,0 @@ -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/config.d.ts b/packages/imagetools/config.d.ts deleted file mode 100644 index 77d6b73..0000000 --- a/packages/imagetools/config.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { GlobalConfigOptions } from "./types"; - -export function defineConfig(config: GlobalConfigOptions): GlobalConfigOptions; diff --git a/packages/imagetools/config.mjs b/packages/imagetools/config.mjs deleted file mode 100644 index 0059b4a..0000000 --- a/packages/imagetools/config.mjs +++ /dev/null @@ -1,3 +0,0 @@ -export function defineConfig(config) { - return config; -} diff --git a/packages/imagetools/index.js b/packages/imagetools/index.js deleted file mode 100644 index 44b179a..0000000 --- a/packages/imagetools/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import imagetools from "./integration/index.js" -export { imagetools } diff --git a/packages/imagetools/integration/index.js b/packages/imagetools/integration/index.js deleted file mode 100644 index ecf601e..0000000 --- a/packages/imagetools/integration/index.js +++ /dev/null @@ -1,79 +0,0 @@ -// @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"; - -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"; - - 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; - - if (mode === "production") { - const allEntries = [...store.entries()]; - - const assetPaths = allEntries.filter( - ([, { hash = null } = {}]) => hash - ); - - await Promise.all( - assetPaths.map( - async ([assetPath, { hash, image, buffer }]) => - await saveAndCopyAsset( - hash, - image, - buffer, - outDir, - assetsDir, - assetPath, - isSsrBuild - ) - ) - ); - } - }, - }, -}; diff --git a/packages/imagetools/integration/utils/saveAndCopyAsset.js b/packages/imagetools/integration/utils/saveAndCopyAsset.js deleted file mode 100644 index a4d9a74..0000000 --- a/packages/imagetools/integration/utils/saveAndCopyAsset.js +++ /dev/null @@ -1,46 +0,0 @@ -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/package-lock.json b/packages/imagetools/package-lock.json deleted file mode 100644 index 0897b85..0000000 --- a/packages/imagetools/package-lock.json +++ /dev/null @@ -1,8838 +0,0 @@ -{ - "name": "imagetools", - "version": "0.9.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "imagetools", - "version": "0.9.0", - "license": "MIT", - "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", - "@polymech/log": "file:../../../polymech-mono/packages/log", - "file-type": "17.1.1", - "find-cache-dir": "3.3.2", - "find-up": "^6.3.0", - "node-addon-api": "^8.3.0", - "node-gyp": "^11.1.0", - "object-hash": "3.0.0", - "potrace": "2.1.8", - "sharp": "^0.33.5" - }, - "devDependencies": { - "vitest": "^0.12.4" - }, - "engines": { - "node": "^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "imagetools-core": "3.0.2" - }, - "peerDependencies": { - "astro": ">=0.26 || >=1.0.0-beta" - } - }, - "../../../polymech-mono/packages/cache": { - "name": "@polymech/cache", - "version": "0.4.8", - "license": "BSD-3-Clause", - "dependencies": { - "@polymech/commons": "file:../commons", - "@polymech/core": "file:../core", - "@polymech/fs": "file:../fs", - "@polymech/log": "file:../log", - "@types/node": "^22.10.2", - "cacache": "^19.0.1", - "md5": "^2.3.0", - "p-map": "^7.0.3", - "ssri": "^10.0.1", - "yargs": "^17.7.2" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "../../../polymech-mono/packages/commons": { - "name": "@polymech/commons", - "version": "0.2.6", - "license": "BSD", - "dependencies": { - "@polymech/core": "file:../core", - "@polymech/fs": "file:../fs", - "@repo/typescript-config": "file:../typescript-config", - "@schemastore/package": "^0.0.10", - "env-var": "^7.5.0", - "glob": "^10.4.5", - "js-yaml": "^4.1.0", - "jsonpath-plus": "^10.3.0", - "normalize-url": "^8.0.1", - "p-map": "^7.0.3", - "p-throttle": "^4.1.1", - "regedit": "^5.1.4", - "tslog": "^3.3.3", - "tsup": "^2.0.3", - "yargs": "^17.7.2", - "zod": "^3.24.3", - "zod-to-json-schema": "^3.24.5", - "zod-to-ts": "^1.2.0" - }, - "bin": { - "pm-cli": "dist/main.js" - }, - "devDependencies": { - "@types/node": "^22.12.0", - "typescript": "^5.7.3" - } - }, - "../../../polymech-mono/packages/fs": { - "name": "@polymech/fs", - "version": "0.13.41", - "license": "BSD-3-Clause", - "dependencies": { - "@polymech/core": "file:../core", - "@repo/typescript-config": "file:../typescript-config", - "denodeify": "^1.2.1", - "glob": "^10.4.1", - "mime": "^2.0.3", - "minimatch": "^10.0.1", - "mkdirp": "^3.0.1", - "q": "^1.4.1", - "rimraf": "^6.0.1", - "write-file-atomic": "^6.0.0", - "yargs": "^17.7.2" - }, - "devDependencies": { - "@types/denodeify": "^1.2.31", - "@types/mime": "^2.0.0", - "@types/node": "^22.10.2", - "fs-extra": "^4.0.2", - "globals": "^15.14.0", - "ts-node": "^10.9.1", - "typescript": "^5.7.2" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "../../../polymech-mono/packages/log": { - "name": "@polymech/log", - "version": "0.2.6", - "license": "BSD", - "dependencies": { - "@polymech/core": "file:../core", - "@repo/typescript-config": "file:../typescript-config", - "tslog": "^3.3.3", - "tsup": "^8.3.5", - "zod": "^3.24.1" - }, - "devDependencies": { - "@eslint/js": "^9.18.0", - "@types/node": "^22.10.9", - "eslint": "^8.57.1", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-regexp": "^2.7.0", - "ts-node": "^10.9.1", - "typescript": "^4.9.5", - "typescript-eslint": "^8.20.0" - } - }, - "node_modules/@astrojs/compiler": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.10.4.tgz", - "integrity": "sha512-86B3QGagP99MvSNwuJGiYSBHnh8nLvm2Q1IFI15wIUJJsPeQTO3eb2uwBmrqRsXykeR/mBzH8XCgz5AAt1BJrQ==", - "license": "MIT", - "peer": true - }, - "node_modules/@astrojs/internal-helpers": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.5.1.tgz", - "integrity": "sha512-M7rAge1n2+aOSxNvKUFa0u/KFn0W+sZy7EW91KOSERotm2Ti8qs+1K0xx3zbOxtAVrmJb5/J98eohVvvEqtNkw==", - "license": "MIT", - "peer": true - }, - "node_modules/@astrojs/markdown-remark": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.1.0.tgz", - "integrity": "sha512-emZNNSTPGgPc3V399Cazpp5+snogjaF04ocOSQn9vy3Kw/eIC4vTQjXOrWDEoSEy+AwPDZX9bQ4wd3bxhpmGgQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@astrojs/prism": "3.2.0", - "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.3", - "hast-util-to-text": "^4.0.2", - "import-meta-resolve": "^4.1.0", - "js-yaml": "^4.1.0", - "mdast-util-definitions": "^6.0.0", - "rehype-raw": "^7.0.0", - "rehype-stringify": "^10.0.1", - "remark-gfm": "^4.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.1", - "remark-smartypants": "^3.0.2", - "shiki": "^1.29.1", - "smol-toml": "^1.3.1", - "unified": "^11.0.5", - "unist-util-remove-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.1", - "vfile": "^6.0.3" - } - }, - "node_modules/@astrojs/prism": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.2.0.tgz", - "integrity": "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==", - "license": "MIT", - "peer": true, - "dependencies": { - "prismjs": "^1.29.0" - }, - "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0" - } - }, - "node_modules/@astrojs/telemetry": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.2.0.tgz", - "integrity": "sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "ci-info": "^4.1.0", - "debug": "^4.3.7", - "dlv": "^1.1.3", - "dset": "^3.1.4", - "is-docker": "^3.0.0", - "is-wsl": "^3.1.0", - "which-pm-runs": "^1.1.0" - }, - "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0" - } - }, - "node_modules/@astropub/codecs": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@astropub/codecs/-/codecs-0.4.4.tgz", - "integrity": "sha512-jHmdZK2B7dfelTsVzkWVb93WPjuKkHz07xUcyg5WtUxTeCCxdDVLnvZlsB5PC2r7HmJLf03TP1QYb1ZgrEebyQ==", - "license": "(CC0-1.0 AND Apache-2.0 AND BSD-3-Clause)" - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", - "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.26.9" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", - "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime/node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, - "node_modules/@babel/types": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", - "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", - "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", - "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", - "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", - "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", - "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", - "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", - "cpu": [ - "arm" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", - "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", - "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", - "cpu": [ - "s390x" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", - "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", - "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", - "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", - "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.5" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", - "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", - "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", - "cpu": [ - "s390x" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.4" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", - "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", - "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", - "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", - "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.2.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", - "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@jimp/bmp": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.14.0.tgz", - "integrity": "sha512-5RkX6tSS7K3K3xNEb2ygPuvyL9whjanhoaB/WmmXlJS6ub4DjTqrapu8j4qnIWmO4YYtFeTbDTXV6v9P1yMA5A==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0", - "bmp-js": "^0.1.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.14.0.tgz", - "integrity": "sha512-S62FcKdtLtj3yWsGfJRdFXSutjvHg7aQNiFogMbwq19RP4XJWqS2nOphu7ScB8KrSlyy5nPF2hkWNhLRLyD82w==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^9.0.0", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" - } - }, - "node_modules/@jimp/core/node_modules/file-type": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", - "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@jimp/custom": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.14.0.tgz", - "integrity": "sha512-kQJMeH87+kWJdVw8F9GQhtsageqqxrvzg7yyOw3Tx/s7v5RToe8RnKyMM+kVtBJtNAG+Xyv/z01uYQ2jiZ3GwA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.14.0" - } - }, - "node_modules/@jimp/gif": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.14.0.tgz", - "integrity": "sha512-DHjoOSfCaCz72+oGGEh8qH0zE6pUBaBxPxxmpYJjkNyDZP7RkbBkZJScIYeQ7BmJxmGN4/dZn+MxamoQlr+UYg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/jpeg": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.14.0.tgz", - "integrity": "sha512-561neGbr+87S/YVQYnZSTyjWTHBm9F6F1obYHiyU3wVmF+1CLbxY3FQzt4YolwyQHIBv36Bo0PY2KkkU8BEeeQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0", - "jpeg-js": "^0.4.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-blit": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.14.0.tgz", - "integrity": "sha512-YoYOrnVHeX3InfgbJawAU601iTZMwEBZkyqcP1V/S33Qnz9uzH1Uj1NtC6fNgWzvX6I4XbCWwtr4RrGFb5CFrw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-blur": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.14.0.tgz", - "integrity": "sha512-9WhZcofLrT0hgI7t0chf7iBQZib//0gJh9WcQMUt5+Q1Bk04dWs8vTgLNj61GBqZXgHSPzE4OpCrrLDBG8zlhQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-circle": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.14.0.tgz", - "integrity": "sha512-o5L+wf6QA44tvTum5HeLyLSc5eVfIUd5ZDVi5iRfO4o6GT/zux9AxuTSkKwnjhsG8bn1dDmywAOQGAx7BjrQVA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-color": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.14.0.tgz", - "integrity": "sha512-JJz512SAILYV0M5LzBb9sbOm/XEj2fGElMiHAxb7aLI6jx+n0agxtHpfpV/AePTLm1vzzDxx6AJxXbKv355hBQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0", - "tinycolor2": "^1.4.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-contain": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.14.0.tgz", - "integrity": "sha512-RX2q233lGyaxiMY6kAgnm9ScmEkNSof0hdlaJAVDS1OgXphGAYAeSIAwzESZN4x3ORaWvkFefeVH9O9/698Evg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-cover": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.14.0.tgz", - "integrity": "sha512-0P/5XhzWES4uMdvbi3beUgfvhn4YuQ/ny8ijs5kkYIw6K8mHcl820HahuGpwWMx56DJLHRl1hFhJwo9CeTRJtQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-crop": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.14.0.tgz", - "integrity": "sha512-Ojtih+XIe6/XSGtpWtbAXBozhCdsDMmy+THUJAGu2x7ZgKrMS0JotN+vN2YC3nwDpYkM+yOJImQeptSfZb2Sug==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-displace": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.14.0.tgz", - "integrity": "sha512-c75uQUzMgrHa8vegkgUvgRL/PRvD7paFbFJvzW0Ugs8Wl+CDMGIPYQ3j7IVaQkIS+cAxv+NJ3TIRBQyBrfVEOg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-dither": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.14.0.tgz", - "integrity": "sha512-g8SJqFLyYexXQQsoh4dc1VP87TwyOgeTElBcxSXX2LaaMZezypmxQfLTzOFzZoK8m39NuaoH21Ou1Ftsq7LzVQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-fisheye": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.14.0.tgz", - "integrity": "sha512-BFfUZ64EikCaABhCA6mR3bsltWhPpS321jpeIQfJyrILdpFsZ/OccNwCgpW1XlbldDHIoNtXTDGn3E+vCE7vDg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-flip": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.14.0.tgz", - "integrity": "sha512-WtL1hj6ryqHhApih+9qZQYA6Ye8a4HAmdTzLbYdTMrrrSUgIzFdiZsD0WeDHpgS/+QMsWwF+NFmTZmxNWqKfXw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-gaussian": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.14.0.tgz", - "integrity": "sha512-uaLwQ0XAQoydDlF9tlfc7iD9drYPriFe+jgYnWm8fbw5cN+eOIcnneEX9XCOOzwgLPkNCxGox6Kxjn8zY6GxtQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-invert": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.14.0.tgz", - "integrity": "sha512-UaQW9X9vx8orQXYSjT5VcITkJPwDaHwrBbxxPoDG+F/Zgv4oV9fP+udDD6qmkgI9taU+44Fy+zm/J/gGcMWrdg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-mask": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.14.0.tgz", - "integrity": "sha512-tdiGM69OBaKtSPfYSQeflzFhEpoRZ+BvKfDEoivyTjauynbjpRiwB1CaiS8En1INTDwzLXTT0Be9SpI3LkJoEA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-normalize": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.14.0.tgz", - "integrity": "sha512-AfY8sqlsbbdVwFGcyIPy5JH/7fnBzlmuweb+Qtx2vn29okq6+HelLjw2b+VT2btgGUmWWHGEHd86oRGSoWGyEQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-print": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.14.0.tgz", - "integrity": "sha512-MwP3sH+VS5AhhSTXk7pui+tEJFsxnTKFY3TraFJb8WFbA2Vo2qsRCZseEGwpTLhENB7p/JSsLvWoSSbpmxhFAQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0", - "load-bmfont": "^1.4.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-resize": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.14.0.tgz", - "integrity": "sha512-qFeMOyXE/Bk6QXN0GQo89+CB2dQcXqoxUcDb2Ah8wdYlKqpi53skABkgVy5pW3EpiprDnzNDboMltdvDslNgLQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-rotate": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.14.0.tgz", - "integrity": "sha512-aGaicts44bvpTcq5Dtf93/8TZFu5pMo/61lWWnYmwJJU1RqtQlxbCLEQpMyRhKDNSfPbuP8nyGmaqXlM/82J0Q==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-scale": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.14.0.tgz", - "integrity": "sha512-ZcJk0hxY5ZKZDDwflqQNHEGRblgaR+piePZm7dPwPUOSeYEH31P0AwZ1ziceR74zd8N80M0TMft+e3Td6KGBHw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-shadow": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.14.0.tgz", - "integrity": "sha512-p2igcEr/iGrLiTu0YePNHyby0WYAXM14c5cECZIVnq/UTOOIQ7xIcWZJ1lRbAEPxVVXPN1UibhZAbr3HAb5BjQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-threshold": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.14.0.tgz", - "integrity": "sha512-N4BlDgm/FoOMV/DQM2rSpzsgqAzkP0DXkWZoqaQrlRxQBo4zizQLzhEL00T/YCCMKnddzgEhnByaocgaaa0fKw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" - } - }, - "node_modules/@jimp/plugins": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.14.0.tgz", - "integrity": "sha512-vDO3XT/YQlFlFLq5TqNjQkISqjBHT8VMhpWhAfJVwuXIpilxz5Glu4IDLK6jp4IjPR6Yg2WO8TmRY/HI8vLrOw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.14.0", - "@jimp/plugin-blur": "^0.14.0", - "@jimp/plugin-circle": "^0.14.0", - "@jimp/plugin-color": "^0.14.0", - "@jimp/plugin-contain": "^0.14.0", - "@jimp/plugin-cover": "^0.14.0", - "@jimp/plugin-crop": "^0.14.0", - "@jimp/plugin-displace": "^0.14.0", - "@jimp/plugin-dither": "^0.14.0", - "@jimp/plugin-fisheye": "^0.14.0", - "@jimp/plugin-flip": "^0.14.0", - "@jimp/plugin-gaussian": "^0.14.0", - "@jimp/plugin-invert": "^0.14.0", - "@jimp/plugin-mask": "^0.14.0", - "@jimp/plugin-normalize": "^0.14.0", - "@jimp/plugin-print": "^0.14.0", - "@jimp/plugin-resize": "^0.14.0", - "@jimp/plugin-rotate": "^0.14.0", - "@jimp/plugin-scale": "^0.14.0", - "@jimp/plugin-shadow": "^0.14.0", - "@jimp/plugin-threshold": "^0.14.0", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/png": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.14.0.tgz", - "integrity": "sha512-0RV/mEIDOrPCcNfXSPmPBqqSZYwGADNRVUTyMt47RuZh7sugbYdv/uvKmQSiqRdR0L1sfbCBMWUEa5G/8MSbdA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.14.0", - "pngjs": "^3.3.3" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/tiff": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.14.0.tgz", - "integrity": "sha512-zBYDTlutc7j88G/7FBCn3kmQwWr0rmm1e0FKB4C3uJ5oYfT8645lftUsvosKVUEfkdmOaMAnhrf4ekaHcb5gQw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/types": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.14.0.tgz", - "integrity": "sha512-hx3cXAW1KZm+b+XCrY3LXtdWy2U+hNtq0rPyJ7NuXCjU7lZR3vIkpz1DLJ3yDdS70hTi5QDXY3Cd9kd6DtloHQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.14.0", - "@jimp/gif": "^0.14.0", - "@jimp/jpeg": "^0.14.0", - "@jimp/png": "^0.14.0", - "@jimp/tiff": "^0.14.0", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/utils": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.14.0.tgz", - "integrity": "sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT", - "peer": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz", - "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==", - "license": "ISC", - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.3" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/fs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", - "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", - "license": "ISC", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@oslojs/encoding": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", - "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", - "license": "MIT", - "peer": true - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@polymech/cache": { - "resolved": "../../../polymech-mono/packages/cache", - "link": true - }, - "node_modules/@polymech/commons": { - "resolved": "../../../polymech-mono/packages/commons", - "link": true - }, - "node_modules/@polymech/fs": { - "resolved": "../../../polymech-mono/packages/fs", - "link": true - }, - "node_modules/@polymech/log": { - "resolved": "../../../polymech-mono/packages/log", - "link": true - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", - "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT", - "peer": true - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.7.tgz", - "integrity": "sha512-l6CtzHYo8D2TQ3J7qJNpp3Q1Iye56ssIAtqbM2H8axxCEEwvN7o8Ze9PuIapbxFL3OHrJU2JBX6FIIVnP/rYyw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.7.tgz", - "integrity": "sha512-KvyJpFUueUnSp53zhAa293QBYqwm94TgYTIfXyOTtidhm5V0LbLCJQRGkQClYiX3FXDQGSvPxOTD/6rPStMMDg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.7.tgz", - "integrity": "sha512-jq87CjmgL9YIKvs8ybtIC98s/M3HdbqXhllcy9EdLV0yMg1DpxES2gr65nNy7ObNo/vZ/MrOTxt0bE5LinL6mA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.7.tgz", - "integrity": "sha512-rSI/m8OxBjsdnMMg0WEetu/w+LhLAcCDEiL66lmMX4R3oaml3eXz3Dxfvrxs1FbzPbJMaItQiksyMfv1hoIxnA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.7.tgz", - "integrity": "sha512-oIoJRy3ZrdsXpFuWDtzsOOa/E/RbRWXVokpVrNnkS7npz8GEG++E1gYbzhYxhxHbO2om1T26BZjVmdIoyN2WtA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.7.tgz", - "integrity": "sha512-X++QSLm4NZfZ3VXGVwyHdRf58IBbCu9ammgJxuWZYLX0du6kZvdNqPwrjvDfwmi6wFdvfZ/s6K7ia0E5kI7m8Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.7.tgz", - "integrity": "sha512-Z0TzhrsNqukTz3ISzrvyshQpFnFRfLunYiXxlCRvcrb3nvC5rVKI+ZXPFG/Aa4jhQa1gHgH3A0exHaRRN4VmdQ==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.7.tgz", - "integrity": "sha512-nkznpyXekFAbvFBKBy4nNppSgneB1wwG1yx/hujN3wRnhnkrYVugMTCBXED4+Ni6thoWfQuHNYbFjgGH0MBXtw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.7.tgz", - "integrity": "sha512-KCjlUkcKs6PjOcxolqrXglBDcfCuUCTVlX5BgzgoJHw+1rWH1MCkETLkLe5iLLS9dP5gKC7mp3y6x8c1oGBUtA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.7.tgz", - "integrity": "sha512-uFLJFz6+utmpbR313TTx+NpPuAXbPz4BhTQzgaP0tozlLnGnQ6rCo6tLwaSa6b7l6gRErjLicXQ1iPiXzYotjw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.7.tgz", - "integrity": "sha512-ws8pc68UcJJqCpneDFepnwlsMUFoWvPbWXT/XUrJ7rWUL9vLoIN3GAasgG+nCvq8xrE3pIrd+qLX/jotcLy0Qw==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.7.tgz", - "integrity": "sha512-vrDk9JDa/BFkxcS2PbWpr0C/LiiSLxFbNOBgfbW6P8TBe9PPHx9Wqbvx2xgNi1TOAyQHQJ7RZFqBiEohm79r0w==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.7.tgz", - "integrity": "sha512-rB+ejFyjtmSo+g/a4eovDD1lHWHVqizN8P0Hm0RElkINpS0XOdpaXloqM4FBkF9ZWEzg6bezymbpLmeMldfLTw==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.7.tgz", - "integrity": "sha512-nNXNjo4As6dNqRn7OrsnHzwTgtypfRA3u3AKr0B3sOOo+HkedIbn8ZtFnB+4XyKJojIfqDKmbIzO1QydQ8c+Pw==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.7.tgz", - "integrity": "sha512-9kPVf9ahnpOMSGlCxXGv980wXD0zRR3wyk8+33/MXQIpQEOpaNe7dEHm5LMfyRZRNt9lMEQuH0jUKj15MkM7QA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.7.tgz", - "integrity": "sha512-7wJPXRWTTPtTFDFezA8sle/1sdgxDjuMoRXEKtx97ViRxGGkVQYovem+Q8Pr/2HxiHp74SSRG+o6R0Yq0shPwQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.7.tgz", - "integrity": "sha512-MN7aaBC7mAjsiMEZcsJvwNsQVNZShgES/9SzWp1HC9Yjqb5OpexYnRjF7RmE4itbeesHMYYQiAtUAQaSKs2Rfw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.7.tgz", - "integrity": "sha512-aeawEKYswsFu1LhDM9RIgToobquzdtSc4jSVqHV8uApz4FVvhFl/mKh92wc8WpFc6aYCothV/03UjY6y7yLgbg==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.7.tgz", - "integrity": "sha512-4ZedScpxxIrVO7otcZ8kCX1mZArtH2Wfj3uFCxRJ9NO80gg1XV0U/b2f/MKaGwj2X3QopHfoWiDQ917FRpwY3w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true - }, - "node_modules/@shikijs/core": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", - "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@shikijs/engine-javascript": "1.29.2", - "@shikijs/engine-oniguruma": "1.29.2", - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" - } - }, - "node_modules/@shikijs/engine-javascript": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", - "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "oniguruma-to-es": "^2.2.0" - } - }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", - "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1" - } - }, - "node_modules/@shikijs/langs": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", - "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@shikijs/types": "1.29.2" - } - }, - "node_modules/@shikijs/themes": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", - "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@shikijs/types": "1.29.2" - } - }, - "node_modules/@shikijs/types": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", - "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz", - "integrity": "sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==", - "license": "MIT", - "peer": true - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "license": "MIT" - }, - "node_modules/@types/chai": { - "version": "4.3.20", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", - "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/chai-subset": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.5.tgz", - "integrity": "sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "license": "MIT", - "peer": true - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "license": "MIT", - "peer": true - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "license": "MIT", - "peer": true - }, - "node_modules/@types/nlcst": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", - "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/node": { - "version": "22.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", - "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "license": "MIT", - "peer": true - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC", - "peer": true - }, - "node_modules/abbrev": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.0.tgz", - "integrity": "sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "license": "ISC", - "peer": true, - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-align/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT", - "peer": true - }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "peer": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0", - "peer": true - }, - "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/array-iterate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", - "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/astro": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.3.0.tgz", - "integrity": "sha512-e88l/Yk/6enR/ZDddLbqtM+oblBFk5mneNSmNesyVYGL/6Dj4UA67GPAZOk79VxT5dbLlclZSyyw/wlxN1aj3A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@astrojs/compiler": "^2.10.3", - "@astrojs/internal-helpers": "0.5.1", - "@astrojs/markdown-remark": "6.1.0", - "@astrojs/telemetry": "3.2.0", - "@oslojs/encoding": "^1.1.0", - "@rollup/pluginutils": "^5.1.4", - "@types/cookie": "^0.6.0", - "acorn": "^8.14.0", - "aria-query": "^5.3.2", - "axobject-query": "^4.1.0", - "boxen": "8.0.1", - "ci-info": "^4.1.0", - "clsx": "^2.1.1", - "common-ancestor-path": "^1.0.1", - "cookie": "^0.7.2", - "cssesc": "^3.0.0", - "debug": "^4.4.0", - "deterministic-object-hash": "^2.0.2", - "devalue": "^5.1.1", - "diff": "^5.2.0", - "dlv": "^1.1.3", - "dset": "^3.1.4", - "es-module-lexer": "^1.6.0", - "esbuild": "^0.24.2", - "estree-walker": "^3.0.3", - "fast-glob": "^3.3.3", - "flattie": "^1.1.1", - "github-slugger": "^2.0.0", - "html-escaper": "3.0.3", - "http-cache-semantics": "^4.1.1", - "js-yaml": "^4.1.0", - "kleur": "^4.1.5", - "magic-string": "^0.30.17", - "magicast": "^0.3.5", - "micromatch": "^4.0.8", - "mrmime": "^2.0.0", - "neotraverse": "^0.6.18", - "p-limit": "^6.2.0", - "p-queue": "^8.1.0", - "preferred-pm": "^4.1.1", - "prompts": "^2.4.2", - "rehype": "^13.0.2", - "semver": "^7.7.1", - "shiki": "^1.29.2", - "tinyexec": "^0.3.2", - "tsconfck": "^3.1.4", - "ultrahtml": "^1.5.3", - "unist-util-visit": "^5.0.0", - "unstorage": "^1.14.4", - "vfile": "^6.0.3", - "vite": "^6.0.11", - "vitefu": "^1.0.5", - "which-pm": "^3.0.1", - "xxhash-wasm": "^1.1.0", - "yargs-parser": "^21.1.1", - "yocto-spinner": "^0.2.0", - "zod": "^3.24.1", - "zod-to-json-schema": "^3.24.1", - "zod-to-ts": "^1.2.0" - }, - "bin": { - "astro": "astro.js" - }, - "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/astrodotbuild" - }, - "optionalDependencies": { - "sharp": "^0.33.3" - } - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base-64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", - "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", - "license": "MIT", - "peer": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "license": "MIT", - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", - "license": "MIT" - }, - "node_modules/boxen": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", - "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^8.0.0", - "chalk": "^5.3.0", - "cli-boxes": "^3.0.0", - "string-width": "^7.2.0", - "type-fest": "^4.21.0", - "widest-line": "^5.0.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "peer": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/cacache": { - "version": "19.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz", - "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==", - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^4.0.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^7.0.2", - "ssri": "^12.0.0", - "tar": "^7.4.3", - "unique-filename": "^4.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/camelcase": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", - "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/centra": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", - "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6" - } - }, - "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "license": "MIT", - "peer": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "peer": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "license": "ISC", - "optional": true - }, - "node_modules/ci-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", - "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/common-ancestor-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", - "license": "ISC", - "peer": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-es": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", - "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", - "license": "MIT", - "peer": true - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crossws": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.4.tgz", - "integrity": "sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==", - "license": "MIT", - "peer": true, - "dependencies": { - "uncrypto": "^0.1.3" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "license": "MIT", - "peer": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "license": "MIT", - "peer": true, - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", - "license": "MIT", - "peer": true - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/destr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", - "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==", - "license": "MIT", - "peer": true - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/deterministic-object-hash": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", - "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "base-64": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/devalue": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", - "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", - "license": "MIT", - "peer": true - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "license": "MIT", - "peer": true, - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "license": "MIT", - "peer": true - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "node_modules/dset": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", - "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "license": "MIT", - "peer": true - }, - "node_modules/emoji-regex-xs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", - "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", - "license": "MIT", - "peer": true - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "license": "MIT", - "optional": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "license": "MIT" - }, - "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", - "license": "MIT", - "peer": true - }, - "node_modules/esbuild": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", - "hasInstallScript": true, - "license": "MIT", - "peer": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.2", - "@esbuild/android-arm": "0.24.2", - "@esbuild/android-arm64": "0.24.2", - "@esbuild/android-x64": "0.24.2", - "@esbuild/darwin-arm64": "0.24.2", - "@esbuild/darwin-x64": "0.24.2", - "@esbuild/freebsd-arm64": "0.24.2", - "@esbuild/freebsd-x64": "0.24.2", - "@esbuild/linux-arm": "0.24.2", - "@esbuild/linux-arm64": "0.24.2", - "@esbuild/linux-ia32": "0.24.2", - "@esbuild/linux-loong64": "0.24.2", - "@esbuild/linux-mips64el": "0.24.2", - "@esbuild/linux-ppc64": "0.24.2", - "@esbuild/linux-riscv64": "0.24.2", - "@esbuild/linux-s390x": "0.24.2", - "@esbuild/linux-x64": "0.24.2", - "@esbuild/netbsd-arm64": "0.24.2", - "@esbuild/netbsd-x64": "0.24.2", - "@esbuild/openbsd-arm64": "0.24.2", - "@esbuild/openbsd-x64": "0.24.2", - "@esbuild/sunos-x64": "0.24.2", - "@esbuild/win32-arm64": "0.24.2", - "@esbuild/win32-ia32": "0.24.2", - "@esbuild/win32-x64": "0.24.2" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", - "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", - "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", - "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", - "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", - "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", - "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", - "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", - "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", - "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", - "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", - "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", - "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", - "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", - "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", - "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", - "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", - "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", - "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", - "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", - "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT", - "peer": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "license": "(MIT OR WTFPL)", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/exponential-backoff": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", - "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", - "license": "Apache-2.0" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT", - "peer": true - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fastq": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", - "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", - "license": "ISC", - "peer": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-type": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.1.tgz", - "integrity": "sha512-heRUMZHby2Qj6wZAA3YHeMlRmZNQTcb6VxctkGmM+mcM6ROQKvHpr7SS6EgdfEhH+s25LDshBjvPx/Ecm+bOVQ==", - "license": "MIT", - "dependencies": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0-alpha.7", - "token-types": "^5.0.0-alpha.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "peer": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "license": "MIT", - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up-simple": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", - "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-yarn-workspace-root2": { - "version": "1.2.16", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", - "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "micromatch": "^4.0.2", - "pkg-dir": "^4.2.0" - } - }, - "node_modules/flattie": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", - "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "license": "MIT", - "optional": true - }, - "node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "license": "MIT", - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "license": "MIT", - "optional": true - }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", - "license": "ISC", - "peer": true - }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "peer": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "license": "MIT", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/h3": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.0.tgz", - "integrity": "sha512-OsjX4JW8J4XGgCgEcad20pepFQWnuKH+OwkCJjogF3C+9AZ1iYdtB4hX6vAb5DskBiu5ljEXqApINjR8CqoCMQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "cookie-es": "^1.2.2", - "crossws": "^0.3.3", - "defu": "^6.1.4", - "destr": "^2.0.3", - "iron-webcrypto": "^1.2.1", - "node-mock-http": "^1.0.0", - "ohash": "^1.1.4", - "radix3": "^1.1.2", - "ufo": "^1.5.4", - "uncrypto": "^0.1.3" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hast-util-from-html": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", - "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "devlop": "^1.1.0", - "hast-util-from-parse5": "^8.0.0", - "parse5": "^7.0.0", - "vfile": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.2.tgz", - "integrity": "sha512-SfMzfdAi/zAoZ1KkFEyyeXBn7u/ShQrfd675ZEE9M3qj+PMFX05xubzRyF76CCSJu8au9jgVxDV1+okFvgZU4A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "hastscript": "^9.0.0", - "property-information": "^6.0.0", - "vfile": "^6.0.0", - "vfile-location": "^5.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", - "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", - "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-from-parse5": "^8.0.0", - "hast-util-to-parse5": "^8.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "parse5": "^7.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-html": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz", - "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-parse5": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", - "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-text": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", - "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "hast-util-is-element": "^3.0.0", - "unist-util-find-after": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.0.tgz", - "integrity": "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^4.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/html-escaper": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", - "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", - "license": "MIT", - "peer": true - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "license": "BSD-2-Clause" - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "license": "MIT", - "dependencies": { - "@types/node": "16.9.1" - } - }, - "node_modules/image-q/node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", - "license": "MIT" - }, - "node_modules/imagetools-core": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/imagetools-core/-/imagetools-core-3.0.2.tgz", - "integrity": "sha512-DlArpNiefCc1syIqvOONcE8L8IahN8GjwaEjm6wIJIvuKoFoI1RcKmWWfS2dYxSlTiSp2X5b3JnHDjUXmWqlVA==", - "license": "MIT", - "optional": true, - "dependencies": { - "sharp": "^0.29.3" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/imagetools-core/node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "license": "Apache-2.0", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/imagetools-core/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "license": "MIT", - "optional": true - }, - "node_modules/imagetools-core/node_modules/sharp": { - "version": "0.29.3", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.29.3.tgz", - "integrity": "sha512-fKWUuOw77E4nhpyzCCJR1ayrttHoFHBT2U/kR/qEMRhvPEcluG4BKj324+SCO1e84+knXHwhJ1HHJGnUt4ElGA==", - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "color": "^4.0.1", - "detect-libc": "^1.0.3", - "node-addon-api": "^4.2.0", - "prebuild-install": "^7.0.0", - "semver": "^7.3.5", - "simple-get": "^4.0.0", - "tar-fs": "^2.1.1", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=12.13.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC", - "optional": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC", - "optional": true - }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "license": "BSD-3-Clause" - }, - "node_modules/iron-webcrypto": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", - "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/brc-dd" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "license": "MIT" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", - "peer": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "license": "MIT", - "peer": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "license": "MIT" - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jimp": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.14.0.tgz", - "integrity": "sha512-8BXU+J8+SPmwwyq9ELihpSV4dWPTiOKBWCEgtkbnxxAVMjXdf3yGmyaLSshBfXc8sP/JQ9OZj5R8nZzz2wPXgA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.14.0", - "@jimp/plugins": "^0.14.0", - "@jimp/types": "^0.14.0", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", - "license": "BSD-3-Clause" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "license": "MIT", - "peer": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "license": "MIT" - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/load-bmfont": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", - "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", - "license": "MIT", - "dependencies": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^3.7.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "node_modules/load-bmfont/node_modules/phin": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", - "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", - "license": "MIT", - "dependencies": { - "centra": "^2.7.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/load-yaml-file": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", - "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==", - "license": "MIT", - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.13.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/load-yaml-file/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/load-yaml-file/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "license": "MIT", - "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/magicast": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", - "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/parser": "^7.25.4", - "@babel/types": "^7.25.4", - "source-map-js": "^1.2.0" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-fetch-happen": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz", - "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==", - "license": "ISC", - "dependencies": { - "@npmcli/agent": "^3.0.0", - "cacache": "^19.0.1", - "http-cache-semantics": "^4.1.1", - "minipass": "^7.0.2", - "minipass-fetch": "^4.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^1.0.0", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1", - "ssri": "^12.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/markdown-table": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", - "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-definitions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", - "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", - "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", - "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-gfm-autolink-literal": "^2.0.0", - "mdast-util-gfm-footnote": "^2.0.0", - "mdast-util-gfm-strikethrough": "^2.0.0", - "mdast-util-gfm-table": "^2.0.0", - "mdast-util-gfm-task-list-item": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", - "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "ccount": "^2.0.0", - "devlop": "^1.0.0", - "mdast-util-find-and-replace": "^3.0.0", - "micromark-util-character": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", - "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", - "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-phrasing": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", - "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromark": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", - "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", - "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", - "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-extension-gfm-autolink-literal": "^2.0.0", - "micromark-extension-gfm-footnote": "^2.0.0", - "micromark-extension-gfm-strikethrough": "^2.0.0", - "micromark-extension-gfm-table": "^2.0.0", - "micromark-extension-gfm-tagfilter": "^2.0.0", - "micromark-extension-gfm-task-list-item": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", - "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", - "license": "MIT", - "peer": true, - "dependencies": { - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", - "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", - "license": "MIT", - "peer": true, - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", - "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", - "license": "MIT", - "peer": true, - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", - "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", - "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", - "license": "MIT", - "peer": true, - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-factory-destination": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", - "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", - "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", - "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", - "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", - "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", - "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", - "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", - "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", - "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/micromark-util-html-tag-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", - "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", - "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", - "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.4.tgz", - "integrity": "sha512-N6hXjrin2GTJDe3MVjf5FuXpm12PGm80BrUAeub9XFXca8JZbP+oIwY4LJSVwFUCL1IPm/WwSVUN7goFHmSGGQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/micromark-util-types": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", - "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", - "peer": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-collect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", - "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.0.tgz", - "integrity": "sha512-2v6aXUXwLP1Epd/gc32HAMIWoczx+fZwEPRHm/VwtrJzRGwR1qGZXEYV3Zp8ZjjbwaZhMrM6uHV4KVkk+XCc2w==", - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^3.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-flush/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/minizlib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", - "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", - "license": "MIT", - "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "license": "MIT", - "optional": true - }, - "node_modules/mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", - "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", - "license": "MIT", - "optional": true - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neotraverse": { - "version": "0.6.18", - "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", - "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/nlcst-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", - "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/nlcst": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/node-abi": { - "version": "3.74.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", - "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", - "license": "MIT", - "optional": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.0.tgz", - "integrity": "sha512-8VOpLHFrOQlAH+qA0ZzuGRlALRA6/LVh8QJldbrC4DY0hXoMP0l4Acq8TzFC018HztWiRqyCEj2aTWY2UvnJUg==", - "license": "MIT", - "engines": { - "node": "^18 || ^20 || >= 21" - } - }, - "node_modules/node-fetch-native": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz", - "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==", - "license": "MIT", - "peer": true - }, - "node_modules/node-gyp": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.1.0.tgz", - "integrity": "sha512-/+7TuHKnBpnMvUQnsYEb0JOozDZqarQbfNuSGLXIjhStMT0fbw7IdSqWgopOP5xhRZE+lsbIvAHcekddruPZgQ==", - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^14.0.3", - "nopt": "^8.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.5", - "tar": "^7.4.3", - "which": "^5.0.0" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/node-mock-http": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.0.tgz", - "integrity": "sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==", - "license": "MIT", - "peer": true - }, - "node_modules/nopt": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", - "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", - "license": "ISC", - "dependencies": { - "abbrev": "^3.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/ofetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", - "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==", - "license": "MIT", - "peer": true, - "dependencies": { - "destr": "^2.0.3", - "node-fetch-native": "^1.6.4", - "ufo": "^1.5.4" - } - }, - "node_modules/ohash": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz", - "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==", - "license": "MIT", - "peer": true - }, - "node_modules/omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", - "license": "MIT" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "optional": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/oniguruma-to-es": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", - "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", - "license": "MIT", - "peer": true, - "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^5.1.1", - "regex-recursion": "^5.1.1" - } - }, - "node_modules/p-limit": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", - "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", - "license": "MIT", - "peer": true, - "dependencies": { - "yocto-queue": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", - "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-queue": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.0.tgz", - "integrity": "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==", - "license": "MIT", - "peer": true, - "dependencies": { - "eventemitter3": "^5.0.1", - "p-timeout": "^6.1.2" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", - "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "license": "(MIT AND Zlib)" - }, - "node_modules/parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", - "license": "MIT" - }, - "node_modules/parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", - "license": "MIT" - }, - "node_modules/parse-bmfont-xml": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", - "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", - "license": "MIT", - "dependencies": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.5.0" - } - }, - "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", - "license": "MIT" - }, - "node_modules/parse-latin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", - "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/nlcst": "^2.0.0", - "@types/unist": "^3.0.0", - "nlcst-to-string": "^4.0.0", - "unist-util-modify-children": "^4.0.0", - "unist-util-visit-children": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse5": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "entities": "^4.5.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/peek-readable": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.4.2.tgz", - "integrity": "sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "license": "ISC", - "dependencies": { - "pngjs": "^3.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/postcss": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", - "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/potrace": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/potrace/-/potrace-2.1.8.tgz", - "integrity": "sha512-V9hI7UMJyEhNZjM8CbZaP/804ZRLgzWkCS9OOYnEZkszzj3zKR/erRdj0uFMcN3pp6x4B+AIZebmkQgGRinG/g==", - "license": "GPL-2.0", - "dependencies": { - "jimp": "^0.14.0" - } - }, - "node_modules/prebuild-install": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", - "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", - "license": "MIT", - "optional": true, - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^2.0.0", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/preferred-pm": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-4.1.1.tgz", - "integrity": "sha512-rU+ZAv1Ur9jAUZtGPebQVQPzdGhNzaEiQ7VL9+cjsAWPHFYOccNXPNiev1CCDSOg/2j7UujM7ojNhpkuILEVNQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "find-up-simple": "^1.0.0", - "find-yarn-workspace-root2": "1.2.16", - "which-pm": "^3.0.1" - }, - "engines": { - "node": ">=18.12" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/proc-log": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz", - "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==", - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "license": "MIT", - "optional": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/radix3": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", - "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", - "license": "MIT", - "peer": true - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "optional": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/readable-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.3.tgz", - "integrity": "sha512-In3boYjBnbGVrLuuRu/Ath/H6h1jgk30nAsk/71tCare1dTVoe1oMBGRn5LGf0n3c1BcHwwAqpraxX4AUAP5KA==", - "license": "MIT", - "dependencies": { - "process": "^0.11.10", - "readable-stream": "^4.7.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "peer": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "license": "MIT" - }, - "node_modules/regex": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", - "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", - "license": "MIT", - "peer": true, - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-recursion": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", - "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", - "license": "MIT", - "peer": true, - "dependencies": { - "regex": "^5.1.1", - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-utilities": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", - "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", - "license": "MIT", - "peer": true - }, - "node_modules/rehype": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", - "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "rehype-parse": "^9.0.0", - "rehype-stringify": "^10.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-parse": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", - "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-from-html": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-raw": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", - "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-raw": "^9.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-stringify": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", - "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-to-html": "^9.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-gfm": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", - "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-gfm": "^3.0.0", - "micromark-extension-gfm": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", - "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "mdast-util-to-hast": "^13.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-smartypants": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", - "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", - "license": "MIT", - "peer": true, - "dependencies": { - "retext": "^9.0.0", - "retext-smartypants": "^6.0.0", - "unified": "^11.0.4", - "unist-util-visit": "^5.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/remark-stringify": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", - "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-to-markdown": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/retext": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", - "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/nlcst": "^2.0.0", - "retext-latin": "^4.0.0", - "retext-stringify": "^4.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-latin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", - "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/nlcst": "^2.0.0", - "parse-latin": "^7.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-smartypants": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", - "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/nlcst": "^2.0.0", - "nlcst-to-string": "^4.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-stringify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", - "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/nlcst": "^2.0.0", - "nlcst-to-string": "^4.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "license": "MIT", - "peer": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.7.tgz", - "integrity": "sha512-8qhyN0oZ4x0H6wmBgfKxJtxM7qS98YJ0k0kNh5ECVtuchIJ7z9IVVvzpmtQyT10PXKMtBxYr1wQ5Apg8RS8kXQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "1.0.6" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.7", - "@rollup/rollup-android-arm64": "4.34.7", - "@rollup/rollup-darwin-arm64": "4.34.7", - "@rollup/rollup-darwin-x64": "4.34.7", - "@rollup/rollup-freebsd-arm64": "4.34.7", - "@rollup/rollup-freebsd-x64": "4.34.7", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.7", - "@rollup/rollup-linux-arm-musleabihf": "4.34.7", - "@rollup/rollup-linux-arm64-gnu": "4.34.7", - "@rollup/rollup-linux-arm64-musl": "4.34.7", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.7", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.7", - "@rollup/rollup-linux-riscv64-gnu": "4.34.7", - "@rollup/rollup-linux-s390x-gnu": "4.34.7", - "@rollup/rollup-linux-x64-gnu": "4.34.7", - "@rollup/rollup-linux-x64-musl": "4.34.7", - "@rollup/rollup-win32-arm64-msvc": "4.34.7", - "@rollup/rollup-win32-ia32-msvc": "4.34.7", - "@rollup/rollup-win32-x64-msvc": "4.34.7", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT", - "optional": true - }, - "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "license": "ISC" - }, - "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", - "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.6.3" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.5", - "@img/sharp-darwin-x64": "0.33.5", - "@img/sharp-libvips-darwin-arm64": "1.0.4", - "@img/sharp-libvips-darwin-x64": "1.0.4", - "@img/sharp-libvips-linux-arm": "1.0.5", - "@img/sharp-libvips-linux-arm64": "1.0.4", - "@img/sharp-libvips-linux-s390x": "1.0.4", - "@img/sharp-libvips-linux-x64": "1.0.4", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", - "@img/sharp-libvips-linuxmusl-x64": "1.0.4", - "@img/sharp-linux-arm": "0.33.5", - "@img/sharp-linux-arm64": "0.33.5", - "@img/sharp-linux-s390x": "0.33.5", - "@img/sharp-linux-x64": "0.33.5", - "@img/sharp-linuxmusl-arm64": "0.33.5", - "@img/sharp-linuxmusl-x64": "0.33.5", - "@img/sharp-wasm32": "0.33.5", - "@img/sharp-win32-ia32": "0.33.5", - "@img/sharp-win32-x64": "0.33.5" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shiki": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", - "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@shikijs/core": "1.29.2", - "@shikijs/engine-javascript": "1.29.2", - "@shikijs/engine-oniguruma": "1.29.2", - "@shikijs/langs": "1.29.2", - "@shikijs/themes": "1.29.2", - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "license": "MIT", - "peer": true - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/smol-toml": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz", - "integrity": "sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==", - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">= 18" - }, - "funding": { - "url": "https://github.com/sponsors/cyyynthia" - } - }, - "node_modules/socks": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", - "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", - "license": "MIT", - "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", - "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "socks": "^2.8.3" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/ssri": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz", - "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "license": "MIT", - "peer": true, - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strtok3": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.1.1.tgz", - "integrity": "sha512-mKX8HA/cdBqMKUr0MMZAFssCkIGoZeSCMXgnt79yKxNFguMLVFgRe6wB+fsL0NmoHDbeyZXczy7vEPSoo3rkzg==", - "license": "MIT", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.1.3" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/tar-fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", - "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", - "license": "MIT", - "optional": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tar/node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", - "license": "MIT" - }, - "node_modules/tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "license": "MIT", - "peer": true - }, - "node_modules/tinypool": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.1.3.tgz", - "integrity": "sha512-2IfcQh7CP46XGWGGbdyO4pjcKqsmVqFAPcXfPxcPXmOWt9cYkTP9HcDmGgsfijYoAEc4z9qcpM/BaBz46Y9/CQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-0.3.3.tgz", - "integrity": "sha512-gRiUR8fuhUf0W9lzojPf1N1euJYA30ISebSfgca8z76FOvXtVXqd5ojEIaKLWbDQhAaC3ibxZIjqbyi4ybjcTw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "license": "MIT", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/tsconfck": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.5.tgz", - "integrity": "sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==", - "license": "MIT", - "peer": true, - "bin": { - "tsconfck": "bin/tsconfck.js" - }, - "engines": { - "node": "^18 || >=20" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "optional": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "4.34.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.34.1.tgz", - "integrity": "sha512-6kSc32kT0rbwxD6QL1CYe8IqdzN/J/ILMrNK+HMQCKH3insCDRY/3ITb0vcBss0a3t72fzh2YSzj8ko1HgwT3g==", - "license": "(MIT OR CC0-1.0)", - "peer": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", - "license": "MIT", - "peer": true - }, - "node_modules/ultrahtml": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.3.tgz", - "integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==", - "license": "MIT", - "peer": true - }, - "node_modules/uncrypto": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", - "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", - "license": "MIT", - "peer": true - }, - "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/unified": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", - "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unique-filename": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz", - "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==", - "license": "ISC", - "dependencies": { - "unique-slug": "^5.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/unique-slug": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz", - "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==", - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/unist-util-find-after": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", - "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-modify-children": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", - "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0", - "array-iterate": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", - "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-children": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", - "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unstorage": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.14.4.tgz", - "integrity": "sha512-1SYeamwuYeQJtJ/USE1x4l17LkmQBzg7deBJ+U9qOBoHo15d1cDxG4jM31zKRgF7pG0kirZy4wVMX6WL6Zoscg==", - "license": "MIT", - "peer": true, - "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^3.6.0", - "destr": "^2.0.3", - "h3": "^1.13.0", - "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.4", - "ofetch": "^1.4.1", - "ufo": "^1.5.4" - }, - "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.5.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6.0.3", - "@deno/kv": ">=0.8.4", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.0", - "@vercel/kv": "^1.0.1", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.1" - }, - "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { - "optional": true - } - } - }, - "node_modules/utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", - "license": "MIT", - "dependencies": { - "pako": "^1.0.5" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT", - "optional": true - }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", - "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vite": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.1.0.tgz", - "integrity": "sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "esbuild": "^0.24.2", - "postcss": "^8.5.1", - "rollup": "^4.30.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vitefu": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.5.tgz", - "integrity": "sha512-h4Vflt9gxODPFNGPwp4zAMZRpZR7eslzwH2c5hn5kNZ5rhnKyRJ50U+yGCdc2IRaBs8O4haIgLNGrV5CrpMsCA==", - "license": "MIT", - "peer": true, - "workspaces": [ - "tests/deps/*", - "tests/projects/*" - ], - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vitest": { - "version": "0.12.10", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.12.10.tgz", - "integrity": "sha512-TVoI6fM7rZ1zIMDjcviY8Dg5XIaPqBwDweaI3oUwvWqUz68cbM49CIHNMkF+UVoSjl94wXiBRdNhsT4ekgWuGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^4.3.1", - "@types/chai-subset": "^1.3.3", - "chai": "^4.3.6", - "debug": "^4.3.4", - "local-pkg": "^0.4.1", - "tinypool": "^0.1.3", - "tinyspy": "^0.3.2", - "vite": "^2.9.9" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": ">=v14.16.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vitest/ui": "*", - "c8": "*", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@vitest/ui": { - "optional": true - }, - "c8": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-loong64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", - "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/esbuild": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", - "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "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" - } - }, - "node_modules/vitest/node_modules/rollup": { - "version": "2.77.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", - "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", - "dev": true, - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/vitest/node_modules/vite": { - "version": "2.9.18", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.18.tgz", - "integrity": "sha512-sAOqI5wNM9QvSEE70W3UGMdT8cyEn0+PmJMTFvTB8wB0YbYUWw3gUbY62AOyrXosGieF2htmeLATvNxpv/zNyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.14.27", - "postcss": "^8.4.13", - "resolve": "^1.22.0", - "rollup": ">=2.59.0 <2.78.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": ">=12.2.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "less": "*", - "sass": "*", - "stylus": "*" - }, - "peerDependenciesMeta": { - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - } - } - }, - "node_modules/web-namespaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/which": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/which-pm": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-3.0.1.tgz", - "integrity": "sha512-v2JrMq0waAI4ju1xU5x3blsxBBMgdgZve580iYMN5frDaLGjbA24fok7wKCsya8KLVO19Ju4XDc5+zTZCJkQfg==", - "license": "MIT", - "peer": true, - "dependencies": { - "load-yaml-file": "^0.2.0" - }, - "engines": { - "node": ">=18.12" - } - }, - "node_modules/which-pm-runs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", - "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/widest-line": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", - "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", - "license": "MIT", - "peer": true, - "dependencies": { - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC", - "optional": true - }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "license": "MIT", - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", - "license": "MIT" - }, - "node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/xxhash-wasm": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", - "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", - "license": "MIT", - "peer": true - }, - "node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "license": "ISC", - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yocto-spinner": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.0.tgz", - "integrity": "sha512-Qu6WAqNLGleB687CCGcmgHIo8l+J19MX/32UrSMfbf/4L8gLoxjpOYoiHT1asiWyqvjRZbgvOhLlvne6E5Tbdw==", - "license": "MIT", - "peer": true, - "dependencies": { - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": ">=18.19" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", - "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "3.24.2", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", - "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/zod-to-json-schema": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz", - "integrity": "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==", - "license": "ISC", - "peer": true, - "peerDependencies": { - "zod": "^3.24.1" - } - }, - "node_modules/zod-to-ts": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz", - "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==", - "peer": true, - "peerDependencies": { - "typescript": "^4.9.4 || ^5.0.2", - "zod": "^3" - } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - } -} diff --git a/packages/imagetools/package.json b/packages/imagetools/package.json deleted file mode 100644 index 75eeca8..0000000 --- a/packages/imagetools/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "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/log": "file:../../../polymech-mono/packages/log", - "@polymech/fs": "file:../../../polymech-mono/packages/fs", - "file-type": "17.1.1", - "find-cache-dir": "3.3.2", - "find-up": "^6.3.0", - "node-addon-api": "^8.3.0", - "node-gyp": "^11.1.0", - "object-hash": "3.0.0", - "potrace": "2.1.8", - "sharp": "^0.33.5" - }, - "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/plugin/hooks/config.js b/packages/imagetools/plugin/hooks/config.js deleted file mode 100644 index 2a0070f..0000000 --- a/packages/imagetools/plugin/hooks/config.js +++ /dev/null @@ -1,19 +0,0 @@ -// @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/plugin/hooks/load.js b/packages/imagetools/plugin/hooks/load.js deleted file mode 100644 index f5430ce..0000000 --- a/packages/imagetools/plugin/hooks/load.js +++ /dev/null @@ -1,144 +0,0 @@ -// @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"; - -const { getLoadedImage, getTransformedImage } = await import("../utils/imagetools.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) - 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 } - const { image, buffer } = raw - ? { - image: sharp && loadedImage, - buffer: !sharp && loadedImage.data, - } - : await getTransformedImage({ - src, - image: loadedImage, - config, - type, - }); - - const imageObject = { hash, type, image, buffer } - 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/plugin/hooks/transform.js b/packages/imagetools/plugin/hooks/transform.js deleted file mode 100644 index 4fde891..0000000 --- a/packages/imagetools/plugin/hooks/transform.js +++ /dev/null @@ -1,63 +0,0 @@ -// @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); - - //@todo - const uuid = crypto.randomBytes(4).toString("hex"); - - const Picture = "Picture" + uuid; - - const renderComponent = "renderComponent" + uuid; - - s.prepend( - `import { Picture as ${Picture} } from "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/plugin/index.js b/packages/imagetools/plugin/index.js deleted file mode 100644 index 2f1a028..0000000 --- a/packages/imagetools/plugin/index.js +++ /dev/null @@ -1,86 +0,0 @@ -// @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/plugin/utils/cache.js b/packages/imagetools/plugin/utils/cache.js deleted file mode 100644 index bc626db..0000000 --- a/packages/imagetools/plugin/utils/cache.js +++ /dev/null @@ -1,13 +0,0 @@ -// @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/plugin/utils/codecs.js b/packages/imagetools/plugin/utils/codecs.js deleted file mode 100644 index fcac5e4..0000000 --- a/packages/imagetools/plugin/utils/codecs.js +++ /dev/null @@ -1,41 +0,0 @@ -// @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/plugin/utils/imagetools.js b/packages/imagetools/plugin/utils/imagetools.js deleted file mode 100644 index 172dffa..0000000 --- a/packages/imagetools/plugin/utils/imagetools.js +++ /dev/null @@ -1,26 +0,0 @@ -// @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/plugin/utils/shared.js b/packages/imagetools/plugin/utils/shared.js deleted file mode 100644 index ccecced..0000000 --- a/packages/imagetools/plugin/utils/shared.js +++ /dev/null @@ -1,47 +0,0 @@ -// @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/ssr/index.d.ts b/packages/imagetools/ssr/index.d.ts deleted file mode 100644 index f5786d1..0000000 --- a/packages/imagetools/ssr/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { IncomingMessage, ServerResponse } from "http"; - -export function middleware( - request: IncomingMessage, - response: ServerResponse -): Buffer; diff --git a/packages/imagetools/ssr/index.js b/packages/imagetools/ssr/index.js deleted file mode 100644 index f76c2f2..0000000 --- a/packages/imagetools/ssr/index.js +++ /dev/null @@ -1,16 +0,0 @@ -// @ts-check -import { store } from "../plugin/index.js"; -import { getCachedBuffer } from "../plugin/utils/cache.js"; - -export async function middleware(request, response) { - const imageObject = store.get(request.url); - - 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/test-fixtures/getSrcPath/out/out.jpeg b/packages/imagetools/test-fixtures/getSrcPath/out/out.jpeg deleted file mode 100644 index c8b7e65..0000000 Binary files a/packages/imagetools/test-fixtures/getSrcPath/out/out.jpeg and /dev/null differ diff --git a/packages/imagetools/test-fixtures/getSrcPath/root.jpeg b/packages/imagetools/test-fixtures/getSrcPath/root.jpeg deleted file mode 100644 index 87f9f0c..0000000 Binary files a/packages/imagetools/test-fixtures/getSrcPath/root.jpeg and /dev/null differ diff --git a/packages/imagetools/tmp.html b/packages/imagetools/tmp.html deleted file mode 100644 index d2b5bfa..0000000 --- a/packages/imagetools/tmp.html +++ /dev/null @@ -1,14 +0,0 @@ -Sheetpress Cassandra - EDC450 \ No newline at end of file diff --git a/packages/imagetools/types.d.ts b/packages/imagetools/types.d.ts deleted file mode 100644 index f062d91..0000000 --- a/packages/imagetools/types.d.ts +++ /dev/null @@ -1,269 +0,0 @@ -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"; - class: string; - 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/utils/filterConfigs.js b/packages/imagetools/utils/filterConfigs.js deleted file mode 100644 index 3766548..0000000 --- a/packages/imagetools/utils/filterConfigs.js +++ /dev/null @@ -1,49 +0,0 @@ -// @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/utils/filterConfigs.test.js b/packages/imagetools/utils/filterConfigs.test.js deleted file mode 100644 index c9e3124..0000000 --- a/packages/imagetools/utils/filterConfigs.test.js +++ /dev/null @@ -1,100 +0,0 @@ -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/utils/printWarning.js b/packages/imagetools/utils/printWarning.js deleted file mode 100644 index 7a7944d..0000000 --- a/packages/imagetools/utils/printWarning.js +++ /dev/null @@ -1,57 +0,0 @@ -// @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/utils/runtimeChecks.js b/packages/imagetools/utils/runtimeChecks.js deleted file mode 100644 index e4f2271..0000000 --- a/packages/imagetools/utils/runtimeChecks.js +++ /dev/null @@ -1,65 +0,0 @@ -import fs from "node:fs" -import path from "node:path" -import filterConfigs from "./filterConfigs.js" -import { cache_path } from "@polymech/cache" -import { sync as dir } from "@polymech/fs/dir" -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 = await findUp([ - "astro-imagetools.config.js", - "astro-imagetools.config.mjs", -]); -*/ -/* -const configFunction = configFile - ? await import(configFile).catch(async () => await import("/" + configFile)) - : null; -*/ -const configFunction = null -//const rawGlobalConfigOptions = configFunction?.default ?? {}; -const rawGlobalConfigOptions = {} -const NonGlobalConfigOptions = ["src", "alt", "content"] - -const GlobalConfigs = supportedConfigs.filter( - (key) => !NonGlobalConfigOptions.includes(key) -) - -const GlobalConfigOptions = filterConfigs( - "Global", - rawGlobalConfigOptions, - GlobalConfigs -) -export { GlobalConfigOptions } -export const cwd = process.cwd().split(path.sep).join(path.posix.sep) - -let fsCachePath = `${cache_path('imagetools')}/` -dir(fsCachePath) -export { fsCachePath } diff --git a/packages/imagetools/utils/runtimeChecks.test.ts b/packages/imagetools/utils/runtimeChecks.test.ts deleted file mode 100644 index 055e347..0000000 --- a/packages/imagetools/utils/runtimeChecks.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -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/vitest.config.ts b/packages/imagetools/vitest.config.ts deleted file mode 100644 index 19fb2a7..0000000 --- a/packages/imagetools/vitest.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - // https://vitest.dev/config/#configuration - }, -}); diff --git a/packages/imagetools_/.eslintrc.js b/packages/imagetools_/.eslintrc.js deleted file mode 100644 index 404d101..0000000 --- a/packages/imagetools_/.eslintrc.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - root: true, - env: { - node: true, - browser: true, - es2020: true, - }, - parserOptions: { - ecmaVersion: 2022, - sourceType: "module", - }, - plugins: ["unicorn"], - extends: ["eslint:recommended"], - rules: { - "unicorn/prefer-node-protocol": "error", - }, -}; diff --git a/packages/imagetools_/.github/workflows/ci.yml b/packages/imagetools_/.github/workflows/ci.yml deleted file mode 100644 index 8037912..0000000 --- a/packages/imagetools_/.github/workflows/ci.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: CI -on: - pull_request: - push: - branches: - - main -jobs: - lint: - env: - ASTRO_TELEMETRY_DISABLED: true - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Setup PNPM - uses: pnpm/action-setup@v2.2.1 - - - name: Setup node - uses: actions/setup-node@v3 - with: - node-version: 16 - cache: "pnpm" - - - name: Install dependencies - run: pnpm install - - - name: Prettier - run: pnpm run format:check - - - name: ESLint - run: pnpm run lint - - test: - name: "Test: ${{ matrix.os }} (node@${{ matrix.node_version }})" - env: - ASTRO_TELEMETRY_DISABLED: true - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - node_version: [14, 16] - include: - - os: windows-latest - node_version: 16 - - os: macos-latest - node_version: 16 - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Setup PNPM - uses: pnpm/action-setup@v2.2.1 - - - name: Setup node@${{ matrix.node_version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node_version }} - cache: "pnpm" - - name: Install dependencies - run: pnpm install - - - name: Test - run: pnpm --filter astro-imagetools run test diff --git a/packages/imagetools_/.gitignore b/packages/imagetools_/.gitignore deleted file mode 100644 index 7ce5e2f..0000000 --- a/packages/imagetools_/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -# dependencies -node_modules/ - -# build output -dist/ - -# logs -*.log - -# npm -package-lock.json - -# macOS-specific files -.DS_Store - -# env -*.env - -# astro-imagetools -packages/astro-imagetools/astroViteConfigs.js diff --git a/packages/imagetools_/.npmignore b/packages/imagetools_/.npmignore deleted file mode 100644 index 4f257ea..0000000 --- a/packages/imagetools_/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -*.test.ts -test-fixtures -astroViteConfigs.js -vitest.config.ts diff --git a/packages/imagetools_/.npmrc b/packages/imagetools_/.npmrc deleted file mode 100644 index 0cc653b..0000000 --- a/packages/imagetools_/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -## force pnpm to hoist -shamefully-hoist = true \ No newline at end of file diff --git a/packages/imagetools_/.prettierignore b/packages/imagetools_/.prettierignore deleted file mode 100644 index 2a056f3..0000000 --- a/packages/imagetools_/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -pnpm-lock.yaml -demo/dist diff --git a/packages/imagetools_/.prettierrc b/packages/imagetools_/.prettierrc deleted file mode 100644 index 8008794..0000000 --- a/packages/imagetools_/.prettierrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "overrides": [ - { - "files": "**/*.astro", - "options": { "parser": "astro" } - } - ], - "plugins": ["prettier-plugin-astro"] -} diff --git a/packages/imagetools_/LICENSE b/packages/imagetools_/LICENSE deleted file mode 100644 index a4be0c4..0000000 --- a/packages/imagetools_/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 Rafid Muhymin Wafi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/packages/imagetools_/README.md b/packages/imagetools_/README.md deleted file mode 100644 index eda0dbe..0000000 --- a/packages/imagetools_/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# **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 ``) -- ✅ **Background Image Optimization** -- ✅ **Responsive Images** -- ✅ **Simple and intuitive Art Direction API** -- ✅ **Lazy Loading** -- ✅ **Programmatic APIs** -- ✅ **Asynchronous Decoding** -- ✅ **Unique Breakpoints Calculation** -- ✅ **Preloading for urgent images** -- ✅ **SVG Tracing and Posterization** -- ✅ **100% Scoped CSS** -- ✅ **Four kind of Layouts: `constrained`, `fixed`, `fullWidth` & `fill`** -- ✅ **Three kind of Placeholder Images: `blurred`, `dominantColor` & `tracedSVG`** -- ✅ **Long list of supported Image Formats** -- ✅ **Long List of supported Configuration Options** -- ✅ **Supports Remote Images and Data URIs too** -- ✅ **Support for _`sharp`less_ Environments** -- ✅ **Both Memory-based and FS-based Caching for better Performance** -- ✅ **Respects to _Semantics of HTML_ as much as possible** - -## Getting Started - -To get started with **Astro ImageTools**, first check out the [Installation](https://astro-imagetools-docs.vercel.app/en/installation) documentation for instructions on how to install the `astro-imagetools` package. - -If you are looking for the available components and APIs, please check out the [Components and APIs](https://astro-imagetools-docs.vercel.app/en/components-and-apis) documentation. - -If you want to view live examples of the components, APIs, layouts, and placeholder images, check out the [Astro ImageTools Demo](https://astro-imagetools-demo.vercel.app/) website. - -If you want to report any issues or have found a missing feature, please report it on [GitHub](https://github.com/RafidMuhymin/astro-imagetools/)! - -Good luck out there, Astronaut. 🧑‍🚀 diff --git a/packages/imagetools_/api/importImage.d.ts b/packages/imagetools_/api/importImage.d.ts deleted file mode 100644 index bb0bb97..0000000 --- a/packages/imagetools_/api/importImage.d.ts +++ /dev/null @@ -1 +0,0 @@ -export default function importImage(url: string): Promise; diff --git a/packages/imagetools_/api/importImage.js b/packages/imagetools_/api/importImage.js deleted file mode 100644 index b22ca0b..0000000 --- a/packages/imagetools_/api/importImage.js +++ /dev/null @@ -1,23 +0,0 @@ -import load from "../plugin/hooks/load.js"; -import { getSrcPath } from "./utils/getSrcPath.js"; -import getResolvedSrc from "./utils/getResolvedSrc.js"; - -export default async function importImage(path) { - try { - const { search, protocol, pathname } = new URL(path); - - const { src: id, base } = await getResolvedSrc( - protocol === "data:" ? protocol + pathname : path - ); - - const src = (await load(id + search, base)).slice(16, -1); - - return src; - } catch (error) { - const id = await getSrcPath(path); - - const src = (await load(id)).slice(16, -1); - - return src; - } -} diff --git a/packages/imagetools_/api/index.js b/packages/imagetools_/api/index.js deleted file mode 100644 index 062d6ad..0000000 --- a/packages/imagetools_/api/index.js +++ /dev/null @@ -1,6 +0,0 @@ -export { default as renderImg } from "./renderImg.js"; -export { default as renderPicture } from "./renderPicture.js"; -export { default as renderBackgroundImage } from "./renderBackgroundImage.js"; -export { default as renderBackgroundPicture } from "./renderBackgroundPicture.js"; -export { default as importImage } from "./importImage.js"; -export { getImageDetails, loadImage } from "./utils/imagetools.js" \ No newline at end of file diff --git a/packages/imagetools_/api/renderBackgroundImage.d.ts b/packages/imagetools_/api/renderBackgroundImage.d.ts deleted file mode 100644 index e7e601b..0000000 --- a/packages/imagetools_/api/renderBackgroundImage.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { - BackgroundImageConfigOptions, - BackgroundImageHTMLData, -} from "../types"; - -export default function renderBackgroundImage( - config: BackgroundImageConfigOptions -): Promise; diff --git a/packages/imagetools_/api/renderBackgroundImage.js b/packages/imagetools_/api/renderBackgroundImage.js deleted file mode 100644 index f56b308..0000000 --- a/packages/imagetools_/api/renderBackgroundImage.js +++ /dev/null @@ -1,159 +0,0 @@ -// @ts-check -import crypto from "node:crypto"; -import getImage from "./utils/getImage.js"; -import getLinkElement from "./utils/getLinkElement.js"; -import getStyleElement from "./utils/getStyleElement.js"; -import getFilteredProps from "./utils/getFilteredProps.js"; -import getContainerElement from "./utils/getContainerElement.js"; - -export default async function renderBackgroundImage(props) { - const type = "BackgroundImage"; - - const { filteredProps, transformConfigs } = getFilteredProps(type, props); - - const { - src, - tag, - content, - preload, - attributes, - placeholder, - breakpoints, - backgroundSize, - backgroundPosition, - format, - fallbackFormat, - includeSourceFormat, - formatOptions, - artDirectives, - } = filteredProps; - - const { - link: linkAttributes = {}, - style: styleAttributes = {}, - container: containerAttributes = {}, - } = attributes; - - const sizes = ""; - - const { uuid, images } = await getImage({ - src, - type, - sizes, - format, - breakpoints, - placeholder, - artDirectives, - fallbackFormat, - includeSourceFormat, - formatOptions, - transformConfigs, - }); - - const className = `astro-imagetools-background-image-${uuid}`; - - const { imagesizes } = images[images.length - 1]; - - const link = getLinkElement({ images, preload, imagesizes, linkAttributes }); - - const backgroundImageStylesArray = images.map(({ media, sources }) => { - const uuid = crypto.randomBytes(4).toString("hex").toUpperCase(); - - const fallbackUrlCustomVariable = `--astro-imagetools-background-image-fallback-url${uuid}`; - - const newSources = {}; - - sources.forEach(({ src, format, srcset }) => { - const sources = srcset - .split(", ") - .map((source) => [ - source.slice(0, source.lastIndexOf(" ")), - source.slice(source.lastIndexOf(" ") + 1, -1), - ]); - - sources.forEach(([path, width]) => { - if (!newSources[width]) { - newSources[width] = []; - } - - newSources[width].push({ src, format, path }); - }); - }); - - const widths = Object.keys(newSources) - .map((width) => parseInt(width)) - .reverse(); - - const maxWidth = Math.max(...widths); - - const styles = widths - .map((width) => { - const sources = newSources[width]; - - const styles = sources - .map( - ({ format, path }, i) => - ` - ${i !== sources.length - 1 ? `.${format} ` : ""}.${className} { - background-repeat: no-repeat; - background-image: url(${path}), - var(${fallbackUrlCustomVariable}); - background-size: ${backgroundSize}; - background-position: ${backgroundPosition}; - } - ` - ) - .reverse() - .join(""); - - return width === maxWidth - ? styles - : ` - @media screen and (max-width: ${width}px) { - ${styles} - } - `; - }) - .join(""); - - return { - fallbackUrlCustomVariable, - styles: media - ? ` - @media ${media} { - ${styles} - } - ` - : styles, - }; - }); - - const containerStyles = ` - .${className} { - position: relative; - ${images - .map(({ fallback }, i) => { - const fallbackUrlCustomVariable = - backgroundImageStylesArray[i].fallbackUrlCustomVariable; - - return `${fallbackUrlCustomVariable}: url("${encodeURI(fallback)}");`; - }) - .join("\n")} - } - `; - - const backgroundStyles = - backgroundImageStylesArray.map(({ styles }) => styles).join("\n") + - containerStyles; - - const style = getStyleElement({ styleAttributes, backgroundStyles }); - - const htmlElement = getContainerElement({ - tag, - content, - className, - containerAttributes, - }); - - return { link, style, htmlElement }; -} diff --git a/packages/imagetools_/api/renderBackgroundPicture.d.ts b/packages/imagetools_/api/renderBackgroundPicture.d.ts deleted file mode 100644 index a566421..0000000 --- a/packages/imagetools_/api/renderBackgroundPicture.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { - BackgroundPictureConfigOptions, - BackgroundPictureHTMLData, -} from "../types"; - -export default function renderBackgroundPicture( - config: BackgroundPictureConfigOptions -): Promise; diff --git a/packages/imagetools_/api/renderBackgroundPicture.js b/packages/imagetools_/api/renderBackgroundPicture.js deleted file mode 100644 index 1eea4e1..0000000 --- a/packages/imagetools_/api/renderBackgroundPicture.js +++ /dev/null @@ -1,127 +0,0 @@ -// @ts-check -import getImage from "./utils/getImage.js"; -import getImgElement from "./utils/getImgElement.js"; -import getLinkElement from "./utils/getLinkElement.js"; -import getStyleElement from "./utils/getStyleElement.js"; -import getLayoutStyles from "./utils/getLayoutStyles.js"; -import getFilteredProps from "./utils/getFilteredProps.js"; -import getPictureElement from "./utils/getPictureElement.js"; -import getBackgroundStyles from "./utils/getBackgroundStyles.js"; -import getContainerElement from "./utils/getContainerElement.js"; - -export default async function renderBackgroundPicture(props) { - const type = "BackgroundPicture"; - - const { filteredProps, transformConfigs } = getFilteredProps(type, props); - - const { - src, - tag, - content, - sizes, - preload, - loading, - decoding, - attributes, - placeholder, - breakpoints, - objectFit, - objectPosition, - format, - fallbackFormat, - includeSourceFormat, - formatOptions, - fadeInTransition, - artDirectives, - } = filteredProps; - - const { - img: imgAttributes = {}, - link: linkAttributes = {}, - style: styleAttributes = {}, - picture: pictureAttributes = {}, - container: containerAttributes = {}, - } = attributes; - - const { uuid, images } = await getImage({ - src, - type, - sizes, - format, - breakpoints, - placeholder, - artDirectives, - fallbackFormat, - includeSourceFormat, - formatOptions, - transformConfigs, - }); - - const className = `astro-imagetools-picture-${uuid}`, - containerClassName = `astro-imagetools-background-picture-${uuid}`; - - const { imagesizes } = images[images.length - 1]; - - const backgroundStyles = getBackgroundStyles( - images, - className, - objectFit, - objectPosition, - fadeInTransition, - { isBackgroundPicture: true, containerClassName } - ); - - const style = getStyleElement({ styleAttributes, backgroundStyles }); - - const link = getLinkElement({ images, preload, imagesizes, linkAttributes }); - - const layoutStyles = getLayoutStyles({ isBackgroundImage: true }); - - // Background Images shouldn't convey important information - const alt = ""; - - const sources = images.flatMap(({ media, sources, sizes, imagesizes }) => - sources.map(({ format, src, srcset }) => - src - ? getImgElement({ - src, - alt, - sizes, - style, - srcset, - loading, - decoding, - imagesizes, - fadeInTransition, - layoutStyles, - imgAttributes, - }) - : `` - ) - ); - - const picture = getPictureElement({ - sources, - className, - layoutStyles, - pictureAttributes, - isBackgroundPicture: true, - }); - - const htmlElement = getContainerElement({ - tag, - content: picture + content, - containerAttributes, - isBackgroundPicture: true, - containerClassName, - }); - - return { link, style, htmlElement }; -} diff --git a/packages/imagetools_/api/renderImg.d.ts b/packages/imagetools_/api/renderImg.d.ts deleted file mode 100644 index abbc304..0000000 --- a/packages/imagetools_/api/renderImg.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { ImgConfigOptions, ImgHTMLData } from "../types"; - -export default function renderImg( - config: ImgConfigOptions -): Promise; diff --git a/packages/imagetools_/api/renderImg.js b/packages/imagetools_/api/renderImg.js deleted file mode 100644 index 3bc2bf3..0000000 --- a/packages/imagetools_/api/renderImg.js +++ /dev/null @@ -1,93 +0,0 @@ -// @ts-check -import getImage from "./utils/getImage.js"; -import getImgElement from "./utils/getImgElement.js"; -import getLinkElement from "./utils/getLinkElement.js"; -import getStyleElement from "./utils/getStyleElement.js"; -import getLayoutStyles from "./utils/getLayoutStyles.js"; -import getFilteredProps from "./utils/getFilteredProps.js"; -import getBackgroundStyles from "./utils/getBackgroundStyles.js"; - -export default async function renderImg(props) { - const type = "Img"; - - const { filteredProps, transformConfigs } = getFilteredProps(type, props); - - const { - src, - alt, - sizes, - preload, - loading, - decoding, - attributes, - layout, - breakpoints, - placeholder, - objectFit, - objectPosition, - format, - formatOptions, - } = filteredProps; - - const artDirectives = [], - fallbackFormat = format, - fadeInTransition = false, - includeSourceFormat = false; - - const { - img: imgAttributes = {}, - link: linkAttributes = {}, - style: styleAttributes = {}, - } = attributes; - - const { uuid, images } = await getImage({ - src, - type, - sizes, - format, - breakpoints, - placeholder, - artDirectives, - fallbackFormat, - includeSourceFormat, - formatOptions, - transformConfigs, - }); - - const className = `astro-imagetools-img-${uuid}`; - - const { imagesizes } = images[images.length - 1]; - const backgroundStyles = getBackgroundStyles( - images, - className, - objectFit, - objectPosition, - fadeInTransition, - { isImg: true } - ); - const style = getStyleElement({ styleAttributes, backgroundStyles }) - const link = getLinkElement({ images, preload, imagesizes, linkAttributes }) - const layoutStyles = getLayoutStyles({ layout }) - - const sources = images.flatMap(({ sources, sizes, imagesizes }) => - sources.map(({ src, srcset }) => - getImgElement({ - src, - alt, - sizes, - style, - srcset, - loading, - decoding, - imagesizes, - fadeInTransition, - layoutStyles, - imgAttributes, - imgClassName: className, - }) - ) - ) - - const [img] = sources - return { link, style, img } -} diff --git a/packages/imagetools_/api/renderPicture.d.ts b/packages/imagetools_/api/renderPicture.d.ts deleted file mode 100644 index 54ccfe5..0000000 --- a/packages/imagetools_/api/renderPicture.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { PictureConfigOptions, PictureHTMLData } from "../types"; - -export default function renderPicture( - config: PictureConfigOptions -): Promise; diff --git a/packages/imagetools_/api/renderPicture.js b/packages/imagetools_/api/renderPicture.js deleted file mode 100644 index 8a98d1c..0000000 --- a/packages/imagetools_/api/renderPicture.js +++ /dev/null @@ -1,111 +0,0 @@ -// @ts-check -import getImage from "./utils/getImage.js"; -import getImgElement from "./utils/getImgElement.js"; -import getLinkElement from "./utils/getLinkElement.js"; -import getStyleElement from "./utils/getStyleElement.js"; -import getLayoutStyles from "./utils/getLayoutStyles.js"; -import getFilteredProps from "./utils/getFilteredProps.js"; -import getPictureElement from "./utils/getPictureElement.js"; -import getBackgroundStyles from "./utils/getBackgroundStyles.js"; - -export default async function renderPicture(props) { - const type = "Picture"; - - const { filteredProps, transformConfigs } = getFilteredProps(type, props); - - const { - src, - alt, - sizes, - preload, - loading, - decoding, - attributes, - layout, - placeholder, - breakpoints, - objectFit, - objectPosition, - format, - fallbackFormat, - includeSourceFormat, - formatOptions, - fadeInTransition, - artDirectives, - } = filteredProps; - - const { - img: imgAttributes = {}, - link: linkAttributes = {}, - style: styleAttributes = {}, - picture: pictureAttributes = {}, - } = attributes; - - const { uuid, images } = await getImage({ - src, - type, - sizes, - format, - breakpoints, - placeholder, - fallbackFormat, - includeSourceFormat, - formatOptions, - artDirectives, - transformConfigs, - }); - - const className = `astro-imagetools-picture-${uuid}`; - - const { imagesizes } = images[images.length - 1]; - - const backgroundStyles = getBackgroundStyles( - images, - className, - objectFit, - objectPosition, - fadeInTransition - ); - - const style = getStyleElement({ styleAttributes, backgroundStyles }); - - const link = getLinkElement({ images, preload, imagesizes, linkAttributes }); - - const layoutStyles = getLayoutStyles({ layout }); - - const sources = images.flatMap(({ media, sources, sizes, imagesizes }) => - sources.map(({ format, src, srcset }) => - src - ? getImgElement({ - src, - alt, - sizes, - style, - srcset, - loading, - decoding, - imagesizes, - fadeInTransition, - layoutStyles, - imgAttributes, - }) - : `` - ) - ); - - const picture = getPictureElement({ - sources, - className, - layoutStyles, - pictureAttributes, - }); - - return { link, style, picture }; -} diff --git a/packages/imagetools_/api/utils/codecs.js b/packages/imagetools_/api/utils/codecs.js deleted file mode 100644 index 8f72571..0000000 --- a/packages/imagetools_/api/utils/codecs.js +++ /dev/null @@ -1,38 +0,0 @@ -// @ts-check -import fs from "node:fs"; -import { extname } from "node:path"; -import * as codecs from "@astropub/codecs"; - -export async function getImageDetails(path, width, height, aspect) { - const extension = extname(path).slice(1); - - const imageFormat = extension === "jpeg" ? "jpg" : extension; - - const buffer = fs.readFileSync(path); - const decodedImage = await codecs.jpg.decode(buffer); - - if (aspect && !width && !height) { - if (!width && !height) { - ({ width } = decodedImage); - } - - if (width) { - height = width / aspect; - } - - if (height) { - width = height * aspect; - } - } - - const image = await decodedImage.resize({ width, height }); - - const { width: imageWidth, height: imageHeight } = image; - - return { - image, - imageWidth, - imageHeight, - imageFormat, - }; -} diff --git a/packages/imagetools_/api/utils/getArtDirectedImages.js b/packages/imagetools_/api/utils/getArtDirectedImages.js deleted file mode 100644 index 1f7c073..0000000 --- a/packages/imagetools_/api/utils/getArtDirectedImages.js +++ /dev/null @@ -1,137 +0,0 @@ -// @ts-check -import getSrcset from "./getSrcset.js"; -import getConfigOptions from "./getConfigOptions.js"; -import getFallbackImage from "./getFallbackImage.js"; -import getProcessedImage from "./getProcessedImage.js"; - -export default async function getArtDirectedImages( - artDirectives = [], - placeholder, - format, - imagesizes, - breakpoints, - fallbackFormat, - includeSourceFormat, - formatOptions, - rest -) { - const images = await Promise.all( - artDirectives.map( - async ({ - src, - media, - sizes: directiveImagesizes, - placeholder: directivePlaceholder, - breakpoints: directiveBreakpoints, - objectFit, - objectPosition, - backgroundSize, - backgroundPosition, - format: directiveFormat, - fallbackFormat: directiveFallbackFormat, - includeSourceFormat: directiveIncludeSourceFormat, - formatOptions: directiveFormatOptions = {}, - ...configOptions - }) => { - const { - path, - base, - rest: rest2, - image, - imageWidth, - imageHeight, - imageFormat, - } = await getProcessedImage(src, configOptions); - - rest2.aspect = `${imageWidth / imageHeight}`; - - const calculatedConfigs = getConfigOptions( - imageWidth, - directiveImagesizes || imagesizes, - directiveBreakpoints || breakpoints, - directiveFormat || format, - imageFormat, - directiveFallbackFormat || fallbackFormat, - directiveIncludeSourceFormat || includeSourceFormat - ); - - const { formats, requiredBreakpoints } = calculatedConfigs; - - imagesizes = calculatedConfigs.imagesizes; - - const maxWidth = requiredBreakpoints[requiredBreakpoints.length - 1]; - - const sources = await Promise.all( - formats.map(async (format) => { - const srcset = await getSrcset( - path, - base, - requiredBreakpoints, - format, - { - ...rest, - ...rest2, - ...formatOptions[format], - ...directiveFormatOptions[format], - } - ); - - return { - format, - srcset, - }; - }) - ); - - const sizes = { - width: maxWidth, - height: Math.round(maxWidth / rest2.aspect), - }; - - const object = { - fit: objectFit, - position: objectPosition, - }; - - const background = { - size: backgroundSize, - position: backgroundPosition, - }; - - const fallback = await getFallbackImage( - path, - directivePlaceholder || placeholder, - image, - imageFormat, - { ...formatOptions, ...directiveFormatOptions }, - { ...rest, ...rest2 } - ); - - const returnValue = { - media, - sources, - sizes, - fallback, - imagesizes, - }; - - const isBackgroundImage = !!backgroundSize || !!backgroundPosition; - - isBackgroundImage - ? (returnValue.background = background) - : (returnValue.object = object); - - return { - media, - sources, - sizes, - object, - fallback, - imagesizes, - }; - } - ) - ); - - return images; -} diff --git a/packages/imagetools_/api/utils/getAttributesString.js b/packages/imagetools_/api/utils/getAttributesString.js deleted file mode 100644 index e9bd1c1..0000000 --- a/packages/imagetools_/api/utils/getAttributesString.js +++ /dev/null @@ -1,27 +0,0 @@ -// @ts-check - -import printWarning from "../../utils/printWarning.js"; - -export default function getAttributesString({ - attributes, - element = "", - excludeArray = [], -}) { - const attributesString = Object.keys(attributes) - .filter((key) => { - if (excludeArray.includes(key)) { - printWarning({ - key, - element, - }); - - return false; - } - - return true; - }) - .map((key) => `${key}="${attributes[key]}"`) - .join(" "); - - return attributesString; -} diff --git a/packages/imagetools_/api/utils/getBackgroundStyles.js b/packages/imagetools_/api/utils/getBackgroundStyles.js deleted file mode 100644 index 111233c..0000000 --- a/packages/imagetools_/api/utils/getBackgroundStyles.js +++ /dev/null @@ -1,97 +0,0 @@ -// @ts-check - -export default function getBackgroundStyles( - images, - className, - objectFit, - objectPosition, - fadeInTransition, - { isImg = false, isBackgroundPicture = false, containerClassName = "" } = {} -) { - const sourcesWithFallback = images.filter(({ fallback }) => fallback); - - if (sourcesWithFallback.length === 0) return ""; - - const staticStyles = !fadeInTransition - ? "" - : ` - ${ - isBackgroundPicture - ? ` - .${containerClassName} * { - z-index: 1; - position: relative; - } - ` - : "" - } - - .${className} { - --opacity: 1; - --z-index: 0; - } - - ${ - !isBackgroundPicture - ? ` - .${className} img { - z-index: 1; - position: relative; - } - ` - : "" - } - - .${className}::after { - inset: 0; - content: ""; - left: 0; - width: 100%; - height: 100%; - position: absolute; - pointer-events: none; - transition: opacity ${ - typeof fadeInTransition !== "object" - ? "1s" - : (() => { - const { - delay = "0s", - duration = "1s", - timingFunction = "ease", - } = fadeInTransition; - - return `${duration} ${timingFunction} ${delay}`; - })() - }; - opacity: var(--opacity); - z-index: var(--z-index); - } - `; - - const dynamicStyles = images - .map(({ media, fallback, object }) => { - const elementSelector = className + (!isImg ? " img" : ""), - backgroundElementSelector = - className + (fadeInTransition ? "::after" : ""); - - const style = ` - .${elementSelector} { - object-fit: ${object?.fit || objectFit}; - object-position: ${object?.position || objectPosition}; - } - - .${backgroundElementSelector} { - background-size: ${object?.fit || objectFit}; - background-image: url("${encodeURI(fallback)}"); - background-position: ${object?.position || objectPosition}; - } - `; - - return media ? `@media ${media} { ${style} }` : style; - }) - .reverse(); - - const backgroundStyles = [staticStyles, ...dynamicStyles].join(""); - - return backgroundStyles; -} diff --git a/packages/imagetools_/api/utils/getBreakpoints.js b/packages/imagetools_/api/utils/getBreakpoints.js deleted file mode 100644 index 02a098e..0000000 --- a/packages/imagetools_/api/utils/getBreakpoints.js +++ /dev/null @@ -1,77 +0,0 @@ -// @ts-check -import printWarning from "../../utils/printWarning.js"; - -export default function getBreakpoints(breakpoints, imageWidth) { - if (Array.isArray(breakpoints)) { - return breakpoints.sort((a, b) => a - b); - } - - const { count, minWidth = 320 } = breakpoints || {}; - - const maxWidth = (() => { - if (breakpoints?.maxWidth) return breakpoints.maxWidth; - - if (imageWidth > 3840) { - printWarning({ - message: - "The width of the source image is greater than 3840px. The generated breakpoints will be capped at 3840px. If you need breakpoints larger than this, please pass the maxWidth option to the breakpoints property.", - }); - - return 3840; - } - - return imageWidth; - })(); - - const breakPoints = []; - - const diff = maxWidth - minWidth; - - const n = - count || - (maxWidth <= 400 - ? 1 - : maxWidth <= 640 - ? 2 - : maxWidth <= 800 - ? 3 - : maxWidth <= 1024 - ? 4 - : maxWidth <= 1280 - ? 5 - : maxWidth <= 1440 - ? 6 - : maxWidth <= 1920 - ? 7 - : maxWidth <= 2560 - ? 8 - : maxWidth <= 2880 - ? 9 - : maxWidth <= 3840 - ? 10 - : 11); - - let currentWidth = minWidth; - - n > 1 && breakPoints.push(currentWidth); - - let steps = 0; - - for (let i = 1; i < n; i++) { - steps += i; - } - - const pixelsPerStep = diff / steps; - - for (let i = 1; i < n - 1; i++) { - const next = pixelsPerStep * (n - i) + currentWidth; - - breakPoints.push(Math.round(next)); - - currentWidth = next; - } - - breakPoints.push(maxWidth); - - return [...new Set(breakPoints)]; -} diff --git a/packages/imagetools_/api/utils/getConfigOptions.js b/packages/imagetools_/api/utils/getConfigOptions.js deleted file mode 100644 index 3b3797d..0000000 --- a/packages/imagetools_/api/utils/getConfigOptions.js +++ /dev/null @@ -1,34 +0,0 @@ -// @ts-check -import getBreakpoints from "./getBreakpoints.js"; - -export default function getConfigOptions( - imageWidth, - imagesizes, - breakpoints, - format, - imageFormat, - fallbackFormat, - includeSourceFormat -) { - const formats = [ - ...new Set( - [format, includeSourceFormat && imageFormat] - .flat() - .filter((f) => f && f !== fallbackFormat) - ), - fallbackFormat, - ]; - - const requiredBreakpoints = getBreakpoints(breakpoints, imageWidth); - - imagesizes = - typeof imagesizes === "string" - ? imagesizes - : imagesizes(requiredBreakpoints); - - return { - formats, - imagesizes, - requiredBreakpoints, - }; -} diff --git a/packages/imagetools_/api/utils/getContainerElement.js b/packages/imagetools_/api/utils/getContainerElement.js deleted file mode 100644 index 9c5b710..0000000 --- a/packages/imagetools_/api/utils/getContainerElement.js +++ /dev/null @@ -1,48 +0,0 @@ -// @ts-check -import getAttributesString from "./getAttributesString.js"; - -export default function getContainerElement({ - tag, - content, - className = "", - containerAttributes, - isBackgroundPicture = false, - containerClassName = "", -}) { - const { - class: customClasses = "", - style: customInlineStyles = "", - ...restContainerAttributes - } = containerAttributes; - - const attributesString = getAttributesString({ - attributes: restContainerAttributes, - }); - - const classAttribute = [ - isBackgroundPicture - ? "astro-imagetools-background-picture" - : "astro-imagetools-background-image", - isBackgroundPicture ? containerClassName : className, - customClasses, - ] - .join(" ") - .trim(); - - const styleAttribute = [ - isBackgroundPicture ? "position: relative;" : "", - customInlineStyles + (customInlineStyles.endsWith(";") ? "" : ";"), - ] - .join(" ") - .trim(); - - const containerElement = `<${tag} - ${attributesString} - class="${classAttribute}" - style="${styleAttribute}" - > - ${content} - `; - - return containerElement; -} diff --git a/packages/imagetools_/api/utils/getFallbackImage.js b/packages/imagetools_/api/utils/getFallbackImage.js deleted file mode 100644 index b085286..0000000 --- a/packages/imagetools_/api/utils/getFallbackImage.js +++ /dev/null @@ -1,58 +0,0 @@ -// @ts-check - -import util from "node:util"; -import potrace from "potrace"; -import getSrcset from "./getSrcset.js"; -import { sharp } from "../../utils/runtimeChecks.js"; - -export default async function getFallbackImage( - src, - placeholder, - image, - format, - formatOptions, - rest -) { - const base = null; - - switch (placeholder) { - case "blurred": { - const dataUri = await getSrcset(src, base, [20], format, { - inline: true, - ...rest, - ...formatOptions[format], - }); - - return dataUri; - } - case "tracedSVG": { - const { function: fn, options } = formatOptions.tracedSVG; - - const traceSVG = util.promisify(potrace[fn]); - - const imageBuffer = sharp - ? await image.toBuffer() - : Buffer.from( - (await image.encode(`image/${format === "jpg" ? "jpeg" : format}`)) - .data - ); - - const tracedSVG = await traceSVG(imageBuffer, options); - - return `data:image/svg+xml;utf8,${tracedSVG}`; - } - case "dominantColor": { - if (sharp) { - var { r, g, b } = (await image.stats()).dominant; - } else { - [r, g, b] = image.color; - } - - const svg = ``; - - return `data:image/svg+xml;utf8,${svg}`; - } - default: - return null; - } -} diff --git a/packages/imagetools_/api/utils/getFilteredProps.js b/packages/imagetools_/api/utils/getFilteredProps.js deleted file mode 100644 index 9c791ba..0000000 --- a/packages/imagetools_/api/utils/getFilteredProps.js +++ /dev/null @@ -1,138 +0,0 @@ -// @ts-check -import filterConfigs from "../../utils/filterConfigs.js"; -import { - supportedConfigs, - GlobalConfigOptions, -} from "../../utils/runtimeChecks.js"; - -const GlobalOnlyProperties = ["cacheDir", "assetFileNames"]; - -const NonGlobalSupportedConfigs = supportedConfigs.filter( - (key) => !GlobalOnlyProperties.includes(key) -); - -const NonProperties = { - Img: [ - "tag", - "content", - "backgroundSize", - "backgroundPosition", - "fallbackFormat", - "includeSourceFormat", - "fadeInTransition", - "artDirectives", - ], - Picture: ["tag", "content", "backgroundSize", "backgroundPosition"], - BackgroundImage: [ - "alt", - "loading", - "decoding", - "layout", - "objectFit", - "objectPosition", - "fadeInTransition", - ], - BackgroundPicture: ["alt", "backgroundSize", "backgroundPosition"], -}; - -const ImgProperties = NonGlobalSupportedConfigs.filter( - (key) => !NonProperties.Img.includes(key) - ), - PictureProperties = NonGlobalSupportedConfigs.filter( - (key) => !NonProperties.Picture.includes(key) - ), - BackgroundImageProperties = NonGlobalSupportedConfigs.filter( - (key) => !NonProperties.BackgroundImage.includes(key) - ), - BackgroundPictureProperties = NonGlobalSupportedConfigs.filter( - (key) => !NonProperties.BackgroundPicture.includes(key) - ); - -const SupportedProperties = { - Img: ImgProperties, - Picture: PictureProperties, - BackgroundImage: BackgroundImageProperties, - BackgroundPicture: BackgroundPictureProperties, -}; - -export default function getFilteredProps(type, props) { - const filteredGlobalConfigs = filterConfigs( - "Global", - GlobalConfigOptions, - SupportedProperties[type], - { warn: false } - ); - - const { search, searchParams } = new URL(props.src, "file://"); - - props.src = props.src.replace(search, ""); - - const paramOptions = Object.fromEntries(searchParams); - - const filteredLocalProps = filterConfigs( - type, - { - ...paramOptions, - ...props, - }, - SupportedProperties[type] - ); - - const resolvedProps = { - ...filteredGlobalConfigs, - ...filteredLocalProps, - }; - - const { - src, - alt, - tag = "section", - content = "", - sizes = function (breakpoints) { - const maxWidth = breakpoints[breakpoints.length - 1]; - return `(min-width: ${maxWidth}px) ${maxWidth}px, 100vw`; - }, - preload, - loading = preload ? "eager" : "lazy", - decoding = "async", - attributes = {}, - layout = "constrained", - placeholder = "blurred", - breakpoints, - objectFit = "cover", - objectPosition = "50% 50%", - backgroundSize = "cover", - backgroundPosition = "50% 50%", - format = type === "Img" ? undefined : ["avif", "webp"], - fallbackFormat, - includeSourceFormat = true, - formatOptions = { - tracedSVG: { - function: "trace", - }, - }, - fadeInTransition = true, - artDirectives, - ...transformConfigs - } = resolvedProps; - - // prettier-ignore - const allProps = { - src, alt, tag, content, sizes, preload, loading, decoding, attributes, layout, placeholder, - breakpoints, objectFit, objectPosition, backgroundSize, backgroundPosition, format, - fallbackFormat, includeSourceFormat, formatOptions, fadeInTransition, artDirectives, - ...transformConfigs, - }; - - const filteredProps = filterConfigs( - type, - allProps, - SupportedProperties[type], - { warn: false } - ); - - return { - filteredProps, - transformConfigs, - }; -} diff --git a/packages/imagetools_/api/utils/getFilteredProps.test.ts b/packages/imagetools_/api/utils/getFilteredProps.test.ts deleted file mode 100644 index 7b8f20c..0000000 --- a/packages/imagetools_/api/utils/getFilteredProps.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { describe, expect, it } from "vitest"; -import getFilteredProps from "./getFilteredProps"; - -describe("getFilteredProps", () => { - it("should should merge in default props", () => { - const result = getFilteredProps("Img", { src: "/img.jpeg", alt: "alt" }); - expect(result).toEqual({ - filteredProps: { - alt: "alt", - attributes: {}, - breakpoints: undefined, - decoding: "async", - format: undefined, - formatOptions: { - tracedSVG: { - function: "trace", - }, - }, - layout: "constrained", - loading: "lazy", - objectFit: "cover", - objectPosition: "50% 50%", - placeholder: "blurred", - preload: undefined, - sizes: expect.any(Function), - src: "/img.jpeg", - }, - transformConfigs: {}, - }); - }); - - it("should accept empty string for `alt` prop on Img", () => { - const result = getFilteredProps("Img", { src: "/img.jpeg", alt: "" }); - expect(result).toMatchObject({ - filteredProps: { - alt: "", - }, - }); - }); - - it("should accept empty string for `alt` prop on Picture", () => { - const result = getFilteredProps("Picture", { src: "/img.jpeg", alt: "" }); - expect(result).toMatchObject({ - filteredProps: { - alt: "", - }, - }); - }); -}); diff --git a/packages/imagetools_/api/utils/getImage.js b/packages/imagetools_/api/utils/getImage.js deleted file mode 100644 index b2ad3c9..0000000 --- a/packages/imagetools_/api/utils/getImage.js +++ /dev/null @@ -1,108 +0,0 @@ -// @ts-check -import crypto from "node:crypto"; -import objectHash from "object-hash"; -import getImageSources from "./getImageSources.js"; -import getProcessedImage from "./getProcessedImage.js"; -import getArtDirectedImages from "./getArtDirectedImages.js"; -import pMap from "p-map"; -// Caching moved to plugin level for proper store population - -const imagesData = new Map(); - -const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); - -// Cache helpers moved to plugin level - -export default async function ({ - src, - type, - sizes: imagesizes, - format, - breakpoints, - placeholder, - fallbackFormat, - includeSourceFormat, - formatOptions, - artDirectives, - transformConfigs, -}) { - try { - const args = Array.from(arguments); - const hash = objectHash(args); - - // Check in-memory cache first - if (imagesData.has(hash)) { - return imagesData.get(hash); - } - - // Caching removed from this level to ensure proper Vite store population - // Cache is now handled at the plugin level where it can properly manage the store - const { path, base, rest, image, imageWidth, imageHeight, imageFormat } = - await getProcessedImage(src, transformConfigs); - - src = path; - - rest.aspect = `${imageWidth / imageHeight}`; - if (!fallbackFormat) { - fallbackFormat = imageFormat; - } - - // Fetch both image sources and art-directed images - const [mainImage, artDirectedImages] = await pMap( - [ - async () => - await getImageSources( - src, - base, - image, - format, - imageWidth, - imagesizes, - breakpoints, - placeholder, - imageFormat, - formatOptions, - fallbackFormat, - includeSourceFormat, - rest - ), - async () => { - return await getArtDirectedImages( - artDirectives, - placeholder, - format, - imagesizes, - breakpoints, - fallbackFormat, - includeSourceFormat, - formatOptions, - rest - ); - }, - ], - async (task) => await task(), - { concurrency: 1 } - ); - - // Ensure artDirectedImages is an array - const images = Array.isArray(artDirectedImages) ? [...artDirectedImages, mainImage] : [mainImage]; - - // Create deterministic UUID based on input hash for consistent caching - const uuid = crypto.createHash('md5').update(hash).digest("hex").slice(0, 8).toUpperCase(); - - const returnObject = { - uuid, - images, - }; - - // Cache only in memory at this level - imagesData.set(hash, returnObject); - - // Persistent caching moved to plugin level for proper store management - - return returnObject; - } catch (error) { - console.error(`Error processing images:: ${src}`, error, error.stack); - throw error; - } -} diff --git a/packages/imagetools_/api/utils/getImageSources.js b/packages/imagetools_/api/utils/getImageSources.js deleted file mode 100644 index d0dca00..0000000 --- a/packages/imagetools_/api/utils/getImageSources.js +++ /dev/null @@ -1,91 +0,0 @@ -// @ts-check -import getSrcset from "./getSrcset.js"; -import getConfigOptions from "./getConfigOptions.js"; -import getFallbackImage from "./getFallbackImage.js"; -import pMap from "p-map"; - -function delay(ms) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - -export default async function getImageSources( - src, - base, - image, - format, - imageWidth, - imagesizes, - breakpoints, - placeholder, - imageFormat, - formatOptions, - fallbackFormat, - includeSourceFormat, - rest -) { - try { - const calculatedConfigs = getConfigOptions( - imageWidth, - imagesizes, - breakpoints, - format, - imageFormat, - fallbackFormat, - includeSourceFormat - ); - - const { formats, requiredBreakpoints } = calculatedConfigs; - imagesizes = calculatedConfigs.imagesizes; - const maxWidth = requiredBreakpoints[requiredBreakpoints.length - 1]; - const sliceLength = -(maxWidth.toString().length + 2); - - const sources = await pMap( - formats, - async (format) => { - try { - await delay(250); - const srcset = await getSrcset(src, base, requiredBreakpoints, format, { - ...rest, - ...formatOptions[format], - }); - - const srcsets = srcset.split(", "); - const srcObject = - format === fallbackFormat - ? { src: srcsets[srcsets.length - 1].slice(0, sliceLength) } - : {}; - - return { - ...srcObject, - format, - srcset, - }; - } catch (error) { - console.error(`Error processing format ${format}:`, error); - return null; - } - }, - { concurrency: 1 } - ); - - const filteredSources = sources.filter(Boolean); - - const sizes = { - width: maxWidth, - height: Math.round(maxWidth / rest.aspect), - }; - - const fallback = await getFallbackImage( - src, - placeholder, - image, - fallbackFormat, - formatOptions, - rest - ) - return { sources: filteredSources, sizes, fallback, imagesizes }; - } catch (error) { - console.error("Error in getImageSources:", error); - return { sources: [], sizes: {}, fallback: null, imagesizes: null }; - } -} diff --git a/packages/imagetools_/api/utils/getImgElement.js b/packages/imagetools_/api/utils/getImgElement.js deleted file mode 100644 index fea4109..0000000 --- a/packages/imagetools_/api/utils/getImgElement.js +++ /dev/null @@ -1,80 +0,0 @@ -// @ts-check - -import getAttributesString from "./getAttributesString.js"; - -export default function getImgElement({ - src, - alt, - sizes, - style, - srcset, - loading, - decoding, - imagesizes, - fadeInTransition, - layoutStyles, - imgAttributes, - imgClassName = "", -}) { - const { - class: customClasses = "", - style: customInlineStyles = "", - onload: customOnload = "", - ...restImgAttributes - } = imgAttributes; - - const attributesString = getAttributesString({ - attributes: restImgAttributes, - element: "img", - excludeArray: [ - "src", - "alt", - "srcset", - "sizes", - "width", - "height", - "loading", - "decoding", - ], - }); - - const classAttribute = ["astro-imagetools-img", imgClassName, customClasses] - .join(" ") - .trim(); - - const styleAttribute = [ - "display: inline-block; overflow: hidden; vertical-align: middle;", - customInlineStyles + (customInlineStyles.endsWith(";") ? "" : ";"), - layoutStyles, - ] - .join(" ") - .trim(); - - const onloadAttribute = [ - !imgClassName && style - ? fadeInTransition - ? `parentElement.style.setProperty('--z-index', 1); parentElement.style.setProperty('--opacity', 0);` - : `parentElement.style.backgroundImage = 'unset';` - : "", - customOnload, - ] - .join(" ") - .trim(); - - const imgElement = `==`; - - return imgElement; -} diff --git a/packages/imagetools_/api/utils/getLayoutStyles.js b/packages/imagetools_/api/utils/getLayoutStyles.js deleted file mode 100644 index efa6d96..0000000 --- a/packages/imagetools_/api/utils/getLayoutStyles.js +++ /dev/null @@ -1,16 +0,0 @@ -// @ts-check - -export default function getLayoutStyles({ - layout = null, - isBackgroundImage = false, -}) { - return isBackgroundImage - ? "width: 100%; height: 100%;" - : layout === "fill" - ? `width: 100%; height: 100%;` - : layout === "fullWidth" - ? `width: 100%; height: auto;` - : layout === "fixed" - ? "" - : "max-width: 100%; height: auto;"; -} diff --git a/packages/imagetools_/api/utils/getLinkElement.js b/packages/imagetools_/api/utils/getLinkElement.js deleted file mode 100644 index 2fcfb7a..0000000 --- a/packages/imagetools_/api/utils/getLinkElement.js +++ /dev/null @@ -1,34 +0,0 @@ -// @ts-check -import getAttributesString from "./getAttributesString.js"; - -export default function getLinkElement({ - images = [], - preload = "", - imagesizes = "", - linkAttributes, -}) { - const imagesrcset = - preload && - images[images.length - 1]?.sources.find( - ({ format: fmt }) => fmt === preload - )?.srcset; - - const attributesString = getAttributesString({ - element: "link", - attributes: linkAttributes, - excludeArray: ["as", "rel", "imagesizes", "imagesrcset"], - }); - - const linkElement = - preload && images.length - ? `` - : ""; - - return linkElement; -} diff --git a/packages/imagetools_/api/utils/getLinkElement.test.ts b/packages/imagetools_/api/utils/getLinkElement.test.ts deleted file mode 100644 index 83d435a..0000000 --- a/packages/imagetools_/api/utils/getLinkElement.test.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { describe, expect, it } from "vitest"; -import getLinkElement from "./getLinkElement"; - -describe("getLinkElement", () => { - it("returns an empty string if preload is not set", () => { - const result = getLinkElement({ linkAttributes: {} }); - expect(result).toBe(""); - }); - - it("returns an empty string if no images are provided", () => { - const result = getLinkElement({ linkAttributes: {}, preload: "webp" }); - expect(result).toBe(""); - }); -}); diff --git a/packages/imagetools_/api/utils/getPictureElement.js b/packages/imagetools_/api/utils/getPictureElement.js deleted file mode 100644 index b0d62c3..0000000 --- a/packages/imagetools_/api/utils/getPictureElement.js +++ /dev/null @@ -1,43 +0,0 @@ -// @ts-check -import getAttributesString from "./getAttributesString.js"; - -export default function getPictureElement({ - sources, - className, - layoutStyles, - pictureAttributes, - isBackgroundPicture = false, -}) { - const { - class: customClasses = "", - style: customInlineStyles = "", - ...restPictureAttributes - } = pictureAttributes; - - const attributesString = getAttributesString({ - attributes: restPictureAttributes, - }); - - const classAttribute = ["astro-imagetools-picture", className, customClasses] - .join(" ") - .trim(); - - const styleAttribute = [ - isBackgroundPicture - ? `position: absolute; z-index: 0; width: 100%; height: 100%; display: inline-block;` - : `position: relative; display: inline-block;`, - customInlineStyles + (customInlineStyles.endsWith(";") ? "" : ";"), - layoutStyles, - ] - .join(" ") - .trim(); - - const pictureElement = `${sources.join("\n")} - `; - - return pictureElement; -} diff --git a/packages/imagetools_/api/utils/getProcessedImage.js b/packages/imagetools_/api/utils/getProcessedImage.js deleted file mode 100644 index 98eae1d..0000000 --- a/packages/imagetools_/api/utils/getProcessedImage.js +++ /dev/null @@ -1,63 +0,0 @@ -// @ts-check -import { fileURLToPath } from "node:url"; -import { extname, relative, resolve } from "node:path"; - -import { getSrcPath } from "./getSrcPath.js"; -import getResolvedSrc from "./getResolvedSrc.js"; -import { cwd, sharp } from "../../utils/runtimeChecks.js"; -import throwErrorIfUnsupported from "./throwErrorIfUnsupported.js"; - -const { getImageDetails } = await (sharp - ? import("./imagetools.js") - : import("./codecs.js")); - -export default async function getProcessedImage(src, transformConfigs) { - throwErrorIfUnsupported(src, extname(src).slice(1)); - - let base; - - if (src.match("(http://|https://|data:image/).*")) { - ({ src, base } = await getResolvedSrc(src)); - } else { - const { - default: { isSsrBuild }, - } = await import("../../astroViteConfigs.js"); - - if (isSsrBuild) { - const filename = fileURLToPath(import.meta.url); - - const assetPath = resolve(filename, "../../client") + src; - - src = "/" + relative(cwd, assetPath); - } - } - - const { - w, - h, - ar, - width = w, - height = h, - aspect = ar, - ...rest - } = transformConfigs; - - const path = src.replace(/\\/g, `/`); - - const { image, imageWidth, imageHeight, imageFormat } = await getImageDetails( - await getSrcPath(src), - width, - height, - aspect - ); - - return { - path, - base, - rest, - image, - imageWidth, - imageHeight, - imageFormat, - }; -} diff --git a/packages/imagetools_/api/utils/getResolvedSrc.js b/packages/imagetools_/api/utils/getResolvedSrc.js deleted file mode 100644 index 548a59c..0000000 --- a/packages/imagetools_/api/utils/getResolvedSrc.js +++ /dev/null @@ -1,87 +0,0 @@ -// @ts-check -import fs from "node:fs"; -import crypto from "node:crypto"; -import { join, parse, relative } from "node:path"; -import throwErrorIfUnsupported from "./throwErrorIfUnsupported.js"; -import { - cwd, - fsCachePath, - supportedImageTypes, -} from "../../utils/runtimeChecks.js"; - -const { fileTypeFromBuffer } = await import("file-type"); - -// Retry mechanism with exponential backoff -async function retryWithBackoff(fn, retries = 3, baseDelay = 150) { - 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 file system error that we should retry - const isRetryableError = error.code === 'EBUSY' || - error.code === 'ENOENT' || - error.code === 'EPERM' || - error.errno === -4094 || // UNKNOWN error on Windows - error.message.includes('UNKNOWN: unknown error'); - - 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 file operation after ${delay}ms delay:`, error.message); - await new Promise(resolve => setTimeout(resolve, delay)); - } - } -} - -export default async function getResolvedSrc(src) { - const token = crypto.createHash("md5").update(src).digest("hex"); - let filepath = fsCachePath + token; - - const fileExists = await retryWithBackoff(() => { - for (const type of supportedImageTypes) { - const fileExists = fs.existsSync(filepath + `.${type}`); - - if (fileExists) { - filepath += `.${type}`; - return true; - } - } - return false; - }); - - if (!fileExists) { - const buffer = Buffer.from(await (await fetch(src)).arrayBuffer()); - - const { ext } = (await fileTypeFromBuffer(buffer)) || {}; - - throwErrorIfUnsupported(src, ext); - - filepath += `.${ext}`; - - // Use retry mechanism for file write operations - await retryWithBackoff(() => { - return new Promise((resolve, reject) => { - try { - fs.writeFileSync(filepath, buffer); - resolve(undefined); - } catch (error) { - reject(error); - } - }); - }); - } - - const base = /^https?:/.test(src) - ? parse(new URL(src).pathname).name - : undefined; - - src = join("/", relative(cwd, filepath)); - - return { src, base }; -} diff --git a/packages/imagetools_/api/utils/getSrcPath.js b/packages/imagetools_/api/utils/getSrcPath.js deleted file mode 100644 index 3a7a7da..0000000 --- a/packages/imagetools_/api/utils/getSrcPath.js +++ /dev/null @@ -1,32 +0,0 @@ -import fs from "node:fs"; -import path from "node:path"; - -// To strip off params when checking for file on disk. -const paramPattern = /\?.*/; - -/** - * getSrcPath allows the use of `src` attributes relative to either the public folder or project root. - * - * It first checks to see if the src is a file relative to the project root. - * If the file isn't found, it will look in the public folder. - * Finally, if it still can't be found, the original input will be returned. - */ -export async function getSrcPath(src) { - const { default: astroViteConfigs } = await import( - "../../astroViteConfigs.js" - ); - - // If this is already resolved to a file, return it. - if (fs.existsSync(src.replace(paramPattern, ""))) return src; - - const rootPath = path.join(astroViteConfigs.rootDir, src); - const rootTest = rootPath.replace(paramPattern, ""); - if (fs.existsSync(rootTest)) return rootPath; - - const publicPath = path.join(astroViteConfigs.publicDir, src); - const publicTest = publicPath.replace(paramPattern, ""); - if (fs.existsSync(publicTest)) return publicPath; - - // Fallback - return src; -} diff --git a/packages/imagetools_/api/utils/getSrcPath.test.ts b/packages/imagetools_/api/utils/getSrcPath.test.ts deleted file mode 100644 index bb267dd..0000000 --- a/packages/imagetools_/api/utils/getSrcPath.test.ts +++ /dev/null @@ -1,67 +0,0 @@ -import path from "node:path"; -import { describe, expect, it, afterAll, vi } from "vitest"; -import { getSrcPath } from "./getSrcPath"; - -vi.mock("../../astroViteConfigs.js", () => { - return { - default: { - rootDir: buildPath(), - // Custom publicDir - publicDir: buildPath("out"), - }, - }; -}); - -/** - * Build an absolute path to the target in the fixture directory - */ -function buildPath(target = "") { - return path.resolve(__dirname, "../../test-fixtures/getSrcPath", target); -} - -describe("getLinkElement", () => { - afterAll(() => { - vi.unmock("../../astroViteConfigs.js"); - }); - - it("finds a file in the root of the project", async () => { - const result = await getSrcPath("root.jpeg"); - expect(result).toBe(buildPath("root.jpeg")); - }); - - it("finds a file in the public folder", async () => { - const result = await getSrcPath("out.jpeg"); - expect(result).toBe(buildPath("out/out.jpeg")); - }); - - it("returns an absolute path unchanged, if it exists", async () => { - const result = await getSrcPath(buildPath("out/out.jpeg")); - expect(result).toBe(buildPath("out/out.jpeg")); - }); - - it("handles query parameters", async () => { - const result = await getSrcPath("root.jpeg?w=200"); - expect(result).toBe(buildPath("root.jpeg?w=200")); - }); - - it("handles query parameters for public-resolved files", async () => { - const result = await getSrcPath("out.jpeg?w=200"); - expect(result).toBe(buildPath("out/out.jpeg?w=200")); - }); - - it("returns the original input if the file is not found", async () => { - const result = await getSrcPath( - "https://cdn.nedis.com/images/products_high_res/TVRC2080BK_P30.JPG" - ); - expect(result).toBe( - "https://cdn.nedis.com/images/products_high_res/TVRC2080BK_P30.JPG" - ); - }); - - it("finds relative paths correctly", async () => { - const outResult = await getSrcPath("./out/out.jpeg"); - const rootResult = await getSrcPath("./root.jpeg"); - expect(outResult).toBe(buildPath("out/out.jpeg")); - expect(rootResult).toBe(buildPath("root.jpeg")); - }); -}); diff --git a/packages/imagetools_/api/utils/getSrcset.js b/packages/imagetools_/api/utils/getSrcset.js deleted file mode 100644 index ac290a9..0000000 --- a/packages/imagetools_/api/utils/getSrcset.js +++ /dev/null @@ -1,45 +0,0 @@ -// @ts-check -import { getSrcPath } from "./getSrcPath.js"; - -export default async function getSrcset( - src, - base, - breakpoints, - format, - options -) { - options = { - format, - w: breakpoints, - ...options, - }; - - const keys = Object.keys(options); - - const params = keys.length - ? keys - .map((key) => - Array.isArray(options[key]) - ? `&${key}=${options[key].join(";")}` - : `&${key}=${options[key]}` - ) - .join("") - : ""; - - const id = `${src}?${params.slice(1)}`; - - const fullPath = await getSrcPath(id); - - const { default: load } = await import("../../plugin/hooks/load.js"); - - let srcset = null - - try { - srcset = (await load(fullPath, base))?.slice(16, -1); - } catch (error) { - console.error(`Error loading image from ${fullPath}:`, error); - srcset = ''; - } - - return srcset; -} diff --git a/packages/imagetools_/api/utils/getStyleElement.js b/packages/imagetools_/api/utils/getStyleElement.js deleted file mode 100644 index 30ad4d7..0000000 --- a/packages/imagetools_/api/utils/getStyleElement.js +++ /dev/null @@ -1,15 +0,0 @@ -// @ts-check -import getAttributesString from "./getAttributesString.js"; - -export default function getStyleElement({ - styleAttributes, - backgroundStyles = "", -}) { - const attributesString = getAttributesString({ - attributes: styleAttributes, - }); - - const styleElement = ``; - - return styleElement; -} diff --git a/packages/imagetools_/api/utils/imagetools.js b/packages/imagetools_/api/utils/imagetools.js deleted file mode 100644 index 530abd1..0000000 --- a/packages/imagetools_/api/utils/imagetools.js +++ /dev/null @@ -1,40 +0,0 @@ -// @ts-check -import { - builtins, - loadImage, - applyTransforms, - generateTransforms, -} from "imagetools-core"; -export { - loadImage -} from "imagetools-core"; -export async function getImageDetails(path, width, height, aspect) { - const loadedImage = loadImage(path); - - if (aspect && !width && !height) { - if (!width && !height) { - ({ width } = await loadedImage.metadata()); - } - - if (width) { - height = width / aspect; - } - - if (height) { - width = height * aspect; - } - } - - const { image, metadata } = await applyTransforms( - generateTransforms({ width, height }, builtins).transforms, - loadedImage - ); - - const { - width: imageWidth, - height: imageHeight, - format: imageFormat, - } = metadata; - - return { image, imageWidth, imageHeight, imageFormat }; -} diff --git a/packages/imagetools_/api/utils/throwErrorIfUnsupported.js b/packages/imagetools_/api/utils/throwErrorIfUnsupported.js deleted file mode 100644 index 581ca16..0000000 --- a/packages/imagetools_/api/utils/throwErrorIfUnsupported.js +++ /dev/null @@ -1,14 +0,0 @@ -// @ts-check -import { supportedImageTypes } from "../../utils/runtimeChecks.js"; - -export default function throwErrorIfUnsupported(src, ext) { - if (!ext && typeof ext !== "string") { - throw new Error(`Failed to load ${src}; Invalid image format`); - } - - if (ext && !supportedImageTypes.includes(ext.toLowerCase())) { - throw new Error( - `Failed to load ${src}; Invalid image format ${ext} or the format is not supported by astro-imagetools` - ); - } -} diff --git a/packages/imagetools_/astroViteConfigs.js b/packages/imagetools_/astroViteConfigs.js deleted file mode 100644 index af59ac4..0000000 --- a/packages/imagetools_/astroViteConfigs.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - "environment": "build", - "isSsrBuild": false, - "projectBase": "", - "publicDir": "C:\\Users\\zx\\Desktop\\polymech\\site-min\\public\\", - "rootDir": "C:\\Users\\zx\\Desktop\\polymech\\site-min\\", - "mode": "production", - "outDir": "C:\\Users\\zx\\Desktop\\polymech\\site-min\\dist\\", - "assetsDir": "_astro", - "sourcemap": false, - "assetFileNames": "/_astro/[name]@[width].[hash][extname]" -} \ No newline at end of file diff --git a/packages/imagetools_/components/BackgroundImage.astro b/packages/imagetools_/components/BackgroundImage.astro deleted file mode 100644 index 47d2b44..0000000 --- a/packages/imagetools_/components/BackgroundImage.astro +++ /dev/null @@ -1,46 +0,0 @@ ---- -import renderBackgroundImage from "../api/renderBackgroundImage.js"; -import type { BackgroundImageConfigOptions } from "../types.d"; - -const content = await Astro.slots.render("default"); - -declare interface Props - extends Pick< - BackgroundImageConfigOptions, - Exclude - > {} - -const { link, style, htmlElement } = await renderBackgroundImage({ - content, - ...(Astro.props as Props), -}); ---- - - - - diff --git a/packages/imagetools_/components/BackgroundPicture.astro b/packages/imagetools_/components/BackgroundPicture.astro deleted file mode 100644 index a53bab8..0000000 --- a/packages/imagetools_/components/BackgroundPicture.astro +++ /dev/null @@ -1,19 +0,0 @@ ---- -import renderBackgroundPicture from "../api/renderBackgroundPicture.js"; -import { BackgroundPictureConfigOptions } from "../types.d"; - -declare interface Props - extends Pick< - BackgroundPictureConfigOptions, - Exclude - > {} - -const content = await Astro.slots.render("default"); - -const { link, style, htmlElement } = await renderBackgroundPicture({ - content, - ...(Astro.props as Props), -}); ---- - - diff --git a/packages/imagetools_/components/Image.astro b/packages/imagetools_/components/Image.astro deleted file mode 100644 index d2d547a..0000000 --- a/packages/imagetools_/components/Image.astro +++ /dev/null @@ -1,10 +0,0 @@ ---- -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_/components/ImageSupportDetection.astro b/packages/imagetools_/components/ImageSupportDetection.astro deleted file mode 100644 index 9e62ae7..0000000 --- a/packages/imagetools_/components/ImageSupportDetection.astro +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/packages/imagetools_/components/Img.astro b/packages/imagetools_/components/Img.astro deleted file mode 100644 index 4f3198d..0000000 --- a/packages/imagetools_/components/Img.astro +++ /dev/null @@ -1,7 +0,0 @@ ---- -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_/components/Picture.astro b/packages/imagetools_/components/Picture.astro deleted file mode 100644 index 737bd77..0000000 --- a/packages/imagetools_/components/Picture.astro +++ /dev/null @@ -1,10 +0,0 @@ ---- -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_/components/index.js b/packages/imagetools_/components/index.js deleted file mode 100644 index a6c6389..0000000 --- a/packages/imagetools_/components/index.js +++ /dev/null @@ -1,5 +0,0 @@ -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_/config.d.ts b/packages/imagetools_/config.d.ts deleted file mode 100644 index 8569ca9..0000000 --- a/packages/imagetools_/config.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { GlobalConfigOptions } from "./types"; - -export function defineConfig(config: GlobalConfigOptions): GlobalConfigOptions; diff --git a/packages/imagetools_/config.mjs b/packages/imagetools_/config.mjs deleted file mode 100644 index 64a4c49..0000000 --- a/packages/imagetools_/config.mjs +++ /dev/null @@ -1,3 +0,0 @@ -export function defineConfig(config) { - return config; -} diff --git a/packages/imagetools_/demo/.npmrc b/packages/imagetools_/demo/.npmrc deleted file mode 100644 index 0cc653b..0000000 --- a/packages/imagetools_/demo/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -## force pnpm to hoist -shamefully-hoist = true \ No newline at end of file diff --git a/packages/imagetools_/demo/.stackblitzrc b/packages/imagetools_/demo/.stackblitzrc deleted file mode 100644 index 0dfa8f1..0000000 --- a/packages/imagetools_/demo/.stackblitzrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "startCommand": "npm start", - "env": { - "ENABLE_CJS_IMPORTS": true - } -} diff --git a/packages/imagetools_/demo/README.md b/packages/imagetools_/demo/README.md deleted file mode 100644 index 777dd8e..0000000 --- a/packages/imagetools_/demo/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 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_/demo/astro-imagetools.config.mjs b/packages/imagetools_/demo/astro-imagetools.config.mjs deleted file mode 100644 index b48b079..0000000 --- a/packages/imagetools_/demo/astro-imagetools.config.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { defineConfig } from "astro-imagetools/config"; - -export default defineConfig({}); diff --git a/packages/imagetools_/demo/astro.config.mjs b/packages/imagetools_/demo/astro.config.mjs deleted file mode 100644 index c46819e..0000000 --- a/packages/imagetools_/demo/astro.config.mjs +++ /dev/null @@ -1,23 +0,0 @@ -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_/demo/package.json b/packages/imagetools_/demo/package.json deleted file mode 100644 index 2a25773..0000000 --- a/packages/imagetools_/demo/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "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_/demo/public/favicon.ico b/packages/imagetools_/demo/public/favicon.ico deleted file mode 100644 index 578ad45..0000000 Binary files a/packages/imagetools_/demo/public/favicon.ico and /dev/null differ diff --git a/packages/imagetools_/demo/public/images/public.jpeg b/packages/imagetools_/demo/public/images/public.jpeg deleted file mode 100644 index d5b648a..0000000 Binary files a/packages/imagetools_/demo/public/images/public.jpeg and /dev/null differ diff --git a/packages/imagetools_/demo/sandbox.config.json b/packages/imagetools_/demo/sandbox.config.json deleted file mode 100644 index b12019e..0000000 --- a/packages/imagetools_/demo/sandbox.config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "infiniteLoopProtection": true, - "hardReloadOnChange": false, - "view": "browser", - "template": "node", - "container": { - "port": 3000, - "startScript": "start", - "node": "16" - } -} diff --git a/packages/imagetools_/demo/src/env.d.ts b/packages/imagetools_/demo/src/env.d.ts deleted file mode 100644 index f964fe0..0000000 --- a/packages/imagetools_/demo/src/env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/packages/imagetools_/demo/src/images/elva-480w-close-portrait.jpg b/packages/imagetools_/demo/src/images/elva-480w-close-portrait.jpg deleted file mode 100644 index 0ea3a05..0000000 Binary files a/packages/imagetools_/demo/src/images/elva-480w-close-portrait.jpg and /dev/null differ diff --git a/packages/imagetools_/demo/src/images/elva-800w.jpg b/packages/imagetools_/demo/src/images/elva-800w.jpg deleted file mode 100644 index d2f052e..0000000 Binary files a/packages/imagetools_/demo/src/images/elva-800w.jpg and /dev/null differ diff --git a/packages/imagetools_/demo/src/layouts/LayoutsLayout.astro b/packages/imagetools_/demo/src/layouts/LayoutsLayout.astro deleted file mode 100644 index c2d0000..0000000 --- a/packages/imagetools_/demo/src/layouts/LayoutsLayout.astro +++ /dev/null @@ -1,15 +0,0 @@ ---- -import { Picture } from "astro-imagetools/components"; -import MainLayout from "./MainLayout.astro"; - -const { layout, importMetaUrl } = Astro.props; ---- - - -

{layout} Layout Example

- -
- - -
diff --git a/packages/imagetools_/demo/src/layouts/MainLayout.astro b/packages/imagetools_/demo/src/layouts/MainLayout.astro deleted file mode 100644 index 3012534..0000000 --- a/packages/imagetools_/demo/src/layouts/MainLayout.astro +++ /dev/null @@ -1,57 +0,0 @@ ---- -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_/demo/src/layouts/PlaceholderLayout.astro b/packages/imagetools_/demo/src/layouts/PlaceholderLayout.astro deleted file mode 100644 index 809c2f4..0000000 --- a/packages/imagetools_/demo/src/layouts/PlaceholderLayout.astro +++ /dev/null @@ -1,18 +0,0 @@ ---- -import { Picture } from "astro-imagetools/components"; -import MainLayout from "./MainLayout.astro"; - -const { placeholder, importMetaUrl } = Astro.props; ---- - - -

{placeholder} Placeholder Example

- -
- - -
diff --git a/packages/imagetools_/demo/src/pages/api/renderBackgroundImage.astro b/packages/imagetools_/demo/src/pages/api/renderBackgroundImage.astro deleted file mode 100644 index 93cf23c..0000000 --- a/packages/imagetools_/demo/src/pages/api/renderBackgroundImage.astro +++ /dev/null @@ -1,48 +0,0 @@ ---- -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_/demo/src/pages/api/renderBackgroundPicture.astro b/packages/imagetools_/demo/src/pages/api/renderBackgroundPicture.astro deleted file mode 100644 index 1324eb3..0000000 --- a/packages/imagetools_/demo/src/pages/api/renderBackgroundPicture.astro +++ /dev/null @@ -1,45 +0,0 @@ ---- -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_/demo/src/pages/api/renderImg.astro b/packages/imagetools_/demo/src/pages/api/renderImg.astro deleted file mode 100644 index 313f18d..0000000 --- a/packages/imagetools_/demo/src/pages/api/renderImg.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -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_/demo/src/pages/api/renderPicture.astro b/packages/imagetools_/demo/src/pages/api/renderPicture.astro deleted file mode 100644 index fe8abdf..0000000 --- a/packages/imagetools_/demo/src/pages/api/renderPicture.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -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_/demo/src/pages/components/BackgroundImage.astro b/packages/imagetools_/demo/src/pages/components/BackgroundImage.astro deleted file mode 100644 index aef8bdf..0000000 --- a/packages/imagetools_/demo/src/pages/components/BackgroundImage.astro +++ /dev/null @@ -1,45 +0,0 @@ ---- -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_/demo/src/pages/components/BackgroundPicture.astro b/packages/imagetools_/demo/src/pages/components/BackgroundPicture.astro deleted file mode 100644 index 871d97c..0000000 --- a/packages/imagetools_/demo/src/pages/components/BackgroundPicture.astro +++ /dev/null @@ -1,40 +0,0 @@ ---- -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_/demo/src/pages/components/Img.astro b/packages/imagetools_/demo/src/pages/components/Img.astro deleted file mode 100644 index 3f6eb9b..0000000 --- a/packages/imagetools_/demo/src/pages/components/Img.astro +++ /dev/null @@ -1,12 +0,0 @@ ---- -import { Img } from "astro-imagetools/components"; -import MainLayout from "../../layouts/MainLayout.astro"; ---- - - -

Astro ImageTools {""} Component Example

- -
- - A random image -
diff --git a/packages/imagetools_/demo/src/pages/components/Picture.astro b/packages/imagetools_/demo/src/pages/components/Picture.astro deleted file mode 100644 index b617e39..0000000 --- a/packages/imagetools_/demo/src/pages/components/Picture.astro +++ /dev/null @@ -1,12 +0,0 @@ ---- -import { Picture } from "astro-imagetools/components"; -import MainLayout from "../../layouts/MainLayout.astro"; ---- - - -

Astro ImageTools {""} Component Example

- -
- - -
diff --git a/packages/imagetools_/demo/src/pages/index.md b/packages/imagetools_/demo/src/pages/index.md deleted file mode 100644 index 66d5df0..0000000 --- a/packages/imagetools_/demo/src/pages/index.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -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`). - -![A father holding his beloved daughter in his arms](../images/elva-800w.jpg) - -
- -## External Image - -The following is an example of a reference to an external image (`https://picsum.photos/1024/768`). - -![A random image](https://picsum.photos/1024/768) - -
- -## Image in /public - -This image is in the public directory (`/images/public.jpeg`). - -![A random image](/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_/demo/src/pages/layout/constrained.astro b/packages/imagetools_/demo/src/pages/layout/constrained.astro deleted file mode 100644 index 669994d..0000000 --- a/packages/imagetools_/demo/src/pages/layout/constrained.astro +++ /dev/null @@ -1,5 +0,0 @@ ---- -import LayoutsLayout from "../../layouts/LayoutsLayout.astro"; ---- - - diff --git a/packages/imagetools_/demo/src/pages/layout/fill.astro b/packages/imagetools_/demo/src/pages/layout/fill.astro deleted file mode 100644 index 01d5e0f..0000000 --- a/packages/imagetools_/demo/src/pages/layout/fill.astro +++ /dev/null @@ -1,5 +0,0 @@ ---- -import LayoutsLayout from "../../layouts/LayoutsLayout.astro"; ---- - - diff --git a/packages/imagetools_/demo/src/pages/layout/fixed.astro b/packages/imagetools_/demo/src/pages/layout/fixed.astro deleted file mode 100644 index 65e626c..0000000 --- a/packages/imagetools_/demo/src/pages/layout/fixed.astro +++ /dev/null @@ -1,5 +0,0 @@ ---- -import LayoutsLayout from "../../layouts/LayoutsLayout.astro"; ---- - - diff --git a/packages/imagetools_/demo/src/pages/layout/fullWidth.astro b/packages/imagetools_/demo/src/pages/layout/fullWidth.astro deleted file mode 100644 index b822c52..0000000 --- a/packages/imagetools_/demo/src/pages/layout/fullWidth.astro +++ /dev/null @@ -1,5 +0,0 @@ ---- -import LayoutsLayout from "../../layouts/LayoutsLayout.astro"; ---- - - diff --git a/packages/imagetools_/demo/src/pages/placeholder/blurred.astro b/packages/imagetools_/demo/src/pages/placeholder/blurred.astro deleted file mode 100644 index 1fee26c..0000000 --- a/packages/imagetools_/demo/src/pages/placeholder/blurred.astro +++ /dev/null @@ -1,5 +0,0 @@ ---- -import PlaceholderLayout from "../../layouts/PlaceholderLayout.astro"; ---- - - diff --git a/packages/imagetools_/demo/src/pages/placeholder/dominantColor.astro b/packages/imagetools_/demo/src/pages/placeholder/dominantColor.astro deleted file mode 100644 index 5a9b6c9..0000000 --- a/packages/imagetools_/demo/src/pages/placeholder/dominantColor.astro +++ /dev/null @@ -1,5 +0,0 @@ ---- -import PlaceholderLayout from "../../layouts/PlaceholderLayout.astro"; ---- - - diff --git a/packages/imagetools_/demo/src/pages/placeholder/none.astro b/packages/imagetools_/demo/src/pages/placeholder/none.astro deleted file mode 100644 index 293dc79..0000000 --- a/packages/imagetools_/demo/src/pages/placeholder/none.astro +++ /dev/null @@ -1,5 +0,0 @@ ---- -import PlaceholderLayout from "../../layouts/PlaceholderLayout.astro"; ---- - - diff --git a/packages/imagetools_/demo/src/pages/placeholder/tracedSVG.astro b/packages/imagetools_/demo/src/pages/placeholder/tracedSVG.astro deleted file mode 100644 index 9e3393a..0000000 --- a/packages/imagetools_/demo/src/pages/placeholder/tracedSVG.astro +++ /dev/null @@ -1,5 +0,0 @@ ---- -import PlaceholderLayout from "../../layouts/PlaceholderLayout.astro"; ---- - - diff --git a/packages/imagetools_/demo/src/styles/index.css b/packages/imagetools_/demo/src/styles/index.css deleted file mode 100644 index 518e741..0000000 --- a/packages/imagetools_/demo/src/styles/index.css +++ /dev/null @@ -1,19 +0,0 @@ -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_/docs/.npmrc b/packages/imagetools_/docs/.npmrc deleted file mode 100644 index ef83021..0000000 --- a/packages/imagetools_/docs/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -# Expose Astro dependencies for `pnpm` users -shamefully-hoist=true diff --git a/packages/imagetools_/docs/.stackblitzrc b/packages/imagetools_/docs/.stackblitzrc deleted file mode 100644 index 43798ec..0000000 --- a/packages/imagetools_/docs/.stackblitzrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "startCommand": "npm start", - "env": { - "ENABLE_CJS_IMPORTS": true - } -} \ No newline at end of file diff --git a/packages/imagetools_/docs/README.md b/packages/imagetools_/docs/README.md deleted file mode 100644 index 984e496..0000000 --- a/packages/imagetools_/docs/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# Astro ImageTools Docs Astro logo - -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_/docs/astro.config.mjs b/packages/imagetools_/docs/astro.config.mjs deleted file mode 100644 index 1cb4233..0000000 --- a/packages/imagetools_/docs/astro.config.mjs +++ /dev/null @@ -1,25 +0,0 @@ -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_/docs/auto-imports.d.ts b/packages/imagetools_/docs/auto-imports.d.ts deleted file mode 100644 index 4ca0671..0000000 --- a/packages/imagetools_/docs/auto-imports.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// 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_/docs/package.json b/packages/imagetools_/docs/package.json deleted file mode 100644 index 44f0b83..0000000 --- a/packages/imagetools_/docs/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "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_/docs/public/default-og-image.png b/packages/imagetools_/docs/public/default-og-image.png deleted file mode 100644 index 9790320..0000000 Binary files a/packages/imagetools_/docs/public/default-og-image.png and /dev/null differ diff --git a/packages/imagetools_/docs/public/favicon.ico b/packages/imagetools_/docs/public/favicon.ico deleted file mode 100644 index 578ad45..0000000 Binary files a/packages/imagetools_/docs/public/favicon.ico and /dev/null differ diff --git a/packages/imagetools_/docs/public/make-scrollable-code-focusable.js b/packages/imagetools_/docs/public/make-scrollable-code-focusable.js deleted file mode 100644 index 6fbf1ee..0000000 --- a/packages/imagetools_/docs/public/make-scrollable-code-focusable.js +++ /dev/null @@ -1,3 +0,0 @@ -Array.from(document.getElementsByTagName("pre")).forEach((element) => { - element.setAttribute("tabindex", "0"); -}); diff --git a/packages/imagetools_/docs/sandbox.config.json b/packages/imagetools_/docs/sandbox.config.json deleted file mode 100644 index 9178af7..0000000 --- a/packages/imagetools_/docs/sandbox.config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "infiniteLoopProtection": true, - "hardReloadOnChange": false, - "view": "browser", - "template": "node", - "container": { - "port": 3000, - "startScript": "start", - "node": "14" - } -} diff --git a/packages/imagetools_/docs/src/components/CodeExample.astro b/packages/imagetools_/docs/src/components/CodeExample.astro deleted file mode 100644 index 92ae1f5..0000000 --- a/packages/imagetools_/docs/src/components/CodeExample.astro +++ /dev/null @@ -1,83 +0,0 @@ ---- -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_/docs/src/components/ConfigOptions.astro b/packages/imagetools_/docs/src/components/ConfigOptions.astro deleted file mode 100644 index bc7ed80..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions.astro +++ /dev/null @@ -1,107 +0,0 @@ ---- -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_/docs/src/components/ConfigOptions/alt.astro b/packages/imagetools_/docs/src/components/ConfigOptions/alt.astro deleted file mode 100644 index a3db1d0..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/alt.astro +++ /dev/null @@ -1,22 +0,0 @@ - - - ### `alt` - - **Type:** `string` - - **Default:** `undefined` - - The alternative text to display if the image fails to load. - - **Code example:** - - - diff --git a/packages/imagetools_/docs/src/components/ConfigOptions/artDirectives.astro b/packages/imagetools_/docs/src/components/ConfigOptions/artDirectives.astro deleted file mode 100644 index 98dcb75..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/artDirectives.astro +++ /dev/null @@ -1,115 +0,0 @@ ---- -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_/docs/src/components/ConfigOptions/aspect.astro b/packages/imagetools_/docs/src/components/ConfigOptions/aspect.astro deleted file mode 100644 index 53a54a8..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/aspect.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/assetFileNames.astro b/packages/imagetools_/docs/src/components/ConfigOptions/assetFileNames.astro deleted file mode 100644 index 60a4211..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/assetFileNames.astro +++ /dev/null @@ -1,26 +0,0 @@ - - ### `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_/docs/src/components/ConfigOptions/attributes.astro b/packages/imagetools_/docs/src/components/ConfigOptions/attributes.astro deleted file mode 100644 index 570a9f7..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/attributes.astro +++ /dev/null @@ -1,116 +0,0 @@ ---- -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_/docs/src/components/ConfigOptions/background.astro b/packages/imagetools_/docs/src/components/ConfigOptions/background.astro deleted file mode 100644 index 1f25259..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/background.astro +++ /dev/null @@ -1,52 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/backgroundPosition.astro b/packages/imagetools_/docs/src/components/ConfigOptions/backgroundPosition.astro deleted file mode 100644 index 6e29581..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/backgroundPosition.astro +++ /dev/null @@ -1,22 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/backgroundSize.astro b/packages/imagetools_/docs/src/components/ConfigOptions/backgroundSize.astro deleted file mode 100644 index 98e5bb5..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/backgroundSize.astro +++ /dev/null @@ -1,22 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/blur.astro b/packages/imagetools_/docs/src/components/ConfigOptions/blur.astro deleted file mode 100644 index 9627c6f..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/blur.astro +++ /dev/null @@ -1,39 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/breakpoints.astro b/packages/imagetools_/docs/src/components/ConfigOptions/breakpoints.astro deleted file mode 100644 index dc04a1a..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/breakpoints.astro +++ /dev/null @@ -1,44 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/brightness.astro b/packages/imagetools_/docs/src/components/ConfigOptions/brightness.astro deleted file mode 100644 index ea856a0..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/brightness.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/cacheDir.astro b/packages/imagetools_/docs/src/components/ConfigOptions/cacheDir.astro deleted file mode 100644 index 13b94c7..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/cacheDir.astro +++ /dev/null @@ -1,21 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/content.astro b/packages/imagetools_/docs/src/components/ConfigOptions/content.astro deleted file mode 100644 index 20d9129..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/content.astro +++ /dev/null @@ -1,22 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/decoding.astro b/packages/imagetools_/docs/src/components/ConfigOptions/decoding.astro deleted file mode 100644 index a1c5515..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/decoding.astro +++ /dev/null @@ -1,24 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/fadeInTransition.astro b/packages/imagetools_/docs/src/components/ConfigOptions/fadeInTransition.astro deleted file mode 100644 index 55c8daa..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/fadeInTransition.astro +++ /dev/null @@ -1,45 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/fallbackFormat.astro b/packages/imagetools_/docs/src/components/ConfigOptions/fallbackFormat.astro deleted file mode 100644 index 5419eec..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/fallbackFormat.astro +++ /dev/null @@ -1,24 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/fit.astro b/packages/imagetools_/docs/src/components/ConfigOptions/fit.astro deleted file mode 100644 index 0dc2078..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/fit.astro +++ /dev/null @@ -1,27 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/flatten.astro b/packages/imagetools_/docs/src/components/ConfigOptions/flatten.astro deleted file mode 100644 index 96df725..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/flatten.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/flip.astro b/packages/imagetools_/docs/src/components/ConfigOptions/flip.astro deleted file mode 100644 index ffea04e..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/flip.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/flop.astro b/packages/imagetools_/docs/src/components/ConfigOptions/flop.astro deleted file mode 100644 index 16bb49e..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/flop.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/format.astro b/packages/imagetools_/docs/src/components/ConfigOptions/format.astro deleted file mode 100644 index 4427eb2..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/format.astro +++ /dev/null @@ -1,44 +0,0 @@ ---- -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_/docs/src/components/ConfigOptions/formatOptions.astro b/packages/imagetools_/docs/src/components/ConfigOptions/formatOptions.astro deleted file mode 100644 index 22fa0e5..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/formatOptions.astro +++ /dev/null @@ -1,274 +0,0 @@ ---- -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_/docs/src/components/ConfigOptions/grayscale.astro b/packages/imagetools_/docs/src/components/ConfigOptions/grayscale.astro deleted file mode 100644 index 0583c8f..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/grayscale.astro +++ /dev/null @@ -1,25 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/height.astro b/packages/imagetools_/docs/src/components/ConfigOptions/height.astro deleted file mode 100644 index 5bb39a0..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/height.astro +++ /dev/null @@ -1,25 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/hue.astro b/packages/imagetools_/docs/src/components/ConfigOptions/hue.astro deleted file mode 100644 index 3741ae5..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/hue.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/includeSourceFormat.astro b/packages/imagetools_/docs/src/components/ConfigOptions/includeSourceFormat.astro deleted file mode 100644 index 484cbff..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/includeSourceFormat.astro +++ /dev/null @@ -1,24 +0,0 @@ - - - ### `includeSourceFormat` - - **Type:** `boolean` - - **Default:** `true` - - Whether to generate image set for the source format or not. - - **Code example:** - - - diff --git a/packages/imagetools_/docs/src/components/ConfigOptions/invert.astro b/packages/imagetools_/docs/src/components/ConfigOptions/invert.astro deleted file mode 100644 index f23e86f..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/invert.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `invert` - - **Type:** `boolean` - - **Default:** `undefined` - - Produces a **negative** of the image. - - **Code example:** - - - diff --git a/packages/imagetools_/docs/src/components/ConfigOptions/kernel.astro b/packages/imagetools_/docs/src/components/ConfigOptions/kernel.astro deleted file mode 100644 index d2d2d59..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/kernel.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/layout.astro b/packages/imagetools_/docs/src/components/ConfigOptions/layout.astro deleted file mode 100644 index 7d79be7..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/layout.astro +++ /dev/null @@ -1,40 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/loading.astro b/packages/imagetools_/docs/src/components/ConfigOptions/loading.astro deleted file mode 100644 index ff3116f..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/loading.astro +++ /dev/null @@ -1,24 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/median.astro b/packages/imagetools_/docs/src/components/ConfigOptions/median.astro deleted file mode 100644 index b399412..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/median.astro +++ /dev/null @@ -1,39 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/normalize.astro b/packages/imagetools_/docs/src/components/ConfigOptions/normalize.astro deleted file mode 100644 index 8ffd1eb..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/normalize.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/objectFit.astro b/packages/imagetools_/docs/src/components/ConfigOptions/objectFit.astro deleted file mode 100644 index 2b645a2..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/objectFit.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/objectPosition.astro b/packages/imagetools_/docs/src/components/ConfigOptions/objectPosition.astro deleted file mode 100644 index 3d55ca1..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/objectPosition.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/placeholder.astro b/packages/imagetools_/docs/src/components/ConfigOptions/placeholder.astro deleted file mode 100644 index e4fb27d..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/placeholder.astro +++ /dev/null @@ -1,35 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/position.astro b/packages/imagetools_/docs/src/components/ConfigOptions/position.astro deleted file mode 100644 index 3fb4aa3..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/position.astro +++ /dev/null @@ -1,28 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/preload.astro b/packages/imagetools_/docs/src/components/ConfigOptions/preload.astro deleted file mode 100644 index b48b33c..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/preload.astro +++ /dev/null @@ -1,25 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/quality.astro b/packages/imagetools_/docs/src/components/ConfigOptions/quality.astro deleted file mode 100644 index 5107d8c..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/quality.astro +++ /dev/null @@ -1,27 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/rotate.astro b/packages/imagetools_/docs/src/components/ConfigOptions/rotate.astro deleted file mode 100644 index e7c7d2e..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/rotate.astro +++ /dev/null @@ -1,25 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/saturation.astro b/packages/imagetools_/docs/src/components/ConfigOptions/saturation.astro deleted file mode 100644 index a9d5a23..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/saturation.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/sizes.astro b/packages/imagetools_/docs/src/components/ConfigOptions/sizes.astro deleted file mode 100644 index 281e477..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/sizes.astro +++ /dev/null @@ -1,36 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/src.astro b/packages/imagetools_/docs/src/components/ConfigOptions/src.astro deleted file mode 100644 index ca03553..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/src.astro +++ /dev/null @@ -1,53 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/tag.astro b/packages/imagetools_/docs/src/components/ConfigOptions/tag.astro deleted file mode 100644 index 34269f6..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/tag.astro +++ /dev/null @@ -1,22 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/tint.astro b/packages/imagetools_/docs/src/components/ConfigOptions/tint.astro deleted file mode 100644 index 0640a21..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/tint.astro +++ /dev/null @@ -1,23 +0,0 @@ - - - ### `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_/docs/src/components/ConfigOptions/width.astro b/packages/imagetools_/docs/src/components/ConfigOptions/width.astro deleted file mode 100644 index c9ba92f..0000000 --- a/packages/imagetools_/docs/src/components/ConfigOptions/width.astro +++ /dev/null @@ -1,25 +0,0 @@ - - - ### `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_/docs/src/components/Footer/AvatarList.astro b/packages/imagetools_/docs/src/components/Footer/AvatarList.astro deleted file mode 100644 index 1804608..0000000 --- a/packages/imagetools_/docs/src/components/Footer/AvatarList.astro +++ /dev/null @@ -1,176 +0,0 @@ ---- -// 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 ---- - - -
-
    - {recentContributors.map((item) => ( -
  • - - {`Contributor - -
  • - ))} -
- - {additionalContributors > 0 && ( - - {`and ${additionalContributors} additional contributor${ - additionalContributors > 1 ? "s" : "" - }.`} - - )} - - {unique.length === 0 && Contributors} -
- - diff --git a/packages/imagetools_/docs/src/components/Footer/Footer.astro b/packages/imagetools_/docs/src/components/Footer/Footer.astro deleted file mode 100644 index 21c56d8..0000000 --- a/packages/imagetools_/docs/src/components/Footer/Footer.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import AvatarList from "./AvatarList.astro"; -const { path } = Astro.props; ---- - -
- -
- - diff --git a/packages/imagetools_/docs/src/components/HeadCommon.astro b/packages/imagetools_/docs/src/components/HeadCommon.astro deleted file mode 100644 index addcd1c..0000000 --- a/packages/imagetools_/docs/src/components/HeadCommon.astro +++ /dev/null @@ -1,47 +0,0 @@ ---- -import "../styles/theme.css"; -import "../styles/index.css"; ---- - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/imagetools_/docs/src/components/HeadSEO.astro b/packages/imagetools_/docs/src/components/HeadSEO.astro deleted file mode 100644 index a31c4e7..0000000 --- a/packages/imagetools_/docs/src/components/HeadSEO.astro +++ /dev/null @@ -1,52 +0,0 @@ ---- -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_/docs/src/components/Header/AstroLogo.astro b/packages/imagetools_/docs/src/components/Header/AstroLogo.astro deleted file mode 100644 index 14eb5bc..0000000 --- a/packages/imagetools_/docs/src/components/Header/AstroLogo.astro +++ /dev/null @@ -1,37 +0,0 @@ ---- -const { size } = Astro.props; ---- - - diff --git a/packages/imagetools_/docs/src/components/Header/Header.astro b/packages/imagetools_/docs/src/components/Header/Header.astro deleted file mode 100644 index 653664f..0000000 --- a/packages/imagetools_/docs/src/components/Header/Header.astro +++ /dev/null @@ -1,144 +0,0 @@ ---- -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); ---- - -
- - - -
- - diff --git a/packages/imagetools_/docs/src/components/Header/LanguageSelect.css b/packages/imagetools_/docs/src/components/Header/LanguageSelect.css deleted file mode 100644 index 8d73ace..0000000 --- a/packages/imagetools_/docs/src/components/Header/LanguageSelect.css +++ /dev/null @@ -1,50 +0,0 @@ -.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_/docs/src/components/Header/LanguageSelect.tsx b/packages/imagetools_/docs/src/components/Header/LanguageSelect.tsx deleted file mode 100644 index 6e9ce5c..0000000 --- a/packages/imagetools_/docs/src/components/Header/LanguageSelect.tsx +++ /dev/null @@ -1,50 +0,0 @@ -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 ( -
- - - -
- ); -}; - -export default LanguageSelect; diff --git a/packages/imagetools_/docs/src/components/Header/Search.css b/packages/imagetools_/docs/src/components/Header/Search.css deleted file mode 100644 index 5d8a2e7..0000000 --- a/packages/imagetools_/docs/src/components/Header/Search.css +++ /dev/null @@ -1,81 +0,0 @@ -/** 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_/docs/src/components/Header/Search.tsx b/packages/imagetools_/docs/src/components/Header/Search.tsx deleted file mode 100644 index 5b1056d..0000000 --- a/packages/imagetools_/docs/src/components/Header/Search.tsx +++ /dev/null @@ -1,104 +0,0 @@ -/* 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 ( - <> - - - {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_/docs/src/components/Header/SidebarToggle.tsx b/packages/imagetools_/docs/src/components/Header/SidebarToggle.tsx deleted file mode 100644 index 6ff4a6d..0000000 --- a/packages/imagetools_/docs/src/components/Header/SidebarToggle.tsx +++ /dev/null @@ -1,45 +0,0 @@ -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_/docs/src/components/Header/SkipToContent.astro b/packages/imagetools_/docs/src/components/Header/SkipToContent.astro deleted file mode 100644 index b2b542f..0000000 --- a/packages/imagetools_/docs/src/components/Header/SkipToContent.astro +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/packages/imagetools_/docs/src/components/LeftSidebar/LeftSidebar.astro b/packages/imagetools_/docs/src/components/LeftSidebar/LeftSidebar.astro deleted file mode 100644 index afa61a7..0000000 --- a/packages/imagetools_/docs/src/components/LeftSidebar/LeftSidebar.astro +++ /dev/null @@ -1,130 +0,0 @@ ---- -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; -}, []); ---- - - - - - - diff --git a/packages/imagetools_/docs/src/components/PageContent/PageContent.astro b/packages/imagetools_/docs/src/components/PageContent/PageContent.astro deleted file mode 100644 index d306afd..0000000 --- a/packages/imagetools_/docs/src/components/PageContent/PageContent.astro +++ /dev/null @@ -1,49 +0,0 @@ ---- -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; ---- - -
-
-

{title}

- - - - -
- - -
- - diff --git a/packages/imagetools_/docs/src/components/RightSidebar/MoreMenu.astro b/packages/imagetools_/docs/src/components/RightSidebar/MoreMenu.astro deleted file mode 100644 index 54446ca..0000000 --- a/packages/imagetools_/docs/src/components/RightSidebar/MoreMenu.astro +++ /dev/null @@ -1,74 +0,0 @@ ---- -import ThemeToggleButton from "./ThemeToggleButton.tsx"; -import * as CONFIG from "../../config"; - -const { editHref } = Astro.props; -const showMoreSection = CONFIG.COMMUNITY_INVITE_URL || editHref; ---- - -{showMoreSection &&

More

} - - -
- -
- - diff --git a/packages/imagetools_/docs/src/components/RightSidebar/RightSidebar.astro b/packages/imagetools_/docs/src/components/RightSidebar/RightSidebar.astro deleted file mode 100644 index fca7ca1..0000000 --- a/packages/imagetools_/docs/src/components/RightSidebar/RightSidebar.astro +++ /dev/null @@ -1,29 +0,0 @@ ---- -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_/docs/src/components/RightSidebar/TableOfContents.tsx b/packages/imagetools_/docs/src/components/RightSidebar/TableOfContents.tsx deleted file mode 100644 index 84de46f..0000000 --- a/packages/imagetools_/docs/src/components/RightSidebar/TableOfContents.tsx +++ /dev/null @@ -1,51 +0,0 @@ -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_/docs/src/components/RightSidebar/ThemeToggleButton.css b/packages/imagetools_/docs/src/components/RightSidebar/ThemeToggleButton.css deleted file mode 100644 index 9a41946..0000000 --- a/packages/imagetools_/docs/src/components/RightSidebar/ThemeToggleButton.css +++ /dev/null @@ -1,37 +0,0 @@ -.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_/docs/src/components/RightSidebar/ThemeToggleButton.tsx b/packages/imagetools_/docs/src/components/RightSidebar/ThemeToggleButton.tsx deleted file mode 100644 index 400c0e9..0000000 --- a/packages/imagetools_/docs/src/components/RightSidebar/ThemeToggleButton.tsx +++ /dev/null @@ -1,89 +0,0 @@ -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 ( - - ); - })} -
- ); -}; - -export default ThemeToggle; diff --git a/packages/imagetools_/docs/src/config.ts b/packages/imagetools_/docs/src/config.ts deleted file mode 100644 index 143eb2b..0000000 --- a/packages/imagetools_/docs/src/config.ts +++ /dev/null @@ -1,62 +0,0 @@ -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_/docs/src/languages.ts b/packages/imagetools_/docs/src/languages.ts deleted file mode 100644 index acfe7ae..0000000 --- a/packages/imagetools_/docs/src/languages.ts +++ /dev/null @@ -1,10 +0,0 @@ -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_/docs/src/layouts/MainLayout.astro b/packages/imagetools_/docs/src/layouts/MainLayout.astro deleted file mode 100644 index fe951d7..0000000 --- a/packages/imagetools_/docs/src/layouts/MainLayout.astro +++ /dev/null @@ -1,147 +0,0 @@ ---- -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_/docs/src/pages/en/acknowledgements.md b/packages/imagetools_/docs/src/pages/en/acknowledgements.md deleted file mode 100644 index 4d6991b..0000000 --- a/packages/imagetools_/docs/src/pages/en/acknowledgements.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -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_/docs/src/pages/en/api/importImage.mdx b/packages/imagetools_/docs/src/pages/en/api/importImage.mdx deleted file mode 100644 index ddc0302..0000000 --- a/packages/imagetools_/docs/src/pages/en/api/importImage.mdx +++ /dev/null @@ -1,63 +0,0 @@ ---- -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_/docs/src/pages/en/api/renderBackgroundImage.mdx b/packages/imagetools_/docs/src/pages/en/api/renderBackgroundImage.mdx deleted file mode 100644 index c77dc3f..0000000 --- a/packages/imagetools_/docs/src/pages/en/api/renderBackgroundImage.mdx +++ /dev/null @@ -1,59 +0,0 @@ ---- -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 ``; - - return styleElement; -} diff --git a/packages/imagetools_x/api/utils/imagetools.js b/packages/imagetools_x/api/utils/imagetools.js deleted file mode 100644 index 530abd1..0000000 --- a/packages/imagetools_x/api/utils/imagetools.js +++ /dev/null @@ -1,40 +0,0 @@ -// @ts-check -import { - builtins, - loadImage, - applyTransforms, - generateTransforms, -} from "imagetools-core"; -export { - loadImage -} from "imagetools-core"; -export async function getImageDetails(path, width, height, aspect) { - const loadedImage = loadImage(path); - - if (aspect && !width && !height) { - if (!width && !height) { - ({ width } = await loadedImage.metadata()); - } - - if (width) { - height = width / aspect; - } - - if (height) { - width = height * aspect; - } - } - - const { image, metadata } = await applyTransforms( - generateTransforms({ width, height }, builtins).transforms, - loadedImage - ); - - const { - width: imageWidth, - height: imageHeight, - format: imageFormat, - } = metadata; - - return { image, imageWidth, imageHeight, imageFormat }; -} diff --git a/packages/imagetools_x/api/utils/throwErrorIfUnsupported.js b/packages/imagetools_x/api/utils/throwErrorIfUnsupported.js deleted file mode 100644 index 581ca16..0000000 --- a/packages/imagetools_x/api/utils/throwErrorIfUnsupported.js +++ /dev/null @@ -1,14 +0,0 @@ -// @ts-check -import { supportedImageTypes } from "../../utils/runtimeChecks.js"; - -export default function throwErrorIfUnsupported(src, ext) { - if (!ext && typeof ext !== "string") { - throw new Error(`Failed to load ${src}; Invalid image format`); - } - - if (ext && !supportedImageTypes.includes(ext.toLowerCase())) { - throw new Error( - `Failed to load ${src}; Invalid image format ${ext} or the format is not supported by astro-imagetools` - ); - } -} diff --git a/packages/imagetools_x/astroViteConfigs.js b/packages/imagetools_x/astroViteConfigs.js deleted file mode 100644 index af59ac4..0000000 --- a/packages/imagetools_x/astroViteConfigs.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - "environment": "build", - "isSsrBuild": false, - "projectBase": "", - "publicDir": "C:\\Users\\zx\\Desktop\\polymech\\site-min\\public\\", - "rootDir": "C:\\Users\\zx\\Desktop\\polymech\\site-min\\", - "mode": "production", - "outDir": "C:\\Users\\zx\\Desktop\\polymech\\site-min\\dist\\", - "assetsDir": "_astro", - "sourcemap": false, - "assetFileNames": "/_astro/[name]@[width].[hash][extname]" -} \ No newline at end of file diff --git a/packages/imagetools_x/components/BackgroundImage.astro b/packages/imagetools_x/components/BackgroundImage.astro deleted file mode 100644 index 47d2b44..0000000 --- a/packages/imagetools_x/components/BackgroundImage.astro +++ /dev/null @@ -1,46 +0,0 @@ ---- -import renderBackgroundImage from "../api/renderBackgroundImage.js"; -import type { BackgroundImageConfigOptions } from "../types.d"; - -const content = await Astro.slots.render("default"); - -declare interface Props - extends Pick< - BackgroundImageConfigOptions, - Exclude - > {} - -const { link, style, htmlElement } = await renderBackgroundImage({ - content, - ...(Astro.props as Props), -}); ---- - - - - diff --git a/packages/imagetools_x/components/BackgroundPicture.astro b/packages/imagetools_x/components/BackgroundPicture.astro deleted file mode 100644 index a53bab8..0000000 --- a/packages/imagetools_x/components/BackgroundPicture.astro +++ /dev/null @@ -1,19 +0,0 @@ ---- -import renderBackgroundPicture from "../api/renderBackgroundPicture.js"; -import { BackgroundPictureConfigOptions } from "../types.d"; - -declare interface Props - extends Pick< - BackgroundPictureConfigOptions, - Exclude - > {} - -const content = await Astro.slots.render("default"); - -const { link, style, htmlElement } = await renderBackgroundPicture({ - content, - ...(Astro.props as Props), -}); ---- - - diff --git a/packages/imagetools_x/components/Image.astro b/packages/imagetools_x/components/Image.astro deleted file mode 100644 index d2d547a..0000000 --- a/packages/imagetools_x/components/Image.astro +++ /dev/null @@ -1,10 +0,0 @@ ---- -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_x/components/ImageSupportDetection.astro b/packages/imagetools_x/components/ImageSupportDetection.astro deleted file mode 100644 index 9e62ae7..0000000 --- a/packages/imagetools_x/components/ImageSupportDetection.astro +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/packages/imagetools_x/components/Img.astro b/packages/imagetools_x/components/Img.astro deleted file mode 100644 index 36c03ab..0000000 --- a/packages/imagetools_x/components/Img.astro +++ /dev/null @@ -1,10 +0,0 @@ ---- -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_x/components/Picture.astro b/packages/imagetools_x/components/Picture.astro deleted file mode 100644 index 737bd77..0000000 --- a/packages/imagetools_x/components/Picture.astro +++ /dev/null @@ -1,10 +0,0 @@ ---- -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_x/components/index.js b/packages/imagetools_x/components/index.js deleted file mode 100644 index a6c6389..0000000 --- a/packages/imagetools_x/components/index.js +++ /dev/null @@ -1,5 +0,0 @@ -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_x/config.d.ts b/packages/imagetools_x/config.d.ts deleted file mode 100644 index 8569ca9..0000000 --- a/packages/imagetools_x/config.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { GlobalConfigOptions } from "./types"; - -export function defineConfig(config: GlobalConfigOptions): GlobalConfigOptions; diff --git a/packages/imagetools_x/config.mjs b/packages/imagetools_x/config.mjs deleted file mode 100644 index 64a4c49..0000000 --- a/packages/imagetools_x/config.mjs +++ /dev/null @@ -1,3 +0,0 @@ -export function defineConfig(config) { - return config; -} diff --git a/packages/imagetools_x/docs/classes.md b/packages/imagetools_x/docs/classes.md deleted file mode 100644 index f19364c..0000000 --- a/packages/imagetools_x/docs/classes.md +++ /dev/null @@ -1,110 +0,0 @@ -# Imagetools Architecture Overview - -This document outlines the architecture of the `imagetools` package, detailing the relationships between its different modules and the data flow during image processing. - -## Core Concepts - -The system is divided into several layers: -1. **Astro Components**: User-facing components for displaying images. -2. **API Layer**: JavaScript APIs that components call to get image data and attributes. -3. **Vite Plugin**: The core image processing and transformation engine that hooks into Vite's build process. -4. **Astro Integration**: Glues the Vite plugin into the Astro lifecycle, handling configuration and final asset generation. - -## Data Flow Diagram - -The following diagram illustrates how a request for an image flows through the system during a production build. - -```mermaid -graph TD - subgraph " " - direction LR - subgraph "User Facing" - A["Astro Component
(e.g., Img.astro)"] - end - - subgraph "API Layer" - B["renderImg.js"] - C["getImage.js"] - end - end - - subgraph "Build Process" - direction LR - subgraph "Astro Integration" - I["integration/index.js"] - J["astro:config:setup hook"] - K["astro:build:done hook"] - L["saveAndCopyAsset.js"] - end - - subgraph "Vite Plugin" - D["plugin/index.js"] - E["load hook
(load.js)"] - F["Image Transformation
(imagetools.js/codecs.js)"] - G["Persistent Cache
(@polymech/cache)"] - H["In-memory Store"] - end - end - - A -- "1. Renders" --> B; - B -- "2. Calls" --> C; - C -- "3. Triggers image import" --> D; - - I -- "Registers" --> D; - J -- "Writes config for" --> D; - - D -- "Uses" --> E; - E -- "4. Processes import" --> F; - E -- "Uses" --> G; - E -- "5. Populates" --> H; - - K -- "6. Reads from" --> H; - K -- "7. Saves assets via" --> L; -``` - -### Explanation of Components - -- **Astro Component (`Img.astro`)**: The entry point. A developer uses this component in their `.astro` or `.mdx` files. It receives props like `src`, `width`, etc. - -- **`renderImg.js`**: An API function called by the Astro component. It sanitizes props and prepares them for image processing. - -- **`getImage.js`**: This function is responsible for orchestrating the generation of image sources. It triggers the actual image import that will be handled by Vite. - -- **Vite Plugin (`plugin/index.js`)**: The core of the image processing pipeline. It's a Vite plugin that intercepts image imports. - -- **`load` hook (`load.js`)**: The main hook in the Vite plugin. When an image is imported (e.g., `import img from './my.jpg?w=300'`), this hook: - 1. Parses the query parameters. - 2. Checks a persistent cache (`@polymech/cache`) for the transformed image. - 3. If not cached, it uses Sharp or other codecs for transformation (`imagetools.js`/`codecs.js`). - 4. Stores the processed image buffer in an in-memory `store`. - 5. Returns the path for the final asset. - -- **Astro Integration (`integration/index.js`)**: Manages the lifecycle of the tool within Astro. - - `astro:config:setup`: Injects the Vite plugin into the Astro configuration. - - `astro:build:done`: This hook runs after the build is complete. It iterates over the in-memory `store` populated by the `load` hook and writes the processed images to the final output directory using `saveAndCopyAsset.js`. - -## Recommendations for Refactoring - -The current implementation is functional but has room for simplification and improved robustness. Here are the key areas to focus on in the next refactoring slice: - -1. **Unify Caching Strategy**: - - **Problem**: Caching logic is spread across multiple files (`getImage.js`, `load.js`, `saveAndCopyAsset.js`) with different strategies (in-memory map, persistent file-system cache). This makes it hard to reason about and debug. - - **Recommendation**: Consolidate all caching into a single, cohesive module. This module should expose clear functions for getting, setting, and clearing cached items, and manage both in-memory and persistent layers. This will centralize logic and reduce redundancy. - -2. **Refactor `load.js` Hook**: - - **Problem**: The `load.js` file is long and handles multiple responsibilities: config parsing, caching, image transformation, and path generation. This violates the Single Responsibility Principle and makes the code hard to maintain and test. - - **Recommendation**: Break down `load.js` into smaller, pure functions. For example: - - `parseImageQuery(searchParams)` - - `transformImage(buffer, options)` - - `getAssetPath(source, options)` - This will improve readability, testability, and maintainability. - -3. **Simplify Plugin-Integration Communication**: - - **Problem**: The communication between the Vite plugin's `load` hook and the Astro `astro:build:done` hook relies on a shared, mutable `store` object. This pattern can be fragile and is an indirect way of handling assets. - - **Recommendation**: Explore using Vite's standard asset handling APIs. The `this.emitFile` function within the `load` hook is the idiomatic way in Vite/Rollup plugins to generate assets and get a reference to them without managing a global store. This would eliminate the need for the `store` and the manual file writing in `astro:build:done`. - -4. **Streamline Configuration**: - - **Problem**: Configuration is passed between the Astro integration and the Vite plugin by writing a temporary `astroViteConfigs.js` file. This is a workaround that can be brittle. - - **Recommendation**: Leverage the Vite plugin's `configResolved` hook. This hook receives the final, resolved Vite configuration and is the proper place to access build-related information without needing to write temporary files. The Astro integration can pass options directly to the Vite plugin during setup. - -By tackling these areas, the codebase will become simpler, more robust, and easier to extend in the future. diff --git a/packages/imagetools_x/index.js b/packages/imagetools_x/index.js deleted file mode 100644 index b5e1b78..0000000 --- a/packages/imagetools_x/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import astroImageTools from "./integration/index.js"; - -export { astroImageTools as imagetools } diff --git a/packages/imagetools_x/integration/index.js b/packages/imagetools_x/integration/index.js deleted file mode 100644 index 573d425..0000000 --- a/packages/imagetools_x/integration/index.js +++ /dev/null @@ -1,125 +0,0 @@ -// @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() { - console.time('[imagetools] build:done'); - 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 () => { - const start = Date.now(); - await saveAndCopyAsset( - hash, - image, - buffer, - outDir, - assetsDir, - assetPath, - isSsrBuild - ); - const end = Date.now(); - // console.log(`[imagetools] saveAndCopyAsset for ${assetPath} took ${end - start}ms`); - // }); - } 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 } - ); - } - console.timeEnd('[imagetools] build:done'); - }, - }, -}; diff --git a/packages/imagetools_x/integration/utils/saveAndCopyAsset.js b/packages/imagetools_x/integration/utils/saveAndCopyAsset.js deleted file mode 100644 index f075377..0000000 --- a/packages/imagetools_x/integration/utils/saveAndCopyAsset.js +++ /dev/null @@ -1,46 +0,0 @@ -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_x/package.json b/packages/imagetools_x/package.json deleted file mode 100644 index 257da62..0000000 --- a/packages/imagetools_x/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "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_x/plugin/hooks/config.js b/packages/imagetools_x/plugin/hooks/config.js deleted file mode 100644 index 0562971..0000000 --- a/packages/imagetools_x/plugin/hooks/config.js +++ /dev/null @@ -1,19 +0,0 @@ -// @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_x/plugin/hooks/load.js b/packages/imagetools_x/plugin/hooks/load.js deleted file mode 100644 index a50f8c8..0000000 --- a/packages/imagetools_x/plugin/hooks/load.js +++ /dev/null @@ -1,192 +0,0 @@ -// @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) - 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_x/plugin/hooks/transform.js b/packages/imagetools_x/plugin/hooks/transform.js deleted file mode 100644 index 5851419..0000000 --- a/packages/imagetools_x/plugin/hooks/transform.js +++ /dev/null @@ -1,62 +0,0 @@ -// @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_x/plugin/index.js b/packages/imagetools_x/plugin/index.js deleted file mode 100644 index f45f36f..0000000 --- a/packages/imagetools_x/plugin/index.js +++ /dev/null @@ -1,88 +0,0 @@ -// @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_x/plugin/utils/cache.js b/packages/imagetools_x/plugin/utils/cache.js deleted file mode 100644 index 6e5ee76..0000000 --- a/packages/imagetools_x/plugin/utils/cache.js +++ /dev/null @@ -1,17 +0,0 @@ -// @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_x/plugin/utils/codecs.js b/packages/imagetools_x/plugin/utils/codecs.js deleted file mode 100644 index 1476e94..0000000 --- a/packages/imagetools_x/plugin/utils/codecs.js +++ /dev/null @@ -1,41 +0,0 @@ -// @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_x/plugin/utils/imagetools.js b/packages/imagetools_x/plugin/utils/imagetools.js deleted file mode 100644 index f969207..0000000 --- a/packages/imagetools_x/plugin/utils/imagetools.js +++ /dev/null @@ -1,26 +0,0 @@ -// @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_x/plugin/utils/shared.js b/packages/imagetools_x/plugin/utils/shared.js deleted file mode 100644 index bac7c05..0000000 --- a/packages/imagetools_x/plugin/utils/shared.js +++ /dev/null @@ -1,47 +0,0 @@ -// @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_x/pnpm-lock.yaml b/packages/imagetools_x/pnpm-lock.yaml deleted file mode 100644 index 5f69ffe..0000000 --- a/packages/imagetools_x/pnpm-lock.yaml +++ /dev/null @@ -1,8852 +0,0 @@ -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_x/pnpm-workspace.yaml b/packages/imagetools_x/pnpm-workspace.yaml deleted file mode 100644 index 61acd18..0000000 --- a/packages/imagetools_x/pnpm-workspace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -packages: - - "packages/**/*" - - "docs" - - "demo" diff --git a/packages/imagetools_x/ssr/index.d.ts b/packages/imagetools_x/ssr/index.d.ts deleted file mode 100644 index 87ae242..0000000 --- a/packages/imagetools_x/ssr/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { IncomingMessage, ServerResponse } from "http"; - -export function middleware( - request: IncomingMessage, - response: ServerResponse -): Buffer; diff --git a/packages/imagetools_x/ssr/index.js b/packages/imagetools_x/ssr/index.js deleted file mode 100644 index f25f02e..0000000 --- a/packages/imagetools_x/ssr/index.js +++ /dev/null @@ -1,27 +0,0 @@ -// @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_x/test-fixtures/getSrcPath/out/out.jpeg b/packages/imagetools_x/test-fixtures/getSrcPath/out/out.jpeg deleted file mode 100644 index c8b7e65..0000000 Binary files a/packages/imagetools_x/test-fixtures/getSrcPath/out/out.jpeg and /dev/null differ diff --git a/packages/imagetools_x/test-fixtures/getSrcPath/root.jpeg b/packages/imagetools_x/test-fixtures/getSrcPath/root.jpeg deleted file mode 100644 index 87f9f0c..0000000 Binary files a/packages/imagetools_x/test-fixtures/getSrcPath/root.jpeg and /dev/null differ diff --git a/packages/imagetools_x/types.d.ts b/packages/imagetools_x/types.d.ts deleted file mode 100644 index d44c18c..0000000 --- a/packages/imagetools_x/types.d.ts +++ /dev/null @@ -1,268 +0,0 @@ -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_x/utils/filterConfigs.js b/packages/imagetools_x/utils/filterConfigs.js deleted file mode 100644 index 1fd64da..0000000 --- a/packages/imagetools_x/utils/filterConfigs.js +++ /dev/null @@ -1,51 +0,0 @@ -// @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_x/utils/filterConfigs.test.js b/packages/imagetools_x/utils/filterConfigs.test.js deleted file mode 100644 index d3d5100..0000000 --- a/packages/imagetools_x/utils/filterConfigs.test.js +++ /dev/null @@ -1,100 +0,0 @@ -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_x/utils/printWarning.js b/packages/imagetools_x/utils/printWarning.js deleted file mode 100644 index efeac3d..0000000 --- a/packages/imagetools_x/utils/printWarning.js +++ /dev/null @@ -1,57 +0,0 @@ -// @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_x/utils/runtimeChecks.js b/packages/imagetools_x/utils/runtimeChecks.js deleted file mode 100644 index 19036b8..0000000 --- a/packages/imagetools_x/utils/runtimeChecks.js +++ /dev/null @@ -1,79 +0,0 @@ -// @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_x/utils/runtimeChecks.test.ts b/packages/imagetools_x/utils/runtimeChecks.test.ts deleted file mode 100644 index 622592e..0000000 --- a/packages/imagetools_x/utils/runtimeChecks.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -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_x/vitest.config.ts b/packages/imagetools_x/vitest.config.ts deleted file mode 100644 index 29dc63d..0000000 --- a/packages/imagetools_x/vitest.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - // https://vitest.dev/config/#configuration - }, -}); diff --git a/packages/polymech/src/app/config.ts b/packages/polymech/src/app/config.ts index c880602..047073d 100644 --- a/packages/polymech/src/app/config.ts +++ b/packages/polymech/src/app/config.ts @@ -5,20 +5,23 @@ import { sync as read } from '@polymech/fs/read' import { sanitizeUri } from 'micromark-util-sanitize-uri' export const OSR_ROOT = () => path.resolve(resolve("${OSR_ROOT}")) +export const FILE_SERVER_DEV = 'localhost:5000' export const LOGGING_NAMESPACE = 'polymech-site' export const TRANSLATE_CONTENT = true -export const LANGUAGES = ['en', 'de', 'es', 'fr'] -//export const LANGUAGES_PROD = ['en'] -export const LANGUAGES_PROD = ['en', 'es', 'de','fr'] +export const LANGUAGES = ['en', 'ar', 'de', 'ja', 'es', 'zh', 'fr'] +//export const LANGUAGES_PROD = ['en', 'es', 'ar', 'de', 'ja', 'zh', 'fr', 'nl', 'it', 'pt'] +export const LANGUAGES_PROD = ['en', 'es', 'fr'] export const isRTL = (lang) => lang === 'ar' - // i18n constants export const I18N_STORE = (root, lang) => `${root}/i18n-store/store-${lang}.json` export const I18N_SOURCE_LANGUAGE = 'en' export const I18N_CACHE = true export const I18N_ASSET_PATH = "${SRC_DIR}/${SRC_NAME}-${DST_LANG}${SRC_EXT}" +// Products +export const HOWTO_MIGRATION = () => path.resolve(resolve("./data/last.json")) + // Products export const PRODUCT_ROOT = () => path.resolve(resolve("${OSR_ROOT}/products")) export const PRODUCT_BRANCHES = read(path.join(PRODUCT_ROOT(), 'config/machines.json'), 'json') @@ -60,7 +63,8 @@ export const TASK_LOG_DIRECTORY = './logs/' // Task - Retail Config export const REGISTER_PRODUCT_TASKS = true -export const RETAIL_PRODUCT_BRANCH = 'site' +export const LIBARY_BRANCH = 'site-prod' +export const PROJECTS_BRANCH = 'projects' export const RETAIL_COMPILE_CACHE = false export const RETAIL_MEDIA_CACHE = true export const RETAIL_LOG_LEVEL_I18N_PRODUCT_ASSETS = 'info' @@ -85,15 +89,17 @@ export const CAD_RENDERER_QUALITY = 1 export const CAD_EXTENSIONS = ['.STEP', '.html'] export const CAD_MODEL_EXT = '.tree.json' -export const CAD_URL = (file: string, variables: Record) => +export const CAD_URL = (file: string, variables: Record) => sanitizeUri(template("${OSR_MACHINES_ASSETS_URL}/${file}", { file, ...variables })) export const ASSET_URL = (file: string, variables: Record) => sanitizeUri(template("${OSR_MACHINES_ASSETS_URL}/products/${product_rel_min}/${file}", { file, ...variables })) -export const ITEM_ASSET_URL = (variables: Record) => +export const ITEM_ASSET_URL_R = (variables: Record) => template("${OSR_MACHINES_ASSETS_URL}/${ITEM_REL}/${assetPath}/${filePath}", variables) +export const ITEM_ASSET_URL = (variables: Record) => + template("http://${FILE_SERVER_DEV}/${ITEM_REL}/${assetPath}/${filePath}", variables) //back compat - osr-cad export const parseBoolean = (value: string): boolean => { @@ -103,19 +109,22 @@ export const parseBoolean = (value: string): boolean => { // // Rendering export const SHOW_DESCRIPTION = false -export const SHOW_LICENSE = false +export const SHOW_LICENSE = true export const SHOW_RENDERINGS = true export const SHOW_TABS = false -export const SHOW_GALLERY = false +export const SHOW_GALLERY = true export const SHOW_FILES = true export const SHOW_SPECS = true -export const SHOW_CHECKOUT = false +export const SHOW_CHECKOUT = true +export const SHOW_CONTACT = true export const SHOW_3D_PREVIEW = true export const SHOW_RESOURCES = true export const SHOW_DEBUG = false export const SHOW_SAMPLES = true export const SHOW_README = false +export const SHOW_RELATED = true + ///////////////////////////////////////////// // @@ -135,14 +144,15 @@ export const RSS_CONFIG = export const DEFAULT_IMAGE_URL = 'https://picsum.photos/640/640' export const default_image = () => { - return { - alt: 'none', - src: DEFAULT_IMAGE_URL, - thumb: DEFAULT_IMAGE_URL - } + return { + alt: 'none', + src: DEFAULT_IMAGE_URL, + thumb: DEFAULT_IMAGE_URL + } } - +export const DEFAULT_LICENSE = `CERN Open Source Hardware License` +export const DEFAULT_CONTACT = `sales@plastic-hub.com` ///////////////////////////////////////////// // @@ -156,45 +166,13 @@ export const IMAGE_SETTINGS = SHOW_DESCRIPTION: false, SIZES_THUMB: O_IMAGE.sizes_thumbs, SIZES_LARGE: O_IMAGE.sizes_large, - SIZES_REGULAR: O_IMAGE.sizes + SIZES_REGULAR: O_IMAGE.sizes_medium }, LIGHTBOX: { SHOW_TITLE: true, SHOW_DESCRIPTION: true, SIZES_THUMB: O_IMAGE.sizes_thumbs, SIZES_LARGE: O_IMAGE.sizes_large, - SIZES_REGULAR: O_IMAGE.sizes + SIZES_REGULAR: O_IMAGE.sizes_medium } -} - -///////////////////////////////////////////// -// -// Collection Filters - -// Collection filter configuration -export const COLLECTION_FILTERS = { - // Enable/disable specific default filters - ENABLE_VALID_FRONTMATTER_CHECK: true, - ENABLE_FOLDER_FILTER: true, - ENABLE_DRAFT_FILTER: true, - ENABLE_TITLE_FILTER: true, // Enabled by default to filter out "Untitled" entries - - // Content validation filters - ENABLE_BODY_FILTER: false, // Require entries to have body content - ENABLE_DESCRIPTION_FILTER: false, // Require entries to have descriptions - ENABLE_IMAGE_FILTER: false, // Require entries to have images - ENABLE_AUTHOR_FILTER: false, // Require entries to have real authors (not "Unknown") - ENABLE_PUBDATE_FILTER: false, // Require entries to have valid publication dates - ENABLE_TAGS_FILTER: false, // Require entries to have tags - ENABLE_FILE_EXTENSION_FILTER: true, // Require valid .md/.mdx extensions - - // Additional filter settings - REQUIRED_FIELDS: [], // Array of required frontmatter fields - REQUIRED_TAGS: [], // Array of required tags - EXCLUDE_TAGS: [], // Array of tags to exclude - - // Date filtering - FILTER_FUTURE_POSTS: false, // Filter out posts with future publication dates - FILTER_OLD_POSTS: false, // Filter out posts older than a certain date - OLD_POST_CUTOFF_DAYS: 365, // Days to consider a post "old" } \ No newline at end of file diff --git a/packages/polymech/src/base/index.ts b/packages/polymech/src/base/index.ts index 9cc953a..4566ab1 100644 --- a/packages/polymech/src/base/index.ts +++ b/packages/polymech/src/base/index.ts @@ -10,7 +10,7 @@ import { createLogger } from '@polymech/log' import { parse, IProfile } from '@polymech/commons/profile' import { translate } from "@/base/i18n.js" -import { renderMarkup } from "../model/component.js" +// import { renderMarkup } from "../model/component.js" import { LOGGING_NAMESPACE, @@ -40,6 +40,7 @@ export const render = async (string) => { const html = `${unescapeHTML(string)}` return createComponent(() => renderTemplate(html as any, [])) } +/* export const component = async (str: string = "", locale, data = {}) => { const content = await translate( (str || "").trim(), @@ -49,6 +50,7 @@ export const component = async (str: string = "", locale, data = {}) => { const markup = ((await renderMarkup(content, data)) as any) || { html: "" } return await render(markup.html) } +*/ export const item_defaults = async (itemDir) => { return await findUp('defaults.json', { stopAt: PRODUCT_ROOT(), @@ -62,7 +64,7 @@ export async function markdownToHtml(markdown: string): Promise { .use(remarkRehype) .use(rehypeStringify) .process(markdown); - + return result.toString(); } diff --git a/packages/polymech/src/base/media.ts b/packages/polymech/src/base/media.ts index 00d66c6..f5b32e1 100644 --- a/packages/polymech/src/base/media.ts +++ b/packages/polymech/src/base/media.ts @@ -2,6 +2,7 @@ import { createHash } from 'node:crypto' import { readFileSync } from 'node:fs' import * as path from 'node:path' import pMap from 'p-map' +import fs from 'node:fs' import { GlobOptions } from 'glob' import { sanitizeUri } from 'micromark-util-sanitize-uri' import ExifReader from 'exifreader' @@ -23,6 +24,151 @@ import { env } from './index.js' const IMAGES_GLOB = '*.+(JPG|jpg|png|jpeg|PNG|gif)' + +// Extract date from EXIF data or file stats +export async function extractImageDate(filePath: string): Promise<{ year: number, dateTaken: Date }> { + let dateTaken: Date | null = null; + + try { + // Try to get EXIF date + const exifData = await ExifReader.load(filePath); + const dateTimeOriginal = exifData?.['DateTimeOriginal']?.description; + const dateTime = exifData?.['DateTime']?.description; + const createDate = exifData?.['CreateDate']?.description; + + // Parse EXIF date (format: "YYYY:MM:DD HH:MM:SS") + const exifDateString = dateTimeOriginal || dateTime || createDate; + if (exifDateString) { + const [datePart, timePart] = exifDateString.split(' '); + const [year, month, day] = datePart.split(':').map(Number); + const [hour, minute, second] = (timePart || '00:00:00').split(':').map(Number); + dateTaken = new Date(year, month - 1, day, hour, minute, second); + } + } catch (e) { + console.warn(`[extractImageDate] Could not read EXIF data for ${filePath}:`, e); + } + + // Fallback to file modification date + if (!dateTaken) { + try { + const stats = fs.statSync(filePath); + dateTaken = stats.mtime; + } catch (e) { + console.warn(`[extractImageDate] Could not read file stats for ${filePath}:`, e); + dateTaken = new Date(); // Ultimate fallback + } + } + + return { + year: dateTaken.getFullYear(), + dateTaken + }; +} + +// Predefined grouping functions +export const groupByYear = (image: { year?: number, dateTaken?: Date }) => { + const year = image.year || (image.dateTaken ? image.dateTaken.getFullYear() : new Date().getFullYear()); + return { + key: year.toString(), + label: year.toString(), + sortOrder: year + }; +}; + +export const groupByMonth = (image: { year?: number, dateTaken?: Date }) => { + const date = image.dateTaken || new Date(); + const year = date.getFullYear(); + const month = date.getMonth(); + const monthNames = [ + 'January', 'February', 'March', 'April', 'May', 'June', + 'July', 'August', 'September', 'October', 'November', 'December' + ]; + + return { + key: `${year}-${month.toString().padStart(2, '0')}`, + label: `${monthNames[month]} ${year}`, + sortOrder: year * 100 + month + }; +}; + +// Type for grouping function result +export interface GroupInfo { + key: string; + label: string; + sortOrder: number; +} + +// Extract comprehensive metadata from image file +export async function extractImageMetadata(filePath: string): Promise<{ + year: number; + dateTaken: Date; + title: string; + description: string; + keywords: string[]; + width?: number; + height?: number; + exifRaw?: any; +}> { + const fileName = path.basename(filePath, path.extname(filePath)); + const baseDir = path.dirname(filePath); + + // Get date information + const { year, dateTaken } = await extractImageDate(filePath); + + // Load companion metadata files + const metaJsonPath = path.join(baseDir, `${fileName}.json`); + const metaMarkdownPath = path.join(baseDir, `${fileName}.md`); + + let metaJson: any = { alt: "", keywords: "", title: "", description: "" }; + let metaMarkdown = ""; + + try { + if (fs.existsSync(metaJsonPath)) { + metaJson = JSON.parse(fs.readFileSync(metaJsonPath, 'utf8')); + } + + if (fs.existsSync(metaMarkdownPath)) { + metaMarkdown = fs.readFileSync(metaMarkdownPath, 'utf8'); + } + } catch (e) { + console.warn(`Error loading metadata for ${fileName}:`, e); + } + + // Load EXIF data + let exifRaw: any = null; + try { + exifRaw = await ExifReader.load(filePath); + } catch (e) { + console.warn(`Error loading EXIF data for ${filePath}:`, e); + exifRaw = {}; + } + + // Extract EXIF metadata following the same priority as media.ts gallery function + const keywords = exifRaw?.['LastKeywordXMP']?.description || exifRaw?.iptc?.Keywords?.description || ''; + const exifDescription = exifRaw?.['ImageDescription']?.description || ''; + const width = exifRaw?.['Image Width']?.value; + const height = exifRaw?.['Image Height']?.value; + + // Priority order: EXIF title -> JSON title -> generated from filename + const title = exifRaw?.title?.description || metaJson.title || + fileName.replace(/[-_]/g, ' ').replace(/\b\w/g, l => l.toUpperCase()); + + // Priority order: JSON description -> Markdown -> EXIF ImageDescription -> EXIF IPTC Caption -> empty + const description = metaJson.description || metaMarkdown || exifDescription || + exifRaw?.iptc?.['Caption/Abstract']?.description || ''; + + return { + year, + dateTaken, + title, + description, + keywords: keywords ? keywords.split(',').map((k: string) => k.trim()) : [], + width, + height, + exifRaw + }; +} + export const default_sort = (files: string[]): string[] => { const getSortableParts = (filename: string) => { const baseName = path.parse(filename).name; @@ -51,7 +197,7 @@ export const image_url = async (src, fallback = DEFAULT_IMAGE_URL) => { const response = await fetch(src, { method: 'HEAD' }) if (!response.ok) { safeSrc = fallback - logger.warn(`Image URL not found ${src}, default to ${fallback}`) + // logger.warn(`Image URL not found ${src}, default to ${fallback}`) } } catch (error) { safeSrc = fallback @@ -106,7 +252,6 @@ export const gallery = async ( } const mediaPath = `${root}/${product}/${assetPath}/` if (!exists(mediaPath)) { - logger.warn(`ProductGallery : Product ${product} media path not found ${mediaPath}!`) return [] } const galleryGlob = (productConfig.gallery || {})[assetSlug]?.glob || IMAGES_GLOB diff --git a/packages/polymech/src/model/component.ts b/packages/polymech/src/model/component.ts index cb87033..a9d13b0 100644 --- a/packages/polymech/src/model/component.ts +++ b/packages/polymech/src/model/component.ts @@ -9,11 +9,10 @@ import { ICADNodeSchema, IComponentConfig } from '@polymech/commons/component' import { DataEntry } from "astro:content" import type { Loader, LoaderContext } from 'astro/loaders' - import { CAD_MAIN_MATCH, PRODUCT_BRANCHES, CAD_EXTENSIONS, CAD_MODEL_EXT, PRODUCT_DIR, PRODUCT_GLOB, - PRODUCT_ROOT, RETAIL_PRODUCT_BRANCH, CAD_EXPORT_CONFIGURATIONS, + PRODUCT_ROOT, CAD_EXPORT_CONFIGURATIONS, CAD_DEFAULT_CONFIGURATION, CAD_URL, parseBoolean @@ -41,21 +40,19 @@ export interface IStoreItem extends DataEntry { data: IComponentConfigEx } - - -const filterBranch = (items: { rel: string, config, path }[], - branch: string = RETAIL_PRODUCT_BRANCH) => { +const filterBranch = (items: { rel: string, config, path }[], branch: string = 'site-prod') => { if (!PRODUCT_BRANCHES) { return items } + const branchItems = PRODUCT_BRANCHES[branch] if (!branchItems) { - return items + return [] } return items.filter((item) => branchItems.includes(item.rel)) } -export const items = (opts: {}) => filterBranch(get(`${PRODUCT_ROOT()}/${PRODUCT_GLOB}`, PRODUCT_ROOT(), PFilterValid.marketplace_component)) +export const items = (branch: string) => filterBranch(get(`${PRODUCT_ROOT()}/${PRODUCT_GLOB}`, PRODUCT_ROOT(), PFilterValid.library_component), branch) const onComponent = async (item: IStoreItem, ctx: ILoaderContextEx) => { @@ -86,9 +83,7 @@ const cad = async (item: IStoreItem, ctx: ILoaderContextEx): Promise { const result: ICADNodeSchema = { file, @@ -148,22 +143,6 @@ const onItem = async (item: IStoreItem, ctx: ILoaderContextEx) => { } ////////////////////////////////////////// // - // Body - // - let contentPath = path.join(itemDir, 'templates/shared', 'body.md') - - if (exists(contentPath)) { - data.content = read(contentPath) as string - item.filePath = contentPath - } - ////////////////////////////////////////// - // - // Item Extra Resources - // - let resourcesPath = path.join(itemDir, 'templates/shared', 'resources.md') - exists(resourcesPath) && (data.extra_resources = read(resourcesPath) as string || "") - ////////////////////////////////////////// - // // Item Shared Resources // let resourcesDefaultPath = await findUp('resources.md', { @@ -173,14 +152,6 @@ const onItem = async (item: IStoreItem, ctx: ILoaderContextEx) => { exists(resourcesDefaultPath) && (data.shared_resources = read(resourcesDefaultPath) as string || "") ////////////////////////////////////////// // - // Readme - // - let readmePath = path.join(itemDir, 'Readme.md') - if (exists(readmePath)) { - data.readme = read(readmePath) as string - } - ////////////////////////////////////////// - // // Variables // let defaultsJSON = await findUp('defaults.json', { @@ -227,7 +198,7 @@ const onItem = async (item: IStoreItem, ctx: ILoaderContextEx) => { data.assets.screenshots = await gallery('media/screenshots', data.rel) as [] } -export function loader(): Loader { +export function loader(branch: string): Loader { const load = async ({ config, logger, @@ -238,7 +209,7 @@ export function loader(): Loader { }: ILoaderContextEx) => { store.clear(); - let products = items({}) + let products = items(branch) for (const item of products) { const product: any = item.config const id = product.slug; @@ -251,7 +222,7 @@ export function loader(): Loader { components: [], ...product } - //const parsedData = await parseData({ id, data: data }); + //const parsedData = await parseData({ id, data: data }); const storeItem = { digest: await generateDigest(data), filePath: id, @@ -259,6 +230,7 @@ export function loader(): Loader { id: `${item.rel}`, data: data } + await onItem(storeItem, { logger, watcher, @@ -266,6 +238,7 @@ export function loader(): Loader { store, generateDigest } as any) + storeItem.data['config'] = JSON.stringify({ ...storeItem.data }, null, 2) diff --git a/packages/polymech/src/pages/[locale]/resources/[...slug].astro b/packages/polymech/src/pages/[locale]/resources/[...slug].astro index 78ac102..dcccab9 100644 --- a/packages/polymech/src/pages/[locale]/resources/[...slug].astro +++ b/packages/polymech/src/pages/[locale]/resources/[...slug].astro @@ -5,8 +5,7 @@ import BaseLayout from "@/layouts/BaseLayout.astro"; import Sidebar from "@polymech/astro-base/components/sidebar/Sidebar.astro" import MobileToggle from "@polymech/astro-base/components/sidebar/MobileToggle.astro" import { getSidebarConfig } from '@polymech/astro-base/config/sidebar'; -import ResourceCard from "@/components/resources/ResourceCard.astro"; -import { LANGUAGES_PROD, COLLECTION_FILTERS } from "config/config.js" +import ResourceCard from "@polymech/astro-base/components/resources/ResourceCard.astro"; import { generateBreadcrumbs, calculateReadingTime, getStaticPaths_fs } from '@polymech/astro-base/base/collections';