From 8998614cba7c99582a44eb42f1f7765cb7bf9987 Mon Sep 17 00:00:00 2001 From: babayaga Date: Tue, 26 Aug 2025 12:17:29 +0200 Subject: [PATCH] latest --- .../package/src/contextTracking.ts | 1 + packages/imagetools/.npmignore | 8 +- packages/imagetools/README.md | 78 +- packages/imagetools/api/importImage.d.ts | 2 +- packages/imagetools/api/importImage.js | 46 +- packages/imagetools/api/index.js | 12 +- .../imagetools/api/renderBackgroundImage.d.ts | 16 +- .../imagetools/api/renderBackgroundImage.js | 315 +- .../api/renderBackgroundPicture.d.ts | 16 +- .../imagetools/api/renderBackgroundPicture.js | 254 +- packages/imagetools/api/renderImg.d.ts | 10 +- packages/imagetools/api/renderImg.js | 186 +- packages/imagetools/api/renderPicture.d.ts | 10 +- packages/imagetools/api/renderPicture.js | 217 +- packages/imagetools/api/utils/codecs.js | 74 +- .../api/utils/getArtDirectedImages.js | 274 +- .../api/utils/getAttributesString.js | 54 +- .../api/utils/getBackgroundStyles.js | 194 +- .../imagetools/api/utils/getBreakpoints.js | 154 +- .../imagetools/api/utils/getConfigOptions.js | 68 +- .../api/utils/getContainerElement.js | 96 +- .../imagetools/api/utils/getFallbackImage.js | 116 +- .../imagetools/api/utils/getFilteredProps.js | 276 +- .../api/utils/getFilteredProps.test.ts | 98 +- packages/imagetools/api/utils/getImage.js | 188 +- .../imagetools/api/utils/getImageSources.js | 165 +- .../imagetools/api/utils/getImgElement.js | 160 +- .../imagetools/api/utils/getLayoutStyles.js | 25 +- .../imagetools/api/utils/getLinkElement.js | 68 +- .../api/utils/getLinkElement.test.ts | 28 +- .../imagetools/api/utils/getPictureElement.js | 86 +- .../imagetools/api/utils/getProcessedImage.js | 115 +- .../imagetools/api/utils/getResolvedSrc.js | 132 +- packages/imagetools/api/utils/getSrcPath.js | 64 +- .../imagetools/api/utils/getSrcPath.test.ts | 134 +- packages/imagetools/api/utils/getSrcset.js | 84 +- .../imagetools/api/utils/getStyleElement.js | 30 +- packages/imagetools/api/utils/imagetools.js | 81 +- .../api/utils/throwErrorIfUnsupported.js | 28 +- .../components/BackgroundImage.astro | 92 +- .../components/BackgroundPicture.astro | 38 +- packages/imagetools/components/Image.astro | 18 +- .../components/ImageSupportDetection.astro | 8 +- packages/imagetools/components/Img.astro | 17 +- packages/imagetools/components/Picture.astro | 17 +- packages/imagetools/components/index.js | 10 +- packages/imagetools/config.d.ts | 6 +- packages/imagetools/config.mjs | 6 +- packages/imagetools/index.js | 5 +- packages/imagetools/integration/index.js | 195 +- .../integration/utils/saveAndCopyAsset.js | 92 +- packages/imagetools/package-lock.json | 8838 ++++++++++++++++ packages/imagetools/package.json | 135 +- packages/imagetools/plugin/hooks/config.js | 38 +- packages/imagetools/plugin/hooks/load.js | 346 +- packages/imagetools/plugin/hooks/transform.js | 125 +- packages/imagetools/plugin/index.js | 174 +- packages/imagetools/plugin/utils/cache.js | 32 +- packages/imagetools/plugin/utils/codecs.js | 82 +- .../imagetools/plugin/utils/imagetools.js | 52 +- packages/imagetools/plugin/utils/shared.js | 94 +- packages/imagetools/ssr/index.d.ts | 12 +- packages/imagetools/ssr/index.js | 43 +- packages/imagetools/tmp.html | 14 + packages/imagetools/types.d.ts | 537 +- packages/imagetools/utils/filterConfigs.js | 100 +- .../imagetools/utils/filterConfigs.test.js | 200 +- packages/imagetools/utils/printWarning.js | 114 +- packages/imagetools/utils/runtimeChecks.js | 145 +- .../imagetools/utils/runtimeChecks.test.ts | 72 +- packages/imagetools/vitest.config.ts | 14 +- .../{imagetools => imagetools_}/.eslintrc.js | 0 .../.github/workflows/ci.yml | 0 .../{imagetools => imagetools_}/.gitignore | 0 packages/imagetools_/.npmignore | 4 + packages/{imagetools => imagetools_}/.npmrc | 0 .../.prettierignore | 0 .../{imagetools => imagetools_}/.prettierrc | 0 packages/{imagetools => imagetools_}/LICENSE | 0 packages/imagetools_/README.md | 39 + packages/imagetools_/api/importImage.d.ts | 1 + packages/imagetools_/api/importImage.js | 23 + packages/imagetools_/api/index.js | 6 + .../api/renderBackgroundImage.d.ts | 8 + .../imagetools_/api/renderBackgroundImage.js | 159 + .../api/renderBackgroundPicture.d.ts | 8 + .../api/renderBackgroundPicture.js | 127 + packages/imagetools_/api/renderImg.d.ts | 5 + packages/imagetools_/api/renderImg.js | 93 + packages/imagetools_/api/renderPicture.d.ts | 5 + packages/imagetools_/api/renderPicture.js | 111 + packages/imagetools_/api/utils/codecs.js | 38 + .../api/utils/getArtDirectedImages.js | 137 + .../api/utils/getAttributesString.js | 27 + .../api/utils/getBackgroundStyles.js | 97 + .../imagetools_/api/utils/getBreakpoints.js | 77 + .../imagetools_/api/utils/getConfigOptions.js | 34 + .../api/utils/getContainerElement.js | 48 + .../imagetools_/api/utils/getFallbackImage.js | 58 + .../imagetools_/api/utils/getFilteredProps.js | 138 + .../api/utils/getFilteredProps.test.ts | 49 + packages/imagetools_/api/utils/getImage.js | 108 + .../imagetools_/api/utils/getImageSources.js | 91 + .../imagetools_/api/utils/getImgElement.js | 80 + .../imagetools_/api/utils/getLayoutStyles.js | 16 + .../imagetools_/api/utils/getLinkElement.js | 34 + .../api/utils/getLinkElement.test.ts | 14 + .../api/utils/getPictureElement.js | 43 + .../api/utils/getProcessedImage.js | 63 + .../imagetools_/api/utils/getResolvedSrc.js | 87 + packages/imagetools_/api/utils/getSrcPath.js | 32 + .../imagetools_/api/utils/getSrcPath.test.ts | 67 + packages/imagetools_/api/utils/getSrcset.js | 45 + .../imagetools_/api/utils/getStyleElement.js | 15 + packages/imagetools_/api/utils/imagetools.js | 40 + .../api/utils/throwErrorIfUnsupported.js | 14 + packages/imagetools_/astroViteConfigs.js | 12 + .../components/BackgroundImage.astro | 46 + .../components/BackgroundPicture.astro | 19 + packages/imagetools_/components/Image.astro | 10 + .../components/ImageSupportDetection.astro | 4 + packages/imagetools_/components/Img.astro | 7 + packages/imagetools_/components/Picture.astro | 10 + packages/imagetools_/components/index.js | 5 + packages/imagetools_/config.d.ts | 3 + packages/imagetools_/config.mjs | 3 + .../{imagetools => imagetools_}/demo/.npmrc | 0 .../demo/.stackblitzrc | 0 .../demo/README.md | 0 .../demo/astro-imagetools.config.mjs | 0 .../demo/astro.config.mjs | 0 .../demo/package.json | 0 .../demo/public/favicon.ico | Bin .../demo/public/images/public.jpeg | Bin .../demo/sandbox.config.json | 0 .../demo/src/env.d.ts | 0 .../src/images/elva-480w-close-portrait.jpg | Bin .../demo/src/images/elva-800w.jpg | Bin .../demo/src/layouts/LayoutsLayout.astro | 0 .../demo/src/layouts/MainLayout.astro | 0 .../demo/src/layouts/PlaceholderLayout.astro | 0 .../src/pages/api/renderBackgroundImage.astro | 0 .../pages/api/renderBackgroundPicture.astro | 0 .../demo/src/pages/api/renderImg.astro | 0 .../demo/src/pages/api/renderPicture.astro | 0 .../pages/components/BackgroundImage.astro | 0 .../pages/components/BackgroundPicture.astro | 0 .../demo/src/pages/components/Img.astro | 0 .../demo/src/pages/components/Picture.astro | 0 .../demo/src/pages/index.md | 0 .../demo/src/pages/layout/constrained.astro | 0 .../demo/src/pages/layout/fill.astro | 0 .../demo/src/pages/layout/fixed.astro | 0 .../demo/src/pages/layout/fullWidth.astro | 0 .../demo/src/pages/placeholder/blurred.astro | 0 .../src/pages/placeholder/dominantColor.astro | 0 .../demo/src/pages/placeholder/none.astro | 0 .../src/pages/placeholder/tracedSVG.astro | 0 .../demo/src/styles/index.css | 0 .../{imagetools => imagetools_}/docs/.npmrc | 0 .../docs/.stackblitzrc | 0 .../docs/README.md | 0 .../docs/astro.config.mjs | 0 .../docs/auto-imports.d.ts | 0 .../docs/package.json | 0 .../docs/public/default-og-image.png | Bin .../docs/public/favicon.ico | Bin .../public/make-scrollable-code-focusable.js | 0 .../docs/sandbox.config.json | 0 .../docs/src/components/CodeExample.astro | 0 .../docs/src/components/ConfigOptions.astro | 0 .../src/components/ConfigOptions/alt.astro | 0 .../ConfigOptions/artDirectives.astro | 0 .../src/components/ConfigOptions/aspect.astro | 0 .../ConfigOptions/assetFileNames.astro | 0 .../components/ConfigOptions/attributes.astro | 0 .../components/ConfigOptions/background.astro | 0 .../ConfigOptions/backgroundPosition.astro | 0 .../ConfigOptions/backgroundSize.astro | 0 .../src/components/ConfigOptions/blur.astro | 0 .../ConfigOptions/breakpoints.astro | 0 .../components/ConfigOptions/brightness.astro | 0 .../components/ConfigOptions/cacheDir.astro | 0 .../components/ConfigOptions/content.astro | 0 .../components/ConfigOptions/decoding.astro | 0 .../ConfigOptions/fadeInTransition.astro | 0 .../ConfigOptions/fallbackFormat.astro | 0 .../src/components/ConfigOptions/fit.astro | 0 .../components/ConfigOptions/flatten.astro | 0 .../src/components/ConfigOptions/flip.astro | 0 .../src/components/ConfigOptions/flop.astro | 0 .../src/components/ConfigOptions/format.astro | 0 .../ConfigOptions/formatOptions.astro | 0 .../components/ConfigOptions/grayscale.astro | 0 .../src/components/ConfigOptions/height.astro | 0 .../src/components/ConfigOptions/hue.astro | 0 .../ConfigOptions/includeSourceFormat.astro | 0 .../src/components/ConfigOptions/invert.astro | 0 .../src/components/ConfigOptions/kernel.astro | 0 .../src/components/ConfigOptions/layout.astro | 0 .../components/ConfigOptions/loading.astro | 0 .../src/components/ConfigOptions/median.astro | 0 .../components/ConfigOptions/normalize.astro | 0 .../components/ConfigOptions/objectFit.astro | 0 .../ConfigOptions/objectPosition.astro | 0 .../ConfigOptions/placeholder.astro | 0 .../components/ConfigOptions/position.astro | 0 .../components/ConfigOptions/preload.astro | 0 .../components/ConfigOptions/quality.astro | 0 .../src/components/ConfigOptions/rotate.astro | 0 .../components/ConfigOptions/saturation.astro | 0 .../src/components/ConfigOptions/sizes.astro | 0 .../src/components/ConfigOptions/src.astro | 0 .../src/components/ConfigOptions/tag.astro | 0 .../src/components/ConfigOptions/tint.astro | 0 .../src/components/ConfigOptions/width.astro | 0 .../src/components/Footer/AvatarList.astro | 0 .../docs/src/components/Footer/Footer.astro | 0 .../docs/src/components/HeadCommon.astro | 0 .../docs/src/components/HeadSEO.astro | 0 .../src/components/Header/AstroLogo.astro | 0 .../docs/src/components/Header/Header.astro | 0 .../src/components/Header/LanguageSelect.css | 0 .../src/components/Header/LanguageSelect.tsx | 0 .../docs/src/components/Header/Search.css | 0 .../docs/src/components/Header/Search.tsx | 0 .../src/components/Header/SidebarToggle.tsx | 0 .../src/components/Header/SkipToContent.astro | 0 .../components/LeftSidebar/LeftSidebar.astro | 0 .../components/PageContent/PageContent.astro | 0 .../components/RightSidebar/MoreMenu.astro | 0 .../RightSidebar/RightSidebar.astro | 0 .../RightSidebar/TableOfContents.tsx | 0 .../RightSidebar/ThemeToggleButton.css | 0 .../RightSidebar/ThemeToggleButton.tsx | 0 .../docs/src/config.ts | 0 .../docs/src/languages.ts | 0 .../docs/src/layouts/MainLayout.astro | 0 .../docs/src/pages/en/acknowledgements.md | 0 .../docs/src/pages/en/api/importImage.mdx | 0 .../pages/en/api/renderBackgroundImage.mdx | 0 .../pages/en/api/renderBackgroundPicture.mdx | 0 .../docs/src/pages/en/api/renderImg.mdx | 0 .../docs/src/pages/en/api/renderPicture.mdx | 0 .../docs/src/pages/en/components-and-apis.mdx | 0 .../pages/en/components/BackgroundImage.mdx | 0 .../pages/en/components/BackgroundPicture.mdx | 0 .../docs/src/pages/en/components/Img.mdx | 0 .../docs/src/pages/en/components/Picture.mdx | 0 .../docs/src/pages/en/deprecations.mdx | 0 .../src/pages/en/global-config-options.mdx | 0 .../docs/src/pages/en/installation.mdx | 0 .../docs/src/pages/en/introduction.mdx | 0 .../docs/src/pages/en/markdown-images.mdx | 0 .../docs/src/pages/en/ssr.mdx | 0 .../docs/src/pages/en/usage.mdx | 0 .../docs/src/pages/index.astro | 0 .../docs/src/styles/index.css | 0 .../docs/src/styles/theme.css | 0 .../docs/tsconfig.json | 0 packages/imagetools_/index.js | 3 + packages/imagetools_/integration/index.js | 120 + .../integration/utils/saveAndCopyAsset.js | 46 + packages/imagetools_/package.json | 66 + packages/imagetools_/plugin/hooks/config.js | 19 + packages/imagetools_/plugin/hooks/load.js | 198 + .../imagetools_/plugin/hooks/transform.js | 62 + packages/imagetools_/plugin/index.js | 88 + packages/imagetools_/plugin/utils/cache.js | 19 + packages/imagetools_/plugin/utils/codecs.js | 41 + .../imagetools_/plugin/utils/imagetools.js | 26 + packages/imagetools_/plugin/utils/shared.js | 47 + .../pnpm-lock.yaml | 0 .../pnpm-workspace.yaml | 0 packages/imagetools_/ssr/index.d.ts | 6 + packages/imagetools_/ssr/index.js | 27 + .../test-fixtures/getSrcPath/out/out.jpeg | Bin 0 -> 64835 bytes .../test-fixtures/getSrcPath/root.jpeg | Bin 0 -> 740194 bytes packages/imagetools_/types.d.ts | 268 + packages/imagetools_/utils/filterConfigs.js | 51 + .../imagetools_/utils/filterConfigs.test.js | 100 + packages/imagetools_/utils/printWarning.js | 57 + packages/imagetools_/utils/runtimeChecks.js | 80 + .../imagetools_/utils/runtimeChecks.test.ts | 36 + packages/imagetools_/vitest.config.ts | 7 + packages/imagetools_3/.eslintrc.js | 17 + .../imagetools_3/.github/workflows/ci.yml | 65 + packages/imagetools_3/.gitignore | 20 + packages/imagetools_3/.npmignore | 4 + packages/imagetools_3/.npmrc | 2 + packages/imagetools_3/.prettierignore | 2 + packages/imagetools_3/.prettierrc | 9 + packages/imagetools_3/LICENSE | 21 + packages/imagetools_3/README.md | 39 + packages/imagetools_3/api/importImage.d.ts | 1 + packages/imagetools_3/api/importImage.js | 23 + packages/imagetools_3/api/index.js | 6 + .../api/renderBackgroundImage.d.ts | 8 + .../imagetools_3/api/renderBackgroundImage.js | 159 + .../api/renderBackgroundPicture.d.ts | 8 + .../api/renderBackgroundPicture.js | 127 + packages/imagetools_3/api/renderImg.d.ts | 5 + packages/imagetools_3/api/renderImg.js | 93 + packages/imagetools_3/api/renderPicture.d.ts | 5 + packages/imagetools_3/api/renderPicture.js | 111 + packages/imagetools_3/api/utils/codecs.js | 38 + .../api/utils/getArtDirectedImages.js | 137 + .../api/utils/getAttributesString.js | 27 + .../api/utils/getBackgroundStyles.js | 97 + .../imagetools_3/api/utils/getBreakpoints.js | 77 + .../api/utils/getConfigOptions.js | 34 + .../api/utils/getContainerElement.js | 48 + .../api/utils/getFallbackImage.js | 58 + .../api/utils/getFilteredProps.js | 138 + .../api/utils/getFilteredProps.test.ts | 49 + packages/imagetools_3/api/utils/getImage.js | 111 + .../imagetools_3/api/utils/getImageSources.js | 91 + .../imagetools_3/api/utils/getImgElement.js | 80 + .../imagetools_3/api/utils/getLayoutStyles.js | 16 + .../imagetools_3/api/utils/getLinkElement.js | 34 + .../api/utils/getLinkElement.test.ts | 14 + .../api/utils/getPictureElement.js | 43 + .../api/utils/getProcessedImage.js | 65 + .../imagetools_3/api/utils/getResolvedSrc.js | 210 + packages/imagetools_3/api/utils/getSrcPath.js | 32 + .../imagetools_3/api/utils/getSrcPath.test.ts | 67 + packages/imagetools_3/api/utils/getSrcset.js | 39 + .../imagetools_3/api/utils/getStyleElement.js | 15 + packages/imagetools_3/api/utils/imagetools.js | 40 + .../api/utils/throwErrorIfUnsupported.js | 14 + packages/imagetools_3/astroViteConfigs.js | 12 + .../components/BackgroundImage.astro | 46 + .../components/BackgroundPicture.astro | 19 + packages/imagetools_3/components/Image.astro | 10 + .../components/ImageSupportDetection.astro | 4 + packages/imagetools_3/components/Img.astro | 10 + .../imagetools_3/components/Picture.astro | 10 + packages/imagetools_3/components/index.js | 5 + packages/imagetools_3/config.d.ts | 3 + packages/imagetools_3/config.mjs | 3 + packages/imagetools_3/demo/.npmrc | 2 + packages/imagetools_3/demo/.stackblitzrc | 6 + packages/imagetools_3/demo/README.md | 5 + .../demo/astro-imagetools.config.mjs | 3 + packages/imagetools_3/demo/astro.config.mjs | 23 + packages/imagetools_3/demo/package.json | 23 + packages/imagetools_3/demo/public/favicon.ico | Bin 0 -> 4286 bytes .../demo/public/images/public.jpeg | Bin 0 -> 97005 bytes .../imagetools_3/demo/sandbox.config.json | 11 + packages/imagetools_3/demo/src/env.d.ts | 1 + .../src/images/elva-480w-close-portrait.jpg | Bin 0 -> 83444 bytes .../demo/src/images/elva-800w.jpg | Bin 0 -> 113650 bytes .../demo/src/layouts/LayoutsLayout.astro | 15 + .../demo/src/layouts/MainLayout.astro | 57 + .../demo/src/layouts/PlaceholderLayout.astro | 18 + .../src/pages/api/renderBackgroundImage.astro | 48 + .../pages/api/renderBackgroundPicture.astro | 45 + .../demo/src/pages/api/renderImg.astro | 17 + .../demo/src/pages/api/renderPicture.astro | 17 + .../pages/components/BackgroundImage.astro | 45 + .../pages/components/BackgroundPicture.astro | 40 + .../demo/src/pages/components/Img.astro | 12 + .../demo/src/pages/components/Picture.astro | 12 + packages/imagetools_3/demo/src/pages/index.md | 78 + .../demo/src/pages/layout/constrained.astro | 5 + .../demo/src/pages/layout/fill.astro | 5 + .../demo/src/pages/layout/fixed.astro | 5 + .../demo/src/pages/layout/fullWidth.astro | 5 + .../demo/src/pages/placeholder/blurred.astro | 5 + .../src/pages/placeholder/dominantColor.astro | 5 + .../demo/src/pages/placeholder/none.astro | 5 + .../src/pages/placeholder/tracedSVG.astro | 5 + .../imagetools_3/demo/src/styles/index.css | 19 + packages/imagetools_3/docs/.npmrc | 2 + packages/imagetools_3/docs/.stackblitzrc | 6 + packages/imagetools_3/docs/README.md | 97 + packages/imagetools_3/docs/astro.config.mjs | 25 + packages/imagetools_3/docs/auto-imports.d.ts | 7 + packages/imagetools_3/docs/package.json | 28 + .../docs/public/default-og-image.png | Bin 0 -> 748347 bytes packages/imagetools_3/docs/public/favicon.ico | Bin 0 -> 4286 bytes .../public/make-scrollable-code-focusable.js | 3 + .../imagetools_3/docs/sandbox.config.json | 11 + .../docs/src/components/CodeExample.astro | 83 + .../docs/src/components/ConfigOptions.astro | 107 + .../src/components/ConfigOptions/alt.astro | 22 + .../ConfigOptions/artDirectives.astro | 115 + .../src/components/ConfigOptions/aspect.astro | 23 + .../ConfigOptions/assetFileNames.astro | 26 + .../components/ConfigOptions/attributes.astro | 116 + .../components/ConfigOptions/background.astro | 52 + .../ConfigOptions/backgroundPosition.astro | 22 + .../ConfigOptions/backgroundSize.astro | 22 + .../src/components/ConfigOptions/blur.astro | 39 + .../ConfigOptions/breakpoints.astro | 44 + .../components/ConfigOptions/brightness.astro | 23 + .../components/ConfigOptions/cacheDir.astro | 21 + .../components/ConfigOptions/content.astro | 22 + .../components/ConfigOptions/decoding.astro | 24 + .../ConfigOptions/fadeInTransition.astro | 45 + .../ConfigOptions/fallbackFormat.astro | 24 + .../src/components/ConfigOptions/fit.astro | 27 + .../components/ConfigOptions/flatten.astro | 23 + .../src/components/ConfigOptions/flip.astro | 23 + .../src/components/ConfigOptions/flop.astro | 23 + .../src/components/ConfigOptions/format.astro | 44 + .../ConfigOptions/formatOptions.astro | 274 + .../components/ConfigOptions/grayscale.astro | 25 + .../src/components/ConfigOptions/height.astro | 25 + .../src/components/ConfigOptions/hue.astro | 23 + .../ConfigOptions/includeSourceFormat.astro | 24 + .../src/components/ConfigOptions/invert.astro | 23 + .../src/components/ConfigOptions/kernel.astro | 23 + .../src/components/ConfigOptions/layout.astro | 40 + .../components/ConfigOptions/loading.astro | 24 + .../src/components/ConfigOptions/median.astro | 39 + .../components/ConfigOptions/normalize.astro | 23 + .../components/ConfigOptions/objectFit.astro | 23 + .../ConfigOptions/objectPosition.astro | 23 + .../ConfigOptions/placeholder.astro | 35 + .../components/ConfigOptions/position.astro | 28 + .../components/ConfigOptions/preload.astro | 25 + .../components/ConfigOptions/quality.astro | 27 + .../src/components/ConfigOptions/rotate.astro | 25 + .../components/ConfigOptions/saturation.astro | 23 + .../src/components/ConfigOptions/sizes.astro | 36 + .../src/components/ConfigOptions/src.astro | 53 + .../src/components/ConfigOptions/tag.astro | 22 + .../src/components/ConfigOptions/tint.astro | 23 + .../src/components/ConfigOptions/width.astro | 25 + .../src/components/Footer/AvatarList.astro | 176 + .../docs/src/components/Footer/Footer.astro | 16 + .../docs/src/components/HeadCommon.astro | 47 + .../docs/src/components/HeadSEO.astro | 52 + .../src/components/Header/AstroLogo.astro | 37 + .../docs/src/components/Header/Header.astro | 144 + .../src/components/Header/LanguageSelect.css | 50 + .../src/components/Header/LanguageSelect.tsx | 50 + .../docs/src/components/Header/Search.css | 81 + .../docs/src/components/Header/Search.tsx | 104 + .../src/components/Header/SidebarToggle.tsx | 45 + .../src/components/Header/SkipToContent.astro | 24 + .../components/LeftSidebar/LeftSidebar.astro | 130 + .../components/PageContent/PageContent.astro | 49 + .../components/RightSidebar/MoreMenu.astro | 74 + .../RightSidebar/RightSidebar.astro | 29 + .../RightSidebar/TableOfContents.tsx | 51 + .../RightSidebar/ThemeToggleButton.css | 37 + .../RightSidebar/ThemeToggleButton.tsx | 89 + packages/imagetools_3/docs/src/config.ts | 62 + packages/imagetools_3/docs/src/languages.ts | 10 + .../docs/src/layouts/MainLayout.astro | 147 + .../docs/src/pages/en/acknowledgements.md | 47 + .../docs/src/pages/en/api/importImage.mdx | 63 + .../pages/en/api/renderBackgroundImage.mdx | 59 + .../pages/en/api/renderBackgroundPicture.mdx | 45 + .../docs/src/pages/en/api/renderImg.mdx | 36 + .../docs/src/pages/en/api/renderPicture.mdx | 42 + .../docs/src/pages/en/components-and-apis.mdx | 251 + .../pages/en/components/BackgroundImage.mdx | 58 + .../pages/en/components/BackgroundPicture.mdx | 54 + .../docs/src/pages/en/components/Img.mdx | 25 + .../docs/src/pages/en/components/Picture.mdx | 34 + .../docs/src/pages/en/deprecations.mdx | 30 + .../src/pages/en/global-config-options.mdx | 76 + .../docs/src/pages/en/installation.mdx | 29 + .../docs/src/pages/en/introduction.mdx | 45 + .../docs/src/pages/en/markdown-images.mdx | 51 + .../imagetools_3/docs/src/pages/en/ssr.mdx | 80 + .../imagetools_3/docs/src/pages/en/usage.mdx | 99 + .../imagetools_3/docs/src/pages/index.astro | 5 + .../imagetools_3/docs/src/styles/index.css | 405 + .../imagetools_3/docs/src/styles/theme.css | 126 + packages/imagetools_3/docs/tsconfig.json | 12 + packages/imagetools_3/index.js | 3 + packages/imagetools_3/integration/index.js | 120 + .../integration/utils/saveAndCopyAsset.js | 46 + packages/imagetools_3/package.json | 67 + packages/imagetools_3/plugin/hooks/config.js | 19 + packages/imagetools_3/plugin/hooks/load.js | 195 + .../imagetools_3/plugin/hooks/transform.js | 62 + packages/imagetools_3/plugin/index.js | 88 + packages/imagetools_3/plugin/utils/cache.js | 17 + packages/imagetools_3/plugin/utils/codecs.js | 41 + .../imagetools_3/plugin/utils/imagetools.js | 26 + packages/imagetools_3/plugin/utils/shared.js | 47 + packages/imagetools_3/pnpm-lock.yaml | 8852 +++++++++++++++++ packages/imagetools_3/pnpm-workspace.yaml | 4 + packages/imagetools_3/ssr/index.d.ts | 6 + packages/imagetools_3/ssr/index.js | 27 + .../test-fixtures/getSrcPath/out/out.jpeg | Bin 0 -> 64835 bytes .../test-fixtures/getSrcPath/root.jpeg | Bin 0 -> 740194 bytes packages/imagetools_3/types.d.ts | 268 + packages/imagetools_3/utils/filterConfigs.js | 51 + .../imagetools_3/utils/filterConfigs.test.js | 100 + packages/imagetools_3/utils/printWarning.js | 57 + packages/imagetools_3/utils/runtimeChecks.js | 79 + .../imagetools_3/utils/runtimeChecks.test.ts | 36 + packages/imagetools_3/vitest.config.ts | 7 + packages/polymech/package.json | 3 +- .../polymech/src/utils/path-resolution.ts | 2 +- 501 files changed, 34067 insertions(+), 3511 deletions(-) create mode 100644 packages/imagetools/package-lock.json create mode 100644 packages/imagetools/tmp.html rename packages/{imagetools => imagetools_}/.eslintrc.js (100%) rename packages/{imagetools => imagetools_}/.github/workflows/ci.yml (100%) rename packages/{imagetools => imagetools_}/.gitignore (100%) create mode 100644 packages/imagetools_/.npmignore rename packages/{imagetools => imagetools_}/.npmrc (100%) rename packages/{imagetools => imagetools_}/.prettierignore (100%) rename packages/{imagetools => imagetools_}/.prettierrc (100%) rename packages/{imagetools => imagetools_}/LICENSE (100%) create mode 100644 packages/imagetools_/README.md create mode 100644 packages/imagetools_/api/importImage.d.ts create mode 100644 packages/imagetools_/api/importImage.js create mode 100644 packages/imagetools_/api/index.js create mode 100644 packages/imagetools_/api/renderBackgroundImage.d.ts create mode 100644 packages/imagetools_/api/renderBackgroundImage.js create mode 100644 packages/imagetools_/api/renderBackgroundPicture.d.ts create mode 100644 packages/imagetools_/api/renderBackgroundPicture.js create mode 100644 packages/imagetools_/api/renderImg.d.ts create mode 100644 packages/imagetools_/api/renderImg.js create mode 100644 packages/imagetools_/api/renderPicture.d.ts create mode 100644 packages/imagetools_/api/renderPicture.js create mode 100644 packages/imagetools_/api/utils/codecs.js create mode 100644 packages/imagetools_/api/utils/getArtDirectedImages.js create mode 100644 packages/imagetools_/api/utils/getAttributesString.js create mode 100644 packages/imagetools_/api/utils/getBackgroundStyles.js create mode 100644 packages/imagetools_/api/utils/getBreakpoints.js create mode 100644 packages/imagetools_/api/utils/getConfigOptions.js create mode 100644 packages/imagetools_/api/utils/getContainerElement.js create mode 100644 packages/imagetools_/api/utils/getFallbackImage.js create mode 100644 packages/imagetools_/api/utils/getFilteredProps.js create mode 100644 packages/imagetools_/api/utils/getFilteredProps.test.ts create mode 100644 packages/imagetools_/api/utils/getImage.js create mode 100644 packages/imagetools_/api/utils/getImageSources.js create mode 100644 packages/imagetools_/api/utils/getImgElement.js create mode 100644 packages/imagetools_/api/utils/getLayoutStyles.js create mode 100644 packages/imagetools_/api/utils/getLinkElement.js create mode 100644 packages/imagetools_/api/utils/getLinkElement.test.ts create mode 100644 packages/imagetools_/api/utils/getPictureElement.js create mode 100644 packages/imagetools_/api/utils/getProcessedImage.js create mode 100644 packages/imagetools_/api/utils/getResolvedSrc.js create mode 100644 packages/imagetools_/api/utils/getSrcPath.js create mode 100644 packages/imagetools_/api/utils/getSrcPath.test.ts create mode 100644 packages/imagetools_/api/utils/getSrcset.js create mode 100644 packages/imagetools_/api/utils/getStyleElement.js create mode 100644 packages/imagetools_/api/utils/imagetools.js create mode 100644 packages/imagetools_/api/utils/throwErrorIfUnsupported.js create mode 100644 packages/imagetools_/astroViteConfigs.js create mode 100644 packages/imagetools_/components/BackgroundImage.astro create mode 100644 packages/imagetools_/components/BackgroundPicture.astro create mode 100644 packages/imagetools_/components/Image.astro create mode 100644 packages/imagetools_/components/ImageSupportDetection.astro create mode 100644 packages/imagetools_/components/Img.astro create mode 100644 packages/imagetools_/components/Picture.astro create mode 100644 packages/imagetools_/components/index.js create mode 100644 packages/imagetools_/config.d.ts create mode 100644 packages/imagetools_/config.mjs rename packages/{imagetools => imagetools_}/demo/.npmrc (100%) rename packages/{imagetools => imagetools_}/demo/.stackblitzrc (100%) rename packages/{imagetools => imagetools_}/demo/README.md (100%) rename packages/{imagetools => imagetools_}/demo/astro-imagetools.config.mjs (100%) rename packages/{imagetools => imagetools_}/demo/astro.config.mjs (100%) rename packages/{imagetools => imagetools_}/demo/package.json (100%) rename packages/{imagetools => imagetools_}/demo/public/favicon.ico (100%) rename packages/{imagetools => imagetools_}/demo/public/images/public.jpeg (100%) rename packages/{imagetools => imagetools_}/demo/sandbox.config.json (100%) rename packages/{imagetools => imagetools_}/demo/src/env.d.ts (100%) rename packages/{imagetools => imagetools_}/demo/src/images/elva-480w-close-portrait.jpg (100%) rename packages/{imagetools => imagetools_}/demo/src/images/elva-800w.jpg (100%) rename packages/{imagetools => imagetools_}/demo/src/layouts/LayoutsLayout.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/layouts/MainLayout.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/layouts/PlaceholderLayout.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/api/renderBackgroundImage.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/api/renderBackgroundPicture.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/api/renderImg.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/api/renderPicture.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/components/BackgroundImage.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/components/BackgroundPicture.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/components/Img.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/components/Picture.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/index.md (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/layout/constrained.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/layout/fill.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/layout/fixed.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/layout/fullWidth.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/placeholder/blurred.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/placeholder/dominantColor.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/placeholder/none.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/pages/placeholder/tracedSVG.astro (100%) rename packages/{imagetools => imagetools_}/demo/src/styles/index.css (100%) rename packages/{imagetools => imagetools_}/docs/.npmrc (100%) rename packages/{imagetools => imagetools_}/docs/.stackblitzrc (100%) rename packages/{imagetools => imagetools_}/docs/README.md (100%) rename packages/{imagetools => imagetools_}/docs/astro.config.mjs (100%) rename packages/{imagetools => imagetools_}/docs/auto-imports.d.ts (100%) rename packages/{imagetools => imagetools_}/docs/package.json (100%) rename packages/{imagetools => imagetools_}/docs/public/default-og-image.png (100%) rename packages/{imagetools => imagetools_}/docs/public/favicon.ico (100%) rename packages/{imagetools => imagetools_}/docs/public/make-scrollable-code-focusable.js (100%) rename packages/{imagetools => imagetools_}/docs/sandbox.config.json (100%) rename packages/{imagetools => imagetools_}/docs/src/components/CodeExample.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/alt.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/artDirectives.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/aspect.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/assetFileNames.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/attributes.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/background.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/backgroundPosition.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/backgroundSize.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/blur.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/breakpoints.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/brightness.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/cacheDir.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/content.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/decoding.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/fadeInTransition.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/fallbackFormat.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/fit.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/flatten.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/flip.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/flop.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/format.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/formatOptions.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/grayscale.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/height.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/hue.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/includeSourceFormat.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/invert.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/kernel.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/layout.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/loading.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/median.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/normalize.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/objectFit.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/objectPosition.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/placeholder.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/position.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/preload.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/quality.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/rotate.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/saturation.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/sizes.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/src.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/tag.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/tint.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/ConfigOptions/width.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/Footer/AvatarList.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/Footer/Footer.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/HeadCommon.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/HeadSEO.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/Header/AstroLogo.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/Header/Header.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/Header/LanguageSelect.css (100%) rename packages/{imagetools => imagetools_}/docs/src/components/Header/LanguageSelect.tsx (100%) rename packages/{imagetools => imagetools_}/docs/src/components/Header/Search.css (100%) rename packages/{imagetools => imagetools_}/docs/src/components/Header/Search.tsx (100%) rename packages/{imagetools => imagetools_}/docs/src/components/Header/SidebarToggle.tsx (100%) rename packages/{imagetools => imagetools_}/docs/src/components/Header/SkipToContent.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/LeftSidebar/LeftSidebar.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/PageContent/PageContent.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/RightSidebar/MoreMenu.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/RightSidebar/RightSidebar.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/components/RightSidebar/TableOfContents.tsx (100%) rename packages/{imagetools => imagetools_}/docs/src/components/RightSidebar/ThemeToggleButton.css (100%) rename packages/{imagetools => imagetools_}/docs/src/components/RightSidebar/ThemeToggleButton.tsx (100%) rename packages/{imagetools => imagetools_}/docs/src/config.ts (100%) rename packages/{imagetools => imagetools_}/docs/src/languages.ts (100%) rename packages/{imagetools => imagetools_}/docs/src/layouts/MainLayout.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/acknowledgements.md (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/api/importImage.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/api/renderBackgroundImage.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/api/renderBackgroundPicture.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/api/renderImg.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/api/renderPicture.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/components-and-apis.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/components/BackgroundImage.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/components/BackgroundPicture.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/components/Img.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/components/Picture.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/deprecations.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/global-config-options.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/installation.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/introduction.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/markdown-images.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/ssr.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/en/usage.mdx (100%) rename packages/{imagetools => imagetools_}/docs/src/pages/index.astro (100%) rename packages/{imagetools => imagetools_}/docs/src/styles/index.css (100%) rename packages/{imagetools => imagetools_}/docs/src/styles/theme.css (100%) rename packages/{imagetools => imagetools_}/docs/tsconfig.json (100%) create mode 100644 packages/imagetools_/index.js create mode 100644 packages/imagetools_/integration/index.js create mode 100644 packages/imagetools_/integration/utils/saveAndCopyAsset.js create mode 100644 packages/imagetools_/package.json create mode 100644 packages/imagetools_/plugin/hooks/config.js create mode 100644 packages/imagetools_/plugin/hooks/load.js create mode 100644 packages/imagetools_/plugin/hooks/transform.js create mode 100644 packages/imagetools_/plugin/index.js create mode 100644 packages/imagetools_/plugin/utils/cache.js create mode 100644 packages/imagetools_/plugin/utils/codecs.js create mode 100644 packages/imagetools_/plugin/utils/imagetools.js create mode 100644 packages/imagetools_/plugin/utils/shared.js rename packages/{imagetools => imagetools_}/pnpm-lock.yaml (100%) rename packages/{imagetools => imagetools_}/pnpm-workspace.yaml (100%) create mode 100644 packages/imagetools_/ssr/index.d.ts create mode 100644 packages/imagetools_/ssr/index.js create mode 100644 packages/imagetools_/test-fixtures/getSrcPath/out/out.jpeg create mode 100644 packages/imagetools_/test-fixtures/getSrcPath/root.jpeg create mode 100644 packages/imagetools_/types.d.ts create mode 100644 packages/imagetools_/utils/filterConfigs.js create mode 100644 packages/imagetools_/utils/filterConfigs.test.js create mode 100644 packages/imagetools_/utils/printWarning.js create mode 100644 packages/imagetools_/utils/runtimeChecks.js create mode 100644 packages/imagetools_/utils/runtimeChecks.test.ts create mode 100644 packages/imagetools_/vitest.config.ts create mode 100644 packages/imagetools_3/.eslintrc.js create mode 100644 packages/imagetools_3/.github/workflows/ci.yml create mode 100644 packages/imagetools_3/.gitignore create mode 100644 packages/imagetools_3/.npmignore create mode 100644 packages/imagetools_3/.npmrc create mode 100644 packages/imagetools_3/.prettierignore create mode 100644 packages/imagetools_3/.prettierrc create mode 100644 packages/imagetools_3/LICENSE create mode 100644 packages/imagetools_3/README.md create mode 100644 packages/imagetools_3/api/importImage.d.ts create mode 100644 packages/imagetools_3/api/importImage.js create mode 100644 packages/imagetools_3/api/index.js create mode 100644 packages/imagetools_3/api/renderBackgroundImage.d.ts create mode 100644 packages/imagetools_3/api/renderBackgroundImage.js create mode 100644 packages/imagetools_3/api/renderBackgroundPicture.d.ts create mode 100644 packages/imagetools_3/api/renderBackgroundPicture.js create mode 100644 packages/imagetools_3/api/renderImg.d.ts create mode 100644 packages/imagetools_3/api/renderImg.js create mode 100644 packages/imagetools_3/api/renderPicture.d.ts create mode 100644 packages/imagetools_3/api/renderPicture.js create mode 100644 packages/imagetools_3/api/utils/codecs.js create mode 100644 packages/imagetools_3/api/utils/getArtDirectedImages.js create mode 100644 packages/imagetools_3/api/utils/getAttributesString.js create mode 100644 packages/imagetools_3/api/utils/getBackgroundStyles.js create mode 100644 packages/imagetools_3/api/utils/getBreakpoints.js create mode 100644 packages/imagetools_3/api/utils/getConfigOptions.js create mode 100644 packages/imagetools_3/api/utils/getContainerElement.js create mode 100644 packages/imagetools_3/api/utils/getFallbackImage.js create mode 100644 packages/imagetools_3/api/utils/getFilteredProps.js create mode 100644 packages/imagetools_3/api/utils/getFilteredProps.test.ts create mode 100644 packages/imagetools_3/api/utils/getImage.js create mode 100644 packages/imagetools_3/api/utils/getImageSources.js create mode 100644 packages/imagetools_3/api/utils/getImgElement.js create mode 100644 packages/imagetools_3/api/utils/getLayoutStyles.js create mode 100644 packages/imagetools_3/api/utils/getLinkElement.js create mode 100644 packages/imagetools_3/api/utils/getLinkElement.test.ts create mode 100644 packages/imagetools_3/api/utils/getPictureElement.js create mode 100644 packages/imagetools_3/api/utils/getProcessedImage.js create mode 100644 packages/imagetools_3/api/utils/getResolvedSrc.js create mode 100644 packages/imagetools_3/api/utils/getSrcPath.js create mode 100644 packages/imagetools_3/api/utils/getSrcPath.test.ts create mode 100644 packages/imagetools_3/api/utils/getSrcset.js create mode 100644 packages/imagetools_3/api/utils/getStyleElement.js create mode 100644 packages/imagetools_3/api/utils/imagetools.js create mode 100644 packages/imagetools_3/api/utils/throwErrorIfUnsupported.js create mode 100644 packages/imagetools_3/astroViteConfigs.js create mode 100644 packages/imagetools_3/components/BackgroundImage.astro create mode 100644 packages/imagetools_3/components/BackgroundPicture.astro create mode 100644 packages/imagetools_3/components/Image.astro create mode 100644 packages/imagetools_3/components/ImageSupportDetection.astro create mode 100644 packages/imagetools_3/components/Img.astro create mode 100644 packages/imagetools_3/components/Picture.astro create mode 100644 packages/imagetools_3/components/index.js create mode 100644 packages/imagetools_3/config.d.ts create mode 100644 packages/imagetools_3/config.mjs create mode 100644 packages/imagetools_3/demo/.npmrc create mode 100644 packages/imagetools_3/demo/.stackblitzrc create mode 100644 packages/imagetools_3/demo/README.md create mode 100644 packages/imagetools_3/demo/astro-imagetools.config.mjs create mode 100644 packages/imagetools_3/demo/astro.config.mjs create mode 100644 packages/imagetools_3/demo/package.json create mode 100644 packages/imagetools_3/demo/public/favicon.ico create mode 100644 packages/imagetools_3/demo/public/images/public.jpeg create mode 100644 packages/imagetools_3/demo/sandbox.config.json create mode 100644 packages/imagetools_3/demo/src/env.d.ts create mode 100644 packages/imagetools_3/demo/src/images/elva-480w-close-portrait.jpg create mode 100644 packages/imagetools_3/demo/src/images/elva-800w.jpg create mode 100644 packages/imagetools_3/demo/src/layouts/LayoutsLayout.astro create mode 100644 packages/imagetools_3/demo/src/layouts/MainLayout.astro create mode 100644 packages/imagetools_3/demo/src/layouts/PlaceholderLayout.astro create mode 100644 packages/imagetools_3/demo/src/pages/api/renderBackgroundImage.astro create mode 100644 packages/imagetools_3/demo/src/pages/api/renderBackgroundPicture.astro create mode 100644 packages/imagetools_3/demo/src/pages/api/renderImg.astro create mode 100644 packages/imagetools_3/demo/src/pages/api/renderPicture.astro create mode 100644 packages/imagetools_3/demo/src/pages/components/BackgroundImage.astro create mode 100644 packages/imagetools_3/demo/src/pages/components/BackgroundPicture.astro create mode 100644 packages/imagetools_3/demo/src/pages/components/Img.astro create mode 100644 packages/imagetools_3/demo/src/pages/components/Picture.astro create mode 100644 packages/imagetools_3/demo/src/pages/index.md create mode 100644 packages/imagetools_3/demo/src/pages/layout/constrained.astro create mode 100644 packages/imagetools_3/demo/src/pages/layout/fill.astro create mode 100644 packages/imagetools_3/demo/src/pages/layout/fixed.astro create mode 100644 packages/imagetools_3/demo/src/pages/layout/fullWidth.astro create mode 100644 packages/imagetools_3/demo/src/pages/placeholder/blurred.astro create mode 100644 packages/imagetools_3/demo/src/pages/placeholder/dominantColor.astro create mode 100644 packages/imagetools_3/demo/src/pages/placeholder/none.astro create mode 100644 packages/imagetools_3/demo/src/pages/placeholder/tracedSVG.astro create mode 100644 packages/imagetools_3/demo/src/styles/index.css create mode 100644 packages/imagetools_3/docs/.npmrc create mode 100644 packages/imagetools_3/docs/.stackblitzrc create mode 100644 packages/imagetools_3/docs/README.md create mode 100644 packages/imagetools_3/docs/astro.config.mjs create mode 100644 packages/imagetools_3/docs/auto-imports.d.ts create mode 100644 packages/imagetools_3/docs/package.json create mode 100644 packages/imagetools_3/docs/public/default-og-image.png create mode 100644 packages/imagetools_3/docs/public/favicon.ico create mode 100644 packages/imagetools_3/docs/public/make-scrollable-code-focusable.js create mode 100644 packages/imagetools_3/docs/sandbox.config.json create mode 100644 packages/imagetools_3/docs/src/components/CodeExample.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/alt.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/artDirectives.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/aspect.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/assetFileNames.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/attributes.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/background.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/backgroundPosition.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/backgroundSize.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/blur.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/breakpoints.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/brightness.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/cacheDir.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/content.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/decoding.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/fadeInTransition.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/fallbackFormat.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/fit.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/flatten.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/flip.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/flop.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/format.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/formatOptions.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/grayscale.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/height.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/hue.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/includeSourceFormat.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/invert.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/kernel.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/layout.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/loading.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/median.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/normalize.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/objectFit.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/objectPosition.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/placeholder.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/position.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/preload.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/quality.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/rotate.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/saturation.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/sizes.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/src.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/tag.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/tint.astro create mode 100644 packages/imagetools_3/docs/src/components/ConfigOptions/width.astro create mode 100644 packages/imagetools_3/docs/src/components/Footer/AvatarList.astro create mode 100644 packages/imagetools_3/docs/src/components/Footer/Footer.astro create mode 100644 packages/imagetools_3/docs/src/components/HeadCommon.astro create mode 100644 packages/imagetools_3/docs/src/components/HeadSEO.astro create mode 100644 packages/imagetools_3/docs/src/components/Header/AstroLogo.astro create mode 100644 packages/imagetools_3/docs/src/components/Header/Header.astro create mode 100644 packages/imagetools_3/docs/src/components/Header/LanguageSelect.css create mode 100644 packages/imagetools_3/docs/src/components/Header/LanguageSelect.tsx create mode 100644 packages/imagetools_3/docs/src/components/Header/Search.css create mode 100644 packages/imagetools_3/docs/src/components/Header/Search.tsx create mode 100644 packages/imagetools_3/docs/src/components/Header/SidebarToggle.tsx create mode 100644 packages/imagetools_3/docs/src/components/Header/SkipToContent.astro create mode 100644 packages/imagetools_3/docs/src/components/LeftSidebar/LeftSidebar.astro create mode 100644 packages/imagetools_3/docs/src/components/PageContent/PageContent.astro create mode 100644 packages/imagetools_3/docs/src/components/RightSidebar/MoreMenu.astro create mode 100644 packages/imagetools_3/docs/src/components/RightSidebar/RightSidebar.astro create mode 100644 packages/imagetools_3/docs/src/components/RightSidebar/TableOfContents.tsx create mode 100644 packages/imagetools_3/docs/src/components/RightSidebar/ThemeToggleButton.css create mode 100644 packages/imagetools_3/docs/src/components/RightSidebar/ThemeToggleButton.tsx create mode 100644 packages/imagetools_3/docs/src/config.ts create mode 100644 packages/imagetools_3/docs/src/languages.ts create mode 100644 packages/imagetools_3/docs/src/layouts/MainLayout.astro create mode 100644 packages/imagetools_3/docs/src/pages/en/acknowledgements.md create mode 100644 packages/imagetools_3/docs/src/pages/en/api/importImage.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/api/renderBackgroundImage.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/api/renderBackgroundPicture.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/api/renderImg.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/api/renderPicture.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/components-and-apis.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/components/BackgroundImage.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/components/BackgroundPicture.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/components/Img.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/components/Picture.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/deprecations.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/global-config-options.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/installation.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/introduction.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/markdown-images.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/ssr.mdx create mode 100644 packages/imagetools_3/docs/src/pages/en/usage.mdx create mode 100644 packages/imagetools_3/docs/src/pages/index.astro create mode 100644 packages/imagetools_3/docs/src/styles/index.css create mode 100644 packages/imagetools_3/docs/src/styles/theme.css create mode 100644 packages/imagetools_3/docs/tsconfig.json create mode 100644 packages/imagetools_3/index.js create mode 100644 packages/imagetools_3/integration/index.js create mode 100644 packages/imagetools_3/integration/utils/saveAndCopyAsset.js create mode 100644 packages/imagetools_3/package.json create mode 100644 packages/imagetools_3/plugin/hooks/config.js create mode 100644 packages/imagetools_3/plugin/hooks/load.js create mode 100644 packages/imagetools_3/plugin/hooks/transform.js create mode 100644 packages/imagetools_3/plugin/index.js create mode 100644 packages/imagetools_3/plugin/utils/cache.js create mode 100644 packages/imagetools_3/plugin/utils/codecs.js create mode 100644 packages/imagetools_3/plugin/utils/imagetools.js create mode 100644 packages/imagetools_3/plugin/utils/shared.js create mode 100644 packages/imagetools_3/pnpm-lock.yaml create mode 100644 packages/imagetools_3/pnpm-workspace.yaml create mode 100644 packages/imagetools_3/ssr/index.d.ts create mode 100644 packages/imagetools_3/ssr/index.js create mode 100644 packages/imagetools_3/test-fixtures/getSrcPath/out/out.jpeg create mode 100644 packages/imagetools_3/test-fixtures/getSrcPath/root.jpeg create mode 100644 packages/imagetools_3/types.d.ts create mode 100644 packages/imagetools_3/utils/filterConfigs.js create mode 100644 packages/imagetools_3/utils/filterConfigs.test.js create mode 100644 packages/imagetools_3/utils/printWarning.js create mode 100644 packages/imagetools_3/utils/runtimeChecks.js create mode 100644 packages/imagetools_3/utils/runtimeChecks.test.ts create mode 100644 packages/imagetools_3/vitest.config.ts diff --git a/packages/domain-expansion/package/src/contextTracking.ts b/packages/domain-expansion/package/src/contextTracking.ts index d84471b..04c1668 100644 --- a/packages/domain-expansion/package/src/contextTracking.ts +++ b/packages/domain-expansion/package/src/contextTracking.ts @@ -94,6 +94,7 @@ export function getCurrentContext(): ContextTracking | undefined { const assetTrackingSym = Symbol.for('@domain-expansion:astro-asset-tracking'); (globalThis as any)[assetTrackingSym] = (original: typeof getImage): typeof getImage => { debug('Assigning original getImage, skipping wrapper'); + debugger runtime.getImage = original; return original; }; diff --git a/packages/imagetools/.npmignore b/packages/imagetools/.npmignore index 4f257ea..77b2318 100644 --- a/packages/imagetools/.npmignore +++ b/packages/imagetools/.npmignore @@ -1,4 +1,4 @@ -*.test.ts -test-fixtures -astroViteConfigs.js -vitest.config.ts +*.test.ts +test-fixtures +astroViteConfigs.js +vitest.config.ts diff --git a/packages/imagetools/README.md b/packages/imagetools/README.md index eda0dbe..5168cf7 100644 --- a/packages/imagetools/README.md +++ b/packages/imagetools/README.md @@ -1,39 +1,39 @@ -# **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. 🧑‍🚀 +# **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 index bb0bb97..96e6f95 100644 --- a/packages/imagetools/api/importImage.d.ts +++ b/packages/imagetools/api/importImage.d.ts @@ -1 +1 @@ -export default function importImage(url: string): Promise; +export default function importImage(url: string): Promise; diff --git a/packages/imagetools/api/importImage.js b/packages/imagetools/api/importImage.js index b22ca0b..d50b2de 100644 --- a/packages/imagetools/api/importImage.js +++ b/packages/imagetools/api/importImage.js @@ -1,23 +1,23 @@ -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; - } -} +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 index 062d6ad..6096b59 100644 --- a/packages/imagetools/api/index.js +++ b/packages/imagetools/api/index.js @@ -1,6 +1,6 @@ -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 +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 index e7e601b..af6a45a 100644 --- a/packages/imagetools/api/renderBackgroundImage.d.ts +++ b/packages/imagetools/api/renderBackgroundImage.d.ts @@ -1,8 +1,8 @@ -import type { - BackgroundImageConfigOptions, - BackgroundImageHTMLData, -} from "../types"; - -export default function renderBackgroundImage( - config: BackgroundImageConfigOptions -): Promise; +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 index f56b308..8c30baf 100644 --- a/packages/imagetools/api/renderBackgroundImage.js +++ b/packages/imagetools/api/renderBackgroundImage.js @@ -1,159 +1,156 @@ -// @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 }; -} +// @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 index a566421..c38de62 100644 --- a/packages/imagetools/api/renderBackgroundPicture.d.ts +++ b/packages/imagetools/api/renderBackgroundPicture.d.ts @@ -1,8 +1,8 @@ -import type { - BackgroundPictureConfigOptions, - BackgroundPictureHTMLData, -} from "../types"; - -export default function renderBackgroundPicture( - config: BackgroundPictureConfigOptions -): Promise; +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 index 1eea4e1..605f935 100644 --- a/packages/imagetools/api/renderBackgroundPicture.js +++ b/packages/imagetools/api/renderBackgroundPicture.js @@ -1,127 +1,127 @@ -// @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 }; -} +// @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 index abbc304..338ef90 100644 --- a/packages/imagetools/api/renderImg.d.ts +++ b/packages/imagetools/api/renderImg.d.ts @@ -1,5 +1,5 @@ -import type { ImgConfigOptions, ImgHTMLData } from "../types"; - -export default function renderImg( - config: ImgConfigOptions -): Promise; +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 index 3bc2bf3..31fb130 100644 --- a/packages/imagetools/api/renderImg.js +++ b/packages/imagetools/api/renderImg.js @@ -1,93 +1,93 @@ -// @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 } -} +// @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 index 54ccfe5..a0fc9c3 100644 --- a/packages/imagetools/api/renderPicture.d.ts +++ b/packages/imagetools/api/renderPicture.d.ts @@ -1,5 +1,5 @@ -import type { PictureConfigOptions, PictureHTMLData } from "../types"; - -export default function renderPicture( - config: PictureConfigOptions -): Promise; +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 index 8a98d1c..84fc7c9 100644 --- a/packages/imagetools/api/renderPicture.js +++ b/packages/imagetools/api/renderPicture.js @@ -1,111 +1,106 @@ -// @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 }; -} +// @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 index 8f72571..8dfb21d 100644 --- a/packages/imagetools/api/utils/codecs.js +++ b/packages/imagetools/api/utils/codecs.js @@ -1,38 +1,36 @@ -// @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, - }; -} +// @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 index 1f7c073..ca23e50 100644 --- a/packages/imagetools/api/utils/getArtDirectedImages.js +++ b/packages/imagetools/api/utils/getArtDirectedImages.js @@ -1,137 +1,137 @@ -// @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; -} +// @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 index e9bd1c1..22975e5 100644 --- a/packages/imagetools/api/utils/getAttributesString.js +++ b/packages/imagetools/api/utils/getAttributesString.js @@ -1,27 +1,27 @@ -// @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; -} +// @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 index 111233c..fff3ad3 100644 --- a/packages/imagetools/api/utils/getBackgroundStyles.js +++ b/packages/imagetools/api/utils/getBackgroundStyles.js @@ -1,97 +1,97 @@ -// @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; -} +// @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 index 02a098e..edfb827 100644 --- a/packages/imagetools/api/utils/getBreakpoints.js +++ b/packages/imagetools/api/utils/getBreakpoints.js @@ -1,77 +1,77 @@ -// @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)]; -} +// @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 index 3b3797d..16220e5 100644 --- a/packages/imagetools/api/utils/getConfigOptions.js +++ b/packages/imagetools/api/utils/getConfigOptions.js @@ -1,34 +1,34 @@ -// @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, - }; -} +// @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 index 9c5b710..8ae04d6 100644 --- a/packages/imagetools/api/utils/getContainerElement.js +++ b/packages/imagetools/api/utils/getContainerElement.js @@ -1,48 +1,48 @@ -// @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; -} +// @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 index b085286..91d1fad 100644 --- a/packages/imagetools/api/utils/getFallbackImage.js +++ b/packages/imagetools/api/utils/getFallbackImage.js @@ -1,58 +1,58 @@ -// @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; - } -} +// @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 index 9c791ba..4d9d7f0 100644 --- a/packages/imagetools/api/utils/getFilteredProps.js +++ b/packages/imagetools/api/utils/getFilteredProps.js @@ -1,138 +1,138 @@ -// @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, - }; -} +// @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 index 7b8f20c..cdca949 100644 --- a/packages/imagetools/api/utils/getFilteredProps.test.ts +++ b/packages/imagetools/api/utils/getFilteredProps.test.ts @@ -1,49 +1,49 @@ -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: "", - }, - }); - }); -}); +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 index b2ad3c9..21865ea 100644 --- a/packages/imagetools/api/utils/getImage.js +++ b/packages/imagetools/api/utils/getImage.js @@ -1,108 +1,80 @@ -// @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; - } -} +// @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 index d0dca00..7a728e4 100644 --- a/packages/imagetools/api/utils/getImageSources.js +++ b/packages/imagetools/api/utils/getImageSources.js @@ -1,91 +1,74 @@ -// @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 }; - } -} +// @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 index fea4109..a119a5f 100644 --- a/packages/imagetools/api/utils/getImgElement.js +++ b/packages/imagetools/api/utils/getImgElement.js @@ -1,80 +1,80 @@ -// @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; -} +// @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 index efa6d96..296c6d1 100644 --- a/packages/imagetools/api/utils/getLayoutStyles.js +++ b/packages/imagetools/api/utils/getLayoutStyles.js @@ -1,16 +1,9 @@ -// @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;"; -} +// @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 index 2fcfb7a..ad2a1aa 100644 --- a/packages/imagetools/api/utils/getLinkElement.js +++ b/packages/imagetools/api/utils/getLinkElement.js @@ -1,34 +1,34 @@ -// @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; -} +// @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 index 83d435a..ead19e4 100644 --- a/packages/imagetools/api/utils/getLinkElement.test.ts +++ b/packages/imagetools/api/utils/getLinkElement.test.ts @@ -1,14 +1,14 @@ -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(""); - }); -}); +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 index b0d62c3..ba18092 100644 --- a/packages/imagetools/api/utils/getPictureElement.js +++ b/packages/imagetools/api/utils/getPictureElement.js @@ -1,43 +1,43 @@ -// @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; -} +// @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 index 98eae1d..ec6f619 100644 --- a/packages/imagetools/api/utils/getProcessedImage.js +++ b/packages/imagetools/api/utils/getProcessedImage.js @@ -1,63 +1,52 @@ -// @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, - }; -} +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 index 548a59c..befa7e3 100644 --- a/packages/imagetools/api/utils/getResolvedSrc.js +++ b/packages/imagetools/api/utils/getResolvedSrc.js @@ -1,87 +1,45 @@ -// @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 }; -} +// @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 index 3a7a7da..8878956 100644 --- a/packages/imagetools/api/utils/getSrcPath.js +++ b/packages/imagetools/api/utils/getSrcPath.js @@ -1,32 +1,32 @@ -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; -} +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 index bb267dd..0dec2ce 100644 --- a/packages/imagetools/api/utils/getSrcPath.test.ts +++ b/packages/imagetools/api/utils/getSrcPath.test.ts @@ -1,67 +1,67 @@ -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")); - }); -}); +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 index ac290a9..6bc3991 100644 --- a/packages/imagetools/api/utils/getSrcset.js +++ b/packages/imagetools/api/utils/getSrcset.js @@ -1,45 +1,39 @@ -// @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; -} +// @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 index 30ad4d7..1c1c19c 100644 --- a/packages/imagetools/api/utils/getStyleElement.js +++ b/packages/imagetools/api/utils/getStyleElement.js @@ -1,15 +1,15 @@ -// @ts-check -import getAttributesString from "./getAttributesString.js"; - -export default function getStyleElement({ - styleAttributes, - backgroundStyles = "", -}) { - const attributesString = getAttributesString({ - attributes: styleAttributes, - }); - - const styleElement = ``; - - return styleElement; -} +// @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 index 530abd1..c3d89c3 100644 --- a/packages/imagetools/api/utils/imagetools.js +++ b/packages/imagetools/api/utils/imagetools.js @@ -1,40 +1,41 @@ -// @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 }; -} +// @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 index 581ca16..730f47e 100644 --- a/packages/imagetools/api/utils/throwErrorIfUnsupported.js +++ b/packages/imagetools/api/utils/throwErrorIfUnsupported.js @@ -1,14 +1,14 @@ -// @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` - ); - } -} +// @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/components/BackgroundImage.astro b/packages/imagetools/components/BackgroundImage.astro index 47d2b44..9ae417a 100644 --- a/packages/imagetools/components/BackgroundImage.astro +++ b/packages/imagetools/components/BackgroundImage.astro @@ -1,46 +1,46 @@ ---- -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), -}); ---- - - - - +--- +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 index a53bab8..0919dcb 100644 --- a/packages/imagetools/components/BackgroundPicture.astro +++ b/packages/imagetools/components/BackgroundPicture.astro @@ -1,19 +1,19 @@ ---- -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), -}); ---- - - +--- +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 index d2d547a..28eda36 100644 --- a/packages/imagetools/components/Image.astro +++ b/packages/imagetools/components/Image.astro @@ -1,10 +1,8 @@ ---- -import renderImage from "../api/renderImage.js"; -import type { PictureConfigOptions as ImageConfigOptions } from "../types.d"; - -const { link, style, image } = await renderImage( - Astro.props as ImageConfigOptions -); ---- - - +--- +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 index 9e62ae7..2ddddf8 100644 --- a/packages/imagetools/components/ImageSupportDetection.astro +++ b/packages/imagetools/components/ImageSupportDetection.astro @@ -1,4 +1,4 @@ - - + + diff --git a/packages/imagetools/components/Img.astro b/packages/imagetools/components/Img.astro index 4f3198d..21e573c 100644 --- a/packages/imagetools/components/Img.astro +++ b/packages/imagetools/components/Img.astro @@ -1,7 +1,10 @@ ---- -import renderImg from "../api/renderImg.js" -import type { ImgConfigOptions } from "../types.d" -declare interface Props extends ImgConfigOptions {} -const { link, style, img } = await renderImg(Astro.props as Props) ---- - +--- +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 index 737bd77..54f2e09 100644 --- a/packages/imagetools/components/Picture.astro +++ b/packages/imagetools/components/Picture.astro @@ -1,10 +1,7 @@ ---- -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); ---- - - +--- +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 index a6c6389..e639c8f 100644 --- a/packages/imagetools/components/index.js +++ b/packages/imagetools/components/index.js @@ -1,5 +1,5 @@ -export { default as Img } from "./Img.astro"; -export { default as Picture } from "./Picture.astro"; -export { default as BackgroundImage } from "./BackgroundImage.astro"; -export { default as BackgroundPicture } from "./BackgroundPicture.astro"; -export { default as ImageSupportDetection } from "./ImageSupportDetection.astro"; +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 index 8569ca9..77d6b73 100644 --- a/packages/imagetools/config.d.ts +++ b/packages/imagetools/config.d.ts @@ -1,3 +1,3 @@ -import type { GlobalConfigOptions } from "./types"; - -export function defineConfig(config: GlobalConfigOptions): GlobalConfigOptions; +import type { GlobalConfigOptions } from "./types"; + +export function defineConfig(config: GlobalConfigOptions): GlobalConfigOptions; diff --git a/packages/imagetools/config.mjs b/packages/imagetools/config.mjs index 64a4c49..0059b4a 100644 --- a/packages/imagetools/config.mjs +++ b/packages/imagetools/config.mjs @@ -1,3 +1,3 @@ -export function defineConfig(config) { - return config; -} +export function defineConfig(config) { + return config; +} diff --git a/packages/imagetools/index.js b/packages/imagetools/index.js index b5e1b78..44b179a 100644 --- a/packages/imagetools/index.js +++ b/packages/imagetools/index.js @@ -1,3 +1,2 @@ -import astroImageTools from "./integration/index.js"; - -export { astroImageTools as imagetools } +import imagetools from "./integration/index.js" +export { imagetools } diff --git a/packages/imagetools/integration/index.js b/packages/imagetools/integration/index.js index 3a22fe3..ecf601e 100644 --- a/packages/imagetools/integration/index.js +++ b/packages/imagetools/integration/index.js @@ -1,116 +1,79 @@ -// @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"; - - 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( - "../astroViteConfigs.js" - ); - const { mode, outDir, assetsDir, isSsrBuild } = astroViteConfigs; - if (mode === "build") { - const allEntries = [...store.entries()]; - const assetPaths = allEntries.filter( - ([, { hash = null } = {}]) => hash - ); - 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 () => { - console.log(`[imagetools] Saving and copying asset ${assetPath}`); - await saveAndCopyAsset( - hash, - image, - buffer, - outDir, - assetsDir, - assetPath, - isSsrBuild - ); - - console.log(`[imagetools] Saved and copied asset ${assetPath}`); - - // }); - } 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 } - ); - } - }, - }, -}; +// @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 index f075377..a4d9a74 100644 --- a/packages/imagetools/integration/utils/saveAndCopyAsset.js +++ b/packages/imagetools/integration/utils/saveAndCopyAsset.js @@ -1,46 +1,46 @@ -import fs from "node:fs/promises"; -import { posix as path } from "node:path"; -import { fsCachePath } from "../../utils/runtimeChecks.js"; - -const copied = []; -let assetsDirExists; - -export async function saveAndCopyAsset( - hash, - image, - buffer, - outDir, - assetsDir, - assetPath, - isSsrBuild -) { - const src = fsCachePath + hash; - - const dest = path.join(outDir, isSsrBuild ? "/client" : "", assetPath); - - assetsDir = path.join(outDir, isSsrBuild ? "/client" : "/", assetsDir); - - if (copied.includes(assetPath)) return; - - if (!assetsDirExists) { - await fs.mkdir(assetsDir, { - recursive: true, - }); - - assetsDirExists = true; - } - - await fs.copyFile(src, dest).catch(async (error) => { - if (error.code === "ENOENT") { - const imageBuffer = buffer || (await image.toBuffer()); - - await Promise.all( - [src, dest].map(async (dir) => { - await fs.writeFile(dir, imageBuffer); - }) - ); - } else throw error; - }); - - copied.push(assetPath); -} +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 new file mode 100644 index 0000000..0897b85 --- /dev/null +++ b/packages/imagetools/package-lock.json @@ -0,0 +1,8838 @@ +{ + "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 index 1ef0c22..75eeca8 100644 --- a/packages/imagetools/package.json +++ b/packages/imagetools/package.json @@ -1,66 +1,69 @@ -{ - "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", - "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" - } -} +{ + "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 index 0562971..2a0070f 100644 --- a/packages/imagetools/plugin/hooks/config.js +++ b/packages/imagetools/plugin/hooks/config.js @@ -1,19 +1,19 @@ -// @ts-check - -export default function config() { - return { - optimizeDeps: { - exclude: ["@astropub/codecs", "imagetools-core", "sharp"], - }, - ssr: { - external: [ - "sharp", - "potrace", - "file-type", - "object-hash", - "find-cache-dir", - "@astropub/codecs", - ], - }, - }; -} +// @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 index d19633f..635f788 100644 --- a/packages/imagetools/plugin/hooks/load.js +++ b/packages/imagetools/plugin/hooks/load.js @@ -1,195 +1,151 @@ -// @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 === "build") { - // 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 === "build") { - /* - 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}"`; - } -} +// @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 index 5851419..4fde891 100644 --- a/packages/imagetools/plugin/hooks/transform.js +++ b/packages/imagetools/plugin/hooks/transform.js @@ -1,62 +1,63 @@ -// @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, - }; - } - } -} +// @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 index f45f36f..2f1a028 100644 --- a/packages/imagetools/plugin/index.js +++ b/packages/imagetools/plugin/index.js @@ -1,88 +1,86 @@ -// @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; +// @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 index 1e0ff86..bc626db 100644 --- a/packages/imagetools/plugin/utils/cache.js +++ b/packages/imagetools/plugin/utils/cache.js @@ -1,19 +1,13 @@ -// @ts-check -import fs from "node:fs"; -import { fsCachePath } from "../../utils/runtimeChecks.js"; - -export async function getCachedBuffer(hash, image) { - const cacheFilePath = fsCachePath + hash; - - // console.log(`[imagetools-cache getCachedBuffer] Cache hit for ${cacheFilePath}`); - - if (fs.existsSync(cacheFilePath)) { - return fs.promises.readFile(cacheFilePath); - } - - const buffer = await image.clone().toBuffer(); - - await fs.promises.writeFile(cacheFilePath, buffer); - - return buffer; -} +// @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 index 1476e94..fcac5e4 100644 --- a/packages/imagetools/plugin/utils/codecs.js +++ b/packages/imagetools/plugin/utils/codecs.js @@ -1,41 +1,41 @@ -// @ts-check -import fs from "node:fs"; -import * as codecs from "@astropub/codecs"; - -const resizedImages = new Map(); - -export const getLoadedImage = async (src, ext) => { - const buffer = fs.readFileSync(src); - - const image = await codecs[ext].decode(buffer); - - const { width } = image; - - const resizedImageKey = `${src}@${image.width}`; - - resizedImages.set(resizedImageKey, image); - - return { image, width }; -}; - -export const getTransformedImage = async ({ src, image, config, type }) => { - const { width, format, quality } = config; - - const resizedImageKey = `${src}@${width}`; - - const resizedImage = - resizedImages.get(resizedImageKey) || - resizedImages - .set(resizedImageKey, await image.resize({ width })) - .get(resizedImageKey); - - const encodedImage = quality - ? await codecs[format].encode(resizedImage, { - quality: parseInt(quality), - }) - : await resizedImage.encode(type); - - const buffer = Buffer.from(encodedImage.data); - - return { image, buffer }; -}; +// @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 index f969207..172dffa 100644 --- a/packages/imagetools/plugin/utils/imagetools.js +++ b/packages/imagetools/plugin/utils/imagetools.js @@ -1,26 +1,26 @@ -// @ts-check -import { - builtins, - loadImage, - applyTransforms, - generateTransforms, -} from "imagetools-core"; - -export const getLoadedImage = async (src) => { - const image = loadImage(src); - - const { width } = await image.metadata(); - - return { image, width }; -}; - -export const getTransformedImage = async ({ image, config }) => { - const { transforms } = generateTransforms(config, builtins); - - const { image: encodedImage } = await applyTransforms( - transforms, - image.clone() - ); - - return { image: encodedImage, buffer: null }; -}; +// @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 index bac7c05..ccecced 100644 --- a/packages/imagetools/plugin/utils/shared.js +++ b/packages/imagetools/plugin/utils/shared.js @@ -1,47 +1,47 @@ -// @ts-check - -export function getConfigOptions(config, ext, imageWidth) { - const { w, width = w, format = ext, base64, raw, inline, ...rest } = config; - - const imageFormat = format === "jpeg" ? "jpg" : format; - - const widths = width - ? width.split(";").map((w) => parseInt(w)) - : [imageWidth]; - - const extension = format === "jpg" ? "jpeg" : format; - const type = `image/${extension}`; - - const options = { - format: imageFormat, - ...rest, - }; - - return { - type, - widths, - options, - extension, - raw: typeof raw === "string", - inline: typeof base64 === "string" || typeof inline === "string", - }; -} - -export function getAssetPath(base, assetFileNames, ext, width, hash) { - const regexExecArray = /(?<=\[hash:)\d+(?=\])/g.exec(assetFileNames), - hashLength = regexExecArray ? regexExecArray[0] : 8, - extname = `.${ext}`, - name = base; - - width = width + "w"; - hash = hash.slice(0, hashLength); - - const assetPath = assetFileNames - .replace("[name]", name) - .replace("[width]", width) - .replace(regexExecArray ? `[hash:${hashLength}]` : "[hash]", hash) - .replace("[ext]", ext) - .replace("[extname]", extname); - - return assetPath; -} +// @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 index 87ae242..f5786d1 100644 --- a/packages/imagetools/ssr/index.d.ts +++ b/packages/imagetools/ssr/index.d.ts @@ -1,6 +1,6 @@ -import type { IncomingMessage, ServerResponse } from "http"; - -export function middleware( - request: IncomingMessage, - response: ServerResponse -): Buffer; +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 index f25f02e..f76c2f2 100644 --- a/packages/imagetools/ssr/index.js +++ b/packages/imagetools/ssr/index.js @@ -1,27 +1,16 @@ -// @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)); - } -} +// @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/tmp.html b/packages/imagetools/tmp.html new file mode 100644 index 0000000..d2b5bfa --- /dev/null +++ b/packages/imagetools/tmp.html @@ -0,0 +1,14 @@ +Sheetpress Cassandra - EDC450 \ No newline at end of file diff --git a/packages/imagetools/types.d.ts b/packages/imagetools/types.d.ts index d44c18c..f062d91 100644 --- a/packages/imagetools/types.d.ts +++ b/packages/imagetools/types.d.ts @@ -1,268 +1,269 @@ -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; +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 index 1fd64da..3766548 100644 --- a/packages/imagetools/utils/filterConfigs.js +++ b/packages/imagetools/utils/filterConfigs.js @@ -1,51 +1,49 @@ -// @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); -} +// @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 index d3d5100..c9e3124 100644 --- a/packages/imagetools/utils/filterConfigs.test.js +++ b/packages/imagetools/utils/filterConfigs.test.js @@ -1,100 +1,100 @@ -import { describe, expect, afterAll, it, vi, beforeEach } from "vitest"; -import { supportedConfigs } from "./runtimeChecks"; -import filterConfigs from "./filterConfigs"; -import printWarning from "./printWarning.js"; - -// Workaround for https://github.com/vitest-dev/vitest/issues/855 -vi.mock("./printWarning.js", async () => { - return { default: vi.fn() }; -}); - -const warningSpy = vi.mocked(printWarning); - -describe("filterConfigs", () => { - beforeEach(() => { - warningSpy.mockReset(); - }); - afterAll(() => { - vi.unmock("./printWarning.js"); - }); - - it("should require a `src` attribute for all components", () => { - expect(() => { - filterConfigs("Img", { alt: "" }, supportedConfigs); - }).toThrowError('The "src" property is required by Img'); - expect(() => { - filterConfigs("Picture", { alt: "" }, supportedConfigs); - }).toThrowError('The "src" property is required by Picture'); - expect(() => { - filterConfigs("BackgroundImage", {}, supportedConfigs); - }).toThrowError('The "src" property is required by BackgroundImage'); - expect(() => { - filterConfigs("BackgroundPicture", {}, supportedConfigs); - }).toThrowError('The "src" property is required by BackgroundPicture'); - expect(() => { - filterConfigs("Global", {}, supportedConfigs); - }).not.toThrowError(); - }); - - it("should require an `alt` attribute for Picture and Img, but not others", () => { - expect(() => { - filterConfigs("Img", { src: "src" }, supportedConfigs); - }).toThrowError('The "alt" property is required by Img'); - expect(() => { - filterConfigs("Picture", { src: "src" }, supportedConfigs); - }).toThrowError('The "alt" property is required by Picture'); - expect(() => { - filterConfigs("BackgroundImage", { src: "src" }, supportedConfigs); - }).not.toThrowError(); - expect(() => { - filterConfigs("BackgroundPicture", { src: "src" }, supportedConfigs); - }).not.toThrowError(); - expect(() => { - filterConfigs("Global", {}, supportedConfigs); - }).not.toThrowError(); - }); - - it("should remove unsupported configs", () => { - const filteredConfig = filterConfigs("Global", { foo: "foo" }, [], { - warn: false, - }); - const filteredConfigFooSupported = filterConfigs( - "Global", - { foo: "foo" }, - ["foo"], - { - warn: false, - } - ); - expect(filteredConfig).not.toContain({ foo: "foo" }); - expect(filteredConfigFooSupported).toContain({ foo: "foo" }); - }); - - it("should warn about unsupported configs", () => { - filterConfigs("Global", { foo: "foo" }, []); - expect(warningSpy).toHaveBeenCalledWith({ type: "Global", key: "foo" }); - }); - - it("should warn about unsupported 'class' config", () => { - filterConfigs( - "Img", - { class: "astro-ASDF1234 my-class", src: "src", alt: "" }, - supportedConfigs - ); - expect(warningSpy).toHaveBeenCalledWith({ - message: - 'Do not provide a "class" directly to Img. Instead, use attributes: https://astro-imagetools-docs.vercel.app/en/components/Img#attributes', - }); - }); - - it("should not warn about astro-generated 'class' config", () => { - const filteredConfig = filterConfigs( - "Img", - { class: "astro-ASDF1234", src: "src", alt: "" }, - supportedConfigs - ); - expect(warningSpy).not.toHaveBeenCalled(); - // class is still stripped out - expect(filteredConfig).not.toContain({ class: "astro-ASDF1234" }); - }); -}); +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 index efeac3d..7a7944d 100644 --- a/packages/imagetools/utils/printWarning.js +++ b/packages/imagetools/utils/printWarning.js @@ -1,57 +1,57 @@ -// @ts-check - -const colours = { - reset: "\x1b[0m", - bright: "\x1b[1m", - dim: "\x1b[2m", - underscore: "\x1b[4m", - blink: "\x1b[5m", - reverse: "\x1b[7m", - hidden: "\x1b[8m", - - fg: { - black: "\x1b[30m", - red: "\x1b[31m", - green: "\x1b[32m", - yellow: "\x1b[33m", - blue: "\x1b[34m", - magenta: "\x1b[35m", - cyan: "\x1b[36m", - white: "\x1b[37m", - }, - - bg: { - black: "\x1b[40m", - red: "\x1b[41m", - green: "\x1b[42m", - yellow: "\x1b[43m", - blue: "\x1b[44m", - magenta: "\x1b[45m", - cyan: "\x1b[46m", - white: "\x1b[47m", - }, -}; - -export default function printWarning({ - key = "", - type = "", - message = "", - element = "", -}) { - const flag = - colours.bright + colours.fg.cyan + "[astro-imagetools]" + colours.reset; - - const keyLog = key - ? " " + colours.bg.yellow + ` ${key} ` + colours.reset - : ""; - - const messageLog = - colours.fg.yellow + - (message || - (!element - ? `is not a valid ${type} Config Option` - : `can't be defined inside attributes.${element}`)) + - colours.reset; - - // console.log(flag + keyLog, messageLog); -} +// @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 index a5e1b3d..e4f2271 100644 --- a/packages/imagetools/utils/runtimeChecks.js +++ b/packages/imagetools/utils/runtimeChecks.js @@ -1,80 +1,65 @@ -// @ts-check -import fs from "node:fs"; -import path from "node:path"; -import { pathToFileURL } from "node:url"; -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(/* @vite-ignore */ pathToFileURL(configFile).href) - : 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 }; +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 index 622592e..055e347 100644 --- a/packages/imagetools/utils/runtimeChecks.test.ts +++ b/packages/imagetools/utils/runtimeChecks.test.ts @@ -1,36 +1,36 @@ -import { beforeEach, describe, expect, it, vi } from "vitest"; - -describe("GlobalConfigOptions", () => { - beforeEach(() => { - // Need to reset the modules so that we can change the mock implementation between tests - vi.resetModules(); - }); - - it("Should be an empty object by default, if a config file isn't found", async () => { - // Simulate not finding a config file - vi.doMock("find-up", () => { - return { - findUp: async () => undefined, - }; - }); - // Need to import this after the mocks are set up with `doMock`. - const { GlobalConfigOptions } = await import("./runtimeChecks"); - expect(GlobalConfigOptions).toEqual({}); - }); - - it("should return the configuration from a global config file", async () => { - // Find a config file, and mock the contents of that file - vi.doMock("find-up", () => { - return { - findUp: async () => "mockedConfigFile", - }; - }); - vi.doMock("mockedConfigFile", () => { - return { - default: { breakpoints: [800, 1200] }, - }; - }); - const { GlobalConfigOptions } = await import("./runtimeChecks"); - expect(GlobalConfigOptions).toEqual({ breakpoints: [800, 1200] }); - }); -}); +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 index 29dc63d..19fb2a7 100644 --- a/packages/imagetools/vitest.config.ts +++ b/packages/imagetools/vitest.config.ts @@ -1,7 +1,7 @@ -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - // https://vitest.dev/config/#configuration - }, -}); +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 similarity index 100% rename from packages/imagetools/.eslintrc.js rename to packages/imagetools_/.eslintrc.js diff --git a/packages/imagetools/.github/workflows/ci.yml b/packages/imagetools_/.github/workflows/ci.yml similarity index 100% rename from packages/imagetools/.github/workflows/ci.yml rename to packages/imagetools_/.github/workflows/ci.yml diff --git a/packages/imagetools/.gitignore b/packages/imagetools_/.gitignore similarity index 100% rename from packages/imagetools/.gitignore rename to packages/imagetools_/.gitignore diff --git a/packages/imagetools_/.npmignore b/packages/imagetools_/.npmignore new file mode 100644 index 0000000..4f257ea --- /dev/null +++ b/packages/imagetools_/.npmignore @@ -0,0 +1,4 @@ +*.test.ts +test-fixtures +astroViteConfigs.js +vitest.config.ts diff --git a/packages/imagetools/.npmrc b/packages/imagetools_/.npmrc similarity index 100% rename from packages/imagetools/.npmrc rename to packages/imagetools_/.npmrc diff --git a/packages/imagetools/.prettierignore b/packages/imagetools_/.prettierignore similarity index 100% rename from packages/imagetools/.prettierignore rename to packages/imagetools_/.prettierignore diff --git a/packages/imagetools/.prettierrc b/packages/imagetools_/.prettierrc similarity index 100% rename from packages/imagetools/.prettierrc rename to packages/imagetools_/.prettierrc diff --git a/packages/imagetools/LICENSE b/packages/imagetools_/LICENSE similarity index 100% rename from packages/imagetools/LICENSE rename to packages/imagetools_/LICENSE diff --git a/packages/imagetools_/README.md b/packages/imagetools_/README.md new file mode 100644 index 0000000..eda0dbe --- /dev/null +++ b/packages/imagetools_/README.md @@ -0,0 +1,39 @@ +# **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 new file mode 100644 index 0000000..bb0bb97 --- /dev/null +++ b/packages/imagetools_/api/importImage.d.ts @@ -0,0 +1 @@ +export default function importImage(url: string): Promise; diff --git a/packages/imagetools_/api/importImage.js b/packages/imagetools_/api/importImage.js new file mode 100644 index 0000000..b22ca0b --- /dev/null +++ b/packages/imagetools_/api/importImage.js @@ -0,0 +1,23 @@ +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 new file mode 100644 index 0000000..062d6ad --- /dev/null +++ b/packages/imagetools_/api/index.js @@ -0,0 +1,6 @@ +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 new file mode 100644 index 0000000..e7e601b --- /dev/null +++ b/packages/imagetools_/api/renderBackgroundImage.d.ts @@ -0,0 +1,8 @@ +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 new file mode 100644 index 0000000..f56b308 --- /dev/null +++ b/packages/imagetools_/api/renderBackgroundImage.js @@ -0,0 +1,159 @@ +// @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 new file mode 100644 index 0000000..a566421 --- /dev/null +++ b/packages/imagetools_/api/renderBackgroundPicture.d.ts @@ -0,0 +1,8 @@ +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 new file mode 100644 index 0000000..1eea4e1 --- /dev/null +++ b/packages/imagetools_/api/renderBackgroundPicture.js @@ -0,0 +1,127 @@ +// @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 new file mode 100644 index 0000000..abbc304 --- /dev/null +++ b/packages/imagetools_/api/renderImg.d.ts @@ -0,0 +1,5 @@ +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 new file mode 100644 index 0000000..3bc2bf3 --- /dev/null +++ b/packages/imagetools_/api/renderImg.js @@ -0,0 +1,93 @@ +// @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 new file mode 100644 index 0000000..54ccfe5 --- /dev/null +++ b/packages/imagetools_/api/renderPicture.d.ts @@ -0,0 +1,5 @@ +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 new file mode 100644 index 0000000..8a98d1c --- /dev/null +++ b/packages/imagetools_/api/renderPicture.js @@ -0,0 +1,111 @@ +// @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 new file mode 100644 index 0000000..8f72571 --- /dev/null +++ b/packages/imagetools_/api/utils/codecs.js @@ -0,0 +1,38 @@ +// @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 new file mode 100644 index 0000000..1f7c073 --- /dev/null +++ b/packages/imagetools_/api/utils/getArtDirectedImages.js @@ -0,0 +1,137 @@ +// @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 new file mode 100644 index 0000000..e9bd1c1 --- /dev/null +++ b/packages/imagetools_/api/utils/getAttributesString.js @@ -0,0 +1,27 @@ +// @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 new file mode 100644 index 0000000..111233c --- /dev/null +++ b/packages/imagetools_/api/utils/getBackgroundStyles.js @@ -0,0 +1,97 @@ +// @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 new file mode 100644 index 0000000..02a098e --- /dev/null +++ b/packages/imagetools_/api/utils/getBreakpoints.js @@ -0,0 +1,77 @@ +// @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 new file mode 100644 index 0000000..3b3797d --- /dev/null +++ b/packages/imagetools_/api/utils/getConfigOptions.js @@ -0,0 +1,34 @@ +// @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 new file mode 100644 index 0000000..9c5b710 --- /dev/null +++ b/packages/imagetools_/api/utils/getContainerElement.js @@ -0,0 +1,48 @@ +// @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 new file mode 100644 index 0000000..b085286 --- /dev/null +++ b/packages/imagetools_/api/utils/getFallbackImage.js @@ -0,0 +1,58 @@ +// @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 new file mode 100644 index 0000000..9c791ba --- /dev/null +++ b/packages/imagetools_/api/utils/getFilteredProps.js @@ -0,0 +1,138 @@ +// @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 new file mode 100644 index 0000000..7b8f20c --- /dev/null +++ b/packages/imagetools_/api/utils/getFilteredProps.test.ts @@ -0,0 +1,49 @@ +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 new file mode 100644 index 0000000..b2ad3c9 --- /dev/null +++ b/packages/imagetools_/api/utils/getImage.js @@ -0,0 +1,108 @@ +// @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 new file mode 100644 index 0000000..d0dca00 --- /dev/null +++ b/packages/imagetools_/api/utils/getImageSources.js @@ -0,0 +1,91 @@ +// @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 new file mode 100644 index 0000000..fea4109 --- /dev/null +++ b/packages/imagetools_/api/utils/getImgElement.js @@ -0,0 +1,80 @@ +// @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 new file mode 100644 index 0000000..efa6d96 --- /dev/null +++ b/packages/imagetools_/api/utils/getLayoutStyles.js @@ -0,0 +1,16 @@ +// @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 new file mode 100644 index 0000000..2fcfb7a --- /dev/null +++ b/packages/imagetools_/api/utils/getLinkElement.js @@ -0,0 +1,34 @@ +// @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 new file mode 100644 index 0000000..83d435a --- /dev/null +++ b/packages/imagetools_/api/utils/getLinkElement.test.ts @@ -0,0 +1,14 @@ +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 new file mode 100644 index 0000000..b0d62c3 --- /dev/null +++ b/packages/imagetools_/api/utils/getPictureElement.js @@ -0,0 +1,43 @@ +// @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 new file mode 100644 index 0000000..98eae1d --- /dev/null +++ b/packages/imagetools_/api/utils/getProcessedImage.js @@ -0,0 +1,63 @@ +// @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 new file mode 100644 index 0000000..548a59c --- /dev/null +++ b/packages/imagetools_/api/utils/getResolvedSrc.js @@ -0,0 +1,87 @@ +// @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 new file mode 100644 index 0000000..3a7a7da --- /dev/null +++ b/packages/imagetools_/api/utils/getSrcPath.js @@ -0,0 +1,32 @@ +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 new file mode 100644 index 0000000..bb267dd --- /dev/null +++ b/packages/imagetools_/api/utils/getSrcPath.test.ts @@ -0,0 +1,67 @@ +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 new file mode 100644 index 0000000..ac290a9 --- /dev/null +++ b/packages/imagetools_/api/utils/getSrcset.js @@ -0,0 +1,45 @@ +// @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 new file mode 100644 index 0000000..30ad4d7 --- /dev/null +++ b/packages/imagetools_/api/utils/getStyleElement.js @@ -0,0 +1,15 @@ +// @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 new file mode 100644 index 0000000..530abd1 --- /dev/null +++ b/packages/imagetools_/api/utils/imagetools.js @@ -0,0 +1,40 @@ +// @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 new file mode 100644 index 0000000..581ca16 --- /dev/null +++ b/packages/imagetools_/api/utils/throwErrorIfUnsupported.js @@ -0,0 +1,14 @@ +// @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 new file mode 100644 index 0000000..af59ac4 --- /dev/null +++ b/packages/imagetools_/astroViteConfigs.js @@ -0,0 +1,12 @@ +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 new file mode 100644 index 0000000..47d2b44 --- /dev/null +++ b/packages/imagetools_/components/BackgroundImage.astro @@ -0,0 +1,46 @@ +--- +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 new file mode 100644 index 0000000..a53bab8 --- /dev/null +++ b/packages/imagetools_/components/BackgroundPicture.astro @@ -0,0 +1,19 @@ +--- +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 new file mode 100644 index 0000000..d2d547a --- /dev/null +++ b/packages/imagetools_/components/Image.astro @@ -0,0 +1,10 @@ +--- +import renderImage from "../api/renderImage.js"; +import type { PictureConfigOptions as ImageConfigOptions } from "../types.d"; + +const { link, style, image } = await renderImage( + Astro.props as ImageConfigOptions +); +--- + + diff --git a/packages/imagetools_/components/ImageSupportDetection.astro b/packages/imagetools_/components/ImageSupportDetection.astro new file mode 100644 index 0000000..9e62ae7 --- /dev/null +++ b/packages/imagetools_/components/ImageSupportDetection.astro @@ -0,0 +1,4 @@ + + diff --git a/packages/imagetools_/components/Img.astro b/packages/imagetools_/components/Img.astro new file mode 100644 index 0000000..4f3198d --- /dev/null +++ b/packages/imagetools_/components/Img.astro @@ -0,0 +1,7 @@ +--- +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 new file mode 100644 index 0000000..737bd77 --- /dev/null +++ b/packages/imagetools_/components/Picture.astro @@ -0,0 +1,10 @@ +--- +import renderPicture from "../api/renderPicture.js"; +import type { PictureConfigOptions } from "../types.d"; + +declare interface Props extends PictureConfigOptions {} + +const { link, style, picture } = await renderPicture(Astro.props as Props); +--- + + diff --git a/packages/imagetools_/components/index.js b/packages/imagetools_/components/index.js new file mode 100644 index 0000000..a6c6389 --- /dev/null +++ b/packages/imagetools_/components/index.js @@ -0,0 +1,5 @@ +export { default as Img } from "./Img.astro"; +export { default as Picture } from "./Picture.astro"; +export { default as BackgroundImage } from "./BackgroundImage.astro"; +export { default as BackgroundPicture } from "./BackgroundPicture.astro"; +export { default as ImageSupportDetection } from "./ImageSupportDetection.astro"; diff --git a/packages/imagetools_/config.d.ts b/packages/imagetools_/config.d.ts new file mode 100644 index 0000000..8569ca9 --- /dev/null +++ b/packages/imagetools_/config.d.ts @@ -0,0 +1,3 @@ +import type { GlobalConfigOptions } from "./types"; + +export function defineConfig(config: GlobalConfigOptions): GlobalConfigOptions; diff --git a/packages/imagetools_/config.mjs b/packages/imagetools_/config.mjs new file mode 100644 index 0000000..64a4c49 --- /dev/null +++ b/packages/imagetools_/config.mjs @@ -0,0 +1,3 @@ +export function defineConfig(config) { + return config; +} diff --git a/packages/imagetools/demo/.npmrc b/packages/imagetools_/demo/.npmrc similarity index 100% rename from packages/imagetools/demo/.npmrc rename to packages/imagetools_/demo/.npmrc diff --git a/packages/imagetools/demo/.stackblitzrc b/packages/imagetools_/demo/.stackblitzrc similarity index 100% rename from packages/imagetools/demo/.stackblitzrc rename to packages/imagetools_/demo/.stackblitzrc diff --git a/packages/imagetools/demo/README.md b/packages/imagetools_/demo/README.md similarity index 100% rename from packages/imagetools/demo/README.md rename to packages/imagetools_/demo/README.md diff --git a/packages/imagetools/demo/astro-imagetools.config.mjs b/packages/imagetools_/demo/astro-imagetools.config.mjs similarity index 100% rename from packages/imagetools/demo/astro-imagetools.config.mjs rename to packages/imagetools_/demo/astro-imagetools.config.mjs diff --git a/packages/imagetools/demo/astro.config.mjs b/packages/imagetools_/demo/astro.config.mjs similarity index 100% rename from packages/imagetools/demo/astro.config.mjs rename to packages/imagetools_/demo/astro.config.mjs diff --git a/packages/imagetools/demo/package.json b/packages/imagetools_/demo/package.json similarity index 100% rename from packages/imagetools/demo/package.json rename to packages/imagetools_/demo/package.json diff --git a/packages/imagetools/demo/public/favicon.ico b/packages/imagetools_/demo/public/favicon.ico similarity index 100% rename from packages/imagetools/demo/public/favicon.ico rename to packages/imagetools_/demo/public/favicon.ico diff --git a/packages/imagetools/demo/public/images/public.jpeg b/packages/imagetools_/demo/public/images/public.jpeg similarity index 100% rename from packages/imagetools/demo/public/images/public.jpeg rename to packages/imagetools_/demo/public/images/public.jpeg diff --git a/packages/imagetools/demo/sandbox.config.json b/packages/imagetools_/demo/sandbox.config.json similarity index 100% rename from packages/imagetools/demo/sandbox.config.json rename to packages/imagetools_/demo/sandbox.config.json diff --git a/packages/imagetools/demo/src/env.d.ts b/packages/imagetools_/demo/src/env.d.ts similarity index 100% rename from packages/imagetools/demo/src/env.d.ts rename to packages/imagetools_/demo/src/env.d.ts diff --git a/packages/imagetools/demo/src/images/elva-480w-close-portrait.jpg b/packages/imagetools_/demo/src/images/elva-480w-close-portrait.jpg similarity index 100% rename from packages/imagetools/demo/src/images/elva-480w-close-portrait.jpg rename to packages/imagetools_/demo/src/images/elva-480w-close-portrait.jpg diff --git a/packages/imagetools/demo/src/images/elva-800w.jpg b/packages/imagetools_/demo/src/images/elva-800w.jpg similarity index 100% rename from packages/imagetools/demo/src/images/elva-800w.jpg rename to packages/imagetools_/demo/src/images/elva-800w.jpg diff --git a/packages/imagetools/demo/src/layouts/LayoutsLayout.astro b/packages/imagetools_/demo/src/layouts/LayoutsLayout.astro similarity index 100% rename from packages/imagetools/demo/src/layouts/LayoutsLayout.astro rename to packages/imagetools_/demo/src/layouts/LayoutsLayout.astro diff --git a/packages/imagetools/demo/src/layouts/MainLayout.astro b/packages/imagetools_/demo/src/layouts/MainLayout.astro similarity index 100% rename from packages/imagetools/demo/src/layouts/MainLayout.astro rename to packages/imagetools_/demo/src/layouts/MainLayout.astro diff --git a/packages/imagetools/demo/src/layouts/PlaceholderLayout.astro b/packages/imagetools_/demo/src/layouts/PlaceholderLayout.astro similarity index 100% rename from packages/imagetools/demo/src/layouts/PlaceholderLayout.astro rename to packages/imagetools_/demo/src/layouts/PlaceholderLayout.astro diff --git a/packages/imagetools/demo/src/pages/api/renderBackgroundImage.astro b/packages/imagetools_/demo/src/pages/api/renderBackgroundImage.astro similarity index 100% rename from packages/imagetools/demo/src/pages/api/renderBackgroundImage.astro rename to packages/imagetools_/demo/src/pages/api/renderBackgroundImage.astro diff --git a/packages/imagetools/demo/src/pages/api/renderBackgroundPicture.astro b/packages/imagetools_/demo/src/pages/api/renderBackgroundPicture.astro similarity index 100% rename from packages/imagetools/demo/src/pages/api/renderBackgroundPicture.astro rename to packages/imagetools_/demo/src/pages/api/renderBackgroundPicture.astro diff --git a/packages/imagetools/demo/src/pages/api/renderImg.astro b/packages/imagetools_/demo/src/pages/api/renderImg.astro similarity index 100% rename from packages/imagetools/demo/src/pages/api/renderImg.astro rename to packages/imagetools_/demo/src/pages/api/renderImg.astro diff --git a/packages/imagetools/demo/src/pages/api/renderPicture.astro b/packages/imagetools_/demo/src/pages/api/renderPicture.astro similarity index 100% rename from packages/imagetools/demo/src/pages/api/renderPicture.astro rename to packages/imagetools_/demo/src/pages/api/renderPicture.astro diff --git a/packages/imagetools/demo/src/pages/components/BackgroundImage.astro b/packages/imagetools_/demo/src/pages/components/BackgroundImage.astro similarity index 100% rename from packages/imagetools/demo/src/pages/components/BackgroundImage.astro rename to packages/imagetools_/demo/src/pages/components/BackgroundImage.astro diff --git a/packages/imagetools/demo/src/pages/components/BackgroundPicture.astro b/packages/imagetools_/demo/src/pages/components/BackgroundPicture.astro similarity index 100% rename from packages/imagetools/demo/src/pages/components/BackgroundPicture.astro rename to packages/imagetools_/demo/src/pages/components/BackgroundPicture.astro diff --git a/packages/imagetools/demo/src/pages/components/Img.astro b/packages/imagetools_/demo/src/pages/components/Img.astro similarity index 100% rename from packages/imagetools/demo/src/pages/components/Img.astro rename to packages/imagetools_/demo/src/pages/components/Img.astro diff --git a/packages/imagetools/demo/src/pages/components/Picture.astro b/packages/imagetools_/demo/src/pages/components/Picture.astro similarity index 100% rename from packages/imagetools/demo/src/pages/components/Picture.astro rename to packages/imagetools_/demo/src/pages/components/Picture.astro diff --git a/packages/imagetools/demo/src/pages/index.md b/packages/imagetools_/demo/src/pages/index.md similarity index 100% rename from packages/imagetools/demo/src/pages/index.md rename to packages/imagetools_/demo/src/pages/index.md diff --git a/packages/imagetools/demo/src/pages/layout/constrained.astro b/packages/imagetools_/demo/src/pages/layout/constrained.astro similarity index 100% rename from packages/imagetools/demo/src/pages/layout/constrained.astro rename to packages/imagetools_/demo/src/pages/layout/constrained.astro diff --git a/packages/imagetools/demo/src/pages/layout/fill.astro b/packages/imagetools_/demo/src/pages/layout/fill.astro similarity index 100% rename from packages/imagetools/demo/src/pages/layout/fill.astro rename to packages/imagetools_/demo/src/pages/layout/fill.astro diff --git a/packages/imagetools/demo/src/pages/layout/fixed.astro b/packages/imagetools_/demo/src/pages/layout/fixed.astro similarity index 100% rename from packages/imagetools/demo/src/pages/layout/fixed.astro rename to packages/imagetools_/demo/src/pages/layout/fixed.astro diff --git a/packages/imagetools/demo/src/pages/layout/fullWidth.astro b/packages/imagetools_/demo/src/pages/layout/fullWidth.astro similarity index 100% rename from packages/imagetools/demo/src/pages/layout/fullWidth.astro rename to packages/imagetools_/demo/src/pages/layout/fullWidth.astro diff --git a/packages/imagetools/demo/src/pages/placeholder/blurred.astro b/packages/imagetools_/demo/src/pages/placeholder/blurred.astro similarity index 100% rename from packages/imagetools/demo/src/pages/placeholder/blurred.astro rename to packages/imagetools_/demo/src/pages/placeholder/blurred.astro diff --git a/packages/imagetools/demo/src/pages/placeholder/dominantColor.astro b/packages/imagetools_/demo/src/pages/placeholder/dominantColor.astro similarity index 100% rename from packages/imagetools/demo/src/pages/placeholder/dominantColor.astro rename to packages/imagetools_/demo/src/pages/placeholder/dominantColor.astro diff --git a/packages/imagetools/demo/src/pages/placeholder/none.astro b/packages/imagetools_/demo/src/pages/placeholder/none.astro similarity index 100% rename from packages/imagetools/demo/src/pages/placeholder/none.astro rename to packages/imagetools_/demo/src/pages/placeholder/none.astro diff --git a/packages/imagetools/demo/src/pages/placeholder/tracedSVG.astro b/packages/imagetools_/demo/src/pages/placeholder/tracedSVG.astro similarity index 100% rename from packages/imagetools/demo/src/pages/placeholder/tracedSVG.astro rename to packages/imagetools_/demo/src/pages/placeholder/tracedSVG.astro diff --git a/packages/imagetools/demo/src/styles/index.css b/packages/imagetools_/demo/src/styles/index.css similarity index 100% rename from packages/imagetools/demo/src/styles/index.css rename to packages/imagetools_/demo/src/styles/index.css diff --git a/packages/imagetools/docs/.npmrc b/packages/imagetools_/docs/.npmrc similarity index 100% rename from packages/imagetools/docs/.npmrc rename to packages/imagetools_/docs/.npmrc diff --git a/packages/imagetools/docs/.stackblitzrc b/packages/imagetools_/docs/.stackblitzrc similarity index 100% rename from packages/imagetools/docs/.stackblitzrc rename to packages/imagetools_/docs/.stackblitzrc diff --git a/packages/imagetools/docs/README.md b/packages/imagetools_/docs/README.md similarity index 100% rename from packages/imagetools/docs/README.md rename to packages/imagetools_/docs/README.md diff --git a/packages/imagetools/docs/astro.config.mjs b/packages/imagetools_/docs/astro.config.mjs similarity index 100% rename from packages/imagetools/docs/astro.config.mjs rename to packages/imagetools_/docs/astro.config.mjs diff --git a/packages/imagetools/docs/auto-imports.d.ts b/packages/imagetools_/docs/auto-imports.d.ts similarity index 100% rename from packages/imagetools/docs/auto-imports.d.ts rename to packages/imagetools_/docs/auto-imports.d.ts diff --git a/packages/imagetools/docs/package.json b/packages/imagetools_/docs/package.json similarity index 100% rename from packages/imagetools/docs/package.json rename to packages/imagetools_/docs/package.json diff --git a/packages/imagetools/docs/public/default-og-image.png b/packages/imagetools_/docs/public/default-og-image.png similarity index 100% rename from packages/imagetools/docs/public/default-og-image.png rename to packages/imagetools_/docs/public/default-og-image.png diff --git a/packages/imagetools/docs/public/favicon.ico b/packages/imagetools_/docs/public/favicon.ico similarity index 100% rename from packages/imagetools/docs/public/favicon.ico rename to packages/imagetools_/docs/public/favicon.ico diff --git a/packages/imagetools/docs/public/make-scrollable-code-focusable.js b/packages/imagetools_/docs/public/make-scrollable-code-focusable.js similarity index 100% rename from packages/imagetools/docs/public/make-scrollable-code-focusable.js rename to packages/imagetools_/docs/public/make-scrollable-code-focusable.js diff --git a/packages/imagetools/docs/sandbox.config.json b/packages/imagetools_/docs/sandbox.config.json similarity index 100% rename from packages/imagetools/docs/sandbox.config.json rename to packages/imagetools_/docs/sandbox.config.json diff --git a/packages/imagetools/docs/src/components/CodeExample.astro b/packages/imagetools_/docs/src/components/CodeExample.astro similarity index 100% rename from packages/imagetools/docs/src/components/CodeExample.astro rename to packages/imagetools_/docs/src/components/CodeExample.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions.astro b/packages/imagetools_/docs/src/components/ConfigOptions.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions.astro rename to packages/imagetools_/docs/src/components/ConfigOptions.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/alt.astro b/packages/imagetools_/docs/src/components/ConfigOptions/alt.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/alt.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/alt.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/artDirectives.astro b/packages/imagetools_/docs/src/components/ConfigOptions/artDirectives.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/artDirectives.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/artDirectives.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/aspect.astro b/packages/imagetools_/docs/src/components/ConfigOptions/aspect.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/aspect.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/aspect.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/assetFileNames.astro b/packages/imagetools_/docs/src/components/ConfigOptions/assetFileNames.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/assetFileNames.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/assetFileNames.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/attributes.astro b/packages/imagetools_/docs/src/components/ConfigOptions/attributes.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/attributes.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/attributes.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/background.astro b/packages/imagetools_/docs/src/components/ConfigOptions/background.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/background.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/background.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/backgroundPosition.astro b/packages/imagetools_/docs/src/components/ConfigOptions/backgroundPosition.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/backgroundPosition.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/backgroundPosition.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/backgroundSize.astro b/packages/imagetools_/docs/src/components/ConfigOptions/backgroundSize.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/backgroundSize.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/backgroundSize.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/blur.astro b/packages/imagetools_/docs/src/components/ConfigOptions/blur.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/blur.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/blur.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/breakpoints.astro b/packages/imagetools_/docs/src/components/ConfigOptions/breakpoints.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/breakpoints.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/breakpoints.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/brightness.astro b/packages/imagetools_/docs/src/components/ConfigOptions/brightness.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/brightness.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/brightness.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/cacheDir.astro b/packages/imagetools_/docs/src/components/ConfigOptions/cacheDir.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/cacheDir.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/cacheDir.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/content.astro b/packages/imagetools_/docs/src/components/ConfigOptions/content.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/content.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/content.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/decoding.astro b/packages/imagetools_/docs/src/components/ConfigOptions/decoding.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/decoding.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/decoding.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/fadeInTransition.astro b/packages/imagetools_/docs/src/components/ConfigOptions/fadeInTransition.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/fadeInTransition.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/fadeInTransition.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/fallbackFormat.astro b/packages/imagetools_/docs/src/components/ConfigOptions/fallbackFormat.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/fallbackFormat.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/fallbackFormat.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/fit.astro b/packages/imagetools_/docs/src/components/ConfigOptions/fit.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/fit.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/fit.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/flatten.astro b/packages/imagetools_/docs/src/components/ConfigOptions/flatten.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/flatten.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/flatten.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/flip.astro b/packages/imagetools_/docs/src/components/ConfigOptions/flip.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/flip.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/flip.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/flop.astro b/packages/imagetools_/docs/src/components/ConfigOptions/flop.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/flop.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/flop.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/format.astro b/packages/imagetools_/docs/src/components/ConfigOptions/format.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/format.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/format.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/formatOptions.astro b/packages/imagetools_/docs/src/components/ConfigOptions/formatOptions.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/formatOptions.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/formatOptions.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/grayscale.astro b/packages/imagetools_/docs/src/components/ConfigOptions/grayscale.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/grayscale.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/grayscale.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/height.astro b/packages/imagetools_/docs/src/components/ConfigOptions/height.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/height.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/height.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/hue.astro b/packages/imagetools_/docs/src/components/ConfigOptions/hue.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/hue.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/hue.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/includeSourceFormat.astro b/packages/imagetools_/docs/src/components/ConfigOptions/includeSourceFormat.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/includeSourceFormat.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/includeSourceFormat.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/invert.astro b/packages/imagetools_/docs/src/components/ConfigOptions/invert.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/invert.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/invert.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/kernel.astro b/packages/imagetools_/docs/src/components/ConfigOptions/kernel.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/kernel.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/kernel.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/layout.astro b/packages/imagetools_/docs/src/components/ConfigOptions/layout.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/layout.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/layout.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/loading.astro b/packages/imagetools_/docs/src/components/ConfigOptions/loading.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/loading.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/loading.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/median.astro b/packages/imagetools_/docs/src/components/ConfigOptions/median.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/median.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/median.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/normalize.astro b/packages/imagetools_/docs/src/components/ConfigOptions/normalize.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/normalize.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/normalize.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/objectFit.astro b/packages/imagetools_/docs/src/components/ConfigOptions/objectFit.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/objectFit.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/objectFit.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/objectPosition.astro b/packages/imagetools_/docs/src/components/ConfigOptions/objectPosition.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/objectPosition.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/objectPosition.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/placeholder.astro b/packages/imagetools_/docs/src/components/ConfigOptions/placeholder.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/placeholder.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/placeholder.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/position.astro b/packages/imagetools_/docs/src/components/ConfigOptions/position.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/position.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/position.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/preload.astro b/packages/imagetools_/docs/src/components/ConfigOptions/preload.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/preload.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/preload.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/quality.astro b/packages/imagetools_/docs/src/components/ConfigOptions/quality.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/quality.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/quality.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/rotate.astro b/packages/imagetools_/docs/src/components/ConfigOptions/rotate.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/rotate.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/rotate.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/saturation.astro b/packages/imagetools_/docs/src/components/ConfigOptions/saturation.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/saturation.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/saturation.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/sizes.astro b/packages/imagetools_/docs/src/components/ConfigOptions/sizes.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/sizes.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/sizes.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/src.astro b/packages/imagetools_/docs/src/components/ConfigOptions/src.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/src.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/src.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/tag.astro b/packages/imagetools_/docs/src/components/ConfigOptions/tag.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/tag.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/tag.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/tint.astro b/packages/imagetools_/docs/src/components/ConfigOptions/tint.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/tint.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/tint.astro diff --git a/packages/imagetools/docs/src/components/ConfigOptions/width.astro b/packages/imagetools_/docs/src/components/ConfigOptions/width.astro similarity index 100% rename from packages/imagetools/docs/src/components/ConfigOptions/width.astro rename to packages/imagetools_/docs/src/components/ConfigOptions/width.astro diff --git a/packages/imagetools/docs/src/components/Footer/AvatarList.astro b/packages/imagetools_/docs/src/components/Footer/AvatarList.astro similarity index 100% rename from packages/imagetools/docs/src/components/Footer/AvatarList.astro rename to packages/imagetools_/docs/src/components/Footer/AvatarList.astro diff --git a/packages/imagetools/docs/src/components/Footer/Footer.astro b/packages/imagetools_/docs/src/components/Footer/Footer.astro similarity index 100% rename from packages/imagetools/docs/src/components/Footer/Footer.astro rename to packages/imagetools_/docs/src/components/Footer/Footer.astro diff --git a/packages/imagetools/docs/src/components/HeadCommon.astro b/packages/imagetools_/docs/src/components/HeadCommon.astro similarity index 100% rename from packages/imagetools/docs/src/components/HeadCommon.astro rename to packages/imagetools_/docs/src/components/HeadCommon.astro diff --git a/packages/imagetools/docs/src/components/HeadSEO.astro b/packages/imagetools_/docs/src/components/HeadSEO.astro similarity index 100% rename from packages/imagetools/docs/src/components/HeadSEO.astro rename to packages/imagetools_/docs/src/components/HeadSEO.astro diff --git a/packages/imagetools/docs/src/components/Header/AstroLogo.astro b/packages/imagetools_/docs/src/components/Header/AstroLogo.astro similarity index 100% rename from packages/imagetools/docs/src/components/Header/AstroLogo.astro rename to packages/imagetools_/docs/src/components/Header/AstroLogo.astro diff --git a/packages/imagetools/docs/src/components/Header/Header.astro b/packages/imagetools_/docs/src/components/Header/Header.astro similarity index 100% rename from packages/imagetools/docs/src/components/Header/Header.astro rename to packages/imagetools_/docs/src/components/Header/Header.astro diff --git a/packages/imagetools/docs/src/components/Header/LanguageSelect.css b/packages/imagetools_/docs/src/components/Header/LanguageSelect.css similarity index 100% rename from packages/imagetools/docs/src/components/Header/LanguageSelect.css rename to packages/imagetools_/docs/src/components/Header/LanguageSelect.css diff --git a/packages/imagetools/docs/src/components/Header/LanguageSelect.tsx b/packages/imagetools_/docs/src/components/Header/LanguageSelect.tsx similarity index 100% rename from packages/imagetools/docs/src/components/Header/LanguageSelect.tsx rename to packages/imagetools_/docs/src/components/Header/LanguageSelect.tsx diff --git a/packages/imagetools/docs/src/components/Header/Search.css b/packages/imagetools_/docs/src/components/Header/Search.css similarity index 100% rename from packages/imagetools/docs/src/components/Header/Search.css rename to packages/imagetools_/docs/src/components/Header/Search.css diff --git a/packages/imagetools/docs/src/components/Header/Search.tsx b/packages/imagetools_/docs/src/components/Header/Search.tsx similarity index 100% rename from packages/imagetools/docs/src/components/Header/Search.tsx rename to packages/imagetools_/docs/src/components/Header/Search.tsx diff --git a/packages/imagetools/docs/src/components/Header/SidebarToggle.tsx b/packages/imagetools_/docs/src/components/Header/SidebarToggle.tsx similarity index 100% rename from packages/imagetools/docs/src/components/Header/SidebarToggle.tsx rename to packages/imagetools_/docs/src/components/Header/SidebarToggle.tsx diff --git a/packages/imagetools/docs/src/components/Header/SkipToContent.astro b/packages/imagetools_/docs/src/components/Header/SkipToContent.astro similarity index 100% rename from packages/imagetools/docs/src/components/Header/SkipToContent.astro rename to packages/imagetools_/docs/src/components/Header/SkipToContent.astro diff --git a/packages/imagetools/docs/src/components/LeftSidebar/LeftSidebar.astro b/packages/imagetools_/docs/src/components/LeftSidebar/LeftSidebar.astro similarity index 100% rename from packages/imagetools/docs/src/components/LeftSidebar/LeftSidebar.astro rename to packages/imagetools_/docs/src/components/LeftSidebar/LeftSidebar.astro diff --git a/packages/imagetools/docs/src/components/PageContent/PageContent.astro b/packages/imagetools_/docs/src/components/PageContent/PageContent.astro similarity index 100% rename from packages/imagetools/docs/src/components/PageContent/PageContent.astro rename to packages/imagetools_/docs/src/components/PageContent/PageContent.astro diff --git a/packages/imagetools/docs/src/components/RightSidebar/MoreMenu.astro b/packages/imagetools_/docs/src/components/RightSidebar/MoreMenu.astro similarity index 100% rename from packages/imagetools/docs/src/components/RightSidebar/MoreMenu.astro rename to packages/imagetools_/docs/src/components/RightSidebar/MoreMenu.astro diff --git a/packages/imagetools/docs/src/components/RightSidebar/RightSidebar.astro b/packages/imagetools_/docs/src/components/RightSidebar/RightSidebar.astro similarity index 100% rename from packages/imagetools/docs/src/components/RightSidebar/RightSidebar.astro rename to packages/imagetools_/docs/src/components/RightSidebar/RightSidebar.astro diff --git a/packages/imagetools/docs/src/components/RightSidebar/TableOfContents.tsx b/packages/imagetools_/docs/src/components/RightSidebar/TableOfContents.tsx similarity index 100% rename from packages/imagetools/docs/src/components/RightSidebar/TableOfContents.tsx rename to packages/imagetools_/docs/src/components/RightSidebar/TableOfContents.tsx diff --git a/packages/imagetools/docs/src/components/RightSidebar/ThemeToggleButton.css b/packages/imagetools_/docs/src/components/RightSidebar/ThemeToggleButton.css similarity index 100% rename from packages/imagetools/docs/src/components/RightSidebar/ThemeToggleButton.css rename to packages/imagetools_/docs/src/components/RightSidebar/ThemeToggleButton.css diff --git a/packages/imagetools/docs/src/components/RightSidebar/ThemeToggleButton.tsx b/packages/imagetools_/docs/src/components/RightSidebar/ThemeToggleButton.tsx similarity index 100% rename from packages/imagetools/docs/src/components/RightSidebar/ThemeToggleButton.tsx rename to packages/imagetools_/docs/src/components/RightSidebar/ThemeToggleButton.tsx diff --git a/packages/imagetools/docs/src/config.ts b/packages/imagetools_/docs/src/config.ts similarity index 100% rename from packages/imagetools/docs/src/config.ts rename to packages/imagetools_/docs/src/config.ts diff --git a/packages/imagetools/docs/src/languages.ts b/packages/imagetools_/docs/src/languages.ts similarity index 100% rename from packages/imagetools/docs/src/languages.ts rename to packages/imagetools_/docs/src/languages.ts diff --git a/packages/imagetools/docs/src/layouts/MainLayout.astro b/packages/imagetools_/docs/src/layouts/MainLayout.astro similarity index 100% rename from packages/imagetools/docs/src/layouts/MainLayout.astro rename to packages/imagetools_/docs/src/layouts/MainLayout.astro diff --git a/packages/imagetools/docs/src/pages/en/acknowledgements.md b/packages/imagetools_/docs/src/pages/en/acknowledgements.md similarity index 100% rename from packages/imagetools/docs/src/pages/en/acknowledgements.md rename to packages/imagetools_/docs/src/pages/en/acknowledgements.md diff --git a/packages/imagetools/docs/src/pages/en/api/importImage.mdx b/packages/imagetools_/docs/src/pages/en/api/importImage.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/api/importImage.mdx rename to packages/imagetools_/docs/src/pages/en/api/importImage.mdx diff --git a/packages/imagetools/docs/src/pages/en/api/renderBackgroundImage.mdx b/packages/imagetools_/docs/src/pages/en/api/renderBackgroundImage.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/api/renderBackgroundImage.mdx rename to packages/imagetools_/docs/src/pages/en/api/renderBackgroundImage.mdx diff --git a/packages/imagetools/docs/src/pages/en/api/renderBackgroundPicture.mdx b/packages/imagetools_/docs/src/pages/en/api/renderBackgroundPicture.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/api/renderBackgroundPicture.mdx rename to packages/imagetools_/docs/src/pages/en/api/renderBackgroundPicture.mdx diff --git a/packages/imagetools/docs/src/pages/en/api/renderImg.mdx b/packages/imagetools_/docs/src/pages/en/api/renderImg.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/api/renderImg.mdx rename to packages/imagetools_/docs/src/pages/en/api/renderImg.mdx diff --git a/packages/imagetools/docs/src/pages/en/api/renderPicture.mdx b/packages/imagetools_/docs/src/pages/en/api/renderPicture.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/api/renderPicture.mdx rename to packages/imagetools_/docs/src/pages/en/api/renderPicture.mdx diff --git a/packages/imagetools/docs/src/pages/en/components-and-apis.mdx b/packages/imagetools_/docs/src/pages/en/components-and-apis.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/components-and-apis.mdx rename to packages/imagetools_/docs/src/pages/en/components-and-apis.mdx diff --git a/packages/imagetools/docs/src/pages/en/components/BackgroundImage.mdx b/packages/imagetools_/docs/src/pages/en/components/BackgroundImage.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/components/BackgroundImage.mdx rename to packages/imagetools_/docs/src/pages/en/components/BackgroundImage.mdx diff --git a/packages/imagetools/docs/src/pages/en/components/BackgroundPicture.mdx b/packages/imagetools_/docs/src/pages/en/components/BackgroundPicture.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/components/BackgroundPicture.mdx rename to packages/imagetools_/docs/src/pages/en/components/BackgroundPicture.mdx diff --git a/packages/imagetools/docs/src/pages/en/components/Img.mdx b/packages/imagetools_/docs/src/pages/en/components/Img.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/components/Img.mdx rename to packages/imagetools_/docs/src/pages/en/components/Img.mdx diff --git a/packages/imagetools/docs/src/pages/en/components/Picture.mdx b/packages/imagetools_/docs/src/pages/en/components/Picture.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/components/Picture.mdx rename to packages/imagetools_/docs/src/pages/en/components/Picture.mdx diff --git a/packages/imagetools/docs/src/pages/en/deprecations.mdx b/packages/imagetools_/docs/src/pages/en/deprecations.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/deprecations.mdx rename to packages/imagetools_/docs/src/pages/en/deprecations.mdx diff --git a/packages/imagetools/docs/src/pages/en/global-config-options.mdx b/packages/imagetools_/docs/src/pages/en/global-config-options.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/global-config-options.mdx rename to packages/imagetools_/docs/src/pages/en/global-config-options.mdx diff --git a/packages/imagetools/docs/src/pages/en/installation.mdx b/packages/imagetools_/docs/src/pages/en/installation.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/installation.mdx rename to packages/imagetools_/docs/src/pages/en/installation.mdx diff --git a/packages/imagetools/docs/src/pages/en/introduction.mdx b/packages/imagetools_/docs/src/pages/en/introduction.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/introduction.mdx rename to packages/imagetools_/docs/src/pages/en/introduction.mdx diff --git a/packages/imagetools/docs/src/pages/en/markdown-images.mdx b/packages/imagetools_/docs/src/pages/en/markdown-images.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/markdown-images.mdx rename to packages/imagetools_/docs/src/pages/en/markdown-images.mdx diff --git a/packages/imagetools/docs/src/pages/en/ssr.mdx b/packages/imagetools_/docs/src/pages/en/ssr.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/ssr.mdx rename to packages/imagetools_/docs/src/pages/en/ssr.mdx diff --git a/packages/imagetools/docs/src/pages/en/usage.mdx b/packages/imagetools_/docs/src/pages/en/usage.mdx similarity index 100% rename from packages/imagetools/docs/src/pages/en/usage.mdx rename to packages/imagetools_/docs/src/pages/en/usage.mdx diff --git a/packages/imagetools/docs/src/pages/index.astro b/packages/imagetools_/docs/src/pages/index.astro similarity index 100% rename from packages/imagetools/docs/src/pages/index.astro rename to packages/imagetools_/docs/src/pages/index.astro diff --git a/packages/imagetools/docs/src/styles/index.css b/packages/imagetools_/docs/src/styles/index.css similarity index 100% rename from packages/imagetools/docs/src/styles/index.css rename to packages/imagetools_/docs/src/styles/index.css diff --git a/packages/imagetools/docs/src/styles/theme.css b/packages/imagetools_/docs/src/styles/theme.css similarity index 100% rename from packages/imagetools/docs/src/styles/theme.css rename to packages/imagetools_/docs/src/styles/theme.css diff --git a/packages/imagetools/docs/tsconfig.json b/packages/imagetools_/docs/tsconfig.json similarity index 100% rename from packages/imagetools/docs/tsconfig.json rename to packages/imagetools_/docs/tsconfig.json diff --git a/packages/imagetools_/index.js b/packages/imagetools_/index.js new file mode 100644 index 0000000..b5e1b78 --- /dev/null +++ b/packages/imagetools_/index.js @@ -0,0 +1,3 @@ +import astroImageTools from "./integration/index.js"; + +export { astroImageTools as imagetools } diff --git a/packages/imagetools_/integration/index.js b/packages/imagetools_/integration/index.js new file mode 100644 index 0000000..1fbe997 --- /dev/null +++ b/packages/imagetools_/integration/index.js @@ -0,0 +1,120 @@ +// @ts-check +import fs from "node:fs" +import { fileURLToPath } from "node:url" +import { posix as path, resolve } from "node:path" +import { saveAndCopyAsset } from "./utils/saveAndCopyAsset.js" +import vitePluginAstroImageTools, { store } from "../plugin/index.js" +import pMap from "p-map" + +const filename = fileURLToPath(import.meta.url); +const astroViteConfigsPath = resolve(filename, "../../astroViteConfigs.js"); + +export default { + name: "imagetools", + hooks: { + "astro:config:setup": async function ({ config, command, updateConfig }) { + const environment = command; + const isSsrBuild = + command === "build" && !!config.adapter && config.output === "server"; + + 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( + "../astroViteConfigs.js" + ); + const { mode, outDir, assetsDir, isSsrBuild } = astroViteConfigs; + console.log(`[imagetools] mode: ${mode}`); + debugger; + if (mode === "production") { + const allEntries = [...store.entries()]; + const assetPaths = allEntries.filter( + ([, { hash = null } = {}]) => hash + ); + await pMap( + assetPaths, + async ([assetPath, { hash, image, buffer }]) => { + console.log(`[imagetools] Saving and copying asset ${assetPath}`); + // 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 () => { + console.log(`[imagetools] Saving and copying asset ${assetPath}`); + await saveAndCopyAsset( + hash, + image, + buffer, + outDir, + assetsDir, + assetPath, + isSsrBuild + ); + + console.log(`[imagetools] Saved and copied asset ${assetPath}`); + + // }); + } catch (error) { + console.error(`Failed to process image ${assetPath} after retries:`, error); + // Continue processing other images even if one fails + } + }, + // higher concurrency causes sharp/vips errors as well + { concurrency: 1 } + ); + } + }, + }, +}; diff --git a/packages/imagetools_/integration/utils/saveAndCopyAsset.js b/packages/imagetools_/integration/utils/saveAndCopyAsset.js new file mode 100644 index 0000000..f075377 --- /dev/null +++ b/packages/imagetools_/integration/utils/saveAndCopyAsset.js @@ -0,0 +1,46 @@ +import fs from "node:fs/promises"; +import { posix as path } from "node:path"; +import { fsCachePath } from "../../utils/runtimeChecks.js"; + +const copied = []; +let assetsDirExists; + +export async function saveAndCopyAsset( + hash, + image, + buffer, + outDir, + assetsDir, + assetPath, + isSsrBuild +) { + const src = fsCachePath + hash; + + const dest = path.join(outDir, isSsrBuild ? "/client" : "", assetPath); + + assetsDir = path.join(outDir, isSsrBuild ? "/client" : "/", assetsDir); + + if (copied.includes(assetPath)) return; + + if (!assetsDirExists) { + await fs.mkdir(assetsDir, { + recursive: true, + }); + + assetsDirExists = true; + } + + await fs.copyFile(src, dest).catch(async (error) => { + if (error.code === "ENOENT") { + const imageBuffer = buffer || (await image.toBuffer()); + + await Promise.all( + [src, dest].map(async (dir) => { + await fs.writeFile(dir, imageBuffer); + }) + ); + } else throw error; + }); + + copied.push(assetPath); +} diff --git a/packages/imagetools_/package.json b/packages/imagetools_/package.json new file mode 100644 index 0000000..1ef0c22 --- /dev/null +++ b/packages/imagetools_/package.json @@ -0,0 +1,66 @@ +{ + "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", + "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_/plugin/hooks/config.js b/packages/imagetools_/plugin/hooks/config.js new file mode 100644 index 0000000..0562971 --- /dev/null +++ b/packages/imagetools_/plugin/hooks/config.js @@ -0,0 +1,19 @@ +// @ts-check + +export default function config() { + return { + optimizeDeps: { + exclude: ["@astropub/codecs", "imagetools-core", "sharp"], + }, + ssr: { + external: [ + "sharp", + "potrace", + "file-type", + "object-hash", + "find-cache-dir", + "@astropub/codecs", + ], + }, + }; +} diff --git a/packages/imagetools_/plugin/hooks/load.js b/packages/imagetools_/plugin/hooks/load.js new file mode 100644 index 0000000..105f3d8 --- /dev/null +++ b/packages/imagetools_/plugin/hooks/load.js @@ -0,0 +1,198 @@ +// @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 === "build") { + // 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 === "build") { + /* + 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_/plugin/hooks/transform.js b/packages/imagetools_/plugin/hooks/transform.js new file mode 100644 index 0000000..5851419 --- /dev/null +++ b/packages/imagetools_/plugin/hooks/transform.js @@ -0,0 +1,62 @@ +// @ts-check +import path from "node:path"; +import crypto from "node:crypto"; +import MagicString from "magic-string"; +import { cwd } from "../../utils/runtimeChecks.js"; + +const regexTestPattern = + /]*>/; +const regexExecPattern = new RegExp(regexTestPattern, "gs"); +const regexRenderPattern = /\$\$render`(.*)`/gs; + +export default async function transform(code, id) { + if (id.endsWith(".md") && regexTestPattern.test(code)) { + const { default: astroViteConfigs } = await import( + // @ts-ignore + "../../astroViteConfigs.js" + ); + + const { sourcemap } = astroViteConfigs; + + // Extract the "$$render`" part of the markdown string + const [result] = [...code.matchAll(regexRenderPattern)]; + const [, renderString] = result; + const renderIndex = result.index + "$$render`".length; + + const matches = renderString.matchAll(regexExecPattern); + if (matches !== null) { + const s = new MagicString(code); + + const uuid = crypto.randomBytes(4).toString("hex"); + + const Picture = "Picture" + uuid; + + const renderComponent = "renderComponent" + uuid; + + s.prepend( + `import { Picture as ${Picture} } from "astro-imagetools/components";\nimport { renderComponent as ${renderComponent} } from "${ + cwd + "/node_modules/astro/dist/runtime/server/index.js" + }"\n;` + ); + + for (const match of matches) { + const [matchedText, rawSrc, alt] = match; + + const src = rawSrc.match("(http://|https://|data:image/).*") + ? rawSrc + : path.resolve(path.dirname(id), rawSrc).replace(cwd, ""); + + s.overwrite( + renderIndex + match.index, + renderIndex + match.index + matchedText.length, + `\${${renderComponent}($$result, "${Picture}", ${Picture}, { "src": "${src}", "alt": "${alt}" })}` + ); + } + + return { + code: s.toString(), + map: sourcemap ? s.generateMap({ hires: true }) : null, + }; + } + } +} diff --git a/packages/imagetools_/plugin/index.js b/packages/imagetools_/plugin/index.js new file mode 100644 index 0000000..f45f36f --- /dev/null +++ b/packages/imagetools_/plugin/index.js @@ -0,0 +1,88 @@ +// @ts-check +import fs from "node:fs"; +import stream from "node:stream"; +import { fileURLToPath } from "node:url"; +import { posix as path, resolve } from "node:path"; + +import load from "./hooks/load.js"; +import config from "./hooks/config.js"; +import transform from "./hooks/transform.js"; +import { middleware } from "../ssr/index.js"; +import { GlobalConfigOptions } from "../utils/runtimeChecks.js"; + +if (!globalThis.astroImageToolsStore) + globalThis.astroImageToolsStore = new Map(); + +export const store = globalThis.astroImageToolsStore; + +const filename = fileURLToPath(import.meta.url); + +const astroViteConfigsPath = resolve(filename, "../../astroViteConfigs.js"); + +const vitePluginAstroImageTools = { + name: "vite-plugin-astro-imagetools", + enforce: "pre", + + config, + + async configResolved(config) { + const { mode } = config; + + const { outDir, sourcemap } = config.build; + + let inheritedPattern = + config.build.rollupOptions.output?.assetFileNames?.replace( + "[name]", + "[name]@[width]" + ); + + let assetFileNames = path.normalize( + GlobalConfigOptions.assetFileNames || + inheritedPattern || + `/_astro/[name]@[width].[hash][extname]` + ); + + const { dir: assetsDir } = path.posix.parse( + assetFileNames.replaceAll(path.sep, path.posix.sep) + ); + + if (!assetFileNames.startsWith("/")) + assetFileNames = path.join("/", assetFileNames); + + const astroViteConfigs = JSON.parse( + (await fs.promises.readFile(astroViteConfigsPath, "utf8")).slice(15) + ); + + const newAstroViteConfigs = { + ...astroViteConfigs, + mode, + outDir, + assetsDir, + sourcemap, + assetFileNames, + }; + + await fs.promises.writeFile( + astroViteConfigsPath, + `export default ${JSON.stringify(newAstroViteConfigs, null, 2)}` + ); + }, + + load, + + transform, + + configureServer(server) { + server.middlewares.use(async (request, response, next) => { + const buffer = await middleware(request, response); + + if (buffer) { + return stream.Readable.from(buffer).pipe(response); + } + + next(); + }); + }, +}; + +export default vitePluginAstroImageTools; diff --git a/packages/imagetools_/plugin/utils/cache.js b/packages/imagetools_/plugin/utils/cache.js new file mode 100644 index 0000000..1e0ff86 --- /dev/null +++ b/packages/imagetools_/plugin/utils/cache.js @@ -0,0 +1,19 @@ +// @ts-check +import fs from "node:fs"; +import { fsCachePath } from "../../utils/runtimeChecks.js"; + +export async function getCachedBuffer(hash, image) { + const cacheFilePath = fsCachePath + hash; + + // console.log(`[imagetools-cache getCachedBuffer] Cache hit for ${cacheFilePath}`); + + 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 new file mode 100644 index 0000000..1476e94 --- /dev/null +++ b/packages/imagetools_/plugin/utils/codecs.js @@ -0,0 +1,41 @@ +// @ts-check +import fs from "node:fs"; +import * as codecs from "@astropub/codecs"; + +const resizedImages = new Map(); + +export const getLoadedImage = async (src, ext) => { + const buffer = fs.readFileSync(src); + + const image = await codecs[ext].decode(buffer); + + const { width } = image; + + const resizedImageKey = `${src}@${image.width}`; + + resizedImages.set(resizedImageKey, image); + + return { image, width }; +}; + +export const getTransformedImage = async ({ src, image, config, type }) => { + const { width, format, quality } = config; + + const resizedImageKey = `${src}@${width}`; + + const resizedImage = + resizedImages.get(resizedImageKey) || + resizedImages + .set(resizedImageKey, await image.resize({ width })) + .get(resizedImageKey); + + const encodedImage = quality + ? await codecs[format].encode(resizedImage, { + quality: parseInt(quality), + }) + : await resizedImage.encode(type); + + const buffer = Buffer.from(encodedImage.data); + + return { image, buffer }; +}; diff --git a/packages/imagetools_/plugin/utils/imagetools.js b/packages/imagetools_/plugin/utils/imagetools.js new file mode 100644 index 0000000..f969207 --- /dev/null +++ b/packages/imagetools_/plugin/utils/imagetools.js @@ -0,0 +1,26 @@ +// @ts-check +import { + builtins, + loadImage, + applyTransforms, + generateTransforms, +} from "imagetools-core"; + +export const getLoadedImage = async (src) => { + const image = loadImage(src); + + const { width } = await image.metadata(); + + return { image, width }; +}; + +export const getTransformedImage = async ({ image, config }) => { + const { transforms } = generateTransforms(config, builtins); + + const { image: encodedImage } = await applyTransforms( + transforms, + image.clone() + ); + + return { image: encodedImage, buffer: null }; +}; diff --git a/packages/imagetools_/plugin/utils/shared.js b/packages/imagetools_/plugin/utils/shared.js new file mode 100644 index 0000000..bac7c05 --- /dev/null +++ b/packages/imagetools_/plugin/utils/shared.js @@ -0,0 +1,47 @@ +// @ts-check + +export function getConfigOptions(config, ext, imageWidth) { + const { w, width = w, format = ext, base64, raw, inline, ...rest } = config; + + const imageFormat = format === "jpeg" ? "jpg" : format; + + const widths = width + ? width.split(";").map((w) => parseInt(w)) + : [imageWidth]; + + const extension = format === "jpg" ? "jpeg" : format; + const type = `image/${extension}`; + + const options = { + format: imageFormat, + ...rest, + }; + + return { + type, + widths, + options, + extension, + raw: typeof raw === "string", + inline: typeof base64 === "string" || typeof inline === "string", + }; +} + +export function getAssetPath(base, assetFileNames, ext, width, hash) { + const regexExecArray = /(?<=\[hash:)\d+(?=\])/g.exec(assetFileNames), + hashLength = regexExecArray ? regexExecArray[0] : 8, + extname = `.${ext}`, + name = base; + + width = width + "w"; + hash = hash.slice(0, hashLength); + + const assetPath = assetFileNames + .replace("[name]", name) + .replace("[width]", width) + .replace(regexExecArray ? `[hash:${hashLength}]` : "[hash]", hash) + .replace("[ext]", ext) + .replace("[extname]", extname); + + return assetPath; +} diff --git a/packages/imagetools/pnpm-lock.yaml b/packages/imagetools_/pnpm-lock.yaml similarity index 100% rename from packages/imagetools/pnpm-lock.yaml rename to packages/imagetools_/pnpm-lock.yaml diff --git a/packages/imagetools/pnpm-workspace.yaml b/packages/imagetools_/pnpm-workspace.yaml similarity index 100% rename from packages/imagetools/pnpm-workspace.yaml rename to packages/imagetools_/pnpm-workspace.yaml diff --git a/packages/imagetools_/ssr/index.d.ts b/packages/imagetools_/ssr/index.d.ts new file mode 100644 index 0000000..87ae242 --- /dev/null +++ b/packages/imagetools_/ssr/index.d.ts @@ -0,0 +1,6 @@ +import type { IncomingMessage, ServerResponse } from "http"; + +export function middleware( + request: IncomingMessage, + response: ServerResponse +): Buffer; diff --git a/packages/imagetools_/ssr/index.js b/packages/imagetools_/ssr/index.js new file mode 100644 index 0000000..f25f02e --- /dev/null +++ b/packages/imagetools_/ssr/index.js @@ -0,0 +1,27 @@ +// @ts-check +import { store } from "../plugin/index.js"; +import { getCachedBuffer } from "../plugin/utils/cache.js"; + +export async function middleware(request, response) { + const url = request.url || request.path; + const imageObject = store.get(url); +/* + // Debug logging + if (url?.includes('_astro/') && url?.includes('.avif')) { + console.log(`[imagetools-debug] Looking for: ${url}`); + console.log(`[imagetools-debug] Store has ${store.size} entries`); + console.log(`[imagetools-debug] Found: ${!!imageObject}`); + if (!imageObject && store.size > 0) { + console.log(`[imagetools-debug] Available keys:`, [...store.keys()].slice(0, 5)); + } + }*/ + + if (imageObject) { + const { hash, type, image, buffer } = imageObject; + + response.setHeader("Content-Type", type); + response.setHeader("Cache-Control", "no-cache"); + + return buffer || (await getCachedBuffer(hash, image)); + } +} diff --git a/packages/imagetools_/test-fixtures/getSrcPath/out/out.jpeg b/packages/imagetools_/test-fixtures/getSrcPath/out/out.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c8b7e655bdbbfdc9b317d3fa1b1ca3a1da39b787 GIT binary patch literal 64835 zcmeFZbyQp3*De~YxFk5G1%d~+7HcUIic1J?1&S95ZZ+H?cv2|tZbgezoE9$>C{VnV zQk-HZyz=|b8Tb3+o_o)@W85)1VP`#it+`}AYp$KWGUndbpRbny6e^0!iU2Gu000Z~ z2e@7qheCbqZ2$meWe9)(000mJ$gr?6p8!At<{-!5TbQ&4b5LL~9wr^c93U*5o9cfZ z3|M%7rJph9xBtOQ7|ivL4mJi0Vd@fM(oM`EjKNfxlmOEJCHCL#-00Yc;r`VQBPO2? z2LNFHk6;S_8_`f!)ztWJ@}c75g8!Axi)rm7=7G-unh)dA^+CF z!f=3%{JVX>8=VBAzeXI0!FUOO=SN~Ne!|~<-OK^OKlr9A!v6^q{iC0N(GN(#2LLc> z5{AoA41SK$MPtqZS^tbpNKg%Zm^C+lziZw8M2FUHix`v-erFd!HIud&@gtbgzg zyEj6FIj%7-#PJXQ@0k4W@@{zgpW9&lr+(=_DJJ<#{^Jh+UjmHxhyKIw%{mDEhhG~E z0sms>zwm$gL1@C?JRXwY==|f;Hwy|Q|9auSDK^G(>>I)XFbQ!C`mdR}(FS5l|IWD~ z2pfR$lbdXe+@PEB*kG#S{#6eEc!t4v7)*-E_rTy=|KtZ^F#bO{5`zga_-3VJhK8B5 zzx@l1!Q}twc2ypF*)BCn~Y2?Ho9Ye1Qq0RUNDxaPl;`R^GfRpgVuDb>(~smrP{173kK*9{EE ze{27n{!sCjHCh2>iJJ$|EqvtYsezH~*v^-ps`5Z*1oQ!D^T zRG#JfkNjca4+DP~_`|>-2L3Schk-u~{9)k#Bm3`ZX(@oDpxd;Jj1064^mkYwYH8PukRj#^|8aB4aCSvIpNJvCOONX(U zgOiIJA}V(8zPN;>yaH75v68Zi4qR7H-@wqw>Z!Gjt)0DtyN9Qjw~w!1P;f|SSa?Ka zLSj;KN@^Mkos*lFUr<<7TvAh8SO2b|v8lPMyQlX>KGs~mY@`}c zu#gCuSh$c!&1#k89*Lj^gEAu3C@fq#7A2%2I%Y4Lydu3esccXfZ_J zeYDLD73GlD>183O7Dgz?kl%5T?Ju_C)S!u-Vr5K6yA#QNa*~eCR7qjs#`K={S9O7R z`I>$|gqg-u-xECZn|fe&@!6>KL*xmiQng%6I_<+e%w9V2Fng1|w7S1A#+o#AQuM;F zJiYK5U_+I9R~VUkVl=6Zoa1}Yerzk2DcW-TT-+Pd_sux#>%&ryZb>8+kP_qX zM!FS+4s=k-4bmwkHsC46<7HK|yisnRTy?yMvdZx(!5#-+wv+=wDcLcEN)CofYpDSL z$)L<~uUuhW2`a7Eu|{3Lbf~ZT9>}ab3AzR_`oU&nnLyIdrluy=C5;^{a`*MjxuP>> zKRlOohb_b;G->HfP5|AQ&hQ<+9<9GTeCqlAD{3zmb>rsuq39 ztRK#2%yTrIoR)baD$1s}#agccdLyx3m0}rCpA4!)Z&po;&7p~Iy|1wo7t>AOQ6PU* zL97r+s+QMr4C{dmkycPti#Ov2{j-Sj56{HRe;-~0=Bj7P0=P14_8tUVm61Z2&QC|K z0kt|Qo1^B0Ux<)#gJcf$Xx75}Ms&gXKeRdt)x}8a-0b5ah*%-h4^JcQS6PebR7KN9$oysP$&y`2Zt!R{K+ zC6d2@bN5a8W4=*Bf*y*msjNp8W(IkIzRby91GlLV=}SRDI)n|m^64ObwOXfZz+K5o z{Hq5qkIOt41DMi35C78Yf3F3Sh=YVf4IIGHIYBntV4=bR``7u0+)iV7~3n}fohJTE(IwPYd=sYgBWWE89}LR9&ns3J#!9=0Fv zlug)kZG9I4&0})stq>P@o|8_{I;fO8+pt)e#!tSxdKuS%2ac}?ZT+J0fLreu(chok z{W>6#_=Dox)fJz(!~u)4-0;DH5!xoKXxmlv7|Ekprj@Yd{>uN-v3>w*vKDRZrFa## zTrM|y#q(tVHb+NxY{AJ!mb>-+hk@jeRqx-uQh{%Ro|4yF?KF@=sTyp<-#JPvQanE zRGj_g@c8_lJLOJ6I?YtvP{BM?4%1$4%JWVQ^qp0f^JeJmHQ=5471eW8_3Ion${)lp zL->_X$nDjvj8(rVyuWzjvRClN_vI#`?=|3s@dejvrt5LtXpG-v7PjCc=A-^ftphw@ zUtD8*vJyz-g7{4PN#io(%X#fnT~Y+xz9R&1ne#R48c;AGFK?XN<4-jG>F~#69prLN z(uat^9g~s@KabyfPWiWMJ>GaJu6+&OeM@`JQP$wba+d3oy0`87d!>m(F=kGJI(c%b zl!W3r#C{SsVOb*EH~iiL<5TF=OaHjb+jso%J6+DGE3N_G&#nQ7CLU|eoL8o`7g@>sz0x-P{qrIy>@vU@v(i_y z1LuFy(5*BtP}{!gY)+@~M=y;eATL)6ZG7%#F;$91mk(7UCzzr%MMS!_zQ#Cw`tq2o zJBS4b!13bQxz)vbVlN-D<4FN&i}x$9xRs8D(+$zxrYl+7etFD=v#%oe8esPQW)>@D zPx*zG9V>rdy}YEo16m;75gD8Oq^=y=!9AHq#3e>zWlyTg&6pFtl4o|aUI$5K7{~AC zOuuNk1~C7+2AEU4++594b?@c4ZH?IM(JkkJw~lX!7%4Y+;gph;#vu&zeLiotz?$z> z1Xve;#DOxpb`1-fV$DBH|79}6wz_XGhYsz|c+59)N7UvE>>5yc<6N+opF!l;0MPBt zmn|N~2T-Q*2JK0WV}txql{`j$1nwYIrcm@1 zp5A1+(ea=XNRwZ!H20gh^^>8@XRjYsT1B<&B@O>%9=GzcG&s}$On*$0taK`Oc=*Zr zC8?ai6-SMB!nV^7=Eb5EnOmbTr|sqfuK_K-Sl0leq*I|+-;}3h_P{uob^!}x8t{t` z4IyIU!O^mnBt;BcK0s6zVK%oSo^OBUrlE^1Z zemY-A`89Jfe6l*0YRRYAim@=#%cuAWPPu@Jnp}_uXTCfGT_4r_WX;$hcdtrezBheB zaer}Q0k;qymncr-QE}>AB6WmpuY>_S>5%QCy9zlqD`P>%+rzYuyY}t_#k8`rg*MqS zBvxqq8=vf+hew%y@MhD|qs4r+QH>KR(H#}%O00wuf`ZO;LLLnWAx9v;l&r$2elByw zW52c6G)f@_h+a*R*jW@%!UmPDXa7&$X8&pH4+DP~_`|>-2L3Schk-u~{9)h^1AiF! z!@wT~{xI-|fjIS@!m!$?a>#Xt=N(y`Dn+_}TV#6(F8W&_`4 zW4z0B7ZZypkAzPy2oo7t-8r_0 z394JBqGpwI%c&XvMLv*rB6cbo=Q4oY`r|v%Sun2CX z^OC)D97VA)Zm6X=!D7_y3Xm5eP-$A9m?(->>+&5i18$>RlwP<=Y5)=LidZ2EhjLR( z)=}8wzDq80u=82ik}E3rO-N0bjsp39E_t^ntv($|EJ{^dDmu+>q)qRY<@CkJZN|$w zIMRkkZlkdn7J#i@M|s@n9b6_@Q#1^uNM3ai?A4X)Mw-zoyR?RAK8+S&o~GJDmJy2P zm2;HQRQ(b|TWE9G7geXW^b`ZP2Bma?x|0)Y2wI2^pIQpdv97K@_QVcukDDpvDzLCg zj&{UETzPSLG|8lvexI~^@z|Cvq&mF2=O;%(ih-{ddk2tOf`)FmgtjPB@#$zzst{4is$Qug z*nytVSSxt9+~KNNS2qg}$;`Q{;S)(w}`xZhu{Psd501c#%1 zzO-XY8nX@_8lxVno2gRO^IG^fq;QxRyibbPxYMNv%w89cf z)1q5dijlhG)as8BFmCb40`9IZ19{@1p3*QRr%wQsSD>zBaj!TWX3L_wU-Ik#tckLz zy6r6s%x90?Zy%>>!40QjD)Q2MHeTYp3(;*f8rJEHA_Sc(uGE5rbqF~4k{Tpd%|5o) zL6ZS#!4CRBD(mKXwec*&Bvns*7F(&v$Rz%|^2q$KwtNE%AebL0omD)S^lZjbm*3ig z6>@(fJ+YGWU`uA%7WuwC)6uwgTe0mh+8St?Y#*ow^B;W zYIg&;fm(dDjoJNB`{WX6XpOJEe**RFv-F|9TjPbuyd>3iC8Y?Os@h$V2)13_p0v`a zIl|&7>w_Ug>MwcyP{oX;0g>7GO@jmpXM@$^bXJ6o_5An>LwaO-t@rIfo&NEzlUxHB zuCL`?3kxT9&J^}}w(LFdRI3XST1HqJLVddKix9()<(R&O@kire7wKXZ-Cx5Q=rQa@ zpG8_Bly@s5VLs_ss)!~xp4PmD+~_%36K-Xw$T zWsi?DsR>+K-Bp0L#Wix4hMQ>3PyHBbrSd}fPS39*(HPj`Em%`ALSTTveOQqa)h&2g zM^j-pIYKZK2F^qB_(4<#v6qa^E|i9ncZ#!i%Dcln2Qzp?8{q#KZj$>SRwE z)ACgNSXKDdxRuMeim_W=?o}1q&RcMl#BfCq>v0^gsz1a<>#c9ZJJ`Opuuds(;$U!m zYcsES*-h0v-ZDhE?Xxb`WiC1a=d>v*LQ>gOO{9ZxbpxmJGvo6qN~#@&2ka4EBhQ!F z-m4l^`y^ZO_HwAswgf5pQIuG73s@V^IasAwcav=zsR_**NAB$xR|@BS3FOu3nHYWB zZM-jLGM1E?M3t7me!D!Fs{)$(_Oizur7=;lKe}H;m*8c=x^{cwt8HCpB-mBnnPYXeOCimyNF~y-$4!Do9^l7KA4fiWsb*6v=T! zQj1!Tzwd?eucL>Dv@ikN+Pv{J<8UK_wOshS?};oV)?v!+t~%?Ew8d|drSk6+_Xb1} zOw$=hCVaFFi0zK}h-xZQH_U$)UgqVf0VlfR*bT-@+aF9$`xs$%B|(73jVyrd>IUzZ zfuw}MOT(&!(%TH>+e48_U>$2qUd>QbOMNBB=rs?x?YNs~!V8fa{iuHUe5pqWT7joba=+mcOfe((@-5I0O`+G{I?}h-6wc{KBBnmMNG@v(h=t6Alx8C3d7-ApEb_n+nG?_x4g4dW&^srMKoDl z+&`ou&!-(FpgfvPv85W);_F%Sj_D4aJ)ckm`KE zu|A-}vxwF(k0+IV!KL?L)?2jH5m@qICEEv`koZE5$I4_2#kG!lP3^|Fu4>Szq9p~E zYl)n)UxMcwL{N-+@k&9F1^MT_@8xo|U+4qx=GP0~Zm=QDGoh~th)_<*D{c+8H~li) z9RTAGAms^Jr&s0B7)1#BQW-M9pM?AP^PAE+kPExz=V(v!^Kq|uhYgEnO>@C)guQra zKSzJ#!L5xROe}lTRoa%PCRnwx?EqX=NkFFL@+8a(ML?sQ%x;~11i5ezv#nB^Ai=d- zJ8)Fj&>|le&t^gkg(4C=?0Oys}LW;9Nt>B zK+nm$zwT>x*VT4)qR6Dxr?j;s4%KR4-;Ibe;q*k4jVDNH15IG1o{B;WgFMdtDOClO zLcD8&)Z1LS&58pNrLQY2JA-&I+L}bn0=i#|?Euenjxlr~DW-lcT-+ ztiYeMN(X7QNKIiyhgJ&A@6dxY4Cqexnr(IBB}+#U#vFo&Bbi(cl`SDr?L zGoY1J@}i`>6icGZnyQ*uI(4xq@9Dh>K3(OSddAo8`MM|XQ|x*UEs%=aT`9r&IcWuM zS7{I1r{w0rmQS!xAP4T}Yx*V3K6nT1N-vaDUTLzn1Q47spwPe$4p(HWF$#9e4~&COA_<8CiLU<|a@-}R$)Zbfo;NeK2^L8^X5EJfE6`NHaM(-5U6@7Oz7DzG0yG?uA zAK?llq)gU${fk~9TIG38MBQ+)O0wHB%%BeExT*pv#Qu{c))!20GQhv=MCr6?Ut(zc=Gv+{YZ%3GSJaoXkfN%rNIyta)u7HvvoTSw zRcPCanr4~UljxV;iQo^*gR(yV`6f;)XEutO>Tkp5?Plv9GNW0V2u)E~MsPP=*?B=~GDq>vc7_*fMW{KwMXB zdX+t`;e~+rV~~AP=S72gs*QeDp?L!*Ns}_%pKckWLHDvIar1b1NcyUvh9yGO7LZ2k zQsL4G5v>9GlMqy~^|HMS543g(Ueu*vMz5?1s%ryU+PAx^xIC#39()dsoMD~`oTuAM zt=)qx(s5=5?GS@0t%V6g0O~2{R`t-!-S69mT0K&s`L-R+u zznw>e@tJ95!MNQK?uLAk-LDV0H9qah;X7v4)t233>cZyF^Tx_d3Kx+xw}mVMq?zlY*{d@gClPkVN#h^ewGhLJgL8o=33 z5Q1G_4-)<=U?4;~nW*aLA-@hPUxdYyUR^y(l>D*n5)N$-C9#!NhQco39g$EGT}YH*sc4#~%h ze4q^*#V!fVXMUp;YVh?@M%JWO5Vu1Qm;{5uqe)#$_K5*P&OhvXzK!; z6-@;abvnGgSLz>*u25W7OB6uBvU$&NlhwIUcFu<9vWA1Q=#d!Y%q!(!tr6$tJ7h_tW6(dIdU>!Gzvj@~5^24AH;iTrJoz<|LeY!5dAw(xL#+L;e_9oFMDSa3~_98^$XbA=eD9LsUE^bZ<( z=I)b|)VfAC5vz1VF0dWgc^G1GeSAR#DDHc|I5>?6?Rz8KGEm-y#nQX>eCH!xm<{6n zAs*r&(?o59gGGB$RU@0>a?MHS^YD3i82MfHmQUQWV*{{DJc&ybAtd(dX|H}#d|KB% zmQJ{`wUP+$vE##TW!Q&;l4tPq-b9LFA6inBg$rxzC>(qd8+mn0s8R9Fh{3N$h*}yd z8tTijYfC+x%|Y+J1aCMa$jOvPtkAVO`Jk2gO;jUrOWw#jY!HmcbcsOpWF@DAYgp2T zhIu)*w34doK6pYDlUs(H1>`hfnQt5VhsRUIjI{VAsFPMlyO_lS0s|ry*&QOY6>O|E z4pg`^R}I`&`i#A))f{jmGP~Iv$ooAnmc12@O=a2%nyh$bymVx=N6H z`i`B$j5h3{%a4nSm5aRKbt=S+Rt!65A3Ug36wB=D-1clMrc@I3dux2jNlE6S zJy^DO_)?Kanv4flrZ=1377;KzP|2FwMDKB&nQB~umhJu?x$kbYmbYC0y~R7#={}<( z>SE*e=)`8`SyPeJW$zusLiZ@-Tn2fiVmSg_!HxJzMd9 z%X+6_R5E8$gzyxYbbQ~sEUV1+PH;lMpK!f~9FGlcRjyz;SEJtAk^#84;ORTXU_BIG zpN)y}r;J?FjGn4cp)N^KY0r#ptOc8#)7ioSsSSfl$TEl4N17p%r|-<9Xb%I@7 z!}a(LcY)uMg5SBJ_@XFP_sM!y$`UieXaqKevkAcbN`tDR2u6HPxdf!#9!2}3$S%Af zE+V%w(ml{NBdx~wvFDEBJ~G^QT#CPV>`HMKYX6>@Vdd{z%Pp_xS-1BTN;y&H_tq+f zOO%72CuMTDev!1+czi#%z?b#rQmDG`=%C*_N^6#Dd%r@Al>JU0VMUYkubv^h`JwP> z&U!Mk$xX{29_HEzv+j?-)wbVT=r*Rl*ZRR9ymI;7LHiqPQmV)r#2`*9JAZT~4?57e zqd0A~q=hQhVqQkepd@L&8p-3fywFdf04Llh4T+`Xmu>b>YvQ2tV^MQvH-2Gr8x^F< z%BOdRLl&te1`5E)RmxE%`bBh?b;577OyNK&~|3v;K zueC035zDkYUnFjUZvwZD{ZlD^TJWGTw}xU>Nirn3W)F<{rE$s0OeJ9j{;{<`skSlLvRQ$X-bOf= zrE~+qPQNo`9A&?1>-C`Y(w_jBCC%=Kf9O*p9q{aNhgpS zr7XKn&`Abi>4i{3y3Ba-zG7!3Gfy*0E5s5P68Q;~k8p?WS7q22_mX|w>Uvr3#l7k|JJp23s(vM^yV)vG{YnCIthF@WPKGu@Dseub=2)5B>agJLY zic3^YvXK_=;1PFOI5?gZ$V)Wl$X>|WB|>sa^}$BVi%VzJJ%cf4;S|L?g!Ek!qYH4N9RRMb2fZoc>=nT~){9V8hIx~^=JHa-SR*7-2&Ph&P&?WaU@u2^ct8yV zev3Zro@nw}%2AR@Lm-4ctiQUuagw{49L&Q*5b?Ef(bJOKD9X^r<0+}n8P|Csx=45HUTx~(>4jJvC$$4$b&wfT#QwB*;3 zPPNh7CYakqH?(L58Ldf68iRzX>xySwe$US0E1AW%a*36`GqvvzEL5d^5o&y&azL?7MzFl(zzlI4&dA}_XX{9_ zm|C?t$%ffPYc2`{pSDES`o?0F5|pva^;o0Wl{h)}C3VDF%U6}lfo10CMLCuxa^cF!8#mCbEO%-6#urCNMrMz{8-8T=>P^7{lZZ@!3#chA+=k*L zJ=YKq;Rzq2IKf>5zllsPl6kb#8mU$p9)f$!P~#scf>i<~?R_GeWoXU|g_B32hhwO@ zPOG&!=u&4R*l9@(A4SebjMs?G&uxL5_WO3CT0^3GU`Dm~+%is* zAMFx~5Z=Swyb+mUbJ#!LGEth}C#JSHjvk`6 z;;!Oj^p4}ACs7fh`k;^IfR|Cj-)!opQ<^LB^@8dpXk!%&-VXO=n|ZFo8zN7r+Ez-N ziw2L`ZGG*RR50HeJvN_mtQ(D7FNMwDJ7rU!quVh~R;lAQq57cD;c)P!(YdVkzUn@5 zN)jEdLSHz!Kfh(0`k;1SXDj(tiM=ndqg8-<<`d~Ng}d@(SZO787;`xH45&!HdfO*t=I zS#*qhzmwWq*#ZJ;iHvUzdMmq2+|N7yn0{TaSPA&j&Mb?Gxtxkrj;9qj^cj59q!Gl( z4gM4#8Ja^k+7T=KrfZkig^?E~AqTsUj?e`*h6R9QpMQ&8$)8tJ*LYHW`7}~}gts9v z6+sxgg{NylCfEr>^;-vEUP|=lG0G*MfPLkNtDv@TNlT&_+mq_ZWQ|4 zCRYs)!yx3Tt{+&+HDLs-z(<$hpq(DM`*#2Shc)GVjYViu!MKGOo6`xAYIi_TiI?zW zA^+ewVewRr{d-$IX3(VpPHu^>9yFFdA_B9hvd?+L6?fJGNJ@T2aHZ%a7;D`s=*Y2t zZk@5(W<^RBy!*b8^cQcDjXTkvPK*2Fcr=vP8UbOanM#WebmK%)Gvs=+i}2*e^mqgt zDCZ8xPL<=G3P~WEV8ip1?*==wU2_p8y`_)tuyk;)!WUMI?ps1^%sk>PBWPqLLstpa zhSG(l`uupi312*_iRtD^9cqnSX*NG-7OJe=PF-Uy5!2^?QTt9(pFG!C_N5NyT@c$< z)$YCw&o%i*6I(JSjq)AbC23EjmzL`pYaR<^{}$0d&@lT}+0cFPov%qe#sRb|5#vzY z+4J3@KCB;2I)q>tUUTNOI&$8~wSQ?EH+Bb6CON-jR*rst$EzTdHb?Tk0KcZbrfr$z zN!V)CaK?vk%DOv@Ax|1YK-kWWs6==!!L@Wm2YZ<)XgsTU zs?D%?qmq8(rAg(%@_%NV4g_>^iBq4PMsJejeuEJF)KO+rY@iy1SEV(^tg6<^_=4$8 z*_v`tD8&dyJN>4s_y(YjmR9S1XQGR)zNED!>7k)d1`!LmX3(@2V#F}(5ve99{B)6S zJ}ym@f5m7u>Zed)>jm$)H?@@6s^KpW4(GQP(Y_8kKY6tV5hy3@6rY-jxBF81lj=Hp z3SQP$b7SKxTS8<$)G$;~d}FDhh+Y%1vc{ysV{Dg%bxv1#NR7Hme5@!RDosLJOV%i$ zUr%qx8b``N3n;;$JK%~3Mo)JVgwT_b#GLHOx0VVwk%Z?wDHZ&{SyS{DZzvKRu&TFe z8y>Q*>B##T`K^PEu}62^K&K-_#&q=gA z@0B0!?}p+Q;cS@O<{T+e)!57Pc4^-Nr&L3Jo` zsz+z8BE1~|p6?y$w;Q0R9(rcjhRvh(BoOft+*4DE`L4+J?$nLzoi9#$jT zAHb`LhjE12djZvlTYB_gQ?BvJK8wmk-q~6waT9N54Xih!dGq=s$pu`yYzF+n0}>B2 z^jDOZyg#r1@{tA7aNQuvhL%Y%{8RZ-MUSJ8+13*?%ZJQN6vos9-v&cs6>2EZt(lDd zE9=Rplv400=2ug9RA~u$YgCeEkhhyC%hk+g<`|sV?w~k|oVmpo;HLN;Fj#!aYQ$W^ z9c+2~gQrHcFJve=R}yLXSkP#Ltw@K4mK%i+`VEF+nGr+>W4$}S??Lc z<6f2FhIkeA$N7wQzJ$ux(R8=OV9_VND#z0&ntzlG!Sg5rk8?6FFb0DNpDGP=@jn9& zs{JCnh(b|NgIX?zI-scqPY??nm5;pwuX2Ht=*n@kLT8WU7bovRtd84w+$5v)VrN)2 zi`QDlHEbAnvz4+(?Cdi}X|?jS);-7~6l4eI*Ji#fXS|s8AEh<+Z%UtTy>eK}tDN$u&@r{Wrwsza$$ zFGP=bAXQNxT}^`3SP>tW=EYBfx9%mJJW@DqEYk!G*3NfQ%8Cs0fE$U2Ie{a$ikQou zeuS8ZN00?#Pmvn?ip-myhjdB=Zc8f<`38J4S&C3jZEYL-rIk#SA78D_FeKQ=E~5k; zaiQI#X^pgW>Q|JD>F~T{j!;TVVt}-U69R+rBDH-&6HTz^bIP)kQXW7BHVLAX>Tb1F zllPQl=1~(AK^@R4i!{S2c9dL^JKVD7PO_9Hv77P60!3nMN^OQ^^8s3|?z{>=p?Ypr zO+|T>(WgL;HSv>V^LY?szvZ(4r zGJmj{xwjqVPyY*&OYGsiYTu-ww?e&3(6#X}c#x9C2YWC8{MlV$RFyhz^2QjMinHf`sswItyV++?&IzJ@e|A>`7cI(>V0}>)h?DzP?RQn$kO!Wk0UsE9Xg{%dCIi zIOp9aHRNBAj^Qs%bM`>OHpGb7h215omPJA)pA}B7*8%DN`r7Jptna9F>Lae0-AjBk zLrs05L2DMApY~&a$VA-9nW}Kn|Eq4?36F7p-S>S>==6BSx5ehtYXGNX>F;@gUmBI_ zm`jh9>by}ty?-G5cFc4%)P|ypd-$<0j3gD1bds{0-lKOhV6B#SiubVx@hZ2K0;c=} zV%%LP{aWI#+x^k+WZ26Bjgxv^5h3&Xt_pHb!S(c?A3{kd$xgWX1#scsBn9cAu5uHt zrpW{}AHpl+?fdGyQ^B?AwLSGoCdHXpPdY__EHqUr*_kW3x3+~> z8dKOe`jZ05@xLlFG3pUi7O9yh4NKhC#-y195-xv3tQ8|@x;8oF5|0MhE%Ek9dp#Yzh4WbdHXLX z&ehsNF^?rS~0G!}??cVT6Y@ksfC(<&B ziHh)C>D6hnQ6fyQRpnh=#FJKUknppJPI`(~2sf6G28g)~L1ND@kvjRfi&%$ySRsY$ zQR0B7%DIv;Hm~*B`@H#~c-6yDcYF0oE?`HQhSVv+?+*dQMn737)7f+odRvV5X@ud{ zDjK_Zx}>g2@$j78~Jb`HKDF;5JtSq+aJae%jC{N)Gi76~4Q8$8nEz z3%LY@>&e)V%0F?xA$LE<$Fl3I3;oQZUoxp&jGUzW4BB?%X{K_a$IJgYjEe4^+sE&8 zW({3w(PD-d3a>qBu5JEZhC}09d$p-HE{o0Y zxJx?N&DoMxa7-Y&QTNWQ8<#y>w>X=Rw62!xXb<<5JPwe!sdFYntGRnA`n zdOZE?&(qrqUd)EQUl$H6#cXh9WDb!^jg<~Qsji5-+1w&|f-tR+h_M8l$VFAGMvfHbdDH15|>7O_&->v@m$Mr{D4 zrx|J`I@Ozd(6UcftZXp2{N2!+Td7Jv3A?Jx)}FM8?|Xb)I4({6l{mFPhMP6CgLi@V zU5K+u2l%P3Rd_6pkCiPrj|UNN4B8{q{l&8+g172v7Pwox%Tq2)sH+=t32q#UAE0H< zB<#A7dktE83fklPh&sJD`gzv)wnE((V>^f6DYx2O2CdFMH(BUD?>~H7)7*8goj?98 zCVX#YW=eFfyIb5tz)jDmHI=dmG-qsO_wH(7j^P+JHFHI;Yv>U_J9a70)n)!NlMULpGD5-C`Y?~^+`W|%<`MY%5 z{P(&1LdnX-ihp@Kn}=VkM8nM8(J~Kzlb_R7{?QMcJh=-Mj|$q4d|ryK(CQl5K5x%P zTy0_qXs^~teb64%0(U>NT5vjhkkYoRfBbaHCWB#Grmb?Ayh8n!DZ}{5_tFD0K2M#< zYkU$nth6$p`-U`$IaIR~bH-{+fBNX;s41er(<8IhJnv`{WuBBv7F*x;c9H z(*GLJc_w37PBr7Q%ENhw6FL&aSib7KI?f~>M|r?UA%FL@<3|D*lol%Ujqa) zYx%3n$I4ALF1=~j--=C{6;pp{{^(U6wrKCEUnG*MBq1&?%V1&fSr%`kHxH1FhTSW|dWS@*Iw_k`}eyq#yK zUWTk?`gmemO#NQvaggnjk?CDt(u+1^mjmbU5h;_hSQ(k?_HTTtbF+i5sk(1iAC%Y4 zyN*@vC3_lI>mC)zK zR@I&TZ0i+AEkk!9>73>i;J9ITB%1NUIpX}|%gbm#$@X7T+8D=paxr0EovOGzn(83) zJGi~eU}~a|V$j1y)7!}2?{QsSWU0OhP26`0{It(R77 z{L$ak$iueY#29)oP20G5x4fCRGG`|9fzx^Px1za;9_f0Ixg#t1d!1vGE&txxn1tdK zjQegrd?#t)k~G`+a&z+c+qveZP4vrNv4#xK))xn=rEQU%G8T>^?K|%|TibrhfBZZ& zf$%Jykgm^=)jUt36e#CMYySG7bDk16?_aZhkfVQYS{QJIQJ&d(ImUifHZFG!@Ew1= zM!RTdZsnqInI!4(v#$Qd56#EBtly;yMrAzf98-#O%$FZrdJyOET;Y=xYF<;^vfxIokRNIq^*6#aFA+A^kCdy^Mrr z;F##zGj;qIiMKIrlszEY#3*ZR$7S00rJXbf2vlQU*4beAu)5iaY2#Lg+o#Q$Q%$Cw zunAkf!#Jb0eLt})%DPl}Kd#c>Unl+d?*F*g%rd6y9QW)RaIX09Kr>Jhvb&u*bD}P! zb2Lzy!5wR|a+_eJmQJKvqr=KEt)POobcmrI_UFm#Vy z2DZg^%|`Mu6p*`Oh7bI7(X4&gm(PF6IhTA5@bCS}y5+5m)){vyy*!|8-94(l2XT9M zZ^WctovCqV?s;@xd`YVu=ga$k zal+L4b685iru5l+Ww)s+|CsWO;(YatlEQBN?p@B-IFjelz5$m}dH$wT|AV8e3~Q@v zwtXv9XrVYoi@UoQFJ9ceNT9d}Yl{^x?jAHa1eXFqiihA%aDtQI(3|i6pOa^2C(oQU zYu2nmh1hrBE_)pK2}mX#9hocF9jts@G;rhELi(;X-af-A0yC*8>X)KP0|$5JnmGT? zxd!C6*Fz*&9q6b+-d+i(EE^!LuFY*IzD!y6Kx*xqs%z{PRj^VxNfW#I z$5-}hl)N>RyqK!KRarx#pWao6Q1WLoJutLK70h&U9jwWR$j6)Powz{4yz3l%&o0}I z@7~S&3TaO^5l_!u;>^OF-YKd?OIO;v8CF;sZa^E!b{5^4mJ1{ zsx)wB^r|+Lpx&lU{+wN6meC@Hp}qOl50#}zt3={}ZV}@10ZS||C4-I>`2oYUyx-P* zS)rw_F^hOIpqdUm;%q)nv-R#z`NFheC6=7X7yZwn#BIkPzUn(nyR-IRQC-n|c97F5 zpl2<9zfNc*1J(Of!4)o)A{TlB*t>cGE&ob_v+kN8cq-vh8Q66z0gIJ{6hc!W#lZ~V zM*`jc<<5wDw@XUJ+k8k&@Yll}ZO8?2JXNA_GgaRQ9zHTtrv@(xJ4Yuq;?jZ~#yo>T zg2)rF({)1!kgL{P>(L{_U8t}kw5z=wV&5Nn-dd}#RW1bz>|OqaBW6%- z<4Fea4Yz1Tu*H$L8HTL)ALl^lz>rlMfb$!1>TEA^=#Fu!qCik-b#9Wp&F(S8+Z&0L zwXi97k~*}wM@TkYzO(+a7`)JPGpISnV>6qhWv9Zr3_{)I1vw{r6;~De1W92Ktcf z&DQ^@y6Ez_)^VW3eAx~-_F8JnGZOn?Y~#eVR%A96G;B=Gk<{paW^t9Hrj$X@KIyO4 zu#AlOhCr%(Eq(kvcXHoJ-H}(HJ2GO8gbk{EKkzG^CIC~-eY+yNZgvbB_7`dUrsmVF z5wff}TatfNiyr*|Q!xkb!2bra4n zCI)!6EX-N6-$gVpo#yTu*X9{zsc^)X1-tz3MoMPe7Q_UFG4BNAs!bNj($O_tu*b;S zno*V=M_NPh4fS=5WaH%)-0s^b+o{{5+nzd`*0?n$j49aNzw?B|NGxzkYXMV=x=`;@ z3C;R^uAjNIr80VJo(+_no!(M>Ew~m!E$h-77#L)Bcsst&&`vHO^&obS2>P4D6ct!y z0&%HCW$~9RW!To67c_53c6D=k1lpi-9v<_%_tQG!D|1r>^A^YwV=-c9zx@t5H@RE# zAl#~&k)<_*6}Cq|u;q5e`W0!QB??lrc}v*h&?e<}U~hNA1%qu!R<|Bsrp@B2m|m8| z-&IFnsCMO{>T1qAeH}1(Lc(&AIWukF{#0S7o69CpeBZHVDcdnMLh+`=T)oZc-;+6@ z4SAyhNiBLL(B73=MKSa?vtwjFPwm#=q}eOuo`Px$Jx5kKp!>I?uX! zX;E*Wn#an7WV&bZ8i?%Q6YoT(p^<$TWgg}SS0}E!(e;~GKGYhDAqNiCHe-@0o>`K= zofuRhF)E9es4Ni1c-f~Z?<(8u;+Hug!H4OtSV>&7@)J&7RJ6-x#!|c5#cbW(Xkgb; z9Fx-#*NMSg<0hZuY?v&pv=@l>bLVn8Dh+ICG?&1j;uYG3Hk;zfBU3w-aGO0y zjEhPL304*=q5;1WOr+kE=^zN#x|=l#uKWpSY1(rt1Ag=z1WQ* z>AAkMo>XJA6n4aJP9pzqzaU1sQDJ)n*{@)q`1O_P;To0DZ+nGh$vw@p17LV zsZ@Cf2P;+Ps;&16my{U$?hN?pCh`}WDv_=)y{i9JlCZkgN5~JEx?Sd~EsC^&KNZEV zI`X4rhMEeceYxv1Ch)9&nc1ioMZVW57m4$x{~h_YFE7+|FID%oL9eaCRmwzd^687A z>9->}e}{NC_?9WL`|*80SxRwX>m=YC;YV%x4-07eOP;qzao>dVy{6U#yohNDdsXfw z#7rG<#;LMMaQ(fzkmg0J2X>H6X9(e_J4fr=AHrnbIE_n=YSLR*Nx1(aW`dVu30=+hNoZ_9d~vT1P~B}Y(L4UZ5-6t! z_5AjUCWv`3znsu$rN@st{hR6Pi|)@xIR-`0>ShzK-q% z<;sT9Ax}D)pAOiM#a5?Bee^&KKL;Ek)hab2V%Azap&;PnJ6rpxP8W6{MRL?x9ugF< zaDPVe?}>@9U7@gvvEiTlIx@1eX~k>jqg^YzOVnx!fBZ`We+fl+U$ObUL3}~NMV^j9 zE>-QNYD+dyezR~OkgUXTDviy=tcd%X=yM&ZmTa8$P&3tewv0g1syMp=t(jct@%vV3 znc^p-Z28S{GWoJBZ%%uC8`l-Kl{|hiS3slyY}ebYL}aaD!+<%c@Y|_ zwC(xm`Vgp8vv{Z0a%&{8{p%seLwN79qL9fD)jKgZU1)CU#N>6}f}g8;fgYclH_9yb zJQ}$t$g7Y#m)e-C*=x&8cFt@J<%BPL$80OpyxBVv2;A~~8(#i5_U3bG%>7&!ihrN{ zVmC>+c4U>gy5gx_%k_{$Z*>UkPf0Bf5jS>M7PiFaQ)OYetBUfDw(LToaky`=$J+lo z^;gwf1_KP(1HYQwt(P;TCt5R9vv0r31k?OSM;fY~YrR1tl;#@u5v)9$`|O8#|I-Ky zx;48O>T%y_S?~LgpE{jALu`h=IKp0{uP^=T+Uh1nDG+tJtOAofv`+V40JV0q-pW&+{aTMi!W+zG!FLIkTF z>lUuS3hgxCyg?&-QG`q2gXMy*12C1 z2wP+{HhdtyqUY9<)%XQXmc(~pl}G5HK+Z41wiL2;LNf{l*r&Be<9P{4GJR=0UPPrL zU4hy>n+f*Gzuq4-U_aM-PP9g|GRgxoWawyRCB`q%`mXn3vy(V`1a}@YyQQwpZ}wkl zUb$u0M`i5LXpx_iUsyQFAFN$PMu}y36Hom?oVvBfKYu@j#-f;)EC2Z9;LWu^+*XrS z$1nOoIR>TCJG-T1N*-igkwGj>sYZStl*&w(HTI(ap5R8DtIVmy#+O-EdCqrYPdAay zFJ5xo4x2~CcuivnBSCjJQ$Z;?dxyOH2&3-8gHi&5Et!6Rj3`r@Ul$B4*4x|>V8C%m zK*WT_a8_>pT^DroGkRw51I6E=_MBd5dWjIW%dKkn5Yt@0pa_ro9C3a2I`!;A}7n#Z=;{B0@M2!_SN&S?~b&ow=E^EDk~+bLyz7V zre4}3^+@%3p;!?WL@sUAZ`)YuBSi9_08j`AAbQ_X)OnQfG zRV;gKRKuEmUp=?}AftDYQ7VnIZ5XbP*Pp4p6uJ5;)N@_da6W~CqSyy38qb}@^ZVdy z0%>UNRlo8Fs4Vw~(qKWwv=%1(1OWz4hX!XWNuQQTzHhS%@~=&eKZ@fiSp|a+IyvAsA}g9 z?d&D9G?M+G(D0f+ap+vL2rn6%fpClSDpLn9;HSy3rkXwNA-qo+pYlDV{6|H}&*qmc ztrGoZdS=AulEKKhnhy(8l2b37C=pn_V$Yxduh$4?ljF3ND7uC(I4dF)TEbs&h- zgt(o!=FZEi9(e3s80LysayHPIo9=ZiS{%u{*S^nYLLecJvkT=6sK%U2e!Bp_e@?JDTM8BS89|SIr%RZdQ<1Vkf9a3!i)t zX_Q><0?h2^kyBHxqp1C~fVi?=l1jLnwK=Ts$km&3V2??m$-Vc?LCOxGf2#(#ME2pr z%wERrY8EL_Es6#jZT5lqea+HH?BpYelZX#V&6w8X=R$0pOjIBdHcrGCaISbL899Rj zN|-CuI^1$lg*+{_lMk~rQ%r(HnUA}4%;h#fB|2*|0#-_Y+dtN6yhIQUv?V7G zl&Y4{yMaT(A1Wmo#v@=Z)`ytW(H*WGr%Mb@7#*k>PF1qv4{Wek*fn&LCkedu@eaxk zTE#Rj>r@6a4$q3j)A;F7G%K1u8lPeiQx<ypHEplPKgDV$5KU;D4^5g z<%GoFY zivC;*c66yIni?y;woo}Sf3~Y?uF^4K=YL>E>T>uXyt5#s9{ptw)xy0A`*!4`6oQ{E zTaf$LV) zaX#>!aJtj(@3;p2kVQ=73A%1d1G9tYvhv@PeK-H8Hnu4r=XfWn<0ES6mpaHz%@YA% zb3p0Hu2XUC>9|!k=jD2-lF^Zg)%4iMiCS_0Ue%2 z_VUhtVgmF!1M{QY2{a9VDJQ-TEN3z=7{BneO&(fxrLE;)RoN;n5C=>W$t|6q)kO7n4h5i_d~tF)2V`}Pw^ZB z1#TzoT0e&(Vwv@R4wxw%Zk#acF@QQu_+g){&$8=F0ZNdU_grvbOU zRT2etxbfrz{XwO8JQits2x*d9idfxZN`^&-je9ksRLZd2B&4_KH%l^tTrkJ9eS*AA zUSG{bo01nEH_bxHmX-8<^L3H#2aB6n?;idd;sn z+H#UJ7g*X4*yJ3TJtxg9hKr_VC~`&cI_$`_xxfI08Z4MOo3X#L>hC6b8^>1R9J?{+RoVm@qjr?e z?`%C2&ccq_ldb-9sVBiSdXbW?WsJ zP2(Ikd;blv?=>ob_7WA22(WXICf?og%q^J3Rfd>&faXxZoe$NN*3w}UL8L);U7oU~ zSyD~_R|lh=_``Sp1c&RrXX^2vuPpnM*6*^o=io^A2b-c`_0}8zAN`(rMR!slvWWTH z<2e3w{pH4M{RvnXu0S7O>N){tcuJ$hnF>xavK#mNFwn*FNR6?e+A@}rYy;XAmxSHK z(1#R0A?R%Lhuw<>TOoRidb>s^nd0^Pvv(ts&>@A5>24O#Q-lV#4q$~+Eq1N^!}i$P zVh%xIMo~&T8xePFym9UXb=p@nRVMsMrLU(D)23M1L*ii4PK=Xs;7;@$-U0^9h~#LT zs}y5k4F#@Oe3ln#wzZ^m4P%pnN(H!;Uj)H4YXH-VD?BzTxjEFl7Y7Igb;bjYFX5W{ zleLnVlrV-!|JFoyoz`Q*oR!vT@WTl*+Pi5@DkJo2c}g+gi+eRDS|{VaG42CvVcof;bX$tcNUNcn*Q2Cf?>gp>1_ zdl(aV7nn1&ls5U0M$BbLU@m{5IN<`yq4il>(!QIO^2?heUUO*ocerx&eb}jKnAwIL zH~I#?g{$l}Diurz>N^F3t2~?K3+DuL+biwQ?Cb8wIP-|bc~dBaUOJo8_4zn^qjfr) znk7Ld?=t&B2(%-x7}K5!xq3!uG=;+^QQZK0l(DP{Y;QK>($xaK*;`xM$|Mbepc(U* z=TNBI;#DaoP#bLXap*<@(}hxu%YzNw^c-=N?0DyP?FKc(uUa0x%Rgxp7@RN|JQ0*A zsp0x?u-VrF+<;k|;`r8C^oMcSDSGwcO~s+a=h3lts_mktb_P?HUNJxuHNO^dPQH;J z4GqmG)HK8gb4q9r@fX^rb51YxYjs_TTu&SS=U`xHLyZT~cxAb;KbM|wE>-5??gP8y z84u;(DRwsEKZ~pko%$*_?EB6&WPNan^yxV@>ZtMKMI@vSvMe<`(-^fjX(t7~-{_n& zFEJNwM>ymR&Skb6Kmv&cx!}sX{|R> zx>m2bB{|6|d9|^r-z0YS2fT1{wq*BiWvn$Q_ZRDZOjkDn8KqcKrhkgIHTNBYtGKE_ z%kONddCR}msXrwvf7PqOt1~B-_}*}YR{84dr&J~C+Ex#G?cW@B?#Hyo&G-~wI?|rF z58AyQ^3{`f7{jMgo$qBh@Yzz-)zN>g?Z@Ep;}w5lYr>#IbcX+dt`(?{xpr0|QTwZr zkOX4Z>c)y(dSl&>;pO1(#qD-x<3H7b3H_a>d`w;g*T4AzVaYKa8I3N+-uL z7)22jY|rqMso5FA4sIDl)i?!0-mESaAd)BS5Bju?)>OUpqu;JivK!f{4d*(M9^|R2 z*2Ac(G;ucP{iWm^1of)Q>`BHZ?PouXb*%X(T^^U?^S6%MQQ7XS*bm~4Km?9(#unNJ zI!kZKC~yfj`?>}{9X*s+9>tcI%z0J15KGV%W?C3p8Yha0Rjc{!2@=5DSIR6Wehf987>j z)gX0e4!1i=kZOm72r5P-sOPGsb&8tM-|L!^W+tdRT6;gJDgr_(kPn0 zOPk({B|F{!=7`=O>f#gCu98S@@=?aSV$ON>a#} zOm|6*Bi^HJ@%w#)Rpm3DBSG;bMUu`_+T@kgO8e7$o>B0y8oHeouG91) ze~DX>?TuMCTynj5LHX0@UYRv2g$w1P5N5C37kzw^Q(q0X-Q&L<1zj4C7m0t zBp-{)R+KL6HDN8=4c~|Y8gn(2^AJUyNtJdUMWSQ9 zwWv9J`K;c#OYS7l{Wh?B6FAb!B80QlJo{%~1a6bOMd`G~mr-_sP4z;ZuK!EZ_*Q)Q zkD$-PntEqFugcUZ)}+m?i*;%;ar7K@HP9MIlVWWrgWi1!49v{)kxi6q(vNe*Cgyr2d?(>vR|5TE*wiozh#bNj~xhkf4dB zN5$ZfY!j`*dC37tOSy}Fb5zLs?vaL8RoRqf^mj`1P{tjU!;g0LKk=!dfRD8>-=_>r zKT`AI>dpoYLq!9nKk%K)mzVma7fL@4!WZHW(&_;l9*)08V+u(fo+;$Z%ScH%vJWqp zd$X$hB_^xzQAoJ+mp~X8fBKq#Z#7ue;8VWu?fX>Q>Z-z&0-^0tBGi2+;F_Zx{k|ir zQvO@Cxb*v^EkkbJJ){ z0PN@QIQk*6EF#Z~%L~Y~2cT)6@*t5rvx=jpUt9NQ7os^_K6ih}Q)eqy&f~&tOz{@^l9eQWG-Z5ni8`C9J_PKZpsau)V#kD||$#J|sX6Bsel zAFV}p;ilu(lK3L9%n7t}FuyDqbVyaqQ`{tQ_~shodCwDQmwI(JvSxkpE6tJ9xiGNz z&z7j6SFmaNnS{UHUVUF-e{^Se88TfAw|e=VlY}gVFc7Pzo!~0RkMdzqzvPkG1G9@a zQM1}V?11fb!24Wcl|X=YcinW3QTEL;(O*wHa+qg?9f0T*X@nskLGcAe8+5zXG4^MG zHu(luHpFbBU$7Fj3>ZizVaL6?&j#nV1(q6J6HA8gXX*Boz#yAc@Wrb$3GJ#_+P=vZ zLF(=OT1yk>hw$pTUEDyg{WPWSZSCwANg4@m=JD)<0hAGpInmRxUMr;n7>Nrej~GhN ztSD(Lw5#XsodO#go!xK$KZ(Te_eAV-+Kn6Q2JJhtai#PhOcc4+WLGH!>^21tXD+7P z3yM6#C4iDPyE9fa*K5$kkJZV|u5PXKYxeZ=9K9;Sgb+2Mq17G?sYD%NzpgSKlBP%bwoVczef#Ud}VrW zc>G4_OOxJ~$b3+=J0%756!T+RIWNvepTkh1x>3tF6V?b{@9OeM%_>Q(+=Gfdg<{e< zEPHfzpGQ%9+Bg~F5ZPwJVob%Qz28;s#%}s--XQIQgX~oEP!g~>uSZ!`weHhbGEg22 znkc%h>R&v#u#&p+?%+WvTxRdvyF6;xYLZ~PDW`t*?Mc4UNi?Q4`BFa>{%g7Gt4_{l z8t;_1VO83HJX-Q!zISj+uPO~aJ;DC%lDH*L!|Fz>80PGQGxHXj+Dc?)q^ZHj`}_S? zL!dN`X)TVNkf} zn=fnj4Ch=lX)TQrR?s^YA8z4@!`KzapmVSOV=*(e zt^x8OSX^bl8n0FeJ>AqmfLG%pl&YCDii@WAtISHb?bCt~h}A`+2=TEd&=@E!_M=>> zwgESyKOW~Tshd@QWO10K*3xoI=*Z%2#lkgYJk_3may4GJFIpwCpOFT5Lpjre4ywMD zh_?I&nB^|6cEpQUdmu`s+7CR+g$-g5j$h=+E|{4cT8~h~sTojIE1hYje(Qslvj;YuoRYk2kKJGL z*Ab0#E{_}UJ0tJlZ+Uo(D1C#h#a#mLJ8 z^@*b`k-$~@SxU*ghM#E$x&ce466ZRT_w7tyCcmv@!%L~k-3td6T6 zcbk=`8M|l{$;py^^YsK$GA0q+v~YK*btEc|-HtQFYs4!lcMke_MKsoa8;?R7w7V70 za^Hu?Q5r+R+f4FS?cH>aMQ|R1a`249D8QEQeFruXga7P>UpYk*@da^hVI^@cg1$2Z zTuLdh5ZB$?{TJ%fKOTB;GpOoq{Mf18nuF#Sd9d4kcbpisz!XEtGmB6u5w#mr zT4C@&*A128s*@R%%TQnOqhhIcY%9=2kr_LHci}2wwhLaev+V8{vlIW_!&(} z^oxbW-x{5t(J-_RRd5_JdF0BUSTeTwL6{b18-MCIx4MPWT3dTuXB^Yfk{T}qPoGzx}5)}?j_=q zox}yrZ2(d%ITzEpNsyVYajhj_HT;xNiZJc|m z>lMSV33X4O(5euYMY*ykm1yzdL8k@Tf+@EYtOJ#+KBTgCf}*i>-!sVnrx$jK&H9uP z#`X$fEUyHOB#@)kDh{FvOK#;YFN63cfa;G~Wo!)!3!DiaHAx6Q1o;5*4C>yvCwkC{ zWG1rV1LQ}`nQ1kmA~YA+);>%!+GMJJFRbm5HdwXCID*M{y|WC>{z+G_dG~JWX2&*3 z*1*I7kNGfiVOXt&PTluKQ3DS4`@cG%lqTy$eSuHOzkCc|dvo}zi1BmTZV2&n(eiS0 zwON+f--v;Hb1|I&E6*cGQN`=g+Y#)W;knB^2B*QrC9~IyB)Mnmq6h?pE=!25!Q+d{;Ee)`5mFr>rTCH+KwHla9iK_UKqLQ&6*& zc|eOV1v=+TYbk-KEy7qEk9$9-d}cyPz{EEfTr_hT9&1b-pkgZcQ0Q0 z(z|Cc!f0xrsBbdZBpbO=*UC(t#mKh6H>DfFxQX?S_d_UnXN>}_fx`kEobI(VdeE#50}xA; zLOk2X36VvU_FZa{zF984xWI)hDXoRJTuO~EGoHYvkax8fnq2-qF40nYvRq|@X2+cY z!~09IQZaPnl=@|!YRV;7RwsXLz0wRR1$sa*fVbqp)Mc$yRwa`3+to(z1!5qUpj7~? z)2)!xgv2nA#@O*&KwMQkq}-t)M3H#l@s4ERGnx&2mD1XsNawVSw1<=NPm2K2?H|DS0O`tH=S$Q;gKo+PcBsH?ONeg-LgD755KlJ)5_=i@x$Ln5(FXag`(pK(S zNQWfgidFwJIUOpvCjH%1BthFtzmf`d9>dD#syDy#ql_~=zD4)C`7nHKhf)5JRG9XO zS@Fe=_x+sw?04(uzCY7l2;tHW_}XZ!ma181t59UM)fAj~xR-!7lSY4(|K=t4yn3H5 zy(_!k2VXhD+x&Z{efG+oVo{u=5`!vfDdK%kW{(7h?x=;4%9O zubrs3iYi2>1FO>=#ktp&^I!^bgBKGwUZPR4%@wr5s{r+{mD?0JA<_gYyaR?WP2r<9 zhNo{hy*|m-YqWfVgqi)P;4o8mQc5c+E$rVd-`2BeEQIw=AF$rv=w-rhkSh$gFd;8t z=()~`u4~hW9aSgJ2&P73r7X#o1~Y+9Jp;#bUV*75rvQ~o0{vvSw@zdYq~Gihya2mg z#qGic0%46aGZ|VQb|RBEgF16wN7~mVomB@&?`VzaH>au(U{D}UZ}&*MI^E5rZ39a2Cd~}md+UF08*{@#Uhn8T7E143L>kjFgMd-}iK`rc z2$^>bcRm;GzEE*x;)0hUGiQsc)@RWY)++h%J!Aw`Y@fM4mN%2)?RejOU*XbXF5}Uq zdPRya;?Kp_U0i+Te02lc=*1iaqaLPe_it--J$cBP!gM}~A`aCc<>DGA{Fxd_gBx)l zhAjs%EDTnfe5C6@UgJ#zp@2^AK5fqrV;sWNEk_MS%Hop~@xHwWM^g+2fwwm#DD?2bqmcWS|XLr2yt-fJatdNw}^$%G`4lTlq)PI$QcU5_SMH8T( zmtpp)CVk3d8M3dU<&EDS>TdC(f75@_vM2MwxYAA%K4f7V!5oYowdVL&x)Ub>rvRQy zofd;6*9JSs>iRaG`<&8;1&wV=kpah{YLs}hpy#nWYH4Mr=$8)xlC6kGm0aB?Fh1fU zUJgm(^6l}rlNuJJq1KVq6DaW%hPVm9#&&63N%Aa5;;(T^w>I#=;CrwNRKwh~!yFNJ z9E^b8?2CTiG<^x5#42G-DZRpeG&v{w1H!j+_^v@9Z{Ow4)DTUlFQ zZR@|$whhFFEt^)yA08T`O-Z)sb{mWP(h(TqMb6E;jiY`!c!S^LAsK+qixC8>I;3fP zrTrAOYh>{WAwgJ*X`{tk_nccJZp37X>~1?h%u+g78UXF8G|PL6f`7&ReNay?Ei%?n z=(;l17*vc{{&r;NAf;wjbCI{yFm;Wfi?r(8{#70DHgjf$3mr{VOoAQB9;J{xilzIM z=?}?i0xk9j1G#7;Tdujq8|>+t~9zsmXXWaxb1i6>@bzMyMv znbIoz9LN9CbCjO8zW&Xde#?<{K=Gf^`6*8n8}kGkei=w_Vw%(JMR*k!vut!YSSeq5 z6zry(S-6F9wl)0&CLz%JmGTWx{oG(9_cQDKv`FG0n_BwDP=v|u<=Lq;d5&OR2#a-&ooqo zdSA8u+q+DqC-Ljg!SC97dEbk7l%?rdN%DNFF}`d)^I=qFKpY+f-5&!Ri)^sMF^#$v z+wXeXw;`Kay_JSjg)FQ+wDi05QGb2DHzjWwtO||t)+Y1`;AJ@It8jiw5B*-mWJWV; z_hJ;w?T{ji0Ebc}b$av#>?QG@<4maXDw7}Wh2)EXP}W(4(60ULYI#qy^R49`BCT({ zpDTaG?i3W$AD>y;ka-|wx+$Q&QABIM@hYV8*CZJWo4g9}0bh9Pl%3jeWuSo;?7kWn z$EP1gg5&`Vzk(#rI#_+7pb&Cw_}9 z@r)}^sjr;s;!*w3%6Lu?@iNep=CX~hetFbkUjN7B@P5wz%q8cXte|6-eP*sf9i2A# zo(3{yXVQkO8s&k%V?s5G3SHM7O5CA^tzB%Ks;CS+Z%H;I$S$ek=dh^P)UnDJXKM9? z5oUeM-P*RyFsDO;+?wcrPa3Zl^7du>D&o6>omcGZ-lb}3wy@N*X}>Lg@pJgIvZa5a zS!=3rqK|J{qmGzZdx)HRF6ijJUJ>%0i{6m9zI{BgHCt5gVA(jxDKfPJTb$l6frs_3 z{9qUTq$XcUTljee`Q7Nvl~7{6a2UzmwNxYckCr@kcpEe+BqF^>t9NPs~re zDrA@9ob6v&AUoz*tWN1Zw31Ysf-6PmXjB5FBRA&B74b8SO0v#*sF?tE+hoQkj7EMb zi=z|Qfv+3%?Q9Q5q!Ryh6YdAqnV|aYF#|ZS+kc9IH8sokv_=%e{3sdVSBv}3u;4j< zfM+-6|E_&4-||A=h5G~@T5AN#NFaG5A;1PhpK{tdff(`CW!8a@6a^V#)X?1q+JU zL~evS&)t&8CpwyI9Wn;-3@b`>%fz;v(x2mO?8{=-f2Ou1rEJsj zmPZm-8_M7i?HS4}-9I(%loQ_{c+Qkr@G7HCA=_;GI-R29kT2(ob+fLQUS2-gUvU6I z@2h%|Yy^H@zoO|(v8PSY^WmPBBrB-L3+KOz#0J%9{HWh2%EH(^gY+VqfnPaIT3!{Z zvdUHtb9!^Kav*F&t@-e{mH+--SusN7hB>_ZT30g&^-R?5#MwXSCUGpttN_5N5`x48 z+J^4vE*JKL6ZSEvS_Nd(@b{o4m<{hRue_W3sI$H3?_MKm2bGlHAFqjsD|0PJ2{Wk= z*%Jru!R^N8iruq?snPXgVjB7tDaaLv2>p~u24TL0dA z-bdk>G5KqJZ2R0P-b-Uy?v8xt{$G4jM&`T&BWsdV3b*P|t^n2H^#5EOs??kF#G6uD%;$R3{Kt8geCRHep-Sv` zCNSf76kAJr1A^;6=Zxr|Q_BXIsZjSd{8CP_V%$1dPQ^~1C7_!ok41Ff9V}U~AICW% z=RLquINjKEj}=f;q=qEbM@`kjM**sIYM+EJJ^t43I70-T-W*2UhaN%7EkPaPey~Kk5uvO!L~&#vt#O9W>opdWPApyd z`rj!lBiKYdp@u{H&C|Lf+~-$#T(2qbqJt=+lEcAlACriG7piX`loFz(@S&e}|DB-ltK)b^S^=eW5M#2Y|Ec)}lVdk$8>ro*eb^6f)l*blWAiKoXh z%zn8q2#cTfth1v!ICy0u?eSKG%_mebE9(Fyu+>9P0u?>qoxCNrWv#d zp#h&OcK{X7D-0NUGoBZx4wq$wc2t`PVSz1$Y#hC%ZMoNPy`n@(nzFkQM)K;4BW;~t zo%qg@K(r)yU%eExNJ+K`OpP*2(x}+SRB8`pg=g^u+w5w4sKhm!4G-UNQ}Kp{%o(W- zlmc}T1y01i6HukmWbi24@81)poVi-B2P*jdVs&Q`G;?YX?%)(PpXQNN103EPfP|Q1 z#!6MBLGXiH^PG~tkhh)0?8~futM;CYMe1A7wm^kEy%-7XkF!XeRiY>={uZIP(Mm-% zE8M{VO48IAfRWnA1fm~{e;)5}FBANIxfabBT9h;B#6#Ur%f)+kdl+#GU8)vAT;^%D=yW?A z{CSR8O?buQrAzVGe=nGvHH|4;IB?D_oen-z-lR1^!_=JQA`TU8-lIWopCoiu=H+XF}CPoj=E)P z-rtcUx^YoC55jX7F%92>lXVF1?g2uW-%s=#LKKETIsEvWW?B>y((W+k|AS zXH?Z8Wyy&Yq|QH{xCR!Nz(IR>NC|@L#+t&C4gg*HunK?Sz3Kp!4~-t!MU-?S7EUBm z)BNVM%}TVAlSi+XQ4F`40eKqc5%0)rMj1MTLNZMW_xa%#PE-$s{wlZdeZJDgcfp~1 zn~Ru}CKT!0yC%GAE$rAbsaf|3u98gZMq_oVUE^P-pcISWEWI>)9H;h^EXkv{pQDg# zVfKzXXCQziO#F{Jt@y^_Hn(m zmNE>)JSJf&9~=r>yOTZGJI{^v@Be`h`-B5rhQ?cg* zbc*ZYfn=8e6I}5%Z^WVw)Gv7S$p5!DZFY*Rjg?{y1zSH`8Ze{-TW@rotc#Vs%T zi-KGO4}HJV*aUInetod^Y>f2rb|&)Krs|c! zu>0J%*g7zwtNAR0vulQsI}9WSde_hW9{?Fa=DzE7Ub~NnbEN6Sc4ee$BgAAHyffLD zVd0e>=BaXWD$^-gLj4Bg>JX!Zi&i@_NKr6(B7}iyOf^u{qCuGR{;POEnAH60owEYrK)*c_N-evlZMeYb>QtKaY&Wa4Z$7Qlzw( z;h|}9iKQ`CXSFSro~g@D6hrePW@YCA3O!b?DH#Jf-AI~2Sj$=N6fyB7^yU-P)gO3G z5g>}Ia>tm%yW&NA$d}zwVv=T?_zu-*3^nW{B+c`w%XYe%eT zov~=KOg=fM!Jj(z(xxZbYkiN=t7-L}S4;BRuCb=o^qJ)gJRMw|4^&+DV4 zmV0|>{{Y@-^NyEamVV<$hkC6Jg(>+B4+zn(aiycdmWxNj<}Y#3@1(sU&u;B5?PC!? zTzh%L`+2mb{{Xz=_m63>$?kM`ch_SKFS%i-^bt~Y`HH!APJ?|Q+wS{wX}8B&$L}-t z`)*ct*3z&0)<1ZTlUJ0Ur$gun#g-o^327@#QNbTSy|=cV9@*M0f9mo3%)PO;9bVSj zPCwqU`^U7^<(IkB;q)invRLW47w*#QkIebw?XJ{!+M7Z1)^YpD_LkCWKG|#k0N!!? z$?Ye~dz~I1M19%6^q0(i-CyNAS@XBs4WTvKI_v)csK@Uj*R}ru=lbP;ugC8%wAJM& zsnHz6=(Y0y0M>U%Yfmk;r1L&>dhWL0@!f0w{x5kkYg*H%*;>n;`dnV|?KOE{bEm`T zwf05+==+-yr*e|gH{N{Z^7?w>dVN2BmlwRhFQ$lkZ8!bKUuiy4I-N6`eHr&^FS;hy z_8Qaf(kaTv&Pz?EifOdJ+hkf?ZBt35OO7}1C$pa?y3<@fj_m1eIQd9RNY~#-Gv^-G zCo_u^rfi+37scMo?I+0{On7}B{!@GLGxMT5UT4k|y*E4AsFdGguQ(plc9;aQPk(ZZb`9^@ya`D5=!M zji)#;$o8Knx`>>^=;x-L1>4SIqh8VZk)Oqlya-9JF|N zPU%@z6}EOY zzTE8IUuEd`a}R9nM60&8Vtc;J(fiMzno3ewYrL_C`ZcwS?IZok?x(}Q{@!dn_TI~1 z^>{txTX$i9=X)>v-Vb@uKQ=4bh8`>`C$ascPiG!T>ZZRJe|^5#U-{X)$g6 zgEiZmGyB#LdC*;~4L05exU|P_1(qxy+C$oD@_VWO0BgTLTss24ySp#@)(?37aP)p_ zw{~auoIdlQ-jf7JZ$})_pOw)o#I zK1&K`qIA2bnr)|{(rQ~TM~_w2F{g(flNs<(_S)6k6Gvf@L%zZHlj#Ps@XKSxW69z0ssv454s+ZgAE zapA_e8TzNo3XcuFb6WoZZHvJediJ)IEj}g64<01$V-)5+Q{{azF~i99?QQ=6r+vv8 zdj7edv5EK|CqJOW9;rP#d_2!z*MFSj?kCy$@AI7}1t{=7EW;No>5mW6_5F4u?2K_X zl6|n(T|UXuc%PVzT(71)KSS5`-{(3?aSvbDTmChr{?Ylk20c=GW5e`4e_e?CD@*;N zJ$qb#_^mVl0GRyXT%MSIkF&MQeU+yE+aG4@pU$-3+h^xO1wnI4)xXbY@6~j= ze0mvreI_Rv<7X2a&U<3&?@6M;He|YEF%K3zTEkI;9+AEnndQ~CZrs+tfWxPAY0@-% zUdh?G9y~9zneTfCW@y$NKQj-3tGmCeOntET+S}7J_d1<)SEUV0?IjuM+4*&ii?_9Q z{#WI{?z6w~Z0vtzU`rfmzD@S9tO~AgCl9uEehI|8K1YU*t9E&ad+XTS(-?Gm(QB9- zX&#rq6Jtx;?90W8zGuGeZJUD*EMGSX>ibVqSTMG*rO4gUx$2CxwP|{;EjF1y;k1kX zc1NbuPw=?^0JO=CeD=7K4@IbJ<#fO8asL2mkCoE34@r)n(lY`9O0=3^_L%7r0!y2fPVp5r*#axctRf`R!oVd<8^X9EEG+YC+AMl~V+OCG!HY|##^VN$ zM}^|WiSSCSCJYGfPt@Dc%_h^^xO!EuXrJ2spN*|sw7-VdIB!@lKgx~F@pWm`me|_b zZ5Gh!UXM$%HfnvZv73!+PPa$;HO1F*%=$NHYFehw+4>EisA~E>TU6EXEgpwOqfv(j z6=c3Ddu`~cxoCA8@v1#KAEPbq;AAa&!R-x8k$pw)?lUm%7)xqY@F!@LXpU`=qHgfq zw}If_5W!F%-3U3bMggX)-HS5YeQR3u6^bmL5fE48tjkluD(CP35PU zTtY_)0v6+Nrb?QlbtSAuSd7q0u@r+;LWv7XNJN8jmSmOOEoP~hQlUxs_Rh=Hw#LiT z?A@iHT76efhqI3hqu|rYr)GZS_!2T=bA zAK_{A&-`QQNgZCF68R0L*_NM)_8tzby1dbIxQ{-MtKNa&QHP=18Sr`u z^&d`Fdc8g$88sV-;_|#twKRPP=uQgZ=yt(e^&Ah?9(^A~x+8<=bW31i%lw_9{L=j? zN$Vmwhr~_b{#G9ncCddd4~jnI!O`B0;A!CK&cnmYXJ~&k^I+K97X)@T9?8J}0Hdhr zm-tKcepvh2{{V0P{{Z}aDDhzaULWla){XuC9~18!8lI(ve9fP!VCAb|Uc=9W4h%HG zqS0ZE+B_@RK99;rT|e#r0N?)rkAiUFc)pGtSh-G);CVpCtcz;zEXOYJ>6BAh)C z+AHw87=3XbZAWA4`y*J#v$me8k5<<-7`qy64mO@F7`IWu_5+RnC(j*b=%cJ%u@IuFn3w%~h(u!;je76-Nui_kEG0OS0XO>boNXl&i@1Esnl!8yXw1>1|G2 zwmdCp)-Ck4juUHPnS^^DH98eTgW8yWl9YID#$MZ#PfFU_6y}GiZCziqu}7)yyGc{Win@ z04~dZ-6`kM{-*s+e+koFJNzA(m;V6RceOq<4r@7&r=?@4-H-170H;T<)Z?-~`=%QE zu3Cl#{xi#>{Z5@9U&3^wYGeEzS4W51&g+NFB=?V}r1u-XT|1-wPW=+6Z*T3)PAl13 zB|nPKHV@SG(1rB2w@7hv(&$wG0P(Z8qT(t~r==%*bIYmley84m;f~h1(i~s)S|$Gg z^`2}UL3Mbqi*I7*uV7!`J4gx-xueLE)@3sE`b`#Ho zsSd5M(-z9t@%|Rj(t9B6g-;;7tY1ucPhPHWf973zhpAqz60X43A3dR`{Nu}qsh+H` zzw=`jE_*{*{PW+{RjwMZ5_)v_UtXy1Kl3j}!PO5|m=cbOXdmHgdUyUa&4a40t?=8S z`j38>O#N}5=LAY?JWJ?<*Q)O4{$8b{>dULm8(p4^mD{?0t)ev$6I* z&)LbUy;oMlqi>r^S^Ir`36Wz=Lm8RX%TrmoDVY{t0IXN8OR7MY4e5o1wLCK?t~F_~bhq)v%$3xS~&zcJcZ$YmKIVCGC;S$xRc z+=MdkOA;W}>LWNRcV&K(ev?fTIs;dPSFn$rxt7(rBXt3kYHdldT#FDAupgcwb0k#1 zpjN(wdVI1~>?q769182qo~2X*sGZ}ynXfUF-jo8;*_R_SCY%8c1wu`1P?sIbO$y>U zk`(SQEW(Pd?-_}hjnpivuq06kWtB4`*#c1_#8_p1Vv%0}orsFfMT_qq@FWPU_7-BZ zCE+!IR5RJFd&}9WYQm9c=^@-DUwN(Eixohsc=9VZ*-b`deqg2x1!+j^lx0>q2%iH{ zXPAbRhAj6C%|um*$Q_xOXjY5V(n=M6u$8kGl_;)~DpnEV0>aWskX}+zlg;T>68?%jces1>(^}t;WZ_BS zg>&2XGOiet)b?lI@IAX^FQV%?@;UpizSQN-(co%Rk0XTIi|4t%XE*nhM-8>1yv=

LO)$M zAD3Z#?TNGAPgT)B#7FFdetB{!nD-SY%QH)P5?2;bi-y$Ch>F;&^abFLgdrMAz59u8 zc?s~9tc>T-yT)_4sEzpnTMFa@duE~uz9|K>A;FgsoWzTLMWO`DFL<%0)DhmmpMg;l z>v>v$6DX@3#AaNC7RXB#DWP0UK(Y#z+*GMg65ZTzB8?#3nH}ax_~sJ(Dt+XYGjbAU z_bN4)m~|!ji++#`A!_a{ZyW;FEgin1KLbrY`4SLVj3V7P3&3xL6~aL1+8jB7a1A6H zhDBA*q1ygLEQMcSj`2IikqFE4I+B+`k+AiZEU1Dv9ORADgcT-N?|!hilb&O>3^Dm? zYNE&`6`tcc!)3l2Ttf1$;z`JHDtB3n38e&OV$--Kb{lKFC!CR}V<5KDeZfzGEo5E% z2u4*weF>EOL2`8ndxhQXN4zOi1+$DUwG6RfblA zGQOchQ0IViA!3avWYW*kbb9firlZ=iRYP9h_M!wwTvALLfw$N9Tgwmw+s}oAEGo9DfT}~HDzU->z zayRze{n&@l-5qNeN48^m>Utl@NAF69;ON7ijcm6U)U;oaj!QFod2(f*%AycdvMv5D zL`Zpub5Sk{9)Xfyi1U+4RIy$GDp*<15gW2-+*Bl^AXKpgi|&sTXglvYj`A(uML9Bo0zAuUpc3^?p_Y~m5?17Qxn*xqOMrRgNkvMD zgq&KSOR94$d6vXfxfXaxb0|Ze^0ts_)dFT^%Xyl6(H>sVl#t^n50wIND@pYT{LOOS zB5I3~Zix2gS?swF3x-y%S&kzmVVIl1SWPQ?MIY8J5h~4z7G|Vewv$O2Z{Af)6)K2g z%16YmH-xhyPQbfgjzpwzDqIT{fO3@?)`dy5nN}GG=@5y?+QO!x#r#My5Ll_WK_w!} z@WM4)L1Kl4BFbT>l!bH22#F;LuHxBKY_#B>!)oEAOI8-*rEUh2@+^9W48suQ(ukh& z@1SLPVjg9OZxdU*DjsogSAEUF$ifaspJS7)bs{{Z1&{ER1l zJ}BsZw?1!AHQGwWi$=fr@UsnbaP`@!*5Y<#EK4rq+csrZ4mUklXDMo3{SRu{N?sK{ zCXVZ?wDt@?!PR7NTUY6`oWTzSJI8UtZE5YZUvHMyr>pD#07=2aY5xF)rQY+J*Zz~I znZxP7gjLTaV}EVV*Yf%cqD|uHw#k3)S}(~*D3QeUGQAPm4lk+b{{STB4at`;xMGZAdhNAv~JFw|c?*^mG zaXT^f2$mFrDprG6D#AL4ky>)e3(P4B%w$**P^dFYGQ2E}a|oGGDkT{esbUCBC1TkZ zj^P#WBT@p$li(ukGOW#+@(y?M4ZMV8M2w@nNSgB`KQgK21Zt2f)p>}td59r6<>1SU zAA38<-SaKT^&>Eovl-r!TcX(zoVkd1%7wiy{YG=%ME#NQf<=BPX9Y?{LrRn)sxDI@ zV6dE^EYMkd!5k}eE@o7C6=XxYy(*bq{9fS^(!AQdLJFCF3m%1J`vij%N8 z;S25&OBMnmMObUZtB}gSq%A;=;i`895$Qjr&_b2w&(6Xf#^zjx*@V#{%eEK<`Qoxp~Q3+y$#tkwyTDG&T2f3xtzI^ z%P}@28|2Ks1S<@spTv>MH<2B^44Bu3axB6v^3Jp*Z}R~;6NqXpRuZjug!mTeDweK9 zoL6~OSO;=D!BVvuU>~MtuvF>YxJRgq@(B_|1!P#9Ttr*QF9fKy#(4WM9b%W!*=#Id@kXNd$>Rbdy;KaZ7}jTBy6`Ylww#L}iPEaHNsm zEU9KG=2()&M1F!=)A7dleZg|MaV~K@o8kvq{PU{qxLFEBCxmAd~ zBxDs0W{8wgEXuq{ybAY{*4|0_$VMA`iA&F!naH=eNR@mJjq7jx`qt(vhehG?cuw($ z^&KJB_7(d0)>~8aG);5)JSH06+dq}KU7Ibd_#V}=9O1(+Jdab^&SJMcvt%WOVRKGK zmh-8zFz0k@9Lk=`!sneM+Hm_#eCnLu6!7Sp!)Q27t5$00oVNAxm#pjg!Nck4k9~O@ z#?WiD^5Ss%f25q|bT;^Nw<4YW&<6hiS$ijjf;`#Ia5xUHT=XYo{{X>%mx$-5ako6V zlQ~w}C0$85a4tcK-bHGmJO?l;h$d+Y#AlIVPYxiDgv>5RqG&P}BVGa&L8z;_Ru=N0 z7;3GCk3Y%VnK5CbXpyQGbi68i%h|E4_m>T>Eh8+fE`7v@7CelS%WF(5E+90`rrsM+ z(rj4}@kPgE@^;|;7qWR3C|kA2dWej?J)G=Vv9^pgN^%yH1X+ZXmpbHS z&*=iRuTOcLQC?+oNRo{9M{%sAv=&Fh$626=bvF_rPWp=&jp1*I%+zNjqwW?`QYs>q zG_H}C5nz;W0oASqd%|``G7e-r&4HUq69K7lV6GAQ8txtNSW{q?8$zD4I@D$wt6R%x zV6oA>h3-!4WL0_(+I)&`ioT)0aQ4(LO0`nmwiZbRZXTfpMZmd3%w!$N8OT?NDoAB= zmzClZuL0yakTR}UFK~qv8G&;u^kiQgO0ohaky5V_IoEJ*fT|t4iqSlaJMILEL2V*u z*cC$2d6KR~%qAF-pTiNrSgOF~BBX;-gx7!($Vg2)vlAsHQ>P$_ymy3ZrJBx0bGS>) zQpDxCueeOOFp{Qatz43ew!NZhLMzD1+(Bb>P*sk#Gjd(k0^3-Woh8=?`SGl{{{Tm# z{{ZX4cU&DS*7E)PYZ<4b(Leq?C!XXzx_k9F9h-H;_Pvu{%62_ZXEu*(*)3BjG`F2y zp49dn5AJ6RwH@5knatpx#Bw-&ro0VJACqritIDI$L+~nqVlW!I*mji~< z&uufKw&!ld%f33euR*q3f5^nG{bnQB93$6yv&B6H*^`zXC;tFuBiPNp?p)?kqNM^Z z688hSL|CKTh?Ut=VI!4_@sgz|sZ;7Sl_NKJF_~u&%2j1pUh~L=q~7LBB0IC$-*ZVN z4&lV!!Mr53tgFQc$7{6rhf?9f+nC}~WgZmVZ@HzT&vGhhP}glGktRrpPm@FBmBZ2^ zJtJc)j_qN?h8FTXIB3!^^o}fL=~-%0;vQbanRrq%w2yh0jpdnQB`zAbp&R#^n$$W_ zw38&o=tlA~-+)D?HoVA4-XZ%+EgIfQ_}(uuxQ~9|TJKDgP2^eb8BBuOoQTxYIT0}L zAuiWCu(uLPHcF@x(#tY6LRJKWG0M=2&_OgIYG*huE74^H-R>(J2vR(xgToP)WOtOUVcb$gX3057qA!y^skj zd&13RGp_psu|U|Rh24NE_X>9wCdOiv3ByuFz>nDlcc>O~$dWFsWlUJ9GfgL2<|(|+ z`WElJsd!mI-U&O)nGRNxIg>E0GjKyvt0Hp9oBT%Ltw@~U&PCn@&v+(7FqXdGP`KW} zlL~}drIiOub;P5lx@dFvEfoI%+roE5-06pv z)v@Lk4_4X#07+%R9@Vld*=COP;nvvf_8l7ezHH&PqEiUwFiO$Ssl)A9p7T>jEzN(6 z);5pQZ*jzF)M8Y9$mRBh-0wJjKhruJScf}zhk5m6{{VRVKZnXM{!B-*OGm5qSpNWc z+K1t3S1-C^J)IklPOQwgH5SW>m2PEkJ|QA-suHWU&8WL)j%p^7NrkuQ!wtCo1$1ZU z?YW6H@{E(FS;WK0+sK`*_Av1`edJB=sHDFSFKIfvnN={aDur@b*maeW|J z!ogBA?QmIy2~}K0N%nZydWotc+zQ@Cvm$N+c?6CYk`!(-x4}wXtoa81vS)e*3u;qv zx4{$mk}SfqUBHQIWf$U1&S+1VFSAPirJsalS0b$7i4wB2X%xHL|VIo>iCZi!W^&b@lO5KR3a90zTfJymSirhz_D&iDUq-Pz$35P(OWpZ!CmqiQO z3l$vCcypHF?Jj=dDMIH!spvC7X1EJjUI<3)$y|!5U{*%F_Xo?&EASCOO6Eo?9A%JB zAa}3B8_Rm38@$4Dj+ON;Z-NfetXj`7vWt)la^_VLV3L^@07AnC)vlJObi_{tHub729(K-1QTpY<-F*IxrVLK0Sh(n%2mLiQ+LDOAwLg{;Z z^?euQoy)m!I&ZFD^S&wkUq?O$8=O71KPRnf5Zarb)3Rf;hjHqSWBieRLO)QNa z=U--Xm$B&A++PKoIGv`W18;fCXrbuZwGJ<9Qw*-;YG~!VuR30{w7!!`LBi?&o>w`Y zqZ0RWIBhj?O!=GpZhqvur>a*y3()Y>>3vb{(~;@@Q9s^p1$fppp2ORwls8;`f0V25 zFCqZPm{jZ?2)OsiKs$%%9Kv3il>He*-3e*P6~6)`6G$xj5yZgX&4Sj#d&u{|%q*?0 zMj)9LC0)rEg7Dlkii5q5`BasonwNZc2;2%tqAf_A)VXeRLWu3|E3LijHBdt}Hkc zcJotS@;ZY9mNq2(ovcgD;C~ZnlM56d7>pLDoLVHTh>vl<{CEI zn@@0@G3G5jEW$`f6Hu!K?6+ZQSY|GUaB3K^wX245E>qw+l(vYUiEJVmy&54lswaR0 zoQj-G|61v!O#38EYdD<wF+Kz83kLBOr>Nvyo?OU@?kq@j8-S{AGJw2> z{$PS1h-J1zFp`_bZ-GQs0o@B7%w#huh3@VdlXTWfortn`mogVQ^%jvLms<{FfB?Os zDgZCBOvA6%R!jGRY)dFBCg4fT>CU;A@3~TER?%CNJCU6`*E5cm;eYPhKWT=(9=kF3 zy<1Ycm*9_S*)~rn!1ZlKPAoA)+4fY%A91C+?Cku#lUGxsmh$d6ovZX;GnLW5xOZIQ zHlv&_wluWnTY9JMde+hUPkP>P`g-DV^_<4gZML&GeJ$Hd%;;@!=kHy+ld13XInG+% zlhXR8`cm3ZX6@1+++~uq5hgDO&qW6YM3V^M*p; zZDDzD4-5-fiDf5v%m$)`MJ5w}BBf3?7p#^lEJ$@g(uqN2EjwYAxUyK>N`8T46u62` zS(Xrv@*$jv<9x(ODySr7nQy>^6dc5*C|As=ZV^ZqUmqLF2uLhnfLBi`2}1!DfY2^L zq~YGia#*7*Zy?S<)JwG_EHpsnpS^6m`|fM9>K+>~S9VUG>!B~#R*#OYqxPM|@YW8V z>#2VF^e!j%rVm_38s`sfoNIcfrF5!$Hp;5QHAk#!cU3)`WlSkF_jq;ob1!1h(?Hxx zgNxcr?s%N5pS@z!Ed~#gz`m00PUG-x3HdBs%{@G~b^b3}+B4d4aQa`qzj4fM2<>8= zjvq|hZpQxH;m+QdZ}l$cqFQQIYna#KU_IVF$D{Qoo9L#pw`-WcBLVMSmvvR>Zd;SC zCN)bjNP$@AysbKj@)pD4B6;LkEITmMO~|#RiZ(NsxYcX%kawW8h-E2kL9F=;P!oMWtIWfOa*QYd!2MIge>$Fv>(zKCoQ)7A*J@9it$e84TKz#e_yc z9#ina1;UdQ?k_H3+q`k!TTASMf$!WO)`2Iu2(ZtXDKg$rhGaV+iDIxa3GhvWa1y9| zXNX_foOu&6!*2Hq`GlEAyWx&mh#7ByY016>`3S5L`T_^KMeJ5fyId41@E;OPIW^>3 zCZ0@%;o-xEZp#Tfo;KsSlf01+d65d6Tqw`|MO&BHDFQPU0=ig)Z!=Ymim%4%>u#fN+il5jV_bJUjwS z5%rcb11~T|iEr~M7DY~$s7wh|WP)n>7l1J*aGXrm!ZP!83-FDT!Uh$)ZdV!&0EKrVM;W z@jb+4bkl0Pj-Knae)=>w{wagk5!?J3)ID}2`cJFV{{RVt^064|;pwya!_+k!;gi`m zOFe5*Y3G^jyCLqOsk_6kvoUXC)v2qw{RbPge}ctXIUNQhv=uo0ewr5Bt<5bww)OD! zjeqGmen$_d%;t8F(s_FhA5WWdbT*nBw=Ui4J^uD}wKmrq{7gRM-&8~`$6j?Gi}$^+ zVco4S$VXsz8*Way`=%SE&|EHIGR=N2N?{GfDY!wIeh8`hg}kc62&)R2B5~Z1ShDy- zBKAB(z_TZB#5`1}%3@VvNX8`v?KY}a4xB?N@bSb8GsxmTp$Vyy+Zc*?s$A%96`*!k z!xmJqs=}h=c{?jT!QoOYk1rYuv}<*bEMbOKg-u1CmxbZJ_#K*_WU$g}1&lH5L)5;P zgRQ79|^R*NaN*|%&!pYggSstbIyb<*XZl~z%;qVU*6}k!P zPfW}6L1D@IBMBN?yjgumq2PxJT#pZ_=W%2yC`6N{-X6=S?6b>G@;4RSEUabY?8an= zxbjWOBGMt_iU_KMP8fU&jK>l|x=8ZeOIgy)DUwAvo3f>o8O;#1rXoGUGRV~+P!#-c zft~2paw4MiE7D7ayVP2&cidV}3%?+$B1)_ilw1m|3t1>4kxB_dkA_9U#XG{}63Puy zYAi}vW^3lYB*dyM6N6>T$ae*o#z6TM6qQ1vM98rKTl+)iOG#J61(JOOeni|=n-r5Y zb1YbjC>1Ue@Nl74Lo1XJk8&;MfFMA?$#VeP_ z{{T5PXixa29RC2NjP2IFPND0+{NvRoW$Kt|{{S{K4NqO4$?4joisXAX$b4_)dd8^Q zN$zO&ZIkqrGf#Eb+Itp(H=?3Yehs1g9wp*(I=lOiamMX5-Uf{=Jh!#}FIv~fccC;hYRPll7S}#(W@Xh4hM)($U@#bWTptht; zeMV-#6(}uct8xjv{u!IeSTjo9$7s#aw{WW)?N&+Jv7Er7+LnvkF~ka6m~G zJA5EpU9Kaw#E?je6t=rp@*~9O)KbCKOat~jPD$E(>>SO;QSBmLMT->shiTHG_Y&U1 zmoRp*Z}1Z{7WM%Se29@WJWxAZ#UFtJ=JMBQl0g{+%!%e0jLDrnLdOdzPcn1n7$Y2r zFo~BimQNC08hP%5Jiz?!COgQWj?gPCJtb)+P}ziB_f)BNv7eD*r1y-}P={skRD$s` zi{1$3sN_^(@h`NZ#bm8y%(nNIW{Ct^=a%Bu-PgIAma;)&Xjn3v-ZzEisH~;PM3S%T z6J6mk4M2?18+*jLTmZ0Cs%BZKcZvd_i%^k5w(KUZ6#+OPM0-PZ6K`lpl}mU^T}e4q zveOG_l?tcy38du&JbA?bRjIX#S(w5R0VE@^4yy{qwh*1no=*l_yA-LH~4oqiK;hYPG-#SQ(abGLC0 z)9N|S&Dx9l-4pV}b}Vi>->AmE!`jMik3&8f&d9O2> z3iU1Nn+fg-RG!pUpi%~Z6bl%@x4p&631+>ZFAz%4abKQBbGbq;bnX&}g5D$&uc<@i zIc@}ekft&tTZ<&hfh2e2M#|kN9V8ZzMQ%lW01IlK!9VSBOV5Z?>PclU# zbqcDY!~lc0aIrE3cwNYwq%6X<2t)F^ptuz(M2N{1>6EgtQITUINg_~^1Br4fQcuGy zP%D6(oyE1PGxmw$Gq@bhtV@i^bvG;B;ql@sz;G*7BCBt_xp{>%a69}9&V&fL2&(fL z@RF;MYQ8Bmo@Do$ajQ}PA5|J;U8~x38(Ev{{Y#H?Y4C_#m7ag;p~c3jhpr z1r(8xvQ7&eEC@s*SazQAnF;wFfO3P~0Dy}<#dNoD{Uu3DuwG2&z=5wY>^O+u-W4d&q8UKQA)m#@U`~61`+iPkd&PujaP;6AabXH%4#n&7CEs5G zWqx29d2E>K0{2Ba5xGAb7?WVh4- zI9rJG8^X#6SgsLAacylBz~IJCrS7mxGwvh3Z6%HN5b5Dib}MYg?}`O-=WifFD=PQ} zR3pf_(n(}OMnxklz5Bw|MiM0IZoNOtJ3X)Fng0O9#&*-HQ$wlx^Iy9gIn6%A{{S8% z9b7$jF|H-(dZSotiV{_BXnQ8heVY3ZTh&s;lDcU2O_9b42_@r|!P?DS915!zf0w<~w@lj{RC{KE4i$gr_cxmGDJz`QLa zre#;=$aBg?w-s3pa zd7?6*yg3{)4OYLTESbS5mv%*#0osws0?ZLeUlJ)U?jXB_?;g_U=1B7*(Yb{p{p@52 zPJQTijGjfcASL1Xi8QZ}^$U-g9;S7=+!0lM;`R2H*ultU919J4h^0wuM*jd29s&Gw z2~rVCGu|SlO0){X(3!6AsgUF1SgmLelwnM-VP6vF60(VJkX}Lslq$hgR9bFSxC<#M z;4-mb5J=72fnxGhtb*LTg_MvU<4(3vNSw=L{0c&oNoF9Hw2?s$4Mk_bCC7lWk|V@H zs7r{VV#;PSMTays?;E!ZD-6fPh$^J3BwsRFOvOY>W#lV%?Q*0=k-SAobRF0&P~Zi* z@fNedu0@q9H>!Zf*D=IT4g|;$GpYLYU%LA`Yx`IHc#hbUsyg=n04eO({_5@cc#LK1 zvmbrK(DgU-vOR}pU2;8lQ^dPV*n1w!Zd4;%b=cZ_CaZ}o7*Y8)i~37}bQpEFtuD@+ zM~7EfXBLg%oLIQ0k)5S>+Nq-x_cv#Ut?d+($lR@x4Xn>{;;&!|D-8WJG(572GPva3EAc+$uR9@T5|K#dEEOd_u87ZdnYX z2NoL3A{>e@m=PSqq(EB$-JK*Ak0-c0SPZLhzYt3fa?Bx|`VlD1NOS;4bzFnFb7IvN zRplr%mmEiUcikmk!1oQzWl{;5eMp8^$Rr$xF#~yRV48PHFGgJbqAo!*L@%Iww-(VP zQ^03odiapLes-@PpmE+?{(%tfp7LATQiXvHJ@6nW>?*iab71D;%kZ)Df|RH!n2JCq zD}iPrg;Z!^P^f}NXc=3;aVssDgv*b_7TzKhx)$o0kd9N0xsBylxpJ_wts%)$$YwL| z7H~#<3RoAYvV?+4#fflAWyD(kl`2$aVR+&MdQwp!6Z#T`0q& zWCcrKc*8JBb4-N+-Bc4KGZ`R@L6JW|nGjl$)_`*fl5@E68CJ#K7Lq+dRqPiQETaC> z7vYWwqE_crb?r@~vt6fFf0oYIbULfAfAWURkLLKJ`)tNun?Ia7{{T{+(u3HxVxr5I zN3H6ZXBHaUbA#CSXKE|mLtAy#+VJP~KGqE~P2j(z zWL8uMb3Cpy859YZ0a&Up3E)a7WJ(59EK(SXz_O_o^Qc|G0XT(tE6imfGKHD2iV8>| zq(D~PQe;xHgmUSSsEoLlt&2)a!k-dxE8v7xs0B(r%w4IXDytwk30N(2$XW3MXXrU{ z3n|<=kfdreDybK=JlIR{@U;)Tb2QYmE?04j-+^zSt(HSETZk|r#xerwN-G#%Wm!%{ zY3D>Dm##qhg^O0gYb1@=H5tz^m1aYbOFsa)g_Ys(g%o5X)VOGqkO4_)G2KC(!N8D* z+=Ak1Dj{nTX+_`=ixyXb4rM2VQ!%``!EmWXDV*Lyl4+~vWHG8eEulFo>{5%J6I;l2ih;p~TIahCJ=Rh+LIpnR!9H4U- zLdY_(nuSzUrnVtJ330rz*b#EC*HUkHi88;R}o zE^_xGMnGJV7w9dQ0!3<4jIBYKu4^KtFt>t*@g%uxlNl}0K`$se%PbRgevp#_ut9Jc zO0XbXxCcVG6DSZyXsZo-$lY5K>=umS zrH>8X9Zi_w?OKQMal_bnHP7JjIPN^VKDsqrsCYH#S~h6^0CRs=;`P0wH)jj2;jG0o zlbYI3=TXjgI9+Z#Oy1gaw`N}J)Pw!>YZ!9-4;}vi4*}d~O!X%J0DYQN=DMDe{{V%6 z?rAoq%-oN-84379hT=TulCzL`iSra+SU5M(ya~WM-2|yspMc^WWGhHmg1hP!6lTYG zP0zFg;gMa5a!vjyLMJO?wOO8IncX6wjEXZEKwfth%%{NX>K^|95GiyFkOvU=1d%MK zff;8oh;TSgd=rZg*gf`yZ4jGs~-mc08!jM zpe|54B_cdzUm%ekjs(i3;zoh{FL7|(jr9tb8PF}(8HO(feS^P|Cy;+p9_v4#shOSd zUO?fgVK-TitjxTN%p$jx2I|Ro>_TZV;DLR|-y?Jknrk>M=3T=PDlNr}GNR1Zj4d*g zN)?cZH$D!;&Z{6)Au4a?k^s(Ii#2m|OAPQ-BV0m66l;SlNt&rDV6}L75&6ke-%`ad zP*W+`OqHmyEE1$wEaptT!DLj7F9{J|5KM}$Lz1xrE@JO~V4~;BgWLxIa61*>kv0=7E0 zub<)eO}~QDeo{M2$sJqQ$MD-D{vMM50ECGzO{x2#*IKRqxH-K`O{3AYv0`(TE^vCK zaUA~5NyADH4cAjRHE3(%-7- zeTQ}BY8w;T%ia9M=!Njw24%A&$h}5hLZNP8?q^>SSrVg=d-zx_1KcO#2Ke3*jOT%K zh1^QjmpJYQnD8vO1TqXLofkMJ_Fd>@@j#T7sQm>bS9lL`T`WSky5O$^xbGL?LV5&} ze9H2nFWq8=w9PU%Lc8)70x;>t!Ce(d3aK|SxI2JflaWX)3IpT?F2H3Vj;h7Y@dA1d zGx|fVWM%`2IhQ_JlhiCljEUy zzF>rhJ_WL%l!J)?-g9v^^r0UBgC6STkx_>+MNz!~R)WrALIE<^Rhc6#ARX02S1}4> zGB-lj`N$ffb-I#ceel27TZv-N4P0BCr{b;7}k)WDpi>^%L1)+*Oo<1sUW; zV4aGl;N*}ey$ry!BxT%1L@&P4eGQ51=5J5kmCB4dWHPYI zGb7D%Be7Sl$utKGnKMi~#EHMf0ZWy|$g2hYAiDy}MXnGiRuNx#tPc=I7Vq9p2vgiL z1i_HtAV?sxPjdntcmS0>%D`+*MnP9OedJyuyT@=pMtq1W!>R(-2=|m&9HUq84&y%W z7Daz>A{7Koxd#)SK`I??N%Ji61SWGKUIO4xa0QWap%~x@!SKVaJHalwpo=aEm_vvw zxVM3j%n!}PjAE#7G#=9sF_{>sVz0<&1alJ;?imDHNV2gnR9eU?mw{%VS)JlIf?9VI zQY-Q*;0azuS2De!_yo43vSwBnZknv>c$50pH@`A~3Gg zy#`98im50q9>Um}jHA>f96Uzo8SflI3vp30nJpCpiYL5r%w;3m79x%ZS9S3#7RPh< zx?fxeXkXlQhhGyLC92a){t`<)pUxd=ptDv{d9mypB`=%7BZ1X!l=vL(%c4|VVV)bj zI(ty|9ZwDi5TUKk3~Sg_LQyw7nv+Q;V_n6C;e^qlACrDR7X!2smo4`k9=BXnt!(Ub zdiC3~++{T?H{sY9Z=qH)u`MN%FeFaH2uBfV;D z%bB~4RAo}Xq)qTrJkN$K5Y9J(Af79LqV*JQu&xP-AAxJ0M1aA;=v1beg~uW*0+a_} z_dVf1Wy7R}TCsZt26ZEJa9chZ1i_ufNT~@8+qi;Pc^I%kWqA|Nyk)>y1QnARTyGA5 zCo#BH2EY=rR4+Tk-M~|O6BU50Ou{SOzT-NFA4HCtZY7u%`yf9;4q*(-HIjOX$b<7fBuv&Q_mhyfts-@>noogU{Sg#z31gt3;XI3f zXeJ5)5(<=NR1&8#>Jf4ac>=KoRvp1cK%&;Q8SX@_GUjW7p%#tvkjrs0;#asNMprv{ ziWD@;PymM`epe9m!{X|>s?h& zCGR=iok-7-!0NYId7S2<+HRPW-8mjR+&Wu)y^~SwrG^z}I+@n#fvHg^<=NU@J`F3w zrO|e@bnN2MDShfs)2-<=Se`8!$2gT*v+y*3xxX{^xE+3})Zn$apLx#fzekzDYie6? zZ*6eU-NZeMs%ITL+4)b(fA!)!-}D^|)kBV)?Ckz_kwgCghlua2nXxWr@8quGMf{20 zT*&jH-q5Z$W-_5wX)wayxS51OM>0UmiA=25m_c5sm38$XyfPd?GJg;fR+f=g+elm5 zECVj`_f(n1C@cZhQHRJ~yoTodf%`HX@)_K2NEK#X!;WLzJ)uH(7dcfRMbDWg+y?N) zg(PkRh#>+H9`Oh48{|!i!*#;a_lc#*%U~noPj`88h9}HgP)_hBKs&)WmPwcfUxrR) zk`Kt-1nR2;DWns7&gFVfDx%y%n&v4Za77Bl%fwU^vjwFW0vGBD+a%YB<`sFcs=c9N zEqn77$ea0>mzWMEL`jXojTWh;cTy|dQ{EMF=8Bn@$Go88SD2md2&c>|g^z}tEd6F@ zaJ;kyRVs5^cae$m2)FMU5|w7 ze_xnt9nKG1joglNUsQFe!D~q;9;W`(v^O!soa(X1PWEI+)5re+*NE@b>~sfKE;@Iz zt9>(Hi-_;#Rk+xfH+S+?yCSGWz1b-fa$C);r+6fbL=x40^@$|sz`K*=5(T-2^At*5 zhC(GuO~MtCacN4jOoMxnqdE&(3v^1wMPUJNnjGYcDZ79K(&WZlh+MnELAho!CR4z+ zRmc=9*r_-#&@RCecNCcidy6Uz$FLLHL0hFser?Eh?vU9?C&`2xi<2q?k=#)x!=RYR zFLNPSretiplNO!EN`*kaIg2I?i0Q$WmJRS0QG4b}zi4;f7VhC>iOpK#6{FOXW(b!L z%IqCS0xGyG(v)}#WEG?(Q9LB1Rg%dHRdg;Cae>X1do7v~Pl^ybOP=9reb>aKv#&DQ z&{^^!&g_foFAzz@W|xqHyZb~F5?bT*6Ds-_g@Mi#A}?sl0IM$|=7nU6(h`)u(hVfew&?T*U#~7kvHvWqCez2H0wUT zCF*-3AK&S}z(=Okea^7eTkS#5Y~++B5Vsr-t$HJ#+1Fmv&vS=EW+EQLsb$ET)4H0n z>QqS?*8NQn?sO`&<-u#RrjT%&(!S%H*VohGLxa|)P5rJdp}j6&t5&~XJ1OqduQbn~ zXMywIS5mrfvL1hA;XZ@lk9}N2pSzt_(J~pi1~Bu5q}XM_s*?+s|>(o!YnUn_cHX@=KFEA3k3htB>An)8QDRLXLCRMOp>bDeG zp#F&+t`H|UUMn$?FYX@TgRgj34~Ri%;5Ui9_s~xO84~EMoazb%WN|}+?iNyajD}(F zunr?7T7rAYVRa$UJ=u)prFb`rUo41M=C`m9#GFc;ziTsCk3tl`5H7{ZokBl0WXfPn zxF-H#>p9_hSY*kOMX_6lDx}_A;H5<>yWAC73*8|x-B-sTy+~f^3cG@|xg|H3cJeJK z%!{+a!Or(kWRYW-q>MH?YeoS`<<|_CETMv%`odS#Z6o_77 zTXlTNJOZ#q_T((u?+6FyMPavIi^PGr0$_7b?b84y=`qBsfO@(w^%3?T#qT=x@$6Yn12kZ&$+5&4&hwGdZKgWq9kD=^U&%bX%uFDkf; zxgvp(AxAO5fTdyFoB|e{o2$%O0rA`lDQTVIkI+J;D~}R4cK}^9MS+SycVjZxj`9M^ o37ApZsAMc1$!uh}mzU`oqGdp;M+5W;PS1#i!QB9Xk&M6p+1fGP4*&oF literal 0 HcmV?d00001 diff --git a/packages/imagetools_/test-fixtures/getSrcPath/root.jpeg b/packages/imagetools_/test-fixtures/getSrcPath/root.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..87f9f0c736ef1be1bf31d2993c145af34dae9749 GIT binary patch literal 740194 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

%f@Fro|q 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

H_ez;yWQl$G3 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

_vVk)>jO=UYFP85c2WLYj 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%0DEFjA_crj=5oSobFi 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
F>aNtJn_k~xHpN*7S*$s;hW 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
C=6Q#*6T4!Y9rx7++^(J8tEF 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

ME$vpEruFo73!_Fb= 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

uh0vxt4juQ2p8C>`f#=JAApcV z@#zHgI$Z)5VP!$P1lF&Cg>mv{Vv{A4pY?pUSrRDFn9Go|x@xhifeyFRaB8a=TG_X z&2%i=P`oz;en&sR55)NNj?L?9Z>WMnZq!ISt=8Q!sQd}%0W2})*o4tMT96Pl?Wa^@ zsRo9_YyNSO*RT6v&zCswl+jD{v~nZgau!4^FWXK30DN7V7O5PM(as)TLFL(LA(Sey z+tNK_QK8cvydmW?nP6m9cZWSRNthcks&_0Z^cE#-Uf0;{8_C?lxruWnByk+!Tp#kb z)(>5WQ-_}b>O6u{1VJCAKw}~L*q*+jc6yPIIYyXPCjS5u9#nivH8F;c42w6I#h5hG zO047^%NUhN?Xd#Ak9=R{pFbv|H}j-<&LV9AV6;ks0fra5&Vms&*vmv@<0_l6{8(2G^wmL45HeKfUWVY7msDOqA&3vCs@?L z{Xw<*fx4}_>_L;xCRO0c`A0|Oq=-zzOmN8@O0h<#v&c0OeTU6pN0hkR-eWhzUPa5Q zvCPGr46q}DYB)~)`svthiM)57F zHX*e+HP(&SQGuJSgV@jEu97;osQi-}1)jlG^nw7QeO5Hl76|WyJkKpcBLHg@0WQaK zU%hPA@Gl7dN9A}jj}*CR5@@xT@(!^b*33nfC2aa@bG{q0!zozirg&ts8oq`f*2LeZ zvak2SMphT#mN;o>cffBow1+hwX*7eD^n;^FWqS-5iqvR=0qRY5 zz{xfjgXak5_}*IzsKG5Gc2g9NKA^tO<(t}x_c&B@mo&q}^O8ofe~VH_rAcP8UHv-rQ~Cw;-gS~OiQ zby{@*iZ%O)Be4E&7_-4{a*{V5TLqdfg|{Scajo?ZwkxMkY;67$#sf!2Ah!#;L`67N zU1o^bn&`dpG~-5*xQu8}2LAvNC?Er()q1rMXsxx^$Id9YXD;i~0qS=}BzN0!T}j^^ z*O*o9iPoejwjQZ%Bk43o+me1U6YMUF8991= zIwX%u)hn^|DF(ON&)kji^O^i6nbxCCMNvnc8~O_!&D9a?R<`MQ`^LOc%()PWgwU`O zG9*B_1+8L@y|nDa@3rISFZizco02B-S}9#4UaajE5{$bC7wBu>(rXy$oz8)t7c|g0 zj(Auy*dMi5xOF3~^dOI$!KWq=`G2C~v^X=aOO*;iN0P(Id3`jhZOA=J8 z8{cnLfv`4fZrJ0(Gd6V+Tlw^s9k=O2xT~xYaGpShSqUmspbJmvRvYf#-8RJsIPgg# z)a#{T`a(u+MQvvH+=5TNdcB`-S#B9GZG{#u;g?pe+ zt5Vo3K;NxwK-;Dk{1c5wGXe>3Ewmf-t?9c1y?dN9_&#ti)1kEhgpHYj=p(Jd-&3~r zjQv1#Aios9h9}HKb2(DRNYt}KsD&{tmSv8QtP*PXI}U(jCFDE?&dLOlpm4)=)up}x z2fy~m>mFx{X^}GOKzC3`qI8AojOV!nug({|`{8U-yUCX#EXrzQ8n5X&s~24f_V>dh zpC&CXiWHR9KF`Z8JImRuoQ65k;FM7T_Py)UcLY~(adE)BT%IAIjbnY7?`FNakB)~L z=bib(GoD#^c5^DRl#Q3omNhRxT6qoiGuQ+uHC<0^W;uK&c%5t(Ws~TtbD##I4@&~8 zrJcGQT^~`8BB`KW7upzp40x*2G>PkvGv!F}fu}>1wkS0pNzqk;d$BNK^GFpvl9Rm(#CCsi$?4MBR>dxVw=Oy z2Bb-0Ia!i?)N+S*MLtGcsj{-UrY?5|u!+MIZJ41dvE20G0BskNdExS%ne`Jm2sjxL*V&b{A(^sEWCVGX7h6p z$aK7sg=CeZZl*aHp+;|4MXmN8@V|Mm&SoI_9G_iBgeXue0bL}Ifns#N5 zZSZeBlqd5Uc@Pe+2DSeH?~_pexH$W#LlV%fjV=5-H)FJ19TpYOp=};47Lqc3B($048Li zXH(E4;OXm%B^Xal3V71mHqS2eAqWcrN9xkTg>Fgh{9T`J*kN+#j9Nj{F-sI0`VU|l z!2U7$>C2ulW^(&TzHDP=2F9(nuGju2A%-MPerp$$x~<5){a3faq4vRF81W4vK=3MhVxWP^D#fT0ropdl zetB}=;vI?l)X+4*n`6^!=m6TV!QkE@%_zNq05z7~x4z%gLkn`6)RBuusN;OsOB*yR zBR=J1jR;T$?nwUtwkdMbMJAT~j$J67Y-lc$ECn9tx%R@5d_iqMp4*LEgMAclT`|Z1 z0J=u>z*%dcM&BfR3??l<0mf2qOmO6UGRRItwp6N{u@Q2ryXvyrZ(Vwfc;a7&=anRr zhE1UWV31}U6n?&lPMt!!C=@QJ;)9iZO_En;d0<83~ zy(o6DHmbwYi$=V&@??4V_G2w0#$#BWNY@cxQ8l{))>v(^6^PMujPI${oSPn&U@HFr zr&mG+^v1g5+%qS|rbY4tN`ZCDqi_hNMq^t8y%|o1Vkj%#+5XGR$`Ji`K zh>g6uux^Tzzidl8jI>y%87og>c(alLD3}dE{A!yK@(TN1nBF}2N?T>s1!RU&4c~93e z$P>;Is7gfHnMf>tHp63@Ut+kwKh(_`en@E9S~(anCa%aN?Y-@WZ!dULoN(ct!zza^ z?Vue)c;QtPbk&wM^;c>SJkNuttUBq8s@;nq-43{7=R7_crAYF@ z!SfbRG}gEjldcjkOX>h!dPb@ngN>F(*ZvM%V)_*x5pqgo0?x@EZ!}o4reY?PDp6Gt zDIgZThM+61_&DX>MuJU8FdHTs+DIbwsE~^^4(q4B5ZvpXxKXwI;J+{UcH!ifn~4u7t)jZK z6(CZnqp`L6Vy>EZ&nOPBg36QyHT{htduLIij5%8jI~2n;`>4%5<}N zX2shOJ(PFY)pzbdyf}Fy!e^5(CWREN0yb$KMvpPhr--X;K&p0M;Pu0Uleh;CftmAB zO_q*08DFN}&ZDNQVb>Kr$>7|vaB;-*f0c=xr#QQtJoGQri_hMH++bE%n#=nli}iGCz_J;Ji` zMcKxRaTm&mm_Y-hMj(zM zF-<|i3dIy^Y7|ACBkhTt*Ws>yEVt%fC?SQ2Tm0p*^ER`WOKmC*S99%vjMCE!PVHO% z!uOZ_X=z#0F%&9=)ln5ktJOzThj0J@n%lP6FX6w446;mDFO%~1FokxwOT4cCMVgH^gaaSY?KfSD)rnKcGkRU<*}?{}yl+7|KSiujGi&R586`>=`h7?r%n zrUw0bSJT?rw!XND&zTr0`~!`wxRKgo)yfR!fr|-W1;I!oBse|+ZWkBHkE4|4!s|*wGP9t_s2Gx=pKqL zXy&Dy%Fc?x8Coo~fTA&>qKth=u9xb)>kv5C0!-UQmi(-7)yYu->pejMhL9BXB<<{Q zalrW5GsNX1V6vm=accfivaMUUU`VVU^S)Q}WlUT?JhKg6Z;(jyHy)VPsel0679cU& zu``p5sW0+b4DnwUBDgk6C6CL`jn_~UE3cakSdHl`(pP0SN4Om@H^;dLC6+#8=4F&9 zGI>5)sg>x3)In7Ms{yKsvGImCh+M4t8DmF6S$yEix>_M+*1*-OfYZGX?SRf?;ShO{ zNj6{3K3bK5%N2F?P%1YktP(*~%p^&S2(Th3l5iR2F!N=&qD?WZmr`A{eospLDeJsrD}F+|gqP^Ry65qLGv zk(>5f;$JfOYaCfAB7ua)SwBu3xMO1OG;%g-9YOSuW7i8= zxMVurMKeg?#^bG!H7Xsq+P}ZK#iu0rlbXuPB4n8()K)n(wvoSgsswbrEhe2IO7Z?v zJacy%2QM6MlB?6jn^{)OW+Ae~o3Smvnl#&c;1&`TYd(Bnf$0Dl94Mvqosb`T>DL+$ zie$WjCU7$YC?-i%tga8#T|;WJ2IJbR0^HlmTnrfVF!7wmVdgP@a7~vZ$w>x~l(kIG zMRXKCaK!ISIb^j_MIQ|C!^_Ks&bv;tu$5zp!4W9b6iO3qTi;*f6F7eq%gl+8lPx^_ zIV3NkA401rI|53ZC7!zV!C#Jf=HZQ(%A`{^S(EhS0Twn}Qd>&d0+{_o?|_ba@n46> z2CTMcG5Nnvm|8V4mOXTlv7uYzqc;BlNVke`+tILcd}%X5UL*QI4QXDG-L&@KwPU7k zT$3@9T(*FRAVcEPu%w<@|mYPN`ODgswxTCPHgYSl?A^szyk_K0ZrfFMA zH@IQczsJr7Zr4I39gjY5@S`W5K(ez28>11r5qpE!;T_B|X1GxvXk7MBrMzLKRp>oK z_j?>y@h==R(Svh={Ubm(+*bJG{{Y>?F`3IV&E-g`Yb1I%>qL&=jrAV?02o(`MnWw+ zLBuj}%=`?=Geso>`DzI5U6j}){8sq;%l;cdEG?}hbWm?ndX}#3g;tzU@GlRtv$|$u zMp6AM^ny;>Td3T0KkI{b<9Z6l@)(7MV5~K_x{xmR_{TfZ={PjG9x}XxmUu{4QA(_& zp0(KD$6tQ9X!6%G<}#2bS{clGz&7-CdyiHS+{)&6W0banB2ky=I<$r)^z3%`!4D_$ z{H8r@l0IBjTiZnasqX9VfpH2la*oCi8RAPezs$s|AU=jdJ!8JzP5%IF4RFo_1A^qf zSJY}ZTGj`32XlQadwgOK7tIW?3`03^4^m{Kb)*i25stYod1hc8NpQBMffPG+89@qu(AB{lKyS8RW%&Af3ixH4Db*`Un@8b~` z31EUS6oA@Ea&{o^()(g;mQ9jQ>5Sf5;PVL9Ni;EGb*9&^^S}Dy!-HpDc=K+Gu?W?J zumX)}2d`_`{MURYIH!-(My4{z2Te8VtLi_E@Tca_8Z)Ld1QM^1?_?;Za%_;tt$Y23 zIymPl(KMGngI)>6GdW`U?51U+JI2KitF6;7w)-B}SatY0;^@svvFBxqCMs2>n*6sX zp=Kln9^{>|nK^%m%IZ{fk!gqdhjHvL`N7XCa&s|^IrO#K^({jFles@_u(o#5fDN76fCBJ0;vbB8xkF{LasF2hzHz`_!wwzSxF?L z*x%2;Daf|9wZvdnTild9f;Ti+y0nMcu&J} z`5d^+&J@cg<(qfksIz@e`1Q=*Gr&=Z*S@7&2d!0otc~xc3u1C6l|I7`Im|{dP1q-? z=uiDW>wu0a%{%K?TdUlT+f@^PZ)_R6vxO+QT?&&l@r7zpN16#)I>*8Zj+_4&e` zcvPg8R*v~jrvpH`Nu z_6OMfbr_Yxc{WMaQ!`wYy=;tOdJXqy-;uZ<3;#=_;`me zG;?PpG95seK-mX>xxU})gHlyUba5!|dH}x+UxwHrGG_CNq*v(1+Xg+pO`0OQRu248 zIzbvc*dzA)0o!3+F#G1r^emtPzF0J<6fFVrF`N8F=9uDUEY%p;f_o4S-#g)18)}(8 zOx&FzH{usK)?Ls!^IDB}`R&)GVI!N(=H)6{LS0t1QR&-%bMK4ZE?!xk;TstZ5bjsv8mqeu4xwT}J1acRmtB)qPJPp6_CwXgX~-s9W7;qM$$y8%3n?B4zqbCPBu z3><5XbQ9bg*c#|+w)Vp#h0bYa=1=lhbe2Ydiaf@Lf9$bS-0Z7z6T`Rx(<0ECW z`Kag9nT=7@H|RQfUcKpo*fRSbm5sp!Y6_B68ogG)16{!CM?!tb+qkahUQo*MSWJFS zoYE^8J{{T21**cqnk#bF>EP>WJfNP9`0KSw(e+RwUt734eSp1cEbsg3_%rQkyN*ub!sX%BisI%SY)y?YGp{(EGVMZ!~%a39WllW6Q=bV+iuoUQVHV7NvyLH9K3FeP1fVE$`lo}r!^aH6K@C%ny zsRHSRTjxAC z&&@PwGV(_TqGfo>tLgSdCuaWuG4%fcd`{zEh1`P_Y{`6~qW))`vq{Xq1+gw{g-yrpMxl4V+ZCL}%#!()Hi)TglnO0Picp7O2tVtBo+-zOWSTeBgV82l zgFAaLBcKDQ_QgLQ;jyEc{I&{Gi8NG}CX^}lQ1`C=FxMVC6Ficewgqvw0b@{w;{^K9 zZvE`p^?aO0;oL?-ir!dPV#vD-pmwg>kACA9b8$eClvE(F1~nZ+5xSpcKi}gKctZOGZU#%Y99Dr1qdYdtu5vQI_tG zqHA*@L@djsrEOo-0X7LAxNnGg-YATHF3R8$rjC>LW7}@nsEak`6Y3#?^zMv00sf!H zE3&dXi30=aPpAMcm;+b)hqgND0z`&Dg@AT`zJ?&EC-2n%06i-ZIEzr<>+M2-1Kz#= z0H*QVFP^GzNv^B5ezM!inG}5irHooNSS2>NZQMg2_iKe$3O|8e%FQ%0Lkbokqu0s zmsE_>j*5OyUWC)PURSmrC6aS;1fju0DC_8B&^0# z=3hVxKT!VpD4j>TiuOH07Av*~IF}G@)ySdyM(tgPzAt$95*J`-Z9A_<`8ReWJ7#(DY#2g^rH zxoFjOSeUBp$4H_Hz0{4*Y!LXD%xHH9Q#YU>7E2w}FUxen?}Xon(GWSD`YYx~(-oFT zf#?RWsQjAW2y4hmUd;QD@K4W?^D;SDo>tQlQ|1`!(Wn3_&t0*)JSO2jS}eyvju?>@ zE`nGCZq|B`H^7$^;YGa38itk908zU3y6H#bt}XdLgs~B$Sw~^su5kj`%U*x%H6_xYx|9E*yil!9f22d{q!E_s6)=LL<}>iPY_=GS{_T zUwZZj3XX5)Asbj_kz4C|cORb2(wvqthmFFc?1zFWY5wikFE$Rh8)KrdyV55%6u+17V z)B2kH-FD_SOF(^&s;>R8g@G6?6akPo>hDpg-FE%N_c*%Aa|1~fd4>xqj!FpRyU18q znM^Co1cC=q+Y0BP(A-??Ih@jla7I!gBdUfZ`GkS2uIk2(hUz}&7Tnni%Pvv}1%MAG zoh1|~I+dA)0n`rKs<-Kk*~xt2ER7_LAU6 zd6LH=)IeL1(4{n0ZpQR_g(rRSuzZaOxR(q`NRBlT!5fx!M}q-uizSu3?%>@R`O~W;0oLe=;$ZxV3)W z>6Lx^00uW7B}5}tQ}r^NUiU;3L;8A;k&n;6!uJs|@fbvu7I!dTY9iOA{_K8&N5phC zkO7pol~N9%ItKRX>iMjB?d;;`HIgy3ddOlGiDJXjJ;3NJY;W7|flfD?S(a2Jh}ctf zC6c;>)NeqMvBmCBg?ebPk)4WycLj}>J-Ss_KyZ`s6UI{pa!i(5FFIHPnPmE-w*LUq zLAR*)8`c#!qmSjxw0Ts3N+{}#O6x)-Vph9u6rDZ&u{(os;}ls*ATbG|lt8BG9UEMe z886dJn;}2ACe64(wL-Tizc{#vF~=sqNmi3frGZ4C zCV<=xt6{%fElA#h{%jwZk}RwNi_e%t(DjbphNhuZH?FmV-YLwaxn*^nqM{kuN(3f> zMIT8)ur4+y?}YA8n^|p~ z5D2=*axs2L*2)1i$qXyl_3eTTj%qZvDx@;3>zR$Yq9VFV@Os zglALwe90ov7y+=?RyONi*zv-7h6K!rf*B=o=7OLVVt@4|RsDf4Nxk;l6Zn4}8JGl- zQBq|0rRvTJ7<)j^rWvSB6N?$tVcf?6mB~E6aC{eQ6-Q%4x9GSK9}? z@5jb&1(8;ycxa;CZap?Sl`ZYLy|GQsTqun2jHyTlS5&Mu7Mv*}e<%&XUY?)@cgM-N z(#al8VSNuaXe3flYK|whTN?n%KC(8xo8d3=c9G}9jN!8rodg)v$6}R=*05@j0edxm z+v+iU$y`;&XEOs5Ac!kMWc32X=ya~7Snqu?QIy~Tb5hJSk2Q(Rbs*{VtA83m^!s8T z0pg=CpGTMh1e)QIg4&gODKg=!D()!Q6%d@)*C5EW&3-7o34MYND8+n_XYH-+;A zh@gWef{K)kd;NwAcyBI8EQu=tuG>bEQ}3#}pS}vF$T`vwg&^u9V$8K$k<@!*B?R_h z8OfYZSBOB`RggBO1nMqNq>*}bkUE{cjtDdSL@Y}pwK6(+(P-I)olFSs1r>17g>6-Y%EJ${|f+Y6p+@e*lwjldHSSpxwh#-IY*>=$mPudQLLDq3Rr zyU}6dA0CQCbeIWp^0T9}1ER|8riSc00qU`1827{x~)0%d(i{X7WQckT4>nn^lEw=EeHA+~7;ZzAZ3G0aBi#OGW`B(tY~->NE%T z!(%rO(lIiR!|nx;@*gc4k(=`pZ#rS8Fo5jAw9xXEMTJlZED8FC8Tl8KAW%+YU=mgu z3elybuwWPJCwl9Q@yT51y51(zEkH?I(p=cq8cyeJtL=t2E%S7F{`G#7F7fz*E^2&*ugFA7x-{#~;HOpi`L=~e##*}(ifydYAP z`WogD5(6PL%*D^E+>j32;lav0dNl!AEPmr*w;ulh_873{ZcvLdjL69wG5T7^neZ2V zAoM2s9Csg}tvw5VCBtQ%vg0ixM$pHwMWv1a3rh38>K9cN*H^V1Tk^M$Pc(2zpOSo} z1eK0;K`Iv1$pxnDJmR*!Ha0N}Gswa<@~4kP0e~wLdZw-a09sN-r}=iin3c~wzn7LG zJw8;ZvDJQ*Y_wx{0AHr7)6)8!1axD8WzW26vnm#EMA{20BT$w;fxrZvUAka5kooi~ z06-``CWt<;FSgw%{f*#Di}RyISVqXMmFXa?i><3H168Mq|4I~hvfWL2mcKc%-&CL=-NYqVM z^}3FgUwnH10PciTUaR|9H`2C07(Q>nH13(HIJY{apa#+jV|75UwVt#OzSyhaJl-O5 zvQsIbPxK4we*Lc*!ztnxrroG8>FwXYTloI~TpC5k{LfJ%=?8nN9{AMQZCRtUe9S1K zJNZEE9g8+Q_tH;5cJ{!p72-2Xr^r=m3?@l0%vKf^K)MyPS?oZ-ha(R?t62(I5>CR$ z(MPV4z3uIXCS!wIwKzpP5*4YKRnsc!+=2->>0Ff^9U1pE!c0?Ch|N2@dV?rMuc&DP zm;wE;UBPooWwOoiz00WDy}kbcj2H7{ib|hGlwV5}qq@;+>Pf)vS1cUvRn!npf)t@W z3m=bcE;kci!>$N*C}m(>#YraYVxn%g9=S>2co3OdmKl~L2F+Z3vj2cx$)@Knu5 z66R54SlwDBSkAcE8v$8;X2`Gz-wW>;d>}c6lh2I7C?T@*h}bEyvPx*OmZ8^ejd#J{ z63Qb3qcHHLt4Sg^sp$4^+8CPH5<%&UjuFBRqKzZV3#}hH$yHzTF(Qukr|*T&3acF) zvP{LEAI~oe;xSD+JSghfY{S*YQeA|L*rGL-W4R9A*eyJPGDDa!Nf>zZPbOw4=?CSX z)f}izt1gpw();1x&)k}c9FV`4HcSovsabXOMW9-{>aDS#`F3pY2$;_rN1w=sSV~IZ zO0luC4Y3-K1L;;<2f68q9k)!P+W-qe^uF9z?ox1{7%~v&3mz92m#tA7I@*k~>Agg) zP@qbws{|iwck_SZHz1KmC;UGx3jtc7B*!5BkrBUAo7@s`s_`GfEVTJ=_^w4<OBEF;tVFNwcpm;@Af6A}kl+4%LD=@(A&jUoDGBbgM19 z5<=3ib7TR%d)G`;@eWb^ti>c&2843NQ2LfyuR?>^*gdG>t1P))h)*_;_3p$5~hvG=ru>OG&8gU5|HefRF(8z|Mb{q-13h zGi|(^u>_l7O;B##hhe@6`j|ISNY7!VY-Iis_~gcS%Fm>?mn6t+n$l>g?W7IpbQ|Mg zb7JMz1kghYUdXesJqX-&z%Puvay-6P zEb1YH%aCh$$_1HQR;8ug3X0i=v9{Qg!a2-N?Ad)NCLUP=y&8Ix+j_CTe%S5eS1)C= zkvtiMIe9*{U`Liv4Vi_I9QPmVj%(=*Q@u%)yhp|2ipqot=80T6Z3W}4h$M?%#)W+0 zXP*2(G!`OpxxI1fV7m|AHWls-Z;I|_@ZxC>Nfw!s7Kq6sq-mz^G1tDtUtn-O#(X@T zUrdod(M(ZwC2G^Dbc11-gw@ji#Epp8i8$?!u2lS2%N%-rKClkGKpP#b{WtJ;#Lgf1 zxsER}nsi?=bTEI^B-0QA?^J63I^#R%d154QE$%l)RcM%P88z3t9q~FJ44jbYsVWzw z8lwf+8wX9@-opD}+Fp7F7^_yo+A5e5GtI&!yrl^gmFUBi#>z9Ef z&3VR0@`}fnR@WL``Cu(pu7bwqzAlLXQ6cxqVCztRBBjSUrcv z5BP745xDZ@h&8SHqpiAb-uv_;{jr<)UmlhnV1mj>AW;YBP2lU6_`GtapmdSZN%af) zJ$hg`*%Xl39IcX`j0_Qhttxg5e#5pYv;38r%YL9fV%ZE(+X6n8_uIRFt_8n4GH$Ky z(yRb}{cu;yz9>kfM#sMTfTBIF>d#?_rGZOmSK)*_z2g$F5$2)|t8I5c00-CDlUsMZ z6-SlI%tT=esZ*vv!$=*_QPsD8px_On$!0w+#4$Eos*dBZ>s8afIZw%t2rrj*V5Y#o zPTe-W@8YmAQiouzewG^MIYAXwV`)63kt8s=4-**4AQhl=o1!rbi}1vfX!Fu4E@BeN z96%|6*z}DZfiw=T-Ejw(xtvy+$&HTe!sxfK8-eyDV#kg0e0hW}s>Q2m75ZI}N`u_> zJwU@&OMMT9P16_L{lLa>!L48tBd~RbJuZqpAqiqsm+MGA{c&Hwa>p+zk|^}~K*C!v zrQ<;KyGFmbbX)1Tz^4x28MU3^^-6VCpQVET09k9g9naeYLEbf%H1kpj*$m38tt%A- zx2^ZkSb}Kci0N#$Dar4npBm=eik2QwkP=XmOFNJOFB*?bXg_E>FsughXFM5EC5=RA zvovv~nr#DnKLFpx$J+&bAHx@aC^JHu^y>@ioGY~v*JrA`{{U*h=N9l5e4cI6=w*XQ z(7VQ6H4O{&wH7-TtDp_xk(5+H%L~#jIho%xnDb+sK_kkNJ65Lx#r5CiyJFWh%1>%& zOhW9pbwH0=k9Io~u{Br(;heW3d5ZDM+T||nwiS-VS@u!23>zkFud6KOCS=eG#PWK& zX`l!c4U6xMur5nY95b9C>WzIYzE`bcjIWoiND-M>6)u2jG;AHf!FLGbc^GpVo-ESG z`Bf4;D4ua7(~E6EHt5t@j^c>Grca#bhC?1>R$>-eoGm`>;!;T;r+VplR0^eLNf>T#dKpu09DRz)b*?5>qq$>uPAZkTt za6yrf0>pPFv1Q>`Hf3^I!JIcTt(3~n#gV3E3ly^XV^)+)(16imJ}_04;aPSwD=5mT zh)I>ph4UnJZh~fDDVx1~;66SbBty+HLm3UE5W1PS(zd5GJG!KIedVXIL{Yo^EsrAV9K+^ z8W?Fut@qOFL+PSJU3b7&hj7h1=$2frMjW>57G5X(&UM|a02s2U?;OBedPnhti;L_>7b$a2tH8eTUn(P#Xrt8Gb-3cpn`0{7 zm(+fuNh(kIMT{;y$r5ca9Y6&Eb|Xj~kH5Y&1Uw2u8)=0m%cMqW0_s!&&XMH;cRrEQ z$IjJ(8F@lAT~HNSi6_Z&ZAY*>bpA11az!d(@5o z^YezUFY|A6>QUVP0N?(YPqgvq4lQjl(Z)EQe%V%R!c0&Bp}iz(?3;iH_8m9J zoSs1|EQ28>t@*S0&pW$rH6~mxlew#Xlv{SdK1ZC}s!mjmwHBjC+o;>N3Ai^tW}t0w zwYHI^tOLJLf9^0zeU4LWqn|c%vq<`-Nh5*~%a@3tiS@O9tB|%FZa@?({Ub}s@y`)} z=JRt#porJZ3JGnUtrS>Q`cGTmt{A)z@egPJ05(;L6ycRz{{VB-?hW8y#V&2j$NI2< z6@jRb>@VpyIuCq3rCp4UPFiB;l{glEDqLmcT*OevEP@tbT~H16U0Es!7q#H?Kgw&I z%NCVhIeW{v7l45DzkBmQ6vLUnzyU5J->KHU)OEiKC8X zvywBc4Ge4k8f(2HzN59V!c@?;ljO@&4;7MmWzJ+`&g3+t3FJtS$f==LppDp)cBgvZ zslr<+;UYY=*qX@Y zqB;x3(!#yg$FI*?z^-@0Z!w+MQ1cl5H)hXGy8Zg%R0$}TRE3!?m2~Z7`}V^lglCyb zvmq$EkcNj|zkG9bu-q5X0$%~MA{1qkH()FW3>#0eCvCA`lI8yZBU{LzYErBQ$=|Rz?<9K7d)&H5#-F}k@G8ZEUzK6w_(!g)f`%<0*ONbmnd}$LRd1A zyU_!uwisMjBNA}v=2*P&Uq-f~QOIt;xYd72>DwCr00X4D`xhLM%#k=I7~5RVb{z== zMwSQuU#q2HkAd-ZjUGJH$pahxIMmafQ~_S!^I^^5CoSdjaDHz$9ldH+NWoM~Ds>NP z8~olg_lw>jWq5}Wl5Dd)ieoFKQJ2+ceLld8-`g0$l`>gEmMr3vocWqF6cbMD(?cJWXgF{v(bL}X7m`*?#9^ZW zn3JqlX}7try!UO?^x zAAXo*Wny?T(?HO>EbnDjh+QYtTK69q6;1?``GseW4I+l39Ft$Zx)WdD1s%E>TcVqd z@Q@Fer5VU2yt842Y)`Qka4pR|T5T0Db&u(duWh!|UiY>dT)E40WSR6BBza=l*ov?X zX;ajCj;iUmz5*fSjLf7o%eJC)skra0sOUZM(og6P3HBwp?<_p*D7B5Ois~$GJ+XVr zz7tEUQKuudQLdHk{{UP$c~h4WM1oZS(-pb|GM=RN6@qUFI6LMUmN_9xR%a8P6sa1a)=x~ z*#M{`VRyFuI(5h1XU-hvW!`wvLoflNQWMfU*2{ZeY&Q5T2ZuA6_+icEOsrshW#(D29g;piZ81WoI}G^%qTL_1wMeX zYNhOScm8o(mi#p4vt%YslQ5){VXH?=BwuQ}>)QwX`^q`ADIP&%{ZLM~R{b|SXgaoF zrq0-p%ABJ#E3SQUG)@c2mS&Gv?j!{xa%_S8W48JMWQ%ts0(g!17tds}kD7U*DIcxj z4eKl4NFwZEEIAcSMn#FVl@v;w0=GMM{{XHw7Jr|z@@fJs{&Q}G*!Hc@`{Fi3pYtAF zMZ#U96pS38dcCMsP(5(YazyWgdQ8b2JHc6&FU-aXQfp4DVkmS&(-XLFBIcxLg&rLzAwT! zc9?RC7G+v#oos_uLhM!a#|~@pPs{*Gr6g9^{US~M@ScyB;f!hw80-`s^m}SO{y)zr$+A>^C)@3T?iu)1iFF0ei_~;l^-DYL>J4{{RpiWZ-q-_> z%+L{)D#$@cUG-ODI&XOB;>JKOgqP;(rM8`EM*KIl{uo6rp}L-tbJ5<+6cY zA&j!w0m71}ro`{I2KHF8MF~z$@NvXzn?^EuQ$`vlLL&oE4kazH03Aa8#tpd>k}~=3 zA;clfNvkayBSRcCJhH%@*nMlaUic#7T+%bqNtd3)60m7j5+Ww5tgUM3Hmd&T5ji)O zGMOyF%)(~U(FmP;X#$0w_3wk^(UFzCtpOv!1<4r+h4V49l9Z!hPQivFb4F$qY`I*F zSyzplQ+IBGLoe`s@brs}q{W&k=|L7G1avlQvD+2?C}&~MNfPE7IT1#}D1x&QRcFuVc{42N*Mg6hDlV&#YtLZ2d0xk$F|D+J}u)bfo~`SvVlPde^Bf8!8c$}BxCstId3%OL7p;? zR1~oFZMy(J*XFR&@P%MzwldNVsx1EiuUurT-;EK80E_il_GUHnM|vOWho^;n#PYx$ zQI+iMq}6;iZZL6>j_yKp@i*bc=I71jZ1!L(#zyuRuKm8} z0V!^gPp69GY){4E{%#dUlP*yhTCoDn_uFtThWIh%j!3agqoA@kVtSAbZAWYsaDG*b zF`4|_d5Kt~7|Qw5HeKq8Dx~QFNU@}M-wqtN07L^!@S~qr}YsuqSLt;*YV^;1B>KO)dS$Q}c!g8O!NiL6zFK1X(tFRsR43rUiJH z4>AIcr{86&_Ob>UR7BmdcZYGp15nfZL7`2*d=Bw$Dx`-aNK?26+isuq!A}|B?;2~= zzQiCUe)NBK5S-J+vy-@7wo+&F9HJc>Lohq{?}f@k5`F`Tx%91tqN>{sx_hbi#oq(t z*X!uab|d5Mga;|}sw&M6XH*l%A&t@ZrXL5}uknU=DP))~p!(w!LFud>q)^)c#`|b@ z^6p$oO3GN1>VAL^bA#OP6o)Rl1aX;71wDx)YVLI&xE(#`(h?zjcSZE zjO}Mfs0+WhO}+40k)KQ@WL-ovJ2Nu1pWCN@+wIfi0UT>GrN2oek?b=7Is!*a+Wx~7 zq=ehD5Y3XZAOWONQG!D0@2KtEZGm1f#oU#RqcR;pHj4fm;9$oy$|uc`wy6BTt+}B} ziU_grEZ2L-@!_!L<7b72w=2=L00&YDzx!jhanCO_5UVqV{NArmmTJfJk<#m~26>B$ zNhE?vEs9eFPuh>LFVJh-q1a-VEy0-P9!(cfVM{{&;{xCn1AyksS zv-_BCLD&I)*vVBKj$Al-g@`__h+;?t_p$cH?*hvzeNA==Ub{8#*R9#u;+f_Ppk9*1 zDcb8%qQt%0&*O=?1#pb->Nj zqY|)#!d_UA%=x)apD`6ZnHGs43*S=_b&Vmy^lf8FRSW4gs2#;=+>ze>@HxRaOi2)x zQA~j80Pdg-x_kTLM-1W28CjS)yJELW4*Ey^aYSKACoct_WhC@m-e&1y|3>9}USz7E*2;@sH;ewe{BR^TaS`<}adVwWkw=gze|M3Inpl1g>|0P27U z``wIdbY)nt@dt?*^wSy!_a(IU*!z9K_qYppY3Bs=#u$MscBo;4g+>nvpYeErP6& zq1Y>l16{{ZILFcHga z`hNZK)@1X@ z=e7iAlU(t_h|H=rlFhJZI~5mSd=2q@%0kD@VjWbn-r`a!g>_o(?|6@v<4A*4y6(Kd zK_P>&^a2M}UgGObZFp*Sc7u-)@{J%UBufm)LXa#dK7xPP_rg|R5(koz?;DcZWztEE z$JGcM^aQEzSf9*X(8EeLfZ8>?D{I!;s)bgY9nKJ3)y9NHlrvMgeMO03*ijt@{V}RG z&SsS49%O+GkEv%_L6H%MmgdlecLKM)>)c~h_(7XxjZ#X~Q4d{%x2tWoCh5Jg`Dx+L zGb&8B#fh*Bl5ee6`&Vkm>Cc7yNxZm~1!;{8j{Alzpo+WxFxueGLl-b(jU;A>0DVN7 zI!HU|1G(#Gt`puR=9yzwF;QtNSUsc+R>wg~Mf)5xxP)R{k%r@0{(tTE#>V5E z3QCqXHbf;~rXig>Tq_t#s0CinjMb`7(LzGnA}J_VgB+K;{~lP*v3k9lcp zuS1I3ID7a@%xW`PLA8wBCWCKflvne3{WpUw+TFi#kh>Gq0bnThuWWul_-`fWa&&rU zGT(diqZs{)o)PEDy7eWMb3*M&HoN=__`G?!qfbW?XUxZHk+6Lr^cqT&xd-R2_!pm* zp^4gMf;~(~FIP@?2Y#4*HBXSii&_TIi0o=b^B8VS+QcmsZ`l#7r{S@>XM|Q6G zT_b>=CC!mGWAcoWtg60pmH;VW30=+E-|xN$xbAE$ZV5GI87{iDjXxga`N7s}mm`p& zVXj5CL;Je>pHZ)C-vWHg!?vQjnWAR1M5`O>2SO{qz7*0pP-U{3IEGwCw4ygnUf!KX zz3|cCoWcNknACO&jCGQZn{LX!?b8|0nK_)rn}Lf_GU!AE?6O8zaqVE6>v++8v&rhQ zybi>YOkl3sk-=jb4SKy@Kl?ZyK2g1#IF~fED=Gf~6r_<$m5i;l!ds1_ECAHX0bnkH zqlsMAmt4+P5|RU1l8+vct{4&KLR9R^2^y?XP;twEbI6x11e264mu89>^yx35bhNBR zRVg%kADj%YCAxXD2R>Lvky!?_K4L;v7~<4^t6}CaH-%089aOYI&T^27d2cc0%%GRd zBM@D7^5fffK}B?^00DvCUFUuw!#u^x=3$Zs27qy`5A>pl_}%IPV-| z2v>oQY-o=&m@1|uXw)y45{=ZVolb7a2Fb_VuMm*LnRbk_v126B#98EmB0UMDSi1^E zk8CHDjn|N$j`*=8q9&g#k!M1WDomuQG;^VFvcs6ueoD_~tXSXM6nsY~21hixXrY}D zBIc7)77;lW1s`Yw2(^5l)xh(#7`{^>7bhxY31dSmZ0aAI^S ziwR>+y|lR0HtJgYbjN-rIbr2Up=4FRIE_M(R+G>j*iklWx5a-o@lzCP=T4;{gZ*1j zD@5=2I0Y5a$U4pQawBEj`XkYyqF95+F7o_wCJ9GCC=GyjKhzg(m{8w+ zuL|VgOf~u7%M9)UMlaA>J9-B9zK5==!ym)W5CWpe3`aoHl3Nx4P!>Vlfxa0O`VO=e z<#>QPfELI#GpMQoLlpq`qy6zWh4Cc}ElM*jsU+$ko|_sUY*lftIuwc;bem{L?or(P z1MU1`nm%AM5a}3VPRsO^9cW$|bPZX1;ub+OIc&@<4w)g5Sc7am1a$s(`K)EE&nTW6 zVlu1d;*n`*))dmM`Emo(;0~i2N0<4vT1Hl1D1{R$pIDJmy=qAA4xYOk`{7B%c=Pbi zFZo>1SvXe_ib-rRN<=_+o4v+5P_Dh^V#cP9};%-$iw>>3lIHDcjGB;K1K z{fME6Jmbx|f6MuTU)6MyHVniN4w7tiuH(ML=LJ46eiVF-Z{qquL9M!|k??#+G{;8sZU8QO&buPO~C zk%?k~tg33g+qX{Ff~>z0$YfN(kU%=Jyyz!{Ys&+f{-XGghPVzfWviaNcu9 z4NqI%kZAf=`uu;b?|4&csKKX^$UurgB#>>7P5prHUpSGO=GY@T(OKjx)2IafH`sjO z5)AZ`ZU`}KNA)qG)Bd>Om4TW{JLzpqw|2c$S^ofG_QE;VkTx@8=Si8gl9~vj3M;J< zzNM-?x9fsVTF*x;by3Kp(m*Ptd#;MVusyI4`Fo8S2u=S0Xd#)m>UwDQ+j_-+2j-aa z`K-Wr+^?h86lPMktEjSpV}7mM7_@CZ#INGhFCIG2`j2m*dhzlbXQng?<{S*$P z`RXw%!2bXV;qv4!8Ih!SiZZ|o(%M;vUjEow^GAgeLgd3srcEq$5C;1W*L}gjDPeQs zn=z-+sk|}fj-Y~0x>4J1pTWcDg7MaLXq~sz3o;&n@15F4=~rJDpnrdx|4)Kp-0GK{zP7GXBH$h&d?~FDMME(hxK# z_$PYz#BO4aHCY5P#F7gvLhQ$;{kmTGU~=Cuf`J`13f#xBuaLVO40AUQjR3b(sFJ9| zOS+Dr`;qO8oONd*NyBpqrM$;gwbdI1Bo-D}ZMh5q7CI4v7`WpY!Vf~Si{I3%)B=9n zVPVYNRbzH7{vTs?q|h`1&`@^U@9uF)!hBR|9@&D5I#e26jS$z{+X#fH(e^peN1;+R zk!saVTF}_Cq!h_7ytjQ-MGx&7|tpHF5gcJ+Ps9@y{99FTJ$ zI>;5kB#%lpE!z+noxS>zgw8%taGfy~!+ctUEernu_%ksA$n0jzMLww0GDeqWNolM6 ziorS&(-o#XjEfS%oQ77rY_@VQE=b+FuCf9U4%=D9_lrESm&;~6r{XJ{tf-bj90ep_ zSSuSScO{q#)JWA7a`Q$}4trwd`zSZ*t3hzAEps z$B1(6F#iDXX>jeJ2;~bKk=Yu~uZpZ*@<%Xm?1arQ$E9>{G?RfXjywmwgF>v{(c$FGQkt3w@iCD`4 zwfcbrO@aX?fx+IjMkL=>RsR6@ILb*Jv!-faIf-P;wpjUYr>TtY5m$X9pzYrPoJ)f% zGJ`6%gb}D!I=aye02W8Td>Hco0OGA@1{tONw1Ko!s#jBV)D&2)s|*~zPb(t+tjf&$ zDT!CiAapvEP@-&{E#vZySyI%Hw($3nVMvP@wdNVXM<{9`WYUrV4CL=!`{Kui@Ti7i zWRpRZ(Q_kFAxB1Hb{h&K9P`|R21#CA#}>`TBbo(|FCbYw@hjaWn-rj}g)BOa>kqug zhd_h0=QV;T7X5~m%pS^0u-sb_`z3-ZBi6=x?C;m3^!rH%xj1`%VD4 zi}1ZG$s1~6<-%K9YdV_S(u!WziY>SwY$vmPtZ5rl9b1P4mM8j|zV-*UG-i8+!IjOZ z;!qzYlk{Ghkj!>c>;Yd!#*W7j^L`&d0Q|hj-E|2?Z)BA~Hm1F++YE+oD@fIiKZ|0^ z!=DgeBFD^Tc*m&;1&^8BHvK>8hyMU3{vaUD$Pz~cu^N!qtJnf|uY!5- zg;D-;qhpHP*M&_R5>SFVoz-tv#2u{sV`VtL$))M*^s`3Ez~RoxE>dYw2VXKWtS%-S z4J>?$XB6H14md zh%yZ|rAhYzX^&30E9Xv18Ai#Q0op_QLZA&H7tRE^(!!4j>iiuzXp;wMmmu} z*f&$RW7du=^IX-X(fp|0Vt+W38j|M6p!;0`eF5C}!Od2X_|2zmCeCupLzZm9Da>Zp zR#ZbZ=>&pAYIZC}&fQ0*jtclk0**$EE?QT-rFpW=`gvCd%nE?()L4@8Z88 z5KQmFrHF|Uvhd73N})&$@(TsD(-B*0_`vg$@1Wx)D~s&SxxOJhb`V6+CGhJTSXR%|Q<7usTU2sKYJ~ zux07ne-<+Nd&K;t;i3&p`J+=Bc|C}OHfk90xx6#0NBDC zIpD)0nJ573tQ}jg^#Rb5KhqF+H-_x!&ZuMzn>qDY#{K>d1KY>;PVq@SkDe*dSyLj& zlLsJacTJg)^%woO_89)*97;Vomh>MqtqDi0$F}M}&qH(63&Q7z_GY=O-=XP-HbaD!j$EloC(M~uzcd|-A~&faSk!H#5TegPzWB$EE2dkGw&u7J@-i#FRHgB`e62jX$?@jgy8WqjEZPb2D;5gAe4VxRyNch%5? zzAgApYb_XZWOPN8t!5KZ%u;T`_6w+hp+O{%=L=sIdG|A$$ww4fhRebwDA{xk8F<2z z<~UPYNvZ^0iz5`{O6W{wDd=HwoU|miP^eN{7R6M3jK+|r94rUbE5up{UP=CMgP6U}8a1VI8!Bwe*Pngbr=QS|Bf z#fK_*yO8o`gEy0sX=VCZ8_PO}K=;1H?fl@sk(g=`!5XvcR#>Dv1Edg^Exkvtzg$fx z#C&r5k=a1}FFw)UUohFGjyZrRV}aPmuCG92{VBGQ>G`}#<*qFRaXh(%c=BV`0pDJLHRy}? zHlx?t@V;Mym`0Gk;Z2#Ek|P=iIwFltM;ahj({*1~qejh=dyGncTUe2&n=1LqS+vO^ zWf7se(HiZjkLs_SPmi0~qMk@$S5Z4EDJ2AJr7lMFfviaEmhNN*o;8oT)50+%nZkr z&!i@oF__9Q*o0t6Yg@jx_r)-D21xN=V7D6J98)ffp*=$HNG(=vbhJZ3yv%%+_|#SypL=MBCu${DblJdrbQzHo6$ znr_zn-@YhEhVvisS5oP-Nxk%=wbcOL%$eg4=a;l3qA zMcMT?(O~=v>=*BdaribIkTU(c?`MB(3-O-`!akiv9g78xS8+n^tNprsV=EN=v}XqT z9Gs`k`Ew?T2~;~d15qNsZG3md##f!-4qq+`L}>!K8kpZ<+Umv;92b+Ed1`0TDV3v% z2U3JlXE(4tg;@8&PaE*QWrxz*nlQ}75=hcFYU^Ug=Mzf=RH`gr2HB>$Pca64pCdRD zLzzOFh##io(ktiGclQ`0<9;V)czl19;xl@c?l{>3ttcWl4hQX1R5xy?7_Y-m5??1c zj#g$@A(g{6SF%@ zkMODEC03p?C=jGDH`EVobIo{dn$o2UHma}{t$XjcPS}@~@xzN|1db96utI4bC1&5H z79)Gwh9vOs5xIhJ2bmIrD%USWj-76S2NJt|p2audnaf@gW(J8I5c}5K4fu#7i<-ZHFK1{ip zGiw+|V&KY44cHN)&eRRo1?X=6$Xun(*@@OyI$@tf1rf$y%+vi~(E$8n&yaYUW#w7s zk>t8(i6gXG1<=rMzg$S=?gu)~l4ax)z~gcN8h!1yJK&R#(BE7TdVy=A#*Y0@Q~tQ! zy^55hA0WRy@vb4o%!?$xMpcN@3R1I;hw2qR;MH^$gG{$2WcV&v462#)Zx~lQF^{zx zvVN88w)m&!FC4gjU0CXlz@n%DEJ*n1YummlxnIZL69Ds^&nKC&FGFj+tJU$2?PycU z8mN^`%<$%6)iZ-AIz$bZK4G)AmRtV-Y*lb9mTA&M7GKF|%_)!+*1d@L?l0ruVzv(y z@-b(>HiJ~`*2ez;81KnEGl!y)nTd>`-IgE*?kld{jx|C}?Td1XcOezT zJTaX412rScu>Syr>c6zrgST2$>+^!H56F+^lLXqy8jNxf6rkH{AO`;cTpe@git1@1 zk3xf5j{ep5Clom@Z~y}FqfxC?LHX&8wzXp8nlGeNX0wCL2`*kp)w&QY5;nE}0Ot6= z%6NLdSuG6Btdfou!kabJ4UH4GUb}U!yj#TmV`$`1yQx$SKy}@&kKZ0gjoGOJd47}z zuhJW#9SYaqY;$@$-P1_8$@oVKv}&j+JygYjH`F%ve*JOZnYdI)-k_02MG+qCK5X^> z0DKJR_{?MjE@6Wm_C5W!0|R-^aDeX4Nlt(riTS{CMBePIaPYo9B~L3eJh_#PNQG4C zRNre-ckF&N-YB?_8S;=;y?5?wZkSGSUmPNi&Y&yj0UUqFi6uH1d6?{v^T_(c|J$)jLefrZ@G>k8Q#DIJc9Y8L1V8 zs2aUOf&Tq*jkr_hVkKBOrXZ2~s==e}^NT^uY^dy)sI~Psb;$=U9h?Xs6D;0s`@eEovn?(!nZnRvojRTD+tkTn0-AvnxJsv@o$VO+;klX z^w9@mJ}+>6@#DcBTKu+Ao&NyxlV*uvfGJ;!)$h}M0`snEyvlN}y#uO?J$5=zY%)rL z%=t-0coN+2#TGh`RT4HNZC>Ae2}9zHaqQA+9W0&xK>K#bZ^U0N$i7BmD=4S z{QMjs;^k(OuC02u0_X$K-ZvZ*?VT3QN5lMERa50m9DP)FZTkUse~cCIUU!L>$rg93 z0AEqR{{SndF}`z`+85GXh6`#z2XpW3UfuCKhv##I0j|$b0*;4kJ-$i9UKQblo%CtG zZ}Egij0dFO)u?an(B2iF{oI3A%v{(Ney@{#{@4)7_<5R;hiy`O-_u>T?N~5_!TDA& zPF>l>x-p?&W9^PniE5;81h+i$sMoK#_s9#vD0=J?r=-W+&s+SNJ_vM5>x^A zpamc2512nJ6;>$Y1XhyOdVT80tG?J&W66tdw#YDW(Hf|DmN2LYO&~1+{Mq-#9(O3R zk1#|!kP4C0-*5Koi8=0R63Sy5j-8kgeLo;{AnnroW7jhA5tj%W4JgV zBAY9uxt0nC?xD`^2w?Q zc>e$pSV?@t7jP6u5Z_((6qFb4-rX=y!uVvx10uw}U<^^)>Du&-#{G@g+X8&9tuSe( zQnH{r5H0HVZsLc0LE_oDkSCsP&6W$Yo$qSv_Qi0Dj>(U_Q#&owg0U-Kr=k9@86;{RR1Of>8Uz{u@d6n}OQq%|AZM2`Cf1E@}5)c(&3woNh665SEb-{lQbRtQ!2g`|0r9~Q4 zp6Wo~+}};`AC=91Y2IBzD2}B?0<^ESn?K(Ol70lYdz}~Z<%LPX{B{p zzpqcequ#rFRsxza1#|F-WKtTK5$SHn?tQ(n7bybA7>CqZNutebU8}cGd{AZQMZYFT zbs+0k?O)O;e;D~5cKY6y`av7rclg6B+9v0+UY|>QfqQ-a{c%k$K&lq7DAxXwXL}_7 z0P?YOm&z6c%o;`26GQ>ff!2;IIjw^-s{JUfc5O&KO7{=i&5FXLw`|l0@$B z99L+=ORrKDjgOAFi^O=bbzoiDTT6LrFHfW$tJ|sD7P9a}uAYSfbgygq?{~f+{{X|~ ztx4(7NLAR5lrOk7b$elT^ko3~{Nk62Hej%MM6)fI3=NcRKBd*}1`huK57_|l%bV1Z z$(WU?XzI})p(x(gyVe2t$1oVr<)Va)&Sd#fu~63ZOE&!iuA+VR!{3AOXtK)`QR#0f zG?ruan%$@l_~`5|m6p-Tp+c&nl08POlizRY`{Mrql{sY0jCGVsAXlqXo}Q8WLG^oz z-xb_DmptoLVyu3*_FrxP0I>NZ4<29TsNjhfCPbv$%mtc8?%KXRw(W{`%&HUo!IEsW zQA3x7nCkV+%1n&otCpi(=o7Fw6O)p|v6<`6YV@;RsP}H5p5qMOV$Vq%kYCI@lEYv> zfz*3m1^BdDqG=FnBla)VUf_HCeBd54tf9&AN#K=qsZPtJkQd~Wxd*1hxW^u0ne#G+ zX7v@_4w8np)wr?0d|u1Loxx>OD(Jqp(Uqc9uiF8fM>C{-6vZg)LDIzUw*LUe4X??R z6Jo+Svn*lHkx0`=V0>@=GH0BjfV5>hh8K#rpAx>+4X^dD>r zMai!?EhMUaTCTpW`YGFQw@hTO!HE@cafRF`_<(BCTE0$_b~W3+1^I)Gj^l7F@ARAM z2UGG!*lp%~KFPWuePU6%=^$ty$gMwq*a_wj1J(U8X571>U>+dBMb_jFpErPg8%AR1 ze8aJ2Jz2#_JxnX@(C^;^^Ya@<6$k_>{{WAASh-`RXpjD>tLb>qdC$XEe@g{?wDN28 zqPSKnMS4S4_giBp_>}{sr!OKHo+kB1+cGyzUd0LeNU%-?ceA7ML{44eS_Wkp6XeO~ zU7w}DZllx-7BH6P-aF>I5zw(U{{U}{8*^tHF~HI4^~tf@>Qh0F*b!J)v{?2rM^<6> z48;&fP;7n2Pwa8})%bblqnXI%Cs3-gz!iYArbPldPTgp(>T0q1A`>5>fBmoiU^4LR z##YX(y!z3-l3FjP>_NW3oECJd&Nd9tqN%Y)!3WeUYAOeN>MLvna|EEq>E+7$S5VXn zpclE;f2PHOXX6)gavINBi6Ng*T8yS)hPGYxvUC6eWOu+99p-$*?sUej2rLpkTgxw{ zQq788RtOzQ9@vIbuFQK8{wt8Itf5INb!oZ-*tfCo-x!CR_#-Z2Rnu1bfa$Yuwe=h0 z^sYY*QPI|C^=b1Y+)@#<4ZmvapmjZQnY?`Ppuih793|8Z4j5jD$L~(|FIM-C$C1VB z$W58khH{0Pk+h8@+1LO+dSb&V;k1GDvXvr2AFbYTx4re7PHiC1VT(K9?w6 zMb`2U+Nb)DPvm2t0pZ!1)=3HnYo=1(l|-@t-`>dhBLn`S?_ohXK7v2PXNO1rE0Q;_ z%FQWoK+r;~wb9&w2=!z1aU9#YphIupcOYKp=e{xz;b)We=1yf@%Vi*GBsz4cdB%t$ z^#QE)Cr;pX>y1gw9N`vKS><{qkrfebq;pg%x^ygh0cQ5XmS-iiCEW(lx`j4SXiNOnC* zG)NcHum{C>beU|9Ys{P|If+@>UwtzL0v5jsh5yY`jDrrv`f8*8y?%>;_fFPCxQ4!7GpZIdH!@zE4q3< zqoYV-f2AbUt5;_i9A|^d9hhoNyl)#kfK-acEi?(*hQN-uiJl$vV!Tqa4Sr-%#|LdF zDcIPc2zw^`;`1p4jPgcJq{$f4&1zW~mVdbfZGr2s`Cf^+J_seGQd~sqZo-j?Dk#@r zEFZn}#BAp_s%BCUphp;xYAyO{J1YcY4&f5REpA*bV%B`bf#HWQ5h_Soq-~HX+QI$O zu)3{=7JS7J%;q?YE5{sYLH$Yqh!j;>9<4xF?}ao6;G$j{asUWH_rBs7wM(a4G}AEj zyPIGo6uy zf*~Nw#t8FEt7y2+!jHKd0gF7(1ZT>uv$8}5OsgR%C0$yT2vSW88++jv!QfYAI3v8z zBs&--4#>y#OPz|Uj|R~<1gi|32}VO`B@5wyxQ37=+3G;|Jj4o1Xdl#$#*=g(_Li4+S4 zM_DUOf6<|UI+>Q5j^gXKIb`?>yjmnxWn~p(f3=>i?P9T6z~p6>HL24o7i9K51K-?i zKk0@~1C31(a4I51a&|UQL+cmLJr3JR4&J z^tG>GNWmwJ--QRxuje>C&lG~$@@{oR^bNEHNYZy6l6n)i*kp6>1zDjhJY}QU>Qx$% z$L|swW%r@6!1sk-Hm?tgJ!;Pnn6Q=woYP1VSb@6HqQ|n|YsRa3dj`^XMn8{~`0vpQ z845{7L82XZI`y?y{{T1(=6u%_Nn~lV(t>t6S5Uukq#GY>Zx6>;h0O7P#PSj}8JxKP z0L~&YRF)HDy8viBKI7_AF@kgcC+Ctf!#Ky)K-gnny0#*ZZ)`ssYg!3$t3X`5>nJ+3 zki*k8V=@^5Hb_-UU0T_`^;h1ocg_9> zW%4McU)vnG z?+lGyv<4DYd2VRw1av2{?eB;=yz{Ff71BnMP1d9Eqiux??}<4Z-p3Cw=fF`LBNm_; z(R9X7O(2nEp679Qfj<#BVhL2mn~ifhS0xLv0rK)*%O6$)xCEW?cfut{(vn$Fb-A)M z*KWgcxEL?aWb)IYLkNu-PeZ1*u*?nH1618`?l!g*B}~Zj{vAeAH<4Ad5Ngzqvl!HL z4xpX;S;a)YAiyBc!>Uz^MOwM;JD`eU9#~YH8 zF6}BGRqtTeLwjI@g7WVUdvuB5%*d>#Hx{2iS^77I`elc;! zzXv(w&CQ+SbGH%8M{N_wCbn-;p*(54bSN^e%xrYR22TjuW@+Pt^gmD$>PjH&qfpg< z#tmb{rGJ1uxp)~qD{@rQ#}lcBT%r~%(aNB)-GCu&fUu+v{{X?mbHNTe&z6TVV7h{W zHNA?G2qf>+cg9-ayoB*AjU=+fwSH2cLmE0k2j{62aP|B%a}7XXYZIMP$zp&WV`&OK zyuBp%H+XHvzAOo+kZzvJ(MK4Ov<2t;HxU1=H`g=!m; zF8lAk7MXryjS7Y&Apna6mirOVeBp_b=3K0{hc3(L)8;OsFR@X5d-TVDEeejAhW`K* z{Au#HM1vs%PV}}I5()Ui2ZDH#z{ZAON+y+UHKcb0_paE|Uyin0-w~Fm9eCHZmx@b_86xGAfdk_=h>xvH}M8Jl}4b(fnj5C1q-kC z>xT~q%d9dD;^Z;W7WL6S(O(lsJkAf2eG=zE-RAH%N}e8QFlmqMr? zV5-ifpHppPruzfGwkFGoEulB|IJh4yMj;I+nIH}S0OIIC-?WneHI_fMPT*G9zux4{11jjO5u}q%4O#L33vYhvi$ZK8&yo}2Yg25h-e{}+CXkt$U34M=ywBCAlNE`F2}VMA2#w%Plx5= z%uAZe#V%xdZx~4$aEqvkm<9=;8n9M{-JR*PCj=yDRWRvdD4SaBS6BOg+Xzk_&ay^j z$x8^BLjM4l^Cv*>8c1y1gncZeSI7ONv)_7g4$c zK}PzWiVMRpm_H8ONuXSuQN<2j9L};uozz39B~D^OJlQRVq5#k}1K8nN%3LobBmjP4 z&{ROjD2Wwx(FPqG6*@+u96+5BQXgqDJMd=sN-aT;+DL!vHUL1^B9K2DK zloJ?^5~ENpD%4G@ub|%BoFKVp!d&Fj#hE5thFi#48d+cxvu=FvHCs(veF;I%{{R@! z6Y&lmoKUXW%=8&?{uh?He7nd6YIx{7gV|V>#yMI@?kX>3R~Y8+&Oq60rc*D)rb}4! zFt(AFa7fpzg0~p}?A8k6*Ok0H;&4X;v?-Tz7|ii!R0%Z`dQpeznyp8@W9Jd)C6Yfc zFB3o&Xb9lYv1wh173wqvQQx))xKA1xjYVW6gQeNg&_+jQCvAQ7fOhYIlePnsT_V?v z@{VQwK*4tCHL#RApR3F}5=Uy<@Jq>@xdeW#85WUA9%I5zmG3}E4d1}UCl26wfNYpd zN^T=JiXX_Z|wW;m2( zNOqBAf_P=v04{6vfAvES=N$Ow0DVbnkcf^6)ZluZnDrnUt39v`&Q2_s#rel9f?qc$B)NAQL{VyY zLInl{4TpN`c+6Asj{}k0^7H2)oUvn+nIFss&#hu05*oCFM|?lCIa%`Lc}je%8qTfn zuUqMlx&D630~5_0Z&q;x+TKUj zQDbK#aSAIBr2%2Ai$82-w7MNQMt0!KE-ea8q2qOwO;sL}uazCds>`#H)DDMiRLS9{ zgqh-j-D2IQ4f=ca7T-*jdZ-%v)&%pOC~+fD%NCIs5rXlBl40GBielaGt{Q$GO`FXu z0!*}~JdC16%gEkJOXh7Vt4PQua0nnVJAB|AnY_BR0_QT(K7dR`91$ppG{zvv3K^#Q zeMf5QH`@#c~suLI`JcPW?hZ}f6d04IdA zA1(6|L`bOA*&BmL5qUN|l+z>`hmi}pSmcEy^QP7T^ekeS1N9o{F`b&F7W$?baNb)P zR#nYr;X=wpO7aAeG@T&I!oxO`sBh`%f(-OQWPH>))XYm7k11o%myR~I211Tb^hnx; z6NG<1_<01Gx#5a?8F6hhYGM$IAP28lK9U!3*c4w5;*Alta%imJ;Za0b#fYa7He9bHM5I^JYKbnYi;G zlq($a`Jy=FkfO0jb)QfG*=y5#YP+LL&c)5iy3ontxxDOod2-P~5+srrX!XY4uKrxb zb%0LVKs{@r!2Ww9DuQH#M5T0<4qdb`(!)@#BVl$0{{R?Lb1#V5{vKXA?!fKR`W}iaV}NnA1T*nsIpu;p!I5To^^tO`Yx4coSFL|L z3)>%fS20LYQaO~u(i9IeDRz4;Q7Roq`xAz&&*TT6AqGw7Z&E>-Q6MLwQY>jCd*Ll1 zGG9k8=KtT4M7;)A-Tw$ufuqbT76?M zlgBowS6FD$B2cR7e^CO6KWtQZh2cV$Wri1;M*&oWq(?_)0<`UY555$fr_av@bjWNg zJ4T|mainP5y&Jr0ZXM6Uc$JRi4J@nZC5@@+z1L5XhA6n`k!6%;OvN0*$@1i-4Doq~ zRFQ_2FVqQE)OG+bOXxa`5qLi?R^*Ogv9wIOPX7R?jlROHo7-;HgMMwxNMx8uf!a1^ zk5q@!u6;gYosEjV=L`NZ#4~ZoCH*l7jdcj3MFs17y-l#_aM;h3enmc_JogkkxMpS$ zz`&~;1G8wNK5UP+BXdVHvkfsd=4Ak-ud@)$@^(N4>FzMDpTrEKR-ZX+5Wp5-SbznR zHW$4QZ?-*g4tAtELm-KKwDke2QPf8Mqq#L*I(EWqM3B=6bKF5AWN^YsV~{$N^y(kf zHd4KI$Ef+mPp(MYF`D{;S_u-fUzZAzqBQ8mN|q!H4sy#gMu*BzQM7@;jmusntW3sNGe)s~oGgIE9NzL8)nJ{z z!m&@5=Zwll7FQxzncL0Hff+=UudE;}y2>dC`6n_9J|Pc3%GMTDh-XRfS~&UXWs?BGV}GoGTB`%CSnva z$bVvJO;Lb-Ebq9j&h~JZCg!El7RFZ{rh3wo-2ZXvYZ;w*f8@V^!$#Xb-@pXUI1~U z!`qAHAM)rmG%%Mwc4jpQeC3Q@nApCREku<&bi}U?d}@Tr8u0~@;(POpIno${6qEHW znjYJXDlWAoj9(b?mtSIAhyEw{jAVu-sP2U*k8#q)3`ydjiN|6XL>h8R2|ieX~A!YJ_uwanPZKA{8%3~ zJmE0b#_X^Kb{DWUz7r{8dq~Mez(M4>X|`Hf^5*G=+I>XY9-ChN*s$duVa>xQ{!Vss z2mu3XY6s~6*xS8rjjzw#nF{4hA{fjpji%&45FV_xMOgN{EIcvGM-j9%fMMDwlR;|?k0MiFtSVsbCZXYW~X#QbI zkZN9`sDWK>#uh#pcrL3Gh`hkXKohIzXzH(GY>U48{{R>=mm`==qUBEzc~AmE=`5`M zwFR$HJwV#=vX9Wo(^Lj?H#_IE8lcHAfZmk`Ju22V^--gQha2#7Kjs0S%@cc;SwI8W z1r$wt;oZV~HJGtFBr}j}%$?(nO>DqjkB~o{LEs(><^zw<%NUTk3JKQ;UfZ4T=NZXG zY(m8wv0cRZJM!qMlgqARMqoVYSe4&$MUr+q9lC>pZ~p*i4E(_ZOALmADx~@t{?I5b zeaXXhIchN=%E6*nENB6#5Z0qdasecrt8e zUvkfbuw{t++?vh(Dmqul{{X%Wvi#2;S+!*$Xtax2R=moys9C<>7!l%J!TEhhFxsy4 z*2ez;%DoBqz;}foh&-R?Qat{lm0=>61d@kAt$_p^u9hygya&3;C7M;({DZ{V7T(%f zUWhV2vVHctU!AbG@e`feP|^koC>!jcY0iPtGg$VIIoTl2=+Tr}5^Ms7T$;l{7D*KWtEOKOJNs)Nft706qSC*4Vzw zLW3~yK`_il3jVT3O5ls2JJIj&i;VYx##KqO@w=B|8W#mz9m#YZ!&blx7lghQ(aH^q z+~DqC1o7V~`CA2Q8AR4OQ;O*D0DtWuXAO+=QmStNqYf3=Z zLvEKtzT+D@YQ`nUNGjp~0Em4br9ON?pmhAYGL=0kwEqBn8pY#B2{HP!etY#Uv8vGT zV08febi!YkdkMV3CfE|2o&Ny$#&OT_SIs*!f)s3^ov0hXxxe(sM&>Foxml$@;t=POUXL4U z72db$UdN&K#eWw3G`p%xka{LPFAFy8-vsnN*g^2#Gdvr>{#gK0^-_C+KK}sQ8ZW`G z8gpJ`VX}=QI0sntp{}4^S@sw;6&5}?+vrE}4+^G%*k&V<9gPy}u&5xlBRD2t-e~czMqnr2#40d&c&yjz_M_}lz zdkD$wIvUvFiL30+TtDywWY$Qyd72!w@=Wr1aH^p!PxZNNmOtR)Bpv~A>5*PXB&hmY zWrzXP_TO%U5&56-vBV}mMphptBd|icTWzQ%Uf#m15_o@v9CL_|J2{$slmksi<~Fxp z`bNg~JU4|@_xgH^$f@!3aP(kZtK~@y5`hf&}@IMDA6aY;U#%_{WIQ!~=;`m)xZRUuNug`{Q}55~=FKKgcMNWPQNZ zy;;AW!}-7`JM*WQ<7Q`1+(`X3_7$~O7QDsyhV?Q;`V_UYF6K?TwHhS*o581o-XCUj zWwSYi5M_q+%r!_pC|Fb9wgzt2f>8SnIVUM3$~?4bDw?ZfdmFF6TriWvwoo51p%DEs zj-Tp!-aKb{rIB>y=86Rr0>kOmvDuowt-4~#@=ZD~n<*<+RJH#ABX4{%3tKWxcqUE3 z*UKo9RDf+AD78P*+l*82E*C6~<;VnKe{lfV`~39&apkg*Ca2Wx<(1L{7Ge)wtQD@{ zbj9@iX#oKZsTA?B1c9Vc1df-u7$~H`@O9!cu3h7i)s)_YCskm7s1AavjeoX1an2(g z+gUa%s4MsF*9$Ii=T-rcnVppFu>c_LRytVU9ynhy48B+~Bg|u{i@lFP0VLPB8)4j+ zK)YwG=M@Ubs6wPJ%ETX2cTxx2VTztJ#8F#Q?p%!{`u+&44MoJ(NnU33f!4m3t;G(T z{{U=6;+(={Z!nOGyLH-t?t3?|7?yJI60xnoIHR<07#>@*P$Gq)-k8?M1X+G0Bo<>? zSTI!INYuL>{{YhqP65XJ&nZ;au8ejdcRuI&#Lhp?vB#zqW^Yj}S5KthP!DtO*BGR# z!=U4gET&ykH|j^RLUtpij+g8J>5jP`59!p=snkxyTW`~;#Xes@my1C%w6Z?oOMk0= z-<>!o$U`P(<|VYLpcaC+ZI4B)YIYijljjEGGvxt}HoZZB))vGyd0?ObNKCt?BKMHsD#*Oex^>T5`vqlos0x6ok z$8vtJo4}{`95$OS^O2KVYC3?@qzVVA{xMO+^XGjfma4@Hdj6wC-}b{Rhs3QNq8~7w zsP4ZMcOc+Ks#6i-n!Pj8!64?qk4l6NB%#Zi)fMJE-?NTlDa^dt-E)SW#?@qu_E zR*PHu) zfayor9=qeGEpgFAf*sa`jD>(gXz2u-VzxnU_&Ae_`U6uwn_5-9A;~tx>=%1#-uJ^| z?9(c9m*68UJP^$X6OhbFk4(^k2>yut#Ihu6-(z@7^S9u?i)7PNW#XJ!1i>z%x_3H} zm0NMryNqm(J0z&Eq-B_Y#2|7IkXnzcQS6GF*Jk;_S0CnfkVz{YMdgsI-pLxVRVu#r zdXJNg_g{t-UiN-&$Kdlvq4ODOl}i8zl*3syum^ptSsPxOe71T>q=rb+Y`9p6 zjf88aiCtX{fw|n1(BbtT8+0+O;hZ51wnGtPpi^XOt;p-p^u@0+_?bJ8Dn)2iDKR3E zy8i%Ll|GV3UWc*5T%_e~g*6bzoiqMkS)-0Zj^rXeSXCqfO3^i2SQ}wOn&7#HigwDz zBv{ZSL<$cpeQpC$QkAG0-2JgThj@i9T>7Lhs1Ts+K-2Sk_v^P@d&qNJFcYf{O5R_n z)}r4_3hU5~{{ZT6={`b|7re>EO)~1t zDJsfsb|8i{s>bLae~b+Hjm0cHpIgS;1^PqRUcI~FdB!-z@WhtuGLh!GYxOmri$o@o z+&1GAIW%cWp77nW4Le0E)4qmHYD326%2ged4eO;0QE(mvJeiD(M+L~YB>pw>2nLDCcwlQ)9G(^-q>wm5>6;M-#s}li>7ALQj}4lQJe{VChI^R zl-|!wM@_pKEY7HZ_;`zz%IH)9bgY1a7_k&=lhohSV`1AKa(uC+%=wp61IZ{7Hn1Jg zDJll^h)n`?DcmiALp-eLX9|oK0TQwsBr*@GO6Wi7iTwA^2gsRYAw-}=B_I+!*F_}; zxvRxYu399_moF0%fG8}|Ib~oXTkl5OpdEe|9LFx4x0yDUQ=54b zCvX1%c$^axNZSVygFzRetQ6+FF_vaRfMxQzRY+i2^sk#SRT4^2{VUf^om;hmd(-%d zB19EJw9*2RA!Qy+XIb-Sk7Mdo{{RiwsoL;YYhh^>c`jptGDWj;vNUkl8|r zC^u2trr5jYob)C?J5Y-?3=Jd`5;RSJ8f`*3eLDG+bMaz|cG|JY^(clo*#u6{}JW_x}Je>IYmLTA*utF24=D zMgIUUU4qn^mys^Z`9zQvdwFcvMz&oZo_SNMu$C95SYpd$Ku^NYQtw`fRg*Y(Kb1 zB`#lEH|t0>6KzJqilR0Ebsub0Wb-3T#Xx2xYYexbp5n&m{KNaOPFx*qr%lZ*+9nJwgj#EOJyavS&1CA87oU@LBzO(c!6 zA(2na#hs9W=0d>{HF_dzWiG5JNaIMV1TTDE^9&w*Dw0mITtZQ>A*6?{ts?z?o4V<> zV4H&Suz+SHeI8zCG71(ntUvlRAGE8TsB|Y4yxEmlmskNoV;1L9GZE@jeHM=0i8u-g z&^M9hgC~)u^sy+@k`(~}1&jmg(%p4-Cj^`;n+$Tcz_qgUZ4aPtr2Dtd+hQJjf-Nj4 zpgd5pX-Fj)?8;X96;Kn*y^ZX9#(})lj>>>TIdQdsH~F*kj*1n>L9Y(y79dK+La`oM z^>+kx+*tSbz>Y_Qu2x_cN{=$lBCh_42pWPDvWpf0?#B~6HRDC03K*4*iXjv|B;TT_ z)sQtGRg87!ZW@dkfc3>5rLn5$lFBZ{=_K8C)4sxs$*Rk48Ki4c2x7#7#A^4kRxILv zcP#NCWe)808mYZa^s&FB59faPq2wI&6Qa*gp~D1Y`h@A&iyaD{m^|Q!g1=De(|^a3o{)uRP^E~BqPE(jQK;|G3sYn2C*u^4#tP|mJJ}`d3Jdj;z0UPw ztnY?L9_6QHq7_<*Q9`|AW;M9nbRGWyj0W=xtTK6LV$q0o=^A{)Ox4`qw_6q43znIo zS1$9bsc3T-Gz~)fh6E3&EjHI%QNV6*l_pHn#S(_f=MqFvmF2?PJtFrZ$WuU@)xT=N zPcLvbrI%8)WCKjwnlwnh=iuHCcxMd*WGxv|7{u09f$G<1)ko6xV{i`m=-mQaaE@Qq zmQ1{gU1ZBF604F~wIM=Z-1TCA$__syxbGs(lAke^U|q8FJWamFmehglK^Xl%lb*8> zNn%EL#Gm25?4XZLvD^X)0JR;+=y0FsF99fbU z=dudlPt&S90tu`sPE&RhNpwHF81U)%W>P$`7c;SwGa{QUB!^M;8?;-cUVvfOk>F8V zK4HOo9#BxnNIQ_k-~0anJ@C2DWb<&fM6EX0u?2zdYK?$9U=N?XL(N1Cihn_h#`Su< z$ug#t+ft|)m_RkS7SVfc;Ac@P=o(Iff5yAWRNvBt+d`JW%CNN7-RrIZ33@N zeM|fnYu>tS4PrUU*j#iOa;F%G#tv#?RIP+t+>VxdlV3Pt<@ud7(lG%+BF?HF;B`OA z{xFhk$QFpBN}3W6P)q5(R-<)YRQ>Qn!s2)o>|7GQg#%QKNcBHq?ta*OA1xqSqGyjh zcmDt?Gm)Rw$`znNQzTBnOSMyMNdT#=0&-V~5$F%9>^p!znp&W2^dn)nL5Gf4fTWc9 zwq|8tRC|yYvK6{NatIx9oP1{RJ2R4z_>T=)Cdpp8^6N$Nd~1t{ z)xL*kE6*a+TLM(LqJEMA&{TR_iQ2)%=Nijpb7M|s8Fi7RWP~cU_OLXd0R2R*<1_Lf z;v`7O(MlUkLdm_GO48GJ2ViRO^ySWONyt)2X5Uhgxjk%cUnd8qs)fbLF#$}cN04{Ds z3{48rfAW$xUw(q{AJ3i*A(VLwmy}sELm*dL`m~2#)El#Afh2asbAyiJSsbcMjDdHI zB1YtShsYFDb+2G>U*TU9fb8gGcB)h@seSb|fB-ap_@{@%c_Rx^epqYJun9cKV^P#5 zuBEDp6}I2sAEhbF4r21=NhO4Xt~NxeHXAS}=@btA z{=*rUiFkFAi#0q_#RKVL(ZarBy9XMSNWkt?T`E@NsoxHHr3a#{RXEp?E5bZB&F5iA zGO-z^j24z}LIi0n+>g-^H4Xho+Z#*5e+A>pWMRrjJaWu{845Ewd09c1S3z2V5uadv zu}R@%`E!<@JiKcZNjj{EpsAKXELi>Oox|SZ@yjWg2xVZcsoXSVIY6XXwp1V!zQ?E^ zd=kp*WVs<<&^h2-=79Mu9W>g38kW>=e=(b;{{ZQZJWHBmb}FVoD25T~Ci*EZcNBXH z7_Z@Rmqsk)8yf0AK_{ShG<2T#wm7zM=^`+yJjFwyRXoQa?7Bsj??=*3_}4G7R1{>m z_@J(Y0yKtg#;(Lw@BEx)uNrwycH)9%c3iBmE6XB%4J02*xUG%u4jp_agGll=xn3G_ zx_DZjSs*z*Md|&!P0#YnqOw|MA!`hT`j{S|-O%s%ydqD14958BiF}U-%(1o1 zE}0I!0mA7fuIP2cKbH8kvHDBt0hE@Fx)EC`JCWR<=LvrsxLo-J8MqYwQ|V+~M8LrA ztWQ)Ty?sYcm|61okHNtVzzeUx&;I~A;IYC|S4TLc?EL`Zd~8m?`KcyoO;aq!J8A$i z3Pz^`zd_t@ibU|!Ad;lUP6RfcTh`BDJ%qO=_r3l19OlRgu!ZF|H`vZC8QM#W{i3^`UP`DQZBl zNdsY8RYz(RJ*#X^$a6!Y>oA3ku`gsDU5CE+(EaZAq=yRTVIT@MRfk}G?!cpc4{q4F z9A$tdn6zpRpiQq)R0hP4^umrA6LU0-!5RFdCfYR8Y;^#Vy*|WZ4pSom9&43S9F^3n zz!hzdp8W>LZ;THKV0eW{S8ZBZYyqwFAjGOjIl503xw(ffJWN2S+b;3 zjq!h({{Y4J25I*!LH=d|PBZP>mF%jpeHmv}{6}=oktGLEH|P zxx8Ve=UybbUae|{is`nS8}99Eb>&bYvm_wk(PeKLkHaEAo z`e65zymtuRr**NXOF0O;-LGrk0W5R+0c%F+;{3v_(Ma4jDNI}Wy3d*m3I}Qjt)|UY&eXtM?ch10kxfh!l#w|UDHw-fkJi%>OXVZ`{9KLGshqf ztg9xCR;~2i`g(t+Ba~R^WPVD1ZRe=sWoa6A&1REHjpI}0q6MbXqsuj{>o!dReXu(p zHRh2#{vVx+Ovd3^DP9U8hvZaQu6ioP+% zvM#@=l!MCMe6PzY5U2NQRs@mnf{aT2)YVbPmefE%@kBGNvDlYz{gwHu{+;Q z@kPgcBpF=OJUNijc}fu&NbbgvvzB5&28c8_C$C%!UqZWA$i49s!Q75+DIfm;G}AJl z)p;NC`i&8(ZnXOZQG|%_hcl8{L*=s)E2gCUtdgRKwK}Ep-3u!P3#5&gZMxyy{8mW< zBQvoE)dPA!09#eo!mDkudCPoF(6cPAKWJMN0sX{$eDuTm6!N60s}1}H86G7c{3|ys zQL~_PlyXGmk@|WI1Ae94>LjQ;cg98WhnAz^`OMx@7l}j}mW@#fYpT=>KK)H@D#5Hc z{A=YWT&!8gl*OYkm6$~bF%wGS82q;b(5%vgW6%a;*BrQ)f^!5ZG%++`nptPeF!Lsn zt=d+Wi%2M%3_v8U3>%VEI~1kGtGny)WgaKXglaTxj`VC<+!0+Xu*8lB%$dxq`HMTq z$|xj;l7~yBy&(0i>hYq_g|G~yd8pIU?nZzDr~#BAYrR$tjjwzG!O3}9-NVkYx~zb! z>)n7PDC>HUz^l3#-+Dhr`)Xe%0WUme<&el6Lb8#lErL#)1#DexYO4i2H#a<@36@*6)Alju+t$+!hU&IP_39UO)}M@UhVq;A(REQ^ z6avI|AI9A}0qu_bW0&(82$#-=T+f;U!6^MG%W4k6wR)Xs`yTj>!#VasWI2qYrGO!l z$&N5V)nwJXcG##JV0jMVD2rY-%5q66&I=DO=|Xo7M%q?@znpR79w2cvrGywo9Yq;S z6Yko90H2IC{{Y~oQRc3(9<3s9JvXOhZuhI{zJsPIxZf@w6zwRIX$lsFqmu2FNgk{8 z=^!wz#cfy_$v%#cB&jgh#qSLGd{MKQn=2;T;#D#rV?>DMOHuQv+U;X}CSR5EB~2g> zB}Q4~c4ky7xblUAL~lcJzkDBXj&9FMmGaJIoA-orf(Bmt!v3LdfH5QH?-99Qh!_H9 zGg&V_HJ3?fSP3YS3ZN8OM@u^afaTyja$m47%G?%YpZ@?aBy&sUv4hR@Czt!AA+{BN zLEPi7FmQPz9&fHt>-w35kR(c`^=eUDTABcFf(|Rh;V(Dja+9GW&_AQQA9mV zV*W*S#foTV%}qYIp^gnQ<={a)afs+fzFN>G%M#&EqhoSTHZt8aC=24e%n%`iFB182 zfditSQLtI$W^IE4%dj6#CT6&o=9)h~I5Nb@11vsct#mISBn1yvv`?$PJHA>eqDIO{ zWr9c1{t!beEmp4auH(|ZciN6Vf5E1fZ8AJYc+*#qplO#wA3-bqBcamF*;mPAg%tIbQVppy6ABNT!c~> zCE_#B`Do+Ra>*S8aKyApLbL%vO_SH>9(jw$jIs~>qDuo4YJ#hMqiGL9zzYqz>%KNO zEg@5rNB0x(dtJ$*K@?U23do6lU0H>j8(Fb^D-bwWD*1A1MQO6^MFwpqLI>_DLsA{~ z+~6I&MbFG-T+V7zt^x&Cv?@EA*#7_{7W|{kZi(cwNDxV_b0pPjT_<7HM%#40*kg-| zs|Vaq!DYn!G5 z!vpb#k)9Unp%>``i6xB?gqna#jJc1JlXR^u^~x6OuHflRZUH% zJ@l37tb_beI7`UZiX3577-#aCyviJ;+($>3lvVQbpg8Jj@7r zr_!;&6LLLP7gf>NmaT!T6rtr3ML4&|pvR8zJinY4O3UShU`aH`c~9<0piQ>i>UzGx zu)*+amhw4FjPhuZJo1wf3Svm14BgVO5OCT(Y5Ztea;O0OYk=#mh#R`(IJ~@P%oS2MZJK`4PR4R8{Y>g z-i0iRZqGcY;Raq1Gcsm;>sok{7i!c-_qZT@;_*Afx*jd z3`Jq$Q-(+N#LN|d_6uDq_TLPR`{AdR{8?oq0x2?ub80D81=??#Wjb%?-m&t2M|`_lVqcBF&VRDKhzq6|@FQRG4k0wm0lZCinNk?WAO>sz10t zIA^%CNa+?^Cmbw1!*XUs{L{LFcbs?|#bT2S4M*pu}99kKE# zvW4Z7H!?vHE2^X$iZ-AENxp*-c#nztm80R2>C39^BLImY+Pz0$di#@rZ7#_tOG{Q3?xSSN9>WBYfqdhLRb7bHfxPE^Iu ziC!pXGo%r5g}wSQz5f7=TV;6eNjO-EViRX%lh+~COk2i7Y&v>czJB;9;64jVa{6A%*RC7{mU2(il zroc8sfGYbRdb+_k3gRD^VvxX!0rh%y5`D)?I9&24`cTer!}%7xXYiqt^vUK+r}nd@ z5=C#dZHEJABV4G95}M>0+$!{ z4gUa-a64jF+w4pA5^B5_5knMVRya{rN1z~3N8Hxu7JvAh$cP*jWMau)mIQ1sZN(G( z)*$4PCO5dc+PWXT{{Yh#*@*&@7fTM_)?>6%Zj_(;cE!I2=LkpmKoELbQPg^^5!8HOl&zSP zWV6mWh=Z0@mry>YCsLZNkI!6J@=rE64Xz<5cDo~W_8msU-+RYg=4(?uji`{d-o5W1 zcqApONgV*&-@XpQNylg;;xok|4d%+Hu%ODPuhM&VtHrK$<0s8V8r5jkZchC_X=AXi zm>rn_AXwGhF!YbP>Aoq`hy`P%d-|(zZ=wGHx3)6Qc_h^qJZmeOD$fhYWFM)zf36aI zd&52}H9XnG1674aGy(S)M!MD;8T|x-ZMd=pRv=_JHCSK_daPbHq<~dQ(Yo7VdQES> zEI1#C1)Y4kNjH6NsP~~?>5N=Z%Wc{*KNR5eOu#Uj<83-zFaY#DM_TFcgC1D$vS&jq zaG4fAOD$82zfn{BN4_=h9OrnYAtjC}TUaHEfXCmZcEm3dxIB4?g5_jvoQX`5#Xw)Q zf}2?Hy?>?~%DO0nOKi{l55fY-CY=m1uA=4Fuswj>H^o^vFwS^@&?tovpVF507CE!ghCfdcpMxABI@E^#Pga`7y3$jhK9MJN>Z zv!;dn6NPs4Hd0^H@ML+sF6K@oT!(4^mPNfGPgdB0V0)2ZIa6(%n?lCKxb_vDeGeUoC$iLS1wQuCMQgI5*ITDL3*baNZX- zXz6rrQDo94W-J&EgbKPpd}v+=$mnBKVpcV} zk5-l**SDzR3dfSl%EhJvT_(`JhE*NwrTmV#)dag2IV&>HGyWNQg(bI^8Fi98#Fc0s zqJh8X9(jB4am1%Ab5e*SMy6unkK6%N4Se75aNFm<#P&uhRuBo*>l16#2fYA6zkE{< z8zjt%-p9t*f{r214{Vu?yhlRORk-wzizfib zKsdiw@rFh!u7S-a^iXjw9Sf<68Z-l8=>V}G=J)UKwgxy~GUg#amz1-hZH}MW>!#lTI!>02sdl}+?{BvF zQ}02d>A1NEThl8p$J|&r50^gju>jJkBwuazA8Nz{oYny(fB*n{W18_A9qS6@*hQ}x z;--}a1)vRWweEh^-vXJgIlq_tF37&8-&$-{@7e`-gUbHs_R$99-nLkaei>E zM3L6E>!<#Q=M9c2NgU-yq2#X+Q(cxR>uCyVLRg@%jz;cjub$wcZ=o7<58ErELEIeerKEGfI)_kwGVW9awt~zM+aKGP=#)g(0`- zPo$omn)~6@nz0?Q3Ex|lqOE)EHrRjD1UXI$@>x}KLj9NQPjiX7o2!*Nbx^Mw(O7fC{gx{{XH30DN>|_A&8DUGPp`^8rR-YCCKP@qg)wS*}`u zdQj_^NF@INNhFE`xS`Xi{@AXUjHNTmj?Y+IOw#RO`_#B-oIm46)0?1iO=*xOf!6UXQdAA`aq=HJ81wkZ( zKpv+3=>&3D6ENdR}{ zcOF#8w-|+&GMBJZU@)&{u9#_ZuL|;`Y2`%o9I@0-NY3NZPkz8)C&P{j=XtWoKSy7s zd(5JZ4|N9)jupoqLcyR=h@^=N&`SD4sjH#cY~wK|`wmNrE3#Y&xJh1Mt4Bfx(g-#H zC8&C?fIjztZe`(~Q7xFuMnWG=$ZC&DDsK8&>4Pq0S9J3<`QuRnAVm_r!0AA5UmbB0 zE)$rPtj_UC3dC%(0pz#z6a<#g0N;PUDNz$*_lhKLg_Mx}qOEFufMPWd=L0-Pgb2uz zO);9Ge_i}m%%Jz|Fv;gGBFGtF(Ib!wW(e}*Qbzh>G|op#+=N$avTyj zv$g^`W(ANmkNzN#r4Xabj;~k;Vouf)&g177JTe7eD?#;njHcITS~_&sQcrH!n-qMG zlxmpUl_QazT}Pp)>U|`4W**hGb?b|+3BrsD##LEo)NV6YacuI+X2MW&m84wwI3-#us7AHuH&crKaD%aR+HH6wgz~&3{hT){ip&o{Ehd&akc@a*}}t}_*AjN zS1P_-nw7l3Ewm4)Fz8Em$4(2*?pYIV+Lc<1gRwQ%?(B9rzC2|SoeL1_O3Ft-Zoj{5 zCb{kb=SP|i8r}tlSJ7RYf&J79&qzQGG zI!?4!)uo5aH*VWuA)MyTeq@2_;c~&fEJtETz75x#e7v+$5)Q2dvVhD~C#r_@39Gs{ zSVX@DpzQILR@ZwtU@c9sJ9H|3(7$c)^{0AhC83JKij4QbKIofO4g|Sl0+^0WNJD_{ed-(lWYJd zo4EapNMq9+br|j~f-HcI%du8kJpnu5tHVA)NcG5IsTv>FRyM8b3>i;BWS!0_7m+6~ z6Fg+d$~B-Anj^QZHgtm_)JU>O7;Er;R+*!ba}vI+6%}MK9*`D|{G1H(-!H|MF+~t|jUGvv zNw$_kEmdr7>jU`3hGGd;Q9O-6pfZJTQIUfMjw`WXZpOA2K0|blx&!n4W=U8HoY8V# zX_BE?iQX}|4(N7Us-ue7q;!f&MxvbNdW}kMfm_%rn=!(;17e5Wwn)z ziE{;In3G1zt;QI1LDNVi5-$%fEXtNfg^hHmO@}~r5(QsPi6Xl1i`(RkpU@Y^^NSM1 zq{vvUG78YDI+A+-05}xqj%kl7tW3%!Wd=BlC+D2-9LjDPA@oqD!qud4ULP(6ds zoo4*AW?6<}9Zi>3UqoTesUqmTP-1r-v2n#Yl;$DK!lz8pI=rxJ*3u0(t~%KPYP@;K z#KH2(J4q^EnK5-;2Vc_?nhaP9v(q0knPoG{E5uVqvSWx3Qcw|xx-53EKI0tKgpunt z%rtWG`9%^y%b0M)my~@f2UQEPKIZ;0B5avNUrL3Ewn2K0oi<0X?lDoyoV7H9Mw`ur zgGk~;(nxY`BcpqjuTa=@?T@^%#In371(5Wkp zC!iWZA)`GMnxpfHgEYm*TJu>)xQy%zuTB2|*Qab$@IDgSO3V(-ZL4bPx=+chc8Xmz zNIKd5Aao;Px%OJU>hMk`Bm2Tm9uc!KGbsG7ZPGZ_g@^Uq$GNr!_7rgIemsb<`b2uw z^{K5wjZzMq^`p}n+ktVi&zQ_ErPZ8lxp=~XI8{OGb8V?xWdgcj&x~iIVl-+Mso#5L zMidJhBXTZ=j%NTPxc?)?h5sike*f8|6lei-69@~!iBg^wqSmSx=h-8VKS4X2r zQ2l7PxZm%MbJ?3exp$cdl!b`_owTZo4pf@!&=M=>1$izzd+)4*4wHRI>Oad>{NNKI zkXH<`*%3SIjg7a|&l`bzBL=${zSxt?d9-0{j7{kwFVJjt{`l@moEh_v3;fClh1NME zqRC*a5OhRGzO9_WmIc0tD94INZ!@=yeoL;IWB3_&M)PR!pr2L0Kb?18ryUv?A^@YTVmRFSPYQc(%Q5yGG zUr51E=p?mcrTCDvR$@8-1%yB+3WFwc=HgvQcEN%WZ9aHg)O!8*pAo( z;Q73&)6F94+DD9n+Pd_ky^q`Rj(H67TgmJ4<&#n%u^yg_sCGN_CmgyrXeQwtswp!O z#>ZLGo@)T7s0G(=K|9&rz`@2}F4-y3@dyF@;D*c$g&CRXIpmPYGL1P zx?zLLtr&R%Uz$d#9Z|h3cJ)cp*ZOz=09-jIF3!5>#=nR^!-0l*b20w_-v_yNVVI0%q*$Uzm85pI zr{82++gHCp1~xoA5J!`eDJO?CTP`f*+)d$kR6324+k!y9pZafz92<`Xn5m*@0tVWCEcLI9UgvmnYSzBC(n~7U z{{YNyu<5oJ6zwybtp?nsGP<2nDL14u6J%{{yWQQ7ZLqiTkCCEG&R%knq;ATYoWzB# z5F-fOFxW7#icdu*_r(4I#=wzSFp#m{HNB5v-hk?B-wdVUOPE#?N#}X20n4mbiyiub zk&c@Kew}dqtLW@<;K9iGM}|nlF_)FHnU5$5O1eH)aJwn1wUDm*zjs55csOd7)f*QS zWMihNUfq57#Ju0(cqC2vInlD}S%eHom|3<}ZIR0M8*C_cz@|q#8-ALZ1kn)_q|K#T zx-ugAw%h`CC#BKENz|%(DVJ6f@u{M8qp6hjQEE#Kz$2}D98#oBA{RhY)gP3k?j(!2 zt>~`A&Nfw5gW4!-!J{F6HH6LBdN zxqT#=F0}LqYhz}~+pkWzvCHI{NTsTxSURrfpxn_otmU2=tbzXk;>x4c2?d*_SvErN zds!yCUK!8I`5ijcNi!PMOo+g3RuCxC1zlOeapkZs%6zXJnWB*;2*`IR>aHAg()D9W z_}?F&zAJbXnOxM=q-FfSG9^j_Q)~by>Q!U7_Q&YfMr^T72-KN_fA^ zOC)UZ13P8G1waI83nSqQD09&f8M>u3wcMxzb&cJ zqf*LA7hoyeul(QJ1o^yzl5_yYg@8BGcG!beLvnG#4qV$?5LQ?uP;X#Rjrwd)Ko9r9 zMro8hE1>Uz_=X%@Y-?JDQtPR=7q|Q2>%%6b^9vz;Lri4Q1lHu^3T3!T#>~YVSam2A z@4rp%f!JBYAA;dTD1gK-+LOyaRZ7&B(*gMrz-%A&+qM zb^zF}yJ5k=xSD2ILfbPbHdji3H{HihyIvIZF2EeFX<{uC$3&7$#G7(R*aNnZHWjw` zt>#HlD@Eue9>;(BZ?+COmy#gP!Mm8}gci$4j%bw@6!rACO)c-&8E+%v!hq4r3{wUw z@xIjKVr=b1iwADESY09MTI4$0nqDUwHa$;r2^G+GBLti)nnsn>NxSrds;185kfi+X zZ~4Y~$8;`#NYFp<=5B?bold!HD84 z>Zeo3AtVljkVXB8J-x6pix!?0)0+^gHzj5VO-t0WdJs6e}ZoNcUA^>DBGNHE2G6 zgDq#gF35Cge3P)y(UhU=?nhg|M>cpd4(+1RH!P~u$Kk6_O8)@i#-MK!Awp7U#7rA= zn2%MTbz|v&fs5S7h#7gnk1k_!n@Ex<5xw`JKpHhy*kIJS?#dkh00uDSPX}IY^4WRb zjcs~V_h)127yg)a_ri0F5@w+b~1&kG# zYGR9il-ir8(g~t_?d^dh;(OAW7`3Y_Mo?X!r+=Qm7^vbLl<^eSPzPH&9aw-X(%=$6 zHa$J-;~(5Vlp1hEV6=)Px<&IM>?RwPjg-a~r;esP(gonbLc5)^pcvzxt|#*y}`zn+-e-X>+T`R*4WmDOMJ ztQabqbtBWMhT4a*!KiX%3N@G8enGBJ@!V!3Sk*+SAzeVSDxK_VEGSVLw%)+OCopn0 zNn}^oK3gW(=JC90M(1E*g0wn^LI{abrtnPO4bVEpmPqd;>9;i4B;mJThR{Kff;6h2bH zsGUTVlXP1PK@P(4TL*?y$dU%gO(c%RhG9pU9>n>M%sLal-yL`#im*x*N`;V%^H}T` z*+o&spDlRJ9z`dC9pp(()~2Au9aTh9o4q)V_d_F@v!5F9d?18nviX^Wsc#apD=Py{ zszbL+APfv+j7Td+WU!vuu0mj~$9hjp&!41OQuwpGJx8cD4>NxxzS`*q*B#ccUU z*3XwE_SdKb=?CdwSJm@a$wNces9r!`CzzH(Sjy75uP!%YL_mN%y*+{HV|-U;GvpsS zNT(-dd1FA(rEFF;q6>gd*mT9q;Rd|qWo9X;JWE7s_yEzWuVcO;<-9ZVV@M*NRfZr+ zEX9^LWB&jsQq6r$>~{CUeYqi#&lz^;OijV#l_r(}n$peWpkV0Xwqn{8QPg(aY!1g9 zvOJrZjpT1A7cqS?vDQ=#R9O1Po$iL$hYoL&bI^xrB#tE`QkbPa{YaxkeBL@`xl@Sd z^6@m1WMPUON{=h)%;p4^r%sX?*4TQODC_No%aYLbG~ap_ytcU+BK*{{C@6+Gkw_~O z*738SQ@+G%txZ~}6N>&3n1^Dhe5neeH>fI>^aeXwTQ=Vqy36vcSxLOPbVD3#`e3fK zmTL96ajRHkepqevk-jK+9&b*}f(K;J>r6>)Gl+=!ZWR|TVZQ!H4p05FpGHKw&2-K_0( zj89;sxbIJ+qZgAa8^*G0Nl=&+6C|FR1eF?;cdu*{4={&VGHVHj7F^7FnSAgmy?V#0 z%U0Xj!0vl5nS)G`u3)r`ixlv%vqMPp6j)t_R`|Auo|v+R&6qO+28Ka2dfCY(oPky9 z(gw09cHE3>ldxCd65#y8L}D=$Jg$ongDw;(>cTbEy2dQ|jA@CwJupzb%Lz}(&B7y& zSkqWoWRg70<&OSzwWK1R_q}81AoDj5Fi9toA;y~1E!Qa2Dvm@W+XL}VzJMF z%lWzUUQW45jePKpr4l&*0D3cUsdZD2BEc1_m?yBRLc$mTeK;DqnLv4;( zxuqn#K(Z|=yuabP>Hv*I-P)TVZ}G9joc{m?^4&bMp<0=i0jL!MhOkHbV`(6y{(-!Y z4Ur^oC^cFV;E@>sfTFK(I{~o6OUJGW969`(=3Sl_fQc*sQ)xE`rrl4);-4YP@|l+{ z8^tX0BNT)Xqz|uC79nr7b@;)*;!~6+IUXJ+ftNOnB4AFsW(P8$zLMu^s4Gz58H8GnbAqjXE-^CsP7gfCY_b>gmvJeKx@< zQO^|Mt(tGa9#n^e=I4m#a{0W(p-kDhmSRh6)IHpdx%@qf=RK6N2^T5l^; z1~+3{E|dL~j5_==<><1|u3}v!Nqoa=uSzJ^H|wc@wI^|~##QI;D07*d&T^pjM&ul67J$KDUXGZ`nEWQqq@ar$bdln@;2DvQiY)E*2bQ9!*;t) zBJifc6>{joNZ6@nRyAG0$Ei7gH5-LY(MX+YMg$Qp^g3t|K1CkgF-*Mg8Q4jv4fbQx z`{EjN`Y)kbcTr%Qs_8_VAI1hLAfv8^wqrc7K(IvUq*b%1aOCwn*}sfaXFNfXqcC}o zBAe8s(4(;ww08rc?SP1R*$=1E-+%gEIgVmPy(I73{{Wq^f0HKX&{4}=>E(|tBSa#A z01cM9e0<_2Yn<3K=>Y26a5g_3_rk+D;{0gGOkt|Sxf_c1`1Zv9Ugx1RRBNc6%HKim zd*gY20gNpM*(}2|61MNKVeB`tzx(wSi!|j|ECfT#{-J$;?T=hHGv&q|MKSAQil3j4 zZ|5J-ane9w{;gk9{U(O@fYUmOnf_Z5n$_xW+NP-V-u?0PWl%8GPQVQ-T|V{KI}<8tk>HfvK;IpV0@)ur=i~e0GuhU0(Rpu<*BR86ix2i50Q$_BftU($~j?0 zlz;#O?_F`zp8P_JKxHbB8m%Mu9q1bEjM>Nk01(sbF~pXuu&b@Tun6WL(EK=W_%VI#iqAwmHK2z0gR-wQ3Dk zqwV+q0H!He*w2$@lH#5#8#kmNzeqc`@NWbBJH@osq#Y*rzKT18T~D?V?aO(KwwaBd z)%?&s&Mk7@6=s^*5y35BxGKbU8;aki*ko~-p)Vt|J>#4a>0dER5Nw5F1z>AG;{hmK zpEMJ-T7WNLdVg`h&MCMb;rBNnw98Rew%2EF3WX!C^a0p^ zI2M(Rc$Hm>-XY@LlX_%_(g&p3{=$#?^}zQD&r24mA(5j!`kuRYvDD*IaL)nwTtLM- z%F;$@i6AGvQ0h1B-yZY)g~H_}VuD<|H}4JUdO!Mrd-uSzmldNgaLIFO{$ZJ!kJWpc zKEr%8cpnMk*@Qk&%!E2vGQdx$b|$PT9r|NHaBstoNwm(6t1M>xwPU5b6MepL#^Blc zvTG{CIx0$<3pp&Y{{WeOck7N!p}cWI^O8ImoASb3{$^tnF6f{s2ktlDru03=C2@R` zWXF`0V+(4`;IRjA816y)SKkr%uK_1SXEm6e+v<4ab&i{I+Ikx%@fV76Ze15i3}g+c z$uyP^#-8Wn0`?|Z6VVHS_+2h@%${l4VY8)D)B#6rN@Pt@L>1e-9#xEfX%AqB82bR3EV)?}`p=;LydXgCZ!~P^w?KI|KK`{{R+zY0Ko} zX|pqF>!cel`*Z-;Tz-9c+xV!=@gQ>WA&V}+he2VaBcV0Z`{U4YQB-;I%I7^Af5cB3 zq7jIePf*=mPpOYh%8)y4+ZjK_4rP-+KB(2%*en{@>_4cs^=tEZP|cpq*k!$q3nbS4 zui~&n$0%;oY+am3B0AfHO9AeSU}P;Vcj zz7}|F+!rn($;M~WyAr@^kdITn^|rt5^Ne`-(`>VW6ZLm9-;#tTlh%{rK{3O>OH=F?0xVb#W<&3M3R-)z5D+Fx7#1j zn~;iKOQ-7xaObYa>@iKnv&G!Inhd_L?X?eVB5!&MF|teM$}gWMy#Ydp-~Rx7263)D zUYVGM+>h)n%&x0QfOckm54TtkI}7y|Zc5KguxZVEZ+{ z2w?F}JFqN3t-vR)-TvbM9MjIrW6QGDL=U8oZ@>EBUq1xW*>)g4{t)gEE-S z5H)o@_ulbR!x-(HpyX0!IJB}|3RXQ2`tR4T&NzR=&sR6t05>>nPs@LrV)3G_9V!By zOx^T>*72cy6Z{80Ys-^6nvW{vhDZhZgm$~FB=xKt&lvQBSexw5UJCdvna*ZXC}A_v z5)e8qHU6O^YO5om>09IUyTd;WAmH#hmC2Sy)vZ#}666A?2AQficZ%&|oH1v6BJ4VdXkVl&P z*uIIkriWk$Uz}G@#@4S+ruiEi>Q7p}qoye{{J{#A8kk)Yq*+pW@89qIcExWNy%k%Xx-_21sC(Ek9I%@5-P`OZ6`{KPZ`&?Jy{^=#G-DR{RslRz3! zb|7wkF&-%lfQkeii*2Y6o7`8%IptmsNrYLRZ7iaJM6h~p#(`?~?l;>5oNJp-qIIf| z=_1(sUtm6QSInG2VPB|F>^hU~Ny2xF^TRZ{b|UQi-_OPZQ)Z=OO*yVcJ5gy4k4;zv z{X?$GH#jokxxEh~u9CV^Fvic*dYbk!PLNPx9_$m^KXcB(ZU0H zfCBnS15KYz4X*EV{{T!%oANT0bcUZ5dv8^f*VF(C4@^8#Zl{jpZ63)bv(Qk4Fz#p)~7bg~)SpfiwLDK8w_ZZ~Z)f9sMUQ!K06=a!)z*_~} zY)#eP^|+x`y}LPQm$J~tM9f5;^#)>F<*#w=@qn)mI4*~2-Gp%}C{0zVhz+(A{Td9o{EMZiZ9kh^#=>wx3&IzXD$WR7CbedKARY~sTQ9sEz zq2UlTV9pRa4aoB}mLyOFd}4!{dBAPwF!N~GTWY?5fPG(lKS<{6vYU^%Vu|`_I!E+| z9T@dHcN_MsMCWf1Rut0=fEopfK-6l87qMOX(ZcJE^Hil-VPscri^;hi&!lc|uiFvi z$;B{L%#$pO9TtoT*M7P?+4=UsIaffHT+h!6cQVPCm4~Gi6++|Wa=47Xo=v9Lq?!?qt>v4lZfhAW?*SEF}MI4S5_K}vhPG%@9&5HSD9DMk}w2l?6O%P{X|{q z+ow;O!?DWy3yl*vMrvadD$dP%m8F_AE~D8{s8zABWnY{tbABPk24MMUvyl-(%^_7+ zx*Cjh7>>2KUbtvxqe!Mu#2DpQA)Mj#lERZjYNa#6a|s)R*%jh za@T~b5ov2kC<`jLa3~G^uvf*n30UKGCM6fC5FwX;-M2y9<1xln@-SU&Jw;Z@Sh-|79w?BH@F7q{Dr&Uzg%hAh3SkTaJD@`PNLOpN!Z@sBDTT{ z#;y#dT~|^xcd8}?fB@C04`IFO?ritLPaUHfma}}#<@vgb1EPOhT^r~=Trz2G^o@N-#u%If#K>~dEM$<{+F4j{ zumEM&yJ;G%pK*lC)5&ydL&KQ)l*^ob2%1&IYv!;3Xh6tT!6BGfut6gZZwa`3*`WGh zS(pt^nGVJ%qD|Qjuc`0qudtzvJH!7LDZ0CvQbAYQJ*qG@`saP>er;j2=$OR z2wK+Yo5f~fX3)}RWn8K?8kD05=^? zgQ-;LF;klGbjKpfW|mh6Su>F#Mm2N~UY+_-uK1(+3ARUm9g{5cO5a3cwT2~)-=ZtjWP&ItuByjA@lFk)YJvu`Y%tC-Hg%o{Si2ICL za^EdJXEhqDkrkJj-E{t#Mg%Awi+V-(z$TNRk`8%8mgKdV5DOu7ED2cEj-ab%*@@p# z+;jvDuqbj(E@=?kz(aXJUZ-JgBY-zLn%4DtK-z_Z@8TRhkfsu-tI#s)2&1_h0&C{5 zDZ)7jq)jxLmG!u7QAg^IEks6Qaj+!by&u(G3Bl3M{1h44nk7M&jEw_zwJsgHE|)(@ zrY%G_NeaO}f_im&-){H{VBUlzdA}rR1UIO#P)Q4mQ!uEB$7G}xbqBj4Hb=3;plzF`9z7C9u}v97i4)A7i53s2A_d%&(^p@dD|xS+Lj`?r z9#_>vyL>S|uYRW$4LsS20{MhPvV|n-)84@9Y!V6Wimr6x9(#qa(ThqVj*nZh{zwDw zf}EQGrU)k{k)b4+Rh3osl0t~U(@H%xTLJQJnjF(+UE_)rQ6H8VpV3fUCq<}h!3rGV`W473MT_NYaeVZUgE?lY5DopU{XG)ZJK? z+VCpZV1yhhRcOR!RfR2?5tROxhN26$;h*-N`(7h(!6}v9)lL0k`Y8HYUcjI}yT4VA zfDBh=Gk&y^dC|p!#Z<4GRp_8-MyK|VQ}r0RjkJWeM2(oyY6Z15wXf5pF3Wq1-y2~j zcg*KrCAeIlGR3eGH3Bb6fM^}mG2M>$z9MFX6O>RI5So(cu8QaxKYQQrqJ7RdW;3!K zWhISOWT+x=0MY=hOg5%#DPOdK*7439$@MN^G+QYWGM8s^X@~-XrT0GFG05$O93PHH zBymPT5(UyzyD%gJV{cOLM{T-bSD(0>W#f4i0j4&fce7_m7hvyu`{T}Gr=`});IOvP zM8OxbxcWnm{@C%%`4!A7$0VS~U_|=$NS3<>qv`onx4Z4Q;8#r~;_& z2TBXI)z%@ddNp7G241c-wv%0K^xq#i45hUBZ=ixoFVo*}zT5OTOcudI6NW$}lX&$7 zcJl#h)u`+jarE^60DN7~!L*Vz0KEc+-%0AE14UQn@BzW3gy?g6k=(kUTeI{#`(pcv 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৿(GX7jaL2ToOQ#RhA zt57W8(lpn(7|}8oFy|w7U2(+ILPFUOS9Q9OrkH9LJ@J~jw~K>44qAC+lQQa}H)SFt z7MRDRXaN4B3p97cbo)xnakV5Ka)*a!H9TsM31*NehGnVV5JsmeNL|I6)NE{VVE!Ua zl$KawNhM8WY4Vly5Pd<557Qz2I&7|xH^N~&N)0AdvSub+xgvmS$9x(*glnTtfW@N~^%fOouf7R+hs78qXY-{;^r<8O2KyBY&=Jz>9H5_&Rz}xA7F)wn z9eL9T2{rkAv-!*cKS-6UVb<%Q!PhSG3{2WxBq)6J9KHADl+x9wTNaX3~ZT+ejp?iUWHf5~H6lquU z3LP6t0s|{oQ?FsG=i>`*HksH<6lQdAx=102p|PQ3d{y%=ACfOrj9nRrtk_a)(NSA2 zBf;Wv4b%X)^z|w>EUDCv<9?V|FQC`OTMGF#C6S{nG^Ny zw3$_LCZg;R{+gd~5AC|xbj3Uz=%zB%uk?o~K8^PGvVU;xhF2+bnF`kB)w_UGW7raO z)os)Ml8V8x?S4q`4CaE0 z>#C1mz8-wn!ZNwwq%iX#B*qCJtJtB^15o;V9jqJQ3T)ptW%yeU%w*?@WSNBJqX#aG z!sBIf3wc$xwjeWXH1xnw`;6Zx_w;g`imsEPtRJfO)O&A;)3IUbZ&9ERU-ZTAIP+Fb zqn1>jDMV-~$&c&~1UP0nFJ6V-g~m$!|=7t$-DBv{u@nS!Rv_)#9B=bdwLee+jZM-ZIAu%gp0&tp$Q|U zx5v4%dwsEYmFG?MvkEQ=a^{Mig%5uFP@s0lZ6bLg!JW;JH7FXch+eh*{{Yh!{7*Jn z5<4pzTNN7(N4OsU0O^5VTjz_n+R58jN(XB1zgjr9lZ)+Tsn~C|{{U{o`MhPDNucK| z&klw-2x0)#@7C0&l?Ug&V6%bqIaDQd1yx`*ZT2)a_rgyz#`Q35WKiqx{{S_7Y$~xc zEzGtL&s9F(7%0paAEDoo?=d)*jPIayAjw|L*E6QAD<8HlWV<*VO>pa{joxlVDp>|(c)); znT&xWH5`)aB#Equc1G8i7Q$Zo(>>5j(UuEd|VI!vS7jMwB(aqdydN*-5DjUO#m z?!fz-_w9Z0!<94HS7w_oiwge$gHpxo6}5nCt=0P*#EicL&OpXF!AIVe(5(Zw(L`R= zxx7?)OKaL;`x=_z25X&EU%}YVeOOBkL>rnsllv+SwmaKIiR23;rqi zWQIo76wEHhk)^$ArI=Z(q0|6suy@J4qBu|!c z8s+3>H>3wF7&@-S>4EF>wjYl)qWcOlzQk@*@b4)rtdL&x00pt^Hs9s!j@Oq zF5>C$ZT-HloMgRLSjyKzXV43J4~q%*aJEp`HS+-^JkW9CosI!Mw{je}qlUu*Wo{{S?!F+i~ZXHz$sxv~%@ zid7@1ZofEP&%$Cd7DZ)<^#uSc@JZ|Mu9{6TnR3HXY z!H8p3(Cz*E;~oeujHYa!Y-a$zRneR&d0~)fEHo47-jBUj_{|<7b40o2f!HiwR;th_ z`t(?F*m@{@gM%JO@oG|SoGsG2l-Q^=N--vhAA9XsGw~CXAut(og7U^qQib)(ftgDc zPpJOlw_s7&;#DS{(Xf6Du{K3mdbI&`cC)6cz^=ad@yxuL6fEDDb0X+M8PiUiP{aT) zt=0SCvy$cfy9u5amrP(NX%$x4_EA6`f!&2z1aFG|V2jR_u_%hjiero#{V)O8vGp}? zzh1)@Loj~QNKH${^HA<2U!r3jeb@P}w~MYF!PYf+tx~rdhOJ9|x9hjgD0w3MAubH3;lGJFSJL6tMeZzFC#~Q5 z;nT=pjEa)pXK1VfjKfWA2FK)+{=b_X6@CnTR2g@I- zFk}ayN^0Mw*xwkjI5h> zKjr8)#skdqUTQln6p961b^gGdaGqJCARjSrajM0Se`>=e>0

y%H?E*s-iGg>)l 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�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 hg^SL-zCcFVSKcTb0d6XanTTtIk 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�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 literal 0 HcmV?d00001 diff --git a/packages/imagetools_/types.d.ts b/packages/imagetools_/types.d.ts new file mode 100644 index 0000000..d44c18c --- /dev/null +++ b/packages/imagetools_/types.d.ts @@ -0,0 +1,268 @@ +declare type format = + | "heic" + | "heif" + | "avif" + | "jpg" + | "jpeg" + | "png" + | "tiff" + | "webp" + | "gif"; + +declare type PotraceOptions = TraceOptions | PosterizeOptions; + +declare interface SharedTracingOptions { + turnPolicy?: "black" | "white" | "left" | "right" | "minority" | "majority"; + turdSize?: number; + alphaMax?: number; + optCurve?: boolean; + optTolerance?: number; + threshold?: number; + blackOnWhite?: boolean; + color?: "auto" | string; + background?: "transparent" | string; +} + +declare interface TraceOptions { + function?: "trace"; + options?: SharedTracingOptions; +} + +declare interface PosterizeOptions { + function?: "posterize"; + options?: SharedTracingOptions & { + fill?: "spread" | "dominant" | "median" | "mean"; + ranges?: "auto" | "equal"; + steps?: number | number[]; + }; +} + +declare interface FormatOptions { + formatOptions?: Partial> & { + tracedSVG?: PotraceOptions; + }; +} + +declare interface PictureFormatOptions extends FormatOptions { + format?: format | format[] | [] | null; + fallbackFormat?: format; + includeSourceFormat?: boolean; +} + +declare interface ImgFormatOptions extends FormatOptions { + format?: format; +} + +declare interface ImageToolsConfigs { + flip?: boolean; + flop?: boolean; + invert?: boolean; + flatten?: boolean; + normalize?: boolean; + grayscale?: boolean; + hue?: number; + saturation?: number; + brightness?: number; + w?: number; + h?: number; + ar?: number; + width?: number; + height?: number; + aspect?: number; + background?: string; + tint?: string; + blur?: number | boolean; + median?: number | boolean; + rotate?: number; + quality?: number; + fit?: "cover" | "contain" | "fill" | "inside" | "outside"; + kernel?: "nearest" | "cubic" | "mitchell" | "lanczos2" | "lanczos3"; + position?: + | "top" + | "right top" + | "right" + | "right bottom" + | "bottom" + | "left bottom" + | "left" + | "left top" + | "north" + | "northeast" + | "east" + | "southeast" + | "south" + | "southwest" + | "west" + | "northwest" + | "center" + | "centre" + | "cover" + | "entropy" + | "attention"; +} + +declare interface ObjectStyles { + objectPosition?: string; + objectFit?: "fill" | "contain" | "cover" | "none" | "scale-down"; +} + +declare interface BackgroundStyles { + backgroundPosition?: string; + backgroundSize?: "fill" | "contain" | "cover" | "none" | "scale-down"; +} + +declare interface ArtDirective + extends PrimaryProps, + ObjectStyles, + PictureFormatOptions, + ImageToolsConfigs { + media: string; +} + +declare interface BackgroundImageArtDirective + extends PrimaryProps, + BackgroundStyles, + PictureFormatOptions, + ImageToolsConfigs { + media: string; +} + +declare type sizesFunction = { + (breakpoints: number[]): string; +}; + +declare type breakpointsFunction = { + (imageWidth: number): number[]; +}; + +declare interface PrimaryProps { + src: string; + sizes?: string | sizesFunction; + placeholder?: "dominantColor" | "blurred" | "tracedSVG" | "none"; + breakpoints?: + | number[] + | breakpointsFunction + | { + count?: number; + minWidth?: number; + maxWidth?: number; + }; +} + +declare interface ConfigOptions extends PrimaryProps, ImageToolsConfigs { + alt: string; + preload?: format; + loading?: "lazy" | "eager" | "auto" | null; + decoding?: "async" | "sync" | "auto" | null; + layout?: "constrained" | "fixed" | "fullWidth" | "fill"; +} + +declare interface Attributes { + container?: Record; + picture?: Record; + style?: Record; + link?: Omit, "as" | "rel" | "imagesizes" | "imagesrcset">; + img?: Omit< + Record, + | "src" + | "alt" + | "srcset" + | "sizes" + | "width" + | "height" + | "loading" + | "decoding" + >; +} + +export interface PictureConfigOptions + extends ConfigOptions, + ObjectStyles, + PictureFormatOptions { + artDirectives?: ArtDirective[]; + attributes?: Omit; + fadeInTransition?: + | boolean + | { + delay?: string; + duration?: string; + timingFunction?: string; + }; +} + +export interface ImgConfigOptions + extends ConfigOptions, + ObjectStyles, + ImgFormatOptions { + attributes?: Omit; +} + +declare interface BackgroundProps { + tag?: string; + content?: string; +} + +export interface BackgroundImageConfigOptions + extends BackgroundProps, + BackgroundStyles, + Pick< + PictureConfigOptions, + Exclude< + keyof PictureConfigOptions, + | "alt" + | "sizes" + | "loading" + | "decoding" + | "layout" + | "objectFit" + | "objectPosition" + | "artDirective" + | "fadeInTransition" + > + > { + attributes?: Omit; + artDirectives?: BackgroundImageArtDirective[]; +} + +export interface BackgroundPictureConfigOptions + extends BackgroundProps, + Pick< + PictureConfigOptions, + Exclude + > { + attributes?: Attributes; +} + +export interface GlobalConfigOptions + extends BackgroundStyles, + Pick< + PictureConfigOptions, + Exclude + > { + tag?: string; + cacheDir?: string; + assetFileNames?: string; +} + +declare interface HTMLData { + link: string; + style: string; +} + +export interface ImageHTMLData extends HTMLData { + image: string; +} + +export interface PictureHTMLData extends HTMLData { + picture: string; +} + +export interface ImgHTMLData extends HTMLData { + img: string; +} + +export interface BackgroundImageHTMLData extends HTMLData { + htmlElement: string; +} + +export type BackgroundPictureHTMLData = BackgroundImageHTMLData; diff --git a/packages/imagetools_/utils/filterConfigs.js b/packages/imagetools_/utils/filterConfigs.js new file mode 100644 index 0000000..1fd64da --- /dev/null +++ b/packages/imagetools_/utils/filterConfigs.js @@ -0,0 +1,51 @@ +// @ts-check +import printWarning from "./printWarning.js"; + +export default function filterConfigs( + type, + configs, + supportedConfigs, + { warn = true } = {} +) { + const clonedConfigs = { ...configs }; + + const requiredConfigs = []; + + type !== "Global" && requiredConfigs.push("src"); + + ["Img", "Picture"].includes(type) && requiredConfigs.push("alt"); + + requiredConfigs.forEach((key) => { + if (typeof clonedConfigs[key] === "undefined") { + throw new Error(`The "${key}" property is required by ${type}`); + } + }); + + Object.keys(clonedConfigs).forEach((key) => { + if (!supportedConfigs.includes(key)) { + if (warn) { + if (key !== "class") { + printWarning({ key, type }); + } else if (!onlyAstroClass(clonedConfigs[key])) { + /* + printWarning({ + message: `Do not provide a "class" directly to ${type}. Instead, use attributes: https://astro-imagetools-docs.vercel.app/en/components/${type}#attributes`, + }); + */ + } + } + + delete clonedConfigs[key]; + } + }); + + return clonedConfigs; +} + +/** + * Checks if the `class` attribute string is only an astro-generated scoped style class. + */ +function onlyAstroClass(classAttr) { + const astroClassPattern = /^astro-[0-9A-Z]{8}$/; + return astroClassPattern.test(classAttr); +} diff --git a/packages/imagetools_/utils/filterConfigs.test.js b/packages/imagetools_/utils/filterConfigs.test.js new file mode 100644 index 0000000..d3d5100 --- /dev/null +++ b/packages/imagetools_/utils/filterConfigs.test.js @@ -0,0 +1,100 @@ +import { describe, expect, afterAll, it, vi, beforeEach } from "vitest"; +import { supportedConfigs } from "./runtimeChecks"; +import filterConfigs from "./filterConfigs"; +import printWarning from "./printWarning.js"; + +// Workaround for https://github.com/vitest-dev/vitest/issues/855 +vi.mock("./printWarning.js", async () => { + return { default: vi.fn() }; +}); + +const warningSpy = vi.mocked(printWarning); + +describe("filterConfigs", () => { + beforeEach(() => { + warningSpy.mockReset(); + }); + afterAll(() => { + vi.unmock("./printWarning.js"); + }); + + it("should require a `src` attribute for all components", () => { + expect(() => { + filterConfigs("Img", { alt: "" }, supportedConfigs); + }).toThrowError('The "src" property is required by Img'); + expect(() => { + filterConfigs("Picture", { alt: "" }, supportedConfigs); + }).toThrowError('The "src" property is required by Picture'); + expect(() => { + filterConfigs("BackgroundImage", {}, supportedConfigs); + }).toThrowError('The "src" property is required by BackgroundImage'); + expect(() => { + filterConfigs("BackgroundPicture", {}, supportedConfigs); + }).toThrowError('The "src" property is required by BackgroundPicture'); + expect(() => { + filterConfigs("Global", {}, supportedConfigs); + }).not.toThrowError(); + }); + + it("should require an `alt` attribute for Picture and Img, but not others", () => { + expect(() => { + filterConfigs("Img", { src: "src" }, supportedConfigs); + }).toThrowError('The "alt" property is required by Img'); + expect(() => { + filterConfigs("Picture", { src: "src" }, supportedConfigs); + }).toThrowError('The "alt" property is required by Picture'); + expect(() => { + filterConfigs("BackgroundImage", { src: "src" }, supportedConfigs); + }).not.toThrowError(); + expect(() => { + filterConfigs("BackgroundPicture", { src: "src" }, supportedConfigs); + }).not.toThrowError(); + expect(() => { + filterConfigs("Global", {}, supportedConfigs); + }).not.toThrowError(); + }); + + it("should remove unsupported configs", () => { + const filteredConfig = filterConfigs("Global", { foo: "foo" }, [], { + warn: false, + }); + const filteredConfigFooSupported = filterConfigs( + "Global", + { foo: "foo" }, + ["foo"], + { + warn: false, + } + ); + expect(filteredConfig).not.toContain({ foo: "foo" }); + expect(filteredConfigFooSupported).toContain({ foo: "foo" }); + }); + + it("should warn about unsupported configs", () => { + filterConfigs("Global", { foo: "foo" }, []); + expect(warningSpy).toHaveBeenCalledWith({ type: "Global", key: "foo" }); + }); + + it("should warn about unsupported 'class' config", () => { + filterConfigs( + "Img", + { class: "astro-ASDF1234 my-class", src: "src", alt: "" }, + supportedConfigs + ); + expect(warningSpy).toHaveBeenCalledWith({ + message: + 'Do not provide a "class" directly to Img. Instead, use attributes: https://astro-imagetools-docs.vercel.app/en/components/Img#attributes', + }); + }); + + it("should not warn about astro-generated 'class' config", () => { + const filteredConfig = filterConfigs( + "Img", + { class: "astro-ASDF1234", src: "src", alt: "" }, + supportedConfigs + ); + expect(warningSpy).not.toHaveBeenCalled(); + // class is still stripped out + expect(filteredConfig).not.toContain({ class: "astro-ASDF1234" }); + }); +}); diff --git a/packages/imagetools_/utils/printWarning.js b/packages/imagetools_/utils/printWarning.js new file mode 100644 index 0000000..efeac3d --- /dev/null +++ b/packages/imagetools_/utils/printWarning.js @@ -0,0 +1,57 @@ +// @ts-check + +const colours = { + reset: "\x1b[0m", + bright: "\x1b[1m", + dim: "\x1b[2m", + underscore: "\x1b[4m", + blink: "\x1b[5m", + reverse: "\x1b[7m", + hidden: "\x1b[8m", + + fg: { + black: "\x1b[30m", + red: "\x1b[31m", + green: "\x1b[32m", + yellow: "\x1b[33m", + blue: "\x1b[34m", + magenta: "\x1b[35m", + cyan: "\x1b[36m", + white: "\x1b[37m", + }, + + bg: { + black: "\x1b[40m", + red: "\x1b[41m", + green: "\x1b[42m", + yellow: "\x1b[43m", + blue: "\x1b[44m", + magenta: "\x1b[45m", + cyan: "\x1b[46m", + white: "\x1b[47m", + }, +}; + +export default function printWarning({ + key = "", + type = "", + message = "", + element = "", +}) { + const flag = + colours.bright + colours.fg.cyan + "[astro-imagetools]" + colours.reset; + + const keyLog = key + ? " " + colours.bg.yellow + ` ${key} ` + colours.reset + : ""; + + const messageLog = + colours.fg.yellow + + (message || + (!element + ? `is not a valid ${type} Config Option` + : `can't be defined inside attributes.${element}`)) + + colours.reset; + + // console.log(flag + keyLog, messageLog); +} diff --git a/packages/imagetools_/utils/runtimeChecks.js b/packages/imagetools_/utils/runtimeChecks.js new file mode 100644 index 0000000..a5e1b3d --- /dev/null +++ b/packages/imagetools_/utils/runtimeChecks.js @@ -0,0 +1,80 @@ +// @ts-check +import fs from "node:fs"; +import path from "node:path"; +import { pathToFileURL } from "node:url"; +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(/* @vite-ignore */ pathToFileURL(configFile).href) + : 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_/utils/runtimeChecks.test.ts b/packages/imagetools_/utils/runtimeChecks.test.ts new file mode 100644 index 0000000..622592e --- /dev/null +++ b/packages/imagetools_/utils/runtimeChecks.test.ts @@ -0,0 +1,36 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; + +describe("GlobalConfigOptions", () => { + beforeEach(() => { + // Need to reset the modules so that we can change the mock implementation between tests + vi.resetModules(); + }); + + it("Should be an empty object by default, if a config file isn't found", async () => { + // Simulate not finding a config file + vi.doMock("find-up", () => { + return { + findUp: async () => undefined, + }; + }); + // Need to import this after the mocks are set up with `doMock`. + const { GlobalConfigOptions } = await import("./runtimeChecks"); + expect(GlobalConfigOptions).toEqual({}); + }); + + it("should return the configuration from a global config file", async () => { + // Find a config file, and mock the contents of that file + vi.doMock("find-up", () => { + return { + findUp: async () => "mockedConfigFile", + }; + }); + vi.doMock("mockedConfigFile", () => { + return { + default: { breakpoints: [800, 1200] }, + }; + }); + const { GlobalConfigOptions } = await import("./runtimeChecks"); + expect(GlobalConfigOptions).toEqual({ breakpoints: [800, 1200] }); + }); +}); diff --git a/packages/imagetools_/vitest.config.ts b/packages/imagetools_/vitest.config.ts new file mode 100644 index 0000000..29dc63d --- /dev/null +++ b/packages/imagetools_/vitest.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + // https://vitest.dev/config/#configuration + }, +}); diff --git a/packages/imagetools_3/.eslintrc.js b/packages/imagetools_3/.eslintrc.js new file mode 100644 index 0000000..404d101 --- /dev/null +++ b/packages/imagetools_3/.eslintrc.js @@ -0,0 +1,17 @@ +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_3/.github/workflows/ci.yml b/packages/imagetools_3/.github/workflows/ci.yml new file mode 100644 index 0000000..8037912 --- /dev/null +++ b/packages/imagetools_3/.github/workflows/ci.yml @@ -0,0 +1,65 @@ +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_3/.gitignore b/packages/imagetools_3/.gitignore new file mode 100644 index 0000000..7ce5e2f --- /dev/null +++ b/packages/imagetools_3/.gitignore @@ -0,0 +1,20 @@ +# 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_3/.npmignore b/packages/imagetools_3/.npmignore new file mode 100644 index 0000000..4f257ea --- /dev/null +++ b/packages/imagetools_3/.npmignore @@ -0,0 +1,4 @@ +*.test.ts +test-fixtures +astroViteConfigs.js +vitest.config.ts diff --git a/packages/imagetools_3/.npmrc b/packages/imagetools_3/.npmrc new file mode 100644 index 0000000..0cc653b --- /dev/null +++ b/packages/imagetools_3/.npmrc @@ -0,0 +1,2 @@ +## force pnpm to hoist +shamefully-hoist = true \ No newline at end of file diff --git a/packages/imagetools_3/.prettierignore b/packages/imagetools_3/.prettierignore new file mode 100644 index 0000000..2a056f3 --- /dev/null +++ b/packages/imagetools_3/.prettierignore @@ -0,0 +1,2 @@ +pnpm-lock.yaml +demo/dist diff --git a/packages/imagetools_3/.prettierrc b/packages/imagetools_3/.prettierrc new file mode 100644 index 0000000..8008794 --- /dev/null +++ b/packages/imagetools_3/.prettierrc @@ -0,0 +1,9 @@ +{ + "overrides": [ + { + "files": "**/*.astro", + "options": { "parser": "astro" } + } + ], + "plugins": ["prettier-plugin-astro"] +} diff --git a/packages/imagetools_3/LICENSE b/packages/imagetools_3/LICENSE new file mode 100644 index 0000000..a4be0c4 --- /dev/null +++ b/packages/imagetools_3/LICENSE @@ -0,0 +1,21 @@ +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_3/README.md b/packages/imagetools_3/README.md new file mode 100644 index 0000000..eda0dbe --- /dev/null +++ b/packages/imagetools_3/README.md @@ -0,0 +1,39 @@ +# **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_3/api/importImage.d.ts b/packages/imagetools_3/api/importImage.d.ts new file mode 100644 index 0000000..bb0bb97 --- /dev/null +++ b/packages/imagetools_3/api/importImage.d.ts @@ -0,0 +1 @@ +export default function importImage(url: string): Promise; diff --git a/packages/imagetools_3/api/importImage.js b/packages/imagetools_3/api/importImage.js new file mode 100644 index 0000000..b22ca0b --- /dev/null +++ b/packages/imagetools_3/api/importImage.js @@ -0,0 +1,23 @@ +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_3/api/index.js b/packages/imagetools_3/api/index.js new file mode 100644 index 0000000..062d6ad --- /dev/null +++ b/packages/imagetools_3/api/index.js @@ -0,0 +1,6 @@ +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_3/api/renderBackgroundImage.d.ts b/packages/imagetools_3/api/renderBackgroundImage.d.ts new file mode 100644 index 0000000..e7e601b --- /dev/null +++ b/packages/imagetools_3/api/renderBackgroundImage.d.ts @@ -0,0 +1,8 @@ +import type { + BackgroundImageConfigOptions, + BackgroundImageHTMLData, +} from "../types"; + +export default function renderBackgroundImage( + config: BackgroundImageConfigOptions +): Promise; diff --git a/packages/imagetools_3/api/renderBackgroundImage.js b/packages/imagetools_3/api/renderBackgroundImage.js new file mode 100644 index 0000000..f56b308 --- /dev/null +++ b/packages/imagetools_3/api/renderBackgroundImage.js @@ -0,0 +1,159 @@ +// @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_3/api/renderBackgroundPicture.d.ts b/packages/imagetools_3/api/renderBackgroundPicture.d.ts new file mode 100644 index 0000000..a566421 --- /dev/null +++ b/packages/imagetools_3/api/renderBackgroundPicture.d.ts @@ -0,0 +1,8 @@ +import type { + BackgroundPictureConfigOptions, + BackgroundPictureHTMLData, +} from "../types"; + +export default function renderBackgroundPicture( + config: BackgroundPictureConfigOptions +): Promise; diff --git a/packages/imagetools_3/api/renderBackgroundPicture.js b/packages/imagetools_3/api/renderBackgroundPicture.js new file mode 100644 index 0000000..1eea4e1 --- /dev/null +++ b/packages/imagetools_3/api/renderBackgroundPicture.js @@ -0,0 +1,127 @@ +// @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_3/api/renderImg.d.ts b/packages/imagetools_3/api/renderImg.d.ts new file mode 100644 index 0000000..abbc304 --- /dev/null +++ b/packages/imagetools_3/api/renderImg.d.ts @@ -0,0 +1,5 @@ +import type { ImgConfigOptions, ImgHTMLData } from "../types"; + +export default function renderImg( + config: ImgConfigOptions +): Promise; diff --git a/packages/imagetools_3/api/renderImg.js b/packages/imagetools_3/api/renderImg.js new file mode 100644 index 0000000..3bc2bf3 --- /dev/null +++ b/packages/imagetools_3/api/renderImg.js @@ -0,0 +1,93 @@ +// @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_3/api/renderPicture.d.ts b/packages/imagetools_3/api/renderPicture.d.ts new file mode 100644 index 0000000..54ccfe5 --- /dev/null +++ b/packages/imagetools_3/api/renderPicture.d.ts @@ -0,0 +1,5 @@ +import type { PictureConfigOptions, PictureHTMLData } from "../types"; + +export default function renderPicture( + config: PictureConfigOptions +): Promise; diff --git a/packages/imagetools_3/api/renderPicture.js b/packages/imagetools_3/api/renderPicture.js new file mode 100644 index 0000000..8a98d1c --- /dev/null +++ b/packages/imagetools_3/api/renderPicture.js @@ -0,0 +1,111 @@ +// @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_3/api/utils/codecs.js b/packages/imagetools_3/api/utils/codecs.js new file mode 100644 index 0000000..8f72571 --- /dev/null +++ b/packages/imagetools_3/api/utils/codecs.js @@ -0,0 +1,38 @@ +// @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_3/api/utils/getArtDirectedImages.js b/packages/imagetools_3/api/utils/getArtDirectedImages.js new file mode 100644 index 0000000..1f7c073 --- /dev/null +++ b/packages/imagetools_3/api/utils/getArtDirectedImages.js @@ -0,0 +1,137 @@ +// @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_3/api/utils/getAttributesString.js b/packages/imagetools_3/api/utils/getAttributesString.js new file mode 100644 index 0000000..e9bd1c1 --- /dev/null +++ b/packages/imagetools_3/api/utils/getAttributesString.js @@ -0,0 +1,27 @@ +// @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_3/api/utils/getBackgroundStyles.js b/packages/imagetools_3/api/utils/getBackgroundStyles.js new file mode 100644 index 0000000..111233c --- /dev/null +++ b/packages/imagetools_3/api/utils/getBackgroundStyles.js @@ -0,0 +1,97 @@ +// @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_3/api/utils/getBreakpoints.js b/packages/imagetools_3/api/utils/getBreakpoints.js new file mode 100644 index 0000000..02a098e --- /dev/null +++ b/packages/imagetools_3/api/utils/getBreakpoints.js @@ -0,0 +1,77 @@ +// @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_3/api/utils/getConfigOptions.js b/packages/imagetools_3/api/utils/getConfigOptions.js new file mode 100644 index 0000000..3b3797d --- /dev/null +++ b/packages/imagetools_3/api/utils/getConfigOptions.js @@ -0,0 +1,34 @@ +// @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_3/api/utils/getContainerElement.js b/packages/imagetools_3/api/utils/getContainerElement.js new file mode 100644 index 0000000..9c5b710 --- /dev/null +++ b/packages/imagetools_3/api/utils/getContainerElement.js @@ -0,0 +1,48 @@ +// @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_3/api/utils/getFallbackImage.js b/packages/imagetools_3/api/utils/getFallbackImage.js new file mode 100644 index 0000000..b085286 --- /dev/null +++ b/packages/imagetools_3/api/utils/getFallbackImage.js @@ -0,0 +1,58 @@ +// @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_3/api/utils/getFilteredProps.js b/packages/imagetools_3/api/utils/getFilteredProps.js new file mode 100644 index 0000000..9c791ba --- /dev/null +++ b/packages/imagetools_3/api/utils/getFilteredProps.js @@ -0,0 +1,138 @@ +// @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_3/api/utils/getFilteredProps.test.ts b/packages/imagetools_3/api/utils/getFilteredProps.test.ts new file mode 100644 index 0000000..7b8f20c --- /dev/null +++ b/packages/imagetools_3/api/utils/getFilteredProps.test.ts @@ -0,0 +1,49 @@ +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_3/api/utils/getImage.js b/packages/imagetools_3/api/utils/getImage.js new file mode 100644 index 0000000..e385ba1 --- /dev/null +++ b/packages/imagetools_3/api/utils/getImage.js @@ -0,0 +1,111 @@ +// @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 start = performance.now(); + + 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_3/api/utils/getImageSources.js b/packages/imagetools_3/api/utils/getImageSources.js new file mode 100644 index 0000000..d0dca00 --- /dev/null +++ b/packages/imagetools_3/api/utils/getImageSources.js @@ -0,0 +1,91 @@ +// @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_3/api/utils/getImgElement.js b/packages/imagetools_3/api/utils/getImgElement.js new file mode 100644 index 0000000..fea4109 --- /dev/null +++ b/packages/imagetools_3/api/utils/getImgElement.js @@ -0,0 +1,80 @@ +// @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_3/api/utils/getLayoutStyles.js b/packages/imagetools_3/api/utils/getLayoutStyles.js new file mode 100644 index 0000000..efa6d96 --- /dev/null +++ b/packages/imagetools_3/api/utils/getLayoutStyles.js @@ -0,0 +1,16 @@ +// @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_3/api/utils/getLinkElement.js b/packages/imagetools_3/api/utils/getLinkElement.js new file mode 100644 index 0000000..2fcfb7a --- /dev/null +++ b/packages/imagetools_3/api/utils/getLinkElement.js @@ -0,0 +1,34 @@ +// @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_3/api/utils/getLinkElement.test.ts b/packages/imagetools_3/api/utils/getLinkElement.test.ts new file mode 100644 index 0000000..83d435a --- /dev/null +++ b/packages/imagetools_3/api/utils/getLinkElement.test.ts @@ -0,0 +1,14 @@ +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_3/api/utils/getPictureElement.js b/packages/imagetools_3/api/utils/getPictureElement.js new file mode 100644 index 0000000..b0d62c3 --- /dev/null +++ b/packages/imagetools_3/api/utils/getPictureElement.js @@ -0,0 +1,43 @@ +// @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_3/api/utils/getProcessedImage.js b/packages/imagetools_3/api/utils/getProcessedImage.js new file mode 100644 index 0000000..0823eb6 --- /dev/null +++ b/packages/imagetools_3/api/utils/getProcessedImage.js @@ -0,0 +1,65 @@ +// @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)); + + if(src.includes('nature')) { + // debugger + } + 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_3/api/utils/getResolvedSrc.js b/packages/imagetools_3/api/utils/getResolvedSrc.js new file mode 100644 index 0000000..b712da7 --- /dev/null +++ b/packages/imagetools_3/api/utils/getResolvedSrc.js @@ -0,0 +1,210 @@ +// @ts-check +import fs from "node:fs"; +import crypto from "node:crypto"; +import http from "node:http"; +import https from "node:https"; +import pTimeout from "p-timeout"; +import { join, parse, relative } from "node:path"; +import throwErrorIfUnsupported from "./throwErrorIfUnsupported.js"; + +function getDefaultImage() { + const filepath = join(cwd, "public", "images", "default.png"); + const src = join("/", relative(cwd, filepath)); + return { src, base: "default" }; +} +import { + cwd, + fsCachePath, + supportedImageTypes, +} from "../../utils/runtimeChecks.js"; + +const { fileTypeFromBuffer } = await import("file-type"); + +const defaults = { + maxRedirects: 10, + retries: 2, + baseDelay: 100, + maxTotalTime: 5000, + devTimeout: 20000, +}; + +class NetworkError extends Error { + code; + + constructor(message, code) { + super(message); + this.code = code; + } +} + +function fetchWithRedirects(urlString, options, currentRedirects = 0) { + return new Promise((resolve, reject) => { + if (currentRedirects > options.maxRedirects) { + return reject(new Error("Too many redirects")); + } + + const url = new URL(urlString); + const get = url.protocol === "https:" ? https.get : http.get; + + const req = get(url, (response) => { + if ( + response.statusCode && + response.statusCode >= 300 && + response.statusCode < 400 && + response.headers.location + ) { + response.resume(); // consume data to free up memory + const redirectUrl = new URL(response.headers.location, url).toString(); + fetchWithRedirects(redirectUrl, options, currentRedirects + 1) + .then(resolve) + .catch(reject); + } else { + if (response.statusCode && response.statusCode >= 400) { + response.resume(); // consume data to free up memory + return reject( + new NetworkError( + `Server responded with status code ${response.statusCode}`, + "EHTTP" + ) + ); + } + + const contentType = response.headers["content-type"]; + if (!contentType || !contentType.startsWith("image/")) { + response.resume(); // consume data to free up memory + return reject( + new NetworkError( + `Invalid content type: ${contentType}. Expected an image.`, + "EINVALIDCONTENT" + ) + ); + } + + // Mimic Fetch API's Response object + resolve({ + arrayBuffer: () => + new Promise((resolveBody, rejectBody) => { + const chunks = []; + response.on("data", (chunk) => chunks.push(chunk)); + response.on("end", () => resolveBody(Buffer.concat(chunks))); + response.on("error", (err) => rejectBody(err)); + }), + }); + } + }); + + req.on("error", (err) => { + reject(err); + }); + }); +} + +// Retry mechanism with exponential backoff +async function retryWithBackoff(fn, options) { + const isDev = process.env.NODE_ENV === "development"; + const timeout = isDev ? options.devTimeout : options.maxTotalTime; + + const promise = (async () => { + for (let i = 0; i < options.retries; i++) { + try { + return await fn(); + } catch (error) { + if (i === options.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 = options.baseDelay * Math.pow(2, i); // Exponential backoff + console.warn( + `Retry attempt ${ + i + 1 + }/${options.retries} for file operation after ${delay}ms delay:`, + error.message + ); + await new Promise((res) => setTimeout(res, delay)); + } + } + })(); + + return pTimeout(promise, { milliseconds: timeout }); +} + +export default async function getResolvedSrc(src, options = {}) { + const mergedOptions = { ...defaults, ...options }; + + try { + 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; + }, mergedOptions); + + if (!fileExists) { + const buffer = Buffer.from( + await (await fetchWithRedirects(src, mergedOptions)).arrayBuffer() + ); + + let { ext } = (await fileTypeFromBuffer(buffer)) || {}; + + if (!ext) { + const url = new URL(src); + ext = url.pathname.split(".").pop(); + } + + 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); + } + }); + }, mergedOptions); + } + + const base = /^https?:/.test(src) + ? parse(new URL(src).pathname).name + : undefined; + + const resolvedSrc = join("/", relative(cwd, filepath)); + + return { src: resolvedSrc, base }; + } catch (error) { + if ( + error.code === "ENOTFOUND" || + error.code === "EHTTP" || + error.code === "EINVALIDCONTENT" + ) { + console.error( + `Failed to fetch ${src}: ${error.message}. Using default image.` + ); + return getDefaultImage(); + } + throw error; + } +} diff --git a/packages/imagetools_3/api/utils/getSrcPath.js b/packages/imagetools_3/api/utils/getSrcPath.js new file mode 100644 index 0000000..3a7a7da --- /dev/null +++ b/packages/imagetools_3/api/utils/getSrcPath.js @@ -0,0 +1,32 @@ +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_3/api/utils/getSrcPath.test.ts b/packages/imagetools_3/api/utils/getSrcPath.test.ts new file mode 100644 index 0000000..bb267dd --- /dev/null +++ b/packages/imagetools_3/api/utils/getSrcPath.test.ts @@ -0,0 +1,67 @@ +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_3/api/utils/getSrcset.js b/packages/imagetools_3/api/utils/getSrcset.js new file mode 100644 index 0000000..cbd2990 --- /dev/null +++ b/packages/imagetools_3/api/utils/getSrcset.js @@ -0,0 +1,39 @@ +// @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_3/api/utils/getStyleElement.js b/packages/imagetools_3/api/utils/getStyleElement.js new file mode 100644 index 0000000..30ad4d7 --- /dev/null +++ b/packages/imagetools_3/api/utils/getStyleElement.js @@ -0,0 +1,15 @@ +// @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_3/api/utils/imagetools.js b/packages/imagetools_3/api/utils/imagetools.js new file mode 100644 index 0000000..530abd1 --- /dev/null +++ b/packages/imagetools_3/api/utils/imagetools.js @@ -0,0 +1,40 @@ +// @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_3/api/utils/throwErrorIfUnsupported.js b/packages/imagetools_3/api/utils/throwErrorIfUnsupported.js new file mode 100644 index 0000000..581ca16 --- /dev/null +++ b/packages/imagetools_3/api/utils/throwErrorIfUnsupported.js @@ -0,0 +1,14 @@ +// @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_3/astroViteConfigs.js b/packages/imagetools_3/astroViteConfigs.js new file mode 100644 index 0000000..7bc05a5 --- /dev/null +++ b/packages/imagetools_3/astroViteConfigs.js @@ -0,0 +1,12 @@ +export default { + "environment": "dev", + "isSsrBuild": false, + "projectBase": "", + "publicDir": "C:\\Users\\zx\\Desktop\\polymech\\site-min\\public\\", + "rootDir": "C:\\Users\\zx\\Desktop\\polymech\\site-min\\", + "mode": "dev", + "outDir": "dist", + "assetsDir": "/_astro", + "sourcemap": false, + "assetFileNames": "/_astro/[name]@[width].[hash][extname]" +} \ No newline at end of file diff --git a/packages/imagetools_3/components/BackgroundImage.astro b/packages/imagetools_3/components/BackgroundImage.astro new file mode 100644 index 0000000..47d2b44 --- /dev/null +++ b/packages/imagetools_3/components/BackgroundImage.astro @@ -0,0 +1,46 @@ +--- +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_3/components/BackgroundPicture.astro b/packages/imagetools_3/components/BackgroundPicture.astro new file mode 100644 index 0000000..a53bab8 --- /dev/null +++ b/packages/imagetools_3/components/BackgroundPicture.astro @@ -0,0 +1,19 @@ +--- +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_3/components/Image.astro b/packages/imagetools_3/components/Image.astro new file mode 100644 index 0000000..d2d547a --- /dev/null +++ b/packages/imagetools_3/components/Image.astro @@ -0,0 +1,10 @@ +--- +import renderImage from "../api/renderImage.js"; +import type { PictureConfigOptions as ImageConfigOptions } from "../types.d"; + +const { link, style, image } = await renderImage( + Astro.props as ImageConfigOptions +); +--- + + diff --git a/packages/imagetools_3/components/ImageSupportDetection.astro b/packages/imagetools_3/components/ImageSupportDetection.astro new file mode 100644 index 0000000..9e62ae7 --- /dev/null +++ b/packages/imagetools_3/components/ImageSupportDetection.astro @@ -0,0 +1,4 @@ + + diff --git a/packages/imagetools_3/components/Img.astro b/packages/imagetools_3/components/Img.astro new file mode 100644 index 0000000..36c03ab --- /dev/null +++ b/packages/imagetools_3/components/Img.astro @@ -0,0 +1,10 @@ +--- +import renderImg from "../api/renderImg.js"; +import type { ImgConfigOptions } from "../types.d"; + +declare interface Props extends ImgConfigOptions {} + +const { link, style, img } = await renderImg(Astro.props as Props); +--- + + diff --git a/packages/imagetools_3/components/Picture.astro b/packages/imagetools_3/components/Picture.astro new file mode 100644 index 0000000..737bd77 --- /dev/null +++ b/packages/imagetools_3/components/Picture.astro @@ -0,0 +1,10 @@ +--- +import renderPicture from "../api/renderPicture.js"; +import type { PictureConfigOptions } from "../types.d"; + +declare interface Props extends PictureConfigOptions {} + +const { link, style, picture } = await renderPicture(Astro.props as Props); +--- + + diff --git a/packages/imagetools_3/components/index.js b/packages/imagetools_3/components/index.js new file mode 100644 index 0000000..a6c6389 --- /dev/null +++ b/packages/imagetools_3/components/index.js @@ -0,0 +1,5 @@ +export { default as Img } from "./Img.astro"; +export { default as Picture } from "./Picture.astro"; +export { default as BackgroundImage } from "./BackgroundImage.astro"; +export { default as BackgroundPicture } from "./BackgroundPicture.astro"; +export { default as ImageSupportDetection } from "./ImageSupportDetection.astro"; diff --git a/packages/imagetools_3/config.d.ts b/packages/imagetools_3/config.d.ts new file mode 100644 index 0000000..8569ca9 --- /dev/null +++ b/packages/imagetools_3/config.d.ts @@ -0,0 +1,3 @@ +import type { GlobalConfigOptions } from "./types"; + +export function defineConfig(config: GlobalConfigOptions): GlobalConfigOptions; diff --git a/packages/imagetools_3/config.mjs b/packages/imagetools_3/config.mjs new file mode 100644 index 0000000..64a4c49 --- /dev/null +++ b/packages/imagetools_3/config.mjs @@ -0,0 +1,3 @@ +export function defineConfig(config) { + return config; +} diff --git a/packages/imagetools_3/demo/.npmrc b/packages/imagetools_3/demo/.npmrc new file mode 100644 index 0000000..0cc653b --- /dev/null +++ b/packages/imagetools_3/demo/.npmrc @@ -0,0 +1,2 @@ +## force pnpm to hoist +shamefully-hoist = true \ No newline at end of file diff --git a/packages/imagetools_3/demo/.stackblitzrc b/packages/imagetools_3/demo/.stackblitzrc new file mode 100644 index 0000000..0dfa8f1 --- /dev/null +++ b/packages/imagetools_3/demo/.stackblitzrc @@ -0,0 +1,6 @@ +{ + "startCommand": "npm start", + "env": { + "ENABLE_CJS_IMPORTS": true + } +} diff --git a/packages/imagetools_3/demo/README.md b/packages/imagetools_3/demo/README.md new file mode 100644 index 0000000..777dd8e --- /dev/null +++ b/packages/imagetools_3/demo/README.md @@ -0,0 +1,5 @@ +# Astro ImageTools Live Examples + +This repository contains source code for the [**Astro ImageTools Demo**](https://astro-imagetools-demo.vercel.app) website. + +The demo displays live examples of the components and APIs provided by the [**Astro ImageTools**](https://npmjs.com/package/astro-imagetools) library and the **Layouts** and **Placeholders** supported by the library. diff --git a/packages/imagetools_3/demo/astro-imagetools.config.mjs b/packages/imagetools_3/demo/astro-imagetools.config.mjs new file mode 100644 index 0000000..b48b079 --- /dev/null +++ b/packages/imagetools_3/demo/astro-imagetools.config.mjs @@ -0,0 +1,3 @@ +import { defineConfig } from "astro-imagetools/config"; + +export default defineConfig({}); diff --git a/packages/imagetools_3/demo/astro.config.mjs b/packages/imagetools_3/demo/astro.config.mjs new file mode 100644 index 0000000..c46819e --- /dev/null +++ b/packages/imagetools_3/demo/astro.config.mjs @@ -0,0 +1,23 @@ +import { defineConfig } from "astro/config"; +import { astroImageTools } from "astro-imagetools"; + +// https://astro.build/config +export default defineConfig({ + vite: { + plugins: [ + { + name: "import.meta.url-transformer", + transform: (code, id) => { + if (id.endsWith(".astro")) + return code.replace(/import.meta.url/g, `"${id}"`); + }, + }, + ], + }, + + experimental: { + integrations: true, + }, + + integrations: [astroImageTools], +}); diff --git a/packages/imagetools_3/demo/package.json b/packages/imagetools_3/demo/package.json new file mode 100644 index 0000000..2a25773 --- /dev/null +++ b/packages/imagetools_3/demo/package.json @@ -0,0 +1,23 @@ +{ + "scripts": { + "dev": "astro dev", + "start": "astro dev", + "build": "astro build", + "preview": "astro preview" + }, + "dependencies": { + "astro-spa": "^1.3.9", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@astrojs/lit": "^1.1.2", + "@astrojs/preact": "^2.0.2", + "@astrojs/react": "^2.0.2", + "@astrojs/solid-js": "^2.0.2", + "@astrojs/svelte": "^2.0.1", + "@astrojs/vue": "^2.0.1", + "astro": "^2.0.6", + "astro-imagetools": "workspace:^0.9.0" + } +} diff --git a/packages/imagetools_3/demo/public/favicon.ico b/packages/imagetools_3/demo/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..578ad458b8906c08fbed84f42b045fea04db89d1 GIT binary patch literal 4286 zcmchZF=!M)6ox0}Fc8GdTHG!cdIY>nA!3n2f|wxIl0rn}Hl#=uf>?-!2r&jMEF^_k zh**lGut*gwBmoNv7AaB&2~nbzULg{WBhPQ{ZVzvF_HL8Cb&hv$_s#qN|IO^o>?+mA zuTW6tU%k~z<&{z+7$G%*nRsTcEO|90xy<-G5&JTt%CgZZCDT4%R?+{Vd^wh>P8_)} z`+dF$HQb9!>1o`Ivn;GInlCw{9T@Rt%q+d^T3Ke%cxkk;$v`{s^zCB9nHAv6w$Vbn z8fb<+eQTNM`;rf9#obfGnV#3+OQEUv4gU;{oA@zol%keY9-e>4W>p7AHmH~&!P7f7!Uj` zwgFeQ=<3G4O;mwWO`L!=R-=y3_~-DPjH3W^3f&jjCfC$o#|oGaahSL`_=f?$&Aa+W z2h8oZ+@?NUcjGW|aWJfbM*ZzxzmCPY`b~RobNrrj=rd`=)8-j`iSW64@0_b6?;GYk zNB+-fzOxlqZ?`y{OA$WigtZXa8)#p#=DPYxH=VeC_Q5q9Cv`mvW6*zU&Gnp1;oPM6 zaK_B3j(l^FyJgYeE9RrmDyhE7W2}}nW%ic#0v@i1E!yTey$W)U>fyd+!@2hWQ!Wa==NAtKoj`f3tp4y$Al`e;?)76?AjdaRR>|?&r)~3Git> zb1)a?uiv|R0_{m#A9c;7)eZ1y6l@yQ#oE*>(Z2fG-&&smPa2QTW>m*^K65^~`coP$ z8y5Y?iS<4Gz{Zg##$1mk)u-0;X|!xu^FCr;ce~X<&UWE&pBgqfYmEJTzpK9I%vr%b z3Ksd6qlPJLI%HFfeXK_^|BXiKZC>Ocu(Kk6hD3G-8usLzVG^q00Qh gz)s7ge@$ApxGu7=(6IGIk+uG&HTev01^#CH3$(Wk5&!@I literal 0 HcmV?d00001 diff --git a/packages/imagetools_3/demo/public/images/public.jpeg b/packages/imagetools_3/demo/public/images/public.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..d5b648a7329ff4cbaea08b500a20ecc60e351062 GIT binary patch literal 97005 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�^0)GQtC;`A^!vZ@V4N|+%t#6}k%jL6m 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 IPJL_t*+q%wJ^%m! literal 0 HcmV?d00001 diff --git a/packages/imagetools_3/demo/sandbox.config.json b/packages/imagetools_3/demo/sandbox.config.json new file mode 100644 index 0000000..b12019e --- /dev/null +++ b/packages/imagetools_3/demo/sandbox.config.json @@ -0,0 +1,11 @@ +{ + "infiniteLoopProtection": true, + "hardReloadOnChange": false, + "view": "browser", + "template": "node", + "container": { + "port": 3000, + "startScript": "start", + "node": "16" + } +} diff --git a/packages/imagetools_3/demo/src/env.d.ts b/packages/imagetools_3/demo/src/env.d.ts new file mode 100644 index 0000000..f964fe0 --- /dev/null +++ b/packages/imagetools_3/demo/src/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/imagetools_3/demo/src/images/elva-480w-close-portrait.jpg b/packages/imagetools_3/demo/src/images/elva-480w-close-portrait.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0ea3a05ec8e33984c1861f5fdb79b9394bbd4113 GIT binary patch literal 83444 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