├── .npmrc ├── .prettierignore ├── fonts ├── jost.woff ├── typewriter.ttf └── README.md ├── static ├── jost.woff ├── TYPEWR__.TTF └── favicon.ico ├── dist ├── font-handling │ ├── index.d.ts │ └── index.js ├── types │ ├── types.js │ └── types.d.ts ├── vite │ ├── index.d.ts │ └── index.js ├── processing │ ├── png_render.d.ts │ ├── svg_render.d.ts │ ├── nodes_render.d.ts │ ├── png_render.js │ ├── nodes_render.js │ └── svg_render.js ├── index.d.ts ├── global.d.ts └── index.js ├── vite.config.ts ├── src ├── demo.spec.ts ├── index.test.ts ├── app.html ├── app.d.ts ├── lib │ ├── vite │ │ └── index.ts │ ├── types │ │ └── types.ts │ ├── processing │ │ ├── png_render.ts │ │ ├── nodes_render.ts │ │ └── svg_render.ts │ ├── global.d.ts │ ├── font-handling │ │ └── index.ts │ └── index.ts └── routes │ ├── +page.svelte │ └── image │ ├── HelloWorld.svelte │ └── +server.ts ├── .gitignore ├── .eslintignore ├── tests └── test.ts ├── playwright.config.ts ├── .prettierrc ├── tsconfig.json ├── svelte.config.js ├── .eslintrc.cjs ├── eslint.config.js ├── LICENSE.md ├── package.json ├── README.md └── pnpm-lock.yaml /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Package Managers 2 | package-lock.json 3 | pnpm-lock.yaml 4 | yarn.lock 5 | -------------------------------------------------------------------------------- /fonts/jost.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGunn/svelte-component-to-image/HEAD/fonts/jost.woff -------------------------------------------------------------------------------- /static/jost.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGunn/svelte-component-to-image/HEAD/static/jost.woff -------------------------------------------------------------------------------- /fonts/typewriter.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGunn/svelte-component-to-image/HEAD/fonts/typewriter.ttf -------------------------------------------------------------------------------- /static/TYPEWR__.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGunn/svelte-component-to-image/HEAD/static/TYPEWR__.TTF -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGunn/svelte-component-to-image/HEAD/static/favicon.ico -------------------------------------------------------------------------------- /dist/font-handling/index.d.ts: -------------------------------------------------------------------------------- 1 | export declare const get_font_as_buffer: (location: string) => Promise; 2 | -------------------------------------------------------------------------------- /dist/types/types.js: -------------------------------------------------------------------------------- 1 | // Type definitions for the package 2 | // Import the global declarations 3 | import './global.d.ts'; 4 | -------------------------------------------------------------------------------- /dist/vite/index.d.ts: -------------------------------------------------------------------------------- 1 | import type { Plugin } from 'vite'; 2 | export declare function svelte_component_to_image(): Plugin; 3 | -------------------------------------------------------------------------------- /dist/processing/png_render.d.ts: -------------------------------------------------------------------------------- 1 | export declare const png_render: (svg: string, options: ResvgOptions, debug: boolean) => Promise; 2 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vite'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()] 6 | }); 7 | -------------------------------------------------------------------------------- /dist/processing/svg_render.d.ts: -------------------------------------------------------------------------------- 1 | import type { RenderOptions } from '../types/types.js'; 2 | export declare const svg_render: (nodes: any, options: RenderOptions) => Promise; 3 | -------------------------------------------------------------------------------- /src/demo.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | 3 | describe('sum test', () => { 4 | it('adds 1 + 2 to equal 3', () => { 5 | expect(1 + 2).toBe(3); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /src/index.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | 3 | describe('sum test', () => { 4 | it('adds 1 + 2 to equal 3', () => { 5 | expect(1 + 2).toBe(3); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | .npmrc 12 | CLAUDE.md 13 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /tests/test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from '@playwright/test'; 2 | 3 | test('index page has expected h1', async ({ page }) => { 4 | await page.goto('/'); 5 | expect(await page.textContent('h1')).toBe('Welcome to SvelteKit'); 6 | }); 7 | -------------------------------------------------------------------------------- /dist/index.d.ts: -------------------------------------------------------------------------------- 1 | import type { RenderOptions, FontOptions } from './types/types.js'; 2 | export declare const image_from_component: (component: any, options: RenderOptions) => Promise; 3 | export type { RenderOptions, FontOptions }; 4 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %sveltekit.head% 7 | 8 | 9 |
%sveltekit.body%
10 | 11 | 12 | -------------------------------------------------------------------------------- /playwright.config.ts: -------------------------------------------------------------------------------- 1 | import type { PlaywrightTestConfig } from '@playwright/test'; 2 | 3 | const config: PlaywrightTestConfig = { 4 | webServer: { 5 | command: 'npm run build && npm run preview', 6 | port: 4173 7 | }, 8 | testDir: 'tests' 9 | }; 10 | 11 | export default config; 12 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": [ 7 | "prettier-plugin-svelte" 8 | ], 9 | "overrides": [ 10 | { 11 | "files": "*.svelte", 12 | "options": { 13 | "parser": "svelte" 14 | } 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // See https://kit.svelte.dev/docs/types#app 4 | // for information about these interfaces 5 | // and what to do when importing types 6 | declare namespace App { 7 | // interface Error {} 8 | // interface Locals {} 9 | // interface PageData {} 10 | // interface Platform {} 11 | } 12 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true, 12 | "moduleResolution": "bundler" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dist/processing/nodes_render.d.ts: -------------------------------------------------------------------------------- 1 | interface VNode { 2 | type: string; 3 | props: { 4 | style?: Record; 5 | children?: string | VNode | VNode[]; 6 | [prop: string]: any; 7 | }; 8 | } 9 | export declare const nodes_render: (Component: any, props?: { 10 | [key: string]: any; 11 | }, debug?: boolean) => Promise; 12 | export {}; 13 | -------------------------------------------------------------------------------- /dist/types/types.d.ts: -------------------------------------------------------------------------------- 1 | import './global.d.ts'; 2 | export interface RenderOptions { 3 | width: number; 4 | height: number; 5 | props?: { 6 | [key: string]: any; 7 | }; 8 | fonts: FontOptions[]; 9 | debug?: boolean; 10 | } 11 | export interface FontOptions { 12 | name: string; 13 | url?: string; 14 | weight?: number; 15 | style?: string; 16 | data?: Buffer | ArrayBuffer; 17 | } 18 | -------------------------------------------------------------------------------- /src/lib/vite/index.ts: -------------------------------------------------------------------------------- 1 | import type { Plugin } from 'vite'; 2 | 3 | export function svelte_component_to_image(): Plugin { 4 | return { 5 | name: 'vite-plugin-svelte-component-to-image', 6 | config() { 7 | return { 8 | ssr: { 9 | // add this library to the external list so that it is not bundled 10 | // in the server bundle, since resvg can't be handled by Vite 11 | external: ['svelte-component-to-image'] 12 | } 13 | }; 14 | } 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /dist/vite/index.js: -------------------------------------------------------------------------------- 1 | export function svelte_component_to_image() { 2 | return { 3 | name: 'vite-plugin-svelte-component-to-image', 4 | config() { 5 | return { 6 | ssr: { 7 | // add this library to the external list so that it is not bundled 8 | // in the server bundle, since resvg can't be handled by Vite 9 | external: ['svelte-component-to-image'] 10 | } 11 | }; 12 | } 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 7 | // for more information about preprocessors 8 | preprocess: vitePreprocess(), 9 | 10 | kit: { 11 | adapter: adapter(), 12 | // You can add aliases here 13 | alias: { 14 | $lib: './src/lib' 15 | } 16 | } 17 | }; 18 | 19 | export default config; 20 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: '@typescript-eslint/parser', 4 | extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], 5 | plugins: ['svelte3', '@typescript-eslint'], 6 | ignorePatterns: ['*.cjs'], 7 | overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], 8 | settings: { 9 | 'svelte3/typescript': () => require('typescript') 10 | }, 11 | parserOptions: { 12 | sourceType: 'module', 13 | ecmaVersion: 2020 14 | }, 15 | env: { 16 | browser: true, 17 | es2017: true, 18 | node: true 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /src/lib/types/types.ts: -------------------------------------------------------------------------------- 1 | // Type definitions for the package 2 | // Import the global declarations 3 | import './global.d.ts'; 4 | 5 | // Re-export the RenderOptions interface for convenience 6 | export interface RenderOptions { 7 | width: number; 8 | height: number; 9 | props?: { 10 | [key: string]: any; 11 | }; 12 | fonts: FontOptions[]; 13 | debug?: boolean; 14 | } 15 | 16 | // Re-export FontOptions for convenience 17 | export interface FontOptions { 18 | name: string; 19 | url?: string; 20 | weight?: number; 21 | style?: string; 22 | data?: Buffer | ArrayBuffer; 23 | } 24 | -------------------------------------------------------------------------------- /src/lib/processing/png_render.ts: -------------------------------------------------------------------------------- 1 | // Take SVG and render it into a PNG 2 | import { Resvg } from '@resvg/resvg-js'; 3 | 4 | export const png_render = async (svg: string, options: ResvgOptions, debug: boolean) => { 5 | try { 6 | const resvg = new Resvg(svg, { 7 | fitTo: { 8 | mode: 'width', 9 | value: options.width 10 | } 11 | }); 12 | 13 | const pngData = resvg.render(); 14 | const pngBuffer = pngData.asPng(); 15 | 16 | return pngBuffer; 17 | } catch (error) { 18 | if (debug) { 19 | console.error('An error happened in the PNG_RENDER function', error); 20 | } 21 | // Re-throw the error for proper handling 22 | throw error; 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /dist/global.d.ts: -------------------------------------------------------------------------------- 1 | // Global type declarations for svelte-component-to-image 2 | 3 | declare global { 4 | // Define the VNode interface globally 5 | interface VNode { 6 | type: string; 7 | props: { 8 | style?: Record; 9 | children?: string | VNode | VNode[]; 10 | [prop: string]: any; 11 | }; 12 | } 13 | 14 | interface ResvgOptions { 15 | width: number; 16 | height?: number; 17 | } 18 | 19 | interface FontOptions { 20 | name: string; 21 | url?: string; 22 | weight?: number; 23 | style?: string; 24 | data?: Buffer | ArrayBuffer; 25 | } 26 | } 27 | 28 | // Export an empty object to make this a module 29 | export { }; 30 | -------------------------------------------------------------------------------- /src/lib/global.d.ts: -------------------------------------------------------------------------------- 1 | // Global type declarations for svelte-component-to-image 2 | 3 | declare global { 4 | // Define the VNode interface globally 5 | interface VNode { 6 | type: string; 7 | props: { 8 | style?: Record; 9 | children?: string | VNode | VNode[]; 10 | [prop: string]: any; 11 | }; 12 | } 13 | 14 | interface ResvgOptions { 15 | width: number; 16 | height?: number; 17 | } 18 | 19 | interface FontOptions { 20 | name: string; 21 | url?: string; 22 | weight?: number; 23 | style?: string; 24 | data?: Buffer | ArrayBuffer; 25 | } 26 | } 27 | 28 | // Export an empty object to make this a module 29 | export { }; 30 | -------------------------------------------------------------------------------- /dist/index.js: -------------------------------------------------------------------------------- 1 | // component to image pipeline 2 | import { nodes_render } from './processing/nodes_render.js'; 3 | import { svg_render } from './processing/svg_render.js'; 4 | import { png_render } from './processing/png_render.js'; 5 | export const image_from_component = async (component, options) => { 6 | try { 7 | // the major steps 8 | const nodes = await nodes_render(component, options.props, options.debug); 9 | const svg = await svg_render(nodes, options); 10 | const png = await png_render(svg, options, options.debug ?? false); 11 | return png; 12 | } 13 | catch (error) { 14 | console.error(error); 15 | } 16 | return undefined; 17 | }; 18 | -------------------------------------------------------------------------------- /dist/font-handling/index.js: -------------------------------------------------------------------------------- 1 | function isValidUrl(location) { 2 | try { 3 | new URL(location); 4 | return true; 5 | } 6 | catch { 7 | return false; 8 | } 9 | } 10 | // get local font and render as an array buffer 11 | export const get_font_as_buffer = async (location) => { 12 | // check to make sure that we have a full URL 13 | if (!isValidUrl(location)) { 14 | console.error(`Font locations need to be specified with a full URL to work`); 15 | throw new Error(`Invalid URL: ${location}`); 16 | } 17 | // the renderer 18 | const font = await (await fetch(location)).blob(); 19 | const buf = await font.arrayBuffer(); 20 | return buf; 21 | }; 22 | -------------------------------------------------------------------------------- /src/lib/font-handling/index.ts: -------------------------------------------------------------------------------- 1 | function isValidUrl(location: string): boolean { 2 | try { 3 | new URL(location); 4 | return true; 5 | } catch { 6 | return false; 7 | } 8 | } 9 | // get local font and render as an array buffer 10 | export const get_font_as_buffer = async (location: string) => { 11 | // check to make sure that we have a full URL 12 | if (!isValidUrl(location)) { 13 | console.error( 14 | `Font locations need to be specified with a full URL to work`, 15 | ); 16 | throw new Error(`Invalid URL: ${location}`); 17 | } 18 | 19 | // the renderer 20 | const font = await (await fetch(location)).blob(); 21 | const buf = await font.arrayBuffer(); 22 | return buf; 23 | }; 24 | -------------------------------------------------------------------------------- /dist/processing/png_render.js: -------------------------------------------------------------------------------- 1 | // Take SVG and render it into a PNG 2 | import { Resvg } from '@resvg/resvg-js'; 3 | export const png_render = async (svg, options, debug) => { 4 | try { 5 | const resvg = new Resvg(svg, { 6 | fitTo: { 7 | mode: 'width', 8 | value: options.width 9 | } 10 | }); 11 | const pngData = resvg.render(); 12 | const pngBuffer = pngData.asPng(); 13 | return pngBuffer; 14 | } 15 | catch (error) { 16 | if (debug) { 17 | console.error('An error happened in the PNG_RENDER function', error); 18 | } 19 | // Re-throw the error for proper handling 20 | throw error; 21 | } 22 | }; 23 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import prettier from 'eslint-config-prettier'; 2 | import js from '@eslint/js'; 3 | import svelte from 'eslint-plugin-svelte'; 4 | import globals from 'globals'; 5 | import ts from 'typescript-eslint'; 6 | 7 | export default ts.config( 8 | js.configs.recommended, 9 | ...ts.configs.recommended, 10 | ...svelte.configs['flat/recommended'], 11 | prettier, 12 | ...svelte.configs['flat/prettier'], 13 | { 14 | languageOptions: { 15 | globals: { 16 | ...globals.browser, 17 | ...globals.node 18 | } 19 | } 20 | }, 21 | { 22 | files: ['**/*.svelte'], 23 | 24 | languageOptions: { 25 | parserOptions: { 26 | parser: ts.parser 27 | } 28 | } 29 | }, 30 | { 31 | ignores: ['build/', '.svelte-kit/', 'dist/'] 32 | } 33 | ); 34 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 |
8 | testing the thing 9 |

10 | open in new windows: /image?text={value}&second={second} 11 |

12 |
13 |
14 | 15 | 16 |
17 | 18 |
19 | 20 |

svelte-component-to-image

21 |

Visit https://github.com/StephenGunn/svelte-component-to-image for instructions.

22 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | // component to image pipeline 2 | import { nodes_render } from './processing/nodes_render.js'; 3 | import { svg_render } from './processing/svg_render.js'; 4 | import { png_render } from './processing/png_render.js'; 5 | import type { RenderOptions, FontOptions } from './types/types.js'; 6 | 7 | export const image_from_component = async ( 8 | component: any, 9 | options: RenderOptions 10 | ): Promise => { 11 | try { 12 | // the major steps 13 | const nodes = await nodes_render(component, options.props, options.debug); 14 | const svg = await svg_render(nodes, options); 15 | const png = await png_render(svg, options, options.debug ?? false); 16 | 17 | return png; 18 | } catch (error) { 19 | console.error(error); 20 | } 21 | 22 | return undefined; 23 | }; 24 | 25 | // Export types 26 | export type { RenderOptions, FontOptions }; 27 | -------------------------------------------------------------------------------- /fonts/README.md: -------------------------------------------------------------------------------- 1 | # Pre-approved Fonts 2 | 3 | This directory contains fonts that have been tested and work well with svelte-component-to-image. 4 | 5 | ## Using These Fonts 6 | 7 | 1. Copy the font files you want to use to your project's `static` directory 8 | 2. Reference them in your image generation endpoint: 9 | 10 | ```js 11 | const options: RenderOptions = { 12 | fonts: [ 13 | { 14 | name: 'YourFontName', 15 | url: `${url.origin}/your-font.ttf`, 16 | weight: 400, 17 | style: 'normal' 18 | } 19 | ] 20 | }; 21 | ``` 22 | 23 | ## Contributing Fonts 24 | 25 | Feel free to contribute fonts that work well with this library! Please ensure: 26 | 27 | 1. The font is properly licensed for redistribution 28 | 2. Include license information in your PR 29 | 3. Test that the font renders correctly with Satori 30 | 4. Use descriptive filenames (lowercase, no spaces) 31 | 32 | Note: WOFF2 format is not currently supported by Satori. -------------------------------------------------------------------------------- /src/routes/image/HelloWorld.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 |
13 |

14 | {text} world! 15 |

16 |
17 | {second} 18 |
19 |
20 | 21 | 48 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Stephen Gunn 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /src/routes/image/+server.ts: -------------------------------------------------------------------------------- 1 | import { error } from '@sveltejs/kit'; 2 | import type { RequestHandler } from './$types'; 3 | 4 | // import my test stuff 5 | import { image_from_component, type RenderOptions } from '$lib/index.js'; 6 | 7 | import HelloWorld from './HelloWorld.svelte'; 8 | 9 | export const GET: RequestHandler = (async ({ url }) => { 10 | try { 11 | const options: RenderOptions = { 12 | width: 1200, 13 | height: 600, 14 | props: { 15 | text: url.searchParams.get('text') ?? 'text not found', 16 | second: url.searchParams.get('second') ?? 'text not found' 17 | }, 18 | fonts: [ 19 | { 20 | name: 'Jost', 21 | url: `${url.origin}/jost.woff`, 22 | weight: 400, 23 | style: 'normal' 24 | } 25 | ], 26 | debug: true 27 | }; 28 | const image = await image_from_component(HelloWorld, options); 29 | const response = new Response(image); 30 | response.headers.append('content-type', 'image/png'); 31 | return response; 32 | } catch (e) { 33 | console.error(e); 34 | error(500, 'Error'); 35 | } 36 | }) satisfies RequestHandler; 37 | -------------------------------------------------------------------------------- /dist/processing/nodes_render.js: -------------------------------------------------------------------------------- 1 | // Take a svelte component, render it down to html, inline the styles 2 | // then return a set of satori ready nodes 3 | import juice from 'juice'; 4 | import { html as to_satori_nodes } from 'satori-html'; 5 | import { render } from 'svelte/server'; 6 | export const nodes_render = async (Component, props, debug) => { 7 | // render the body and the head 8 | const { head, body } = render(Component, { props }); 9 | if (debug) { 10 | console.log('CSS:', head); 11 | console.log('HTML:', body); 12 | } 13 | if (!head) { 14 | throw new Error('CSS not being returned from the Svelte component. Please add to the top of your image component.'); 15 | } 16 | if (!body) { 17 | throw new Error('No HTML returned from component.'); 18 | } 19 | const inline_html = juice(head + body, {}); 20 | if (debug) { 21 | console.log('INLINED HTML:', inline_html); 22 | } 23 | if (!inline_html) { 24 | throw new Error('Trouble inlining the CSS.'); 25 | } 26 | // render satori friendly HTML and return it 27 | const satori_nodes = to_satori_nodes(inline_html); 28 | if (debug) { 29 | console.log('SATORI NODES:', satori_nodes); 30 | } 31 | if (!satori_nodes) { 32 | throw new Error('Trouble converting HTML to Satori nodes'); 33 | } 34 | return satori_nodes; 35 | }; 36 | -------------------------------------------------------------------------------- /src/lib/processing/nodes_render.ts: -------------------------------------------------------------------------------- 1 | // Take a svelte component, render it down to html, inline the styles 2 | // then return a set of satori ready nodes 3 | import juice from 'juice'; 4 | import { html as to_satori_nodes } from 'satori-html'; 5 | import { render } from 'svelte/server'; 6 | 7 | interface VNode { 8 | type: string; 9 | props: { 10 | style?: Record; 11 | children?: string | VNode | VNode[]; 12 | [prop: string]: any; 13 | }; 14 | } 15 | 16 | export const nodes_render = async ( 17 | Component: any, 18 | props?: { 19 | [key: string]: any; 20 | }, 21 | debug?: boolean 22 | ) => { 23 | // render the body and the head 24 | const { head, body } = render(Component, { props }); 25 | 26 | if (debug) { 27 | console.log('CSS:', head); 28 | console.log('HTML:', body); 29 | } 30 | 31 | if (!head) { 32 | throw new Error( 33 | 'CSS not being returned from the Svelte component. Please add to the top of your image component.' 34 | ); 35 | } 36 | 37 | if (!body) { 38 | throw new Error('No HTML returned from component.'); 39 | } 40 | 41 | const inline_html: string = juice(head + body, {}); 42 | 43 | if (debug) { 44 | console.log('INLINED HTML:', inline_html); 45 | } 46 | 47 | if (!inline_html) { 48 | throw new Error('Trouble inlining the CSS.'); 49 | } 50 | 51 | // render satori friendly HTML and return it 52 | const satori_nodes: VNode = to_satori_nodes(inline_html); 53 | 54 | if (debug) { 55 | console.log('SATORI NODES:', satori_nodes); 56 | } 57 | 58 | if (!satori_nodes) { 59 | throw new Error('Trouble converting HTML to Satori nodes'); 60 | } 61 | 62 | return satori_nodes; 63 | }; 64 | -------------------------------------------------------------------------------- /dist/processing/svg_render.js: -------------------------------------------------------------------------------- 1 | import satori from 'satori'; 2 | import { get_font_as_buffer } from '../font-handling/index.js'; 3 | export const svg_render = async (nodes, options) => { 4 | // build options object for satori 5 | let satori_options = { 6 | width: options.width, 7 | height: options.height, 8 | fonts: [] 9 | }; 10 | // render each font into an array buffer 11 | if (options.fonts.length > 0) { 12 | let rendered_fonts = []; 13 | for (const font of options.fonts) { 14 | if (!font.url) 15 | console.error(); 16 | rendered_fonts.push({ 17 | name: font.name, 18 | data: await get_font_as_buffer(font.url), 19 | weight: font.weight, 20 | style: font.style 21 | }); 22 | } 23 | if (rendered_fonts.length !== options.fonts.length) { 24 | throw new Error('There was a problem rendering a font.'); 25 | } 26 | satori_options = { 27 | width: options.width, 28 | height: options.height, 29 | fonts: rendered_fonts 30 | }; 31 | } 32 | if (options.debug) { 33 | console.log('NUMBER OF FONT FILES RENDERED:', satori_options.fonts.length); 34 | console.log('WIDTH:', satori_options.width); 35 | console.log('HEIGHT:', satori_options.height); 36 | } 37 | // do the rendering 38 | const svg = await satori(nodes, satori_options); 39 | if (options.debug && svg) { 40 | // something to do a basic check to see if the SVG is valid 41 | console.log('An SVG was rendered successfully.'); 42 | } 43 | if (!svg) { 44 | throw new Error('There was a problem rendering the SVG.'); 45 | } 46 | return svg; 47 | }; 48 | -------------------------------------------------------------------------------- /src/lib/processing/svg_render.ts: -------------------------------------------------------------------------------- 1 | // Take satori friendly HTML and render it to an SVG 2 | import type { RenderOptions } from '../types/types.js'; 3 | import satori from 'satori'; 4 | import { get_font_as_buffer } from '../font-handling/index.js'; 5 | 6 | export const svg_render = async (nodes: any, options: RenderOptions) => { 7 | // build options object for satori 8 | let satori_options = { 9 | width: options.width, 10 | height: options.height, 11 | fonts: [] 12 | }; 13 | 14 | // render each font into an array buffer 15 | if (options.fonts.length > 0) { 16 | let rendered_fonts = []; 17 | for (const font of options.fonts) { 18 | if (!font.url) console.error(); 19 | rendered_fonts.push({ 20 | name: font.name, 21 | data: await get_font_as_buffer(font.url!), 22 | weight: font.weight, 23 | style: font.style 24 | }); 25 | } 26 | 27 | if (rendered_fonts.length !== options.fonts.length) { 28 | throw new Error('There was a problem rendering a font.'); 29 | } 30 | 31 | satori_options = { 32 | width: options.width, 33 | height: options.height, 34 | fonts: rendered_fonts 35 | }; 36 | } 37 | 38 | if (options.debug) { 39 | console.log('NUMBER OF FONT FILES RENDERED:', satori_options.fonts.length); 40 | console.log('WIDTH:', satori_options.width); 41 | console.log('HEIGHT:', satori_options.height); 42 | } 43 | 44 | // do the rendering 45 | const svg = await satori(nodes, satori_options); 46 | 47 | if (options.debug && svg) { 48 | // something to do a basic check to see if the SVG is valid 49 | console.log('An SVG was rendered successfully.'); 50 | } 51 | 52 | if (!svg) { 53 | throw new Error('There was a problem rendering the SVG.'); 54 | } 55 | 56 | return svg; 57 | }; 58 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-component-to-image", 3 | "version": "2.0.4", 4 | "license": "MIT", 5 | "author": "Stephen Gunn", 6 | "homepage": "https://github.com/StephenGunn/svelte-component-to-image", 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/StephenGunn/svelte-component-to-image.git" 10 | }, 11 | "scripts": { 12 | "dev": "vite dev", 13 | "build": "svelte-kit sync && svelte-package", 14 | "test": "playwright test && npm run test:unit -- --run", 15 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 16 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 17 | "test:unit": "vitest", 18 | "lint": "eslint .", 19 | "format": "prettier --write ." 20 | }, 21 | "dependencies": { 22 | "@resvg/resvg-js": "^2.6.2", 23 | "juice": "^11.0.0", 24 | "satori": "^0.11.3", 25 | "satori-html": "^0.3.2" 26 | }, 27 | "peerDependencies": { 28 | "svelte": "^5.0.0-next.0" 29 | }, 30 | "devDependencies": { 31 | "@playwright/test": "^1.48.2", 32 | "@sveltejs/adapter-auto": "^3.3.1", 33 | "@sveltejs/kit": "^2.8.0", 34 | "@sveltejs/package": "^2.3.7", 35 | "@sveltejs/vite-plugin-svelte": "^4.0.0", 36 | "@types/eslint": "^9.6.1", 37 | "@typescript-eslint/eslint-plugin": "^8.13.0", 38 | "@typescript-eslint/parser": "^8.13.0", 39 | "eslint": "^9.14.0", 40 | "eslint-config-prettier": "^9.1.0", 41 | "eslint-plugin-svelte": "^2.46.0", 42 | "globals": "^15.12.0", 43 | "prettier": "^3.3.3", 44 | "prettier-plugin-svelte": "^3.2.7", 45 | "svelte": "^5.1.13", 46 | "svelte-check": "^4.0.6", 47 | "tslib": "^2.8.1", 48 | "typescript": "^5.6.3", 49 | "typescript-eslint": "^8.13.0", 50 | "vite": "^5.4.10", 51 | "vitest": "^2.1.4" 52 | }, 53 | "type": "module", 54 | "keywords": [ 55 | "svelte" 56 | ], 57 | "exports": { 58 | "./package.json": "./package.json", 59 | ".": { 60 | "types": "./dist/index.d.ts", 61 | "default": "./dist/index.js" 62 | }, 63 | "./vite": { 64 | "types": "./dist/vite/index.d.ts", 65 | "default": "./dist/vite/index.js" 66 | } 67 | }, 68 | "files": [ 69 | "dist" 70 | ], 71 | "typesVersions": { 72 | ">4.0": { 73 | "font-handling": [ 74 | "./dist/font-handling/index.d.ts" 75 | ], 76 | "index.d.ts": [ 77 | "./dist/index.d.ts" 78 | ], 79 | "vite": [ 80 | "./dist/vite/index.d.ts" 81 | ], 82 | "processing/nodes_render": [ 83 | "./dist/processing/nodes_render.d.ts" 84 | ], 85 | "processing/png_render": [ 86 | "./dist/processing/png_render.d.ts" 87 | ], 88 | "processing/svg_render": [ 89 | "./dist/processing/svg_render.d.ts" 90 | ] 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # svelte-component-to-image 2 | 3 | A package for easily rendering .png images from svelte components in SvelteKit. Inspired by Vercel's 4 | [`OG Image Generation`](https://vercel.com/docs/concepts/functions/edge-functions/og-image-generation) tool. 5 | 6 | Good for rendering dynamic Open Graph images quickly and effeciently without having to use canvas. 7 | 8 | - [Demo + Blog post about how to generate OG images](https://jovianmoon.io/posts/generating-open-graph-images-with-sveltekit-components) 9 | - [Minimal Deployment Demo on Vercel](https://github.com/StephenGunn/skcti) - A quick reference if you need it. 10 | 11 | ## Features 12 | 13 | - Renders a normal svelte component as a png 14 | - Component props are supported for dynamic image generation 15 | - Use basic CSS like flexbox and absolute positioning ([See valid CSS](https://github.com/vercel/satori#css)) 16 | - Lightweight and fast (doesn't use canvas or puppeteer) 17 | - Load custom fonts: tff, otf, woff accepted (woff2 not accepted currently) 18 | 19 | ## Svelte 5 Usage 20 | 21 | You will need to add `` to every component you want to render as an image. You will see an error if you don't and the component will not render. 22 | 23 | ## Svelte 4 Usage 24 | 25 | The Svelte 4 version is available as the 0.1.0 release. 26 | 27 | ## Installation 28 | 29 | ```bash 30 | pnpm add svelte-component-to-image 31 | ``` 32 | 33 | > **Note:** Install as a regular dependency, not a dev dependency. This library is needed at runtime and some bundlers (e.g., adapter-node) handle dev dependencies differently, which can cause production build failures. 34 | 35 | ### Vite Plugin 36 | 37 | Every package that uses `svelte` as a peer dependency is automatically added to the `noExternal` of `vite` but since vite can't handle the native bindings of `@resvg/resvg-js` you need to add this library to `ssr.external`...to provide you with a better DX this library ships with a vite plugin so you only need to do this 38 | 39 | ```diff 40 | import { sveltekit } from '@sveltejs/kit/vite'; 41 | +import { svelte_component_to_image } from 'svelte-component-to-image/vite'; 42 | import { defineConfig } from 'vite'; 43 | 44 | export default defineConfig({ 45 | - plugins: [sveltekit()] 46 | + plugins: [sveltekit(), svelte_component_to_image()] 47 | }); 48 | ``` 49 | 50 | ### Tested On 51 | 52 | - Vercel (working - requires serverless configuration) 53 | - Netlify (working - requires serverless configuration) 54 | - Node.js servers (working - no additional configuration needed) 55 | - Cloudflare Pages (not working - does not support native modules) 56 | 57 | ## Usage 58 | 59 | This package is NOT for rendering normal svelte components as images, you will need to write your components with image rendering in mind. The guidelines are set by ([Satori's CSS Guidelines](https://github.com/vercel/satori#css)) - you will need to write your markup and css with these factors in mind. 60 | 61 | ### Create A Component 62 | 63 | Create a `.svelte` component with JS/HTML/CSS. You can pass props or use additional technologies 64 | that require preproccesors like TypeScript or SASS. 65 | 66 | #### HelloWorld.svelte 67 | 68 | ```svelte 69 | 70 | 71 | 74 | 75 |
76 |

77 | {text} world! 78 |

79 |
80 | 81 | 100 | ``` 101 | 102 | ### +server.ts Endpoint 103 | 104 | Create a +server.ts endpoint to render and serve the image. Import the package and options type. 105 | 106 | More on how the font importing works below. 107 | 108 | #### image/+server.ts 109 | 110 | ```TS 111 | import { error } from '@sveltejs/kit' 112 | import { dev } from '$app/environment'; 113 | import type { RequestHandler } from './$types' 114 | 115 | // Svelte Component To Image 116 | import { image_from_component, type RenderOptions } from 'svelte-component-to-image' 117 | 118 | // Normal .svelte component 119 | import HelloWorld from './HelloWorld.svelte' 120 | 121 | export const GET: RequestHandler = (async ({url}) => { 122 | try { 123 | const options: RenderOptions = { 124 | width: 1200, 125 | height: 600, 126 | props: { 127 | text: url.searchParams.get('text') ?? 'text not found' 128 | }, 129 | fonts: [ 130 | { 131 | name: 'Typewriter', 132 | url: `${url.origin}/TYPEWR__.TTF`, 133 | weight: 400, 134 | style: 'normal' 135 | } 136 | ], 137 | debug: false // you can omit this or set it to true to see logs of data, it can help for debug edge cases 138 | } 139 | 140 | // pass the component and options to the package 141 | const image = await image_from_component(HelloWorld, options) 142 | const response = new Response(image) 143 | if(!dev){ 144 | // caching on dev will make it hard to see iterations 145 | response.headers.append('Content-Type', 'image/png') 146 | response.headers.append('Cache-Control', 's-maxage=604800, stale-while-revalidate=604800') 147 | } 148 | return response 149 | } catch (e) { 150 | console.error(e) 151 | throw error(500, 'Error trying to generate image from component.') 152 | } 153 | }) satisfies RequestHandler 154 | ``` 155 | 156 | ### Font Importing 157 | 158 | You can import as many ttf, otf, and woff fonts as you want to use inside of your component. 159 | Although, importing 100 fonts is going to affect server load and speed. 160 | 161 | **woff2 files are not currently supported.** 162 | 163 | Fonts files can be local or remote. They need a full URL to be properly loaded. Local fonts 164 | stored in `/static` can be loaded using `${url.origin}/` as long as `{url}` is made available 165 | in the endpoint. 166 | 167 | Once the font is loaded, you can reference them in the CSS using `font-family`. If only one font is loaded, 168 | it will be the default. 169 | 170 | ### Not All Fonts Work! 171 | 172 | Not all fonts work! If a font fails to load it will break the image rendering. I am not sure what causes this or which fonts are "approved" - but I have had luck using [Font Squirrel's Webfont Generator](https://www.fontsquirrel.com/tools/webfont-generator) to convert fonts to web-safe formats and using those. 173 | 174 | ### 1 font file per style / weight 175 | 176 | If you're trying to use a variable weight font like Jost, you will need to use Font Squirrel to generate a separate file per weight and style. It's a pain, I know. 177 | 178 | ### Images 179 | 180 | Images can be used and rendered like normal. You will want to set the height and width. 181 | 182 | ```HTML 183 | 184 | ``` 185 | 186 | ### More info 187 | 188 | This uses Vercel's Satori. You can find out more about what is and isn't supported by reading it's docs: 189 | [Vercel's Satori](https://github.com/vercel/satori) 190 | 191 | ## License 192 | 193 | MIT 194 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@resvg/resvg-js': 12 | specifier: ^2.6.2 13 | version: 2.6.2 14 | juice: 15 | specifier: ^11.0.0 16 | version: 11.0.0 17 | satori: 18 | specifier: ^0.11.3 19 | version: 0.11.3 20 | satori-html: 21 | specifier: ^0.3.2 22 | version: 0.3.2 23 | devDependencies: 24 | '@playwright/test': 25 | specifier: ^1.48.2 26 | version: 1.48.2 27 | '@sveltejs/adapter-auto': 28 | specifier: ^3.3.1 29 | version: 3.3.1(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)))(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0))) 30 | '@sveltejs/kit': 31 | specifier: ^2.8.0 32 | version: 2.8.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)))(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)) 33 | '@sveltejs/package': 34 | specifier: ^2.3.7 35 | version: 2.3.7(svelte@5.1.13)(typescript@5.6.3) 36 | '@sveltejs/vite-plugin-svelte': 37 | specifier: ^4.0.0 38 | version: 4.0.4(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)) 39 | '@types/eslint': 40 | specifier: ^9.6.1 41 | version: 9.6.1 42 | '@typescript-eslint/eslint-plugin': 43 | specifier: ^8.13.0 44 | version: 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.6.3))(eslint@9.30.0)(typescript@5.6.3) 45 | '@typescript-eslint/parser': 46 | specifier: ^8.13.0 47 | version: 8.35.0(eslint@9.30.0)(typescript@5.6.3) 48 | eslint: 49 | specifier: ^9.14.0 50 | version: 9.30.0 51 | eslint-config-prettier: 52 | specifier: ^9.1.0 53 | version: 9.1.0(eslint@9.30.0) 54 | eslint-plugin-svelte: 55 | specifier: ^2.46.0 56 | version: 2.46.0(eslint@9.30.0)(svelte@5.1.13) 57 | globals: 58 | specifier: ^15.12.0 59 | version: 15.15.0 60 | prettier: 61 | specifier: ^3.3.3 62 | version: 3.3.3 63 | prettier-plugin-svelte: 64 | specifier: ^3.2.7 65 | version: 3.2.7(prettier@3.3.3)(svelte@5.1.13) 66 | svelte: 67 | specifier: ^5.1.13 68 | version: 5.1.13 69 | svelte-check: 70 | specifier: ^4.0.6 71 | version: 4.2.2(svelte@5.1.13)(typescript@5.6.3) 72 | tslib: 73 | specifier: ^2.8.1 74 | version: 2.8.1 75 | typescript: 76 | specifier: ^5.6.3 77 | version: 5.6.3 78 | typescript-eslint: 79 | specifier: ^8.13.0 80 | version: 8.35.0(eslint@9.30.0)(typescript@5.6.3) 81 | vite: 82 | specifier: ^5.4.10 83 | version: 5.4.14(@types/node@22.9.0) 84 | vitest: 85 | specifier: ^2.1.4 86 | version: 2.1.9(@types/node@22.9.0) 87 | 88 | packages: 89 | 90 | '@ampproject/remapping@2.3.0': 91 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 92 | engines: {node: '>=6.0.0'} 93 | 94 | '@esbuild/aix-ppc64@0.21.5': 95 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 96 | engines: {node: '>=12'} 97 | cpu: [ppc64] 98 | os: [aix] 99 | 100 | '@esbuild/android-arm64@0.21.5': 101 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 102 | engines: {node: '>=12'} 103 | cpu: [arm64] 104 | os: [android] 105 | 106 | '@esbuild/android-arm@0.21.5': 107 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 108 | engines: {node: '>=12'} 109 | cpu: [arm] 110 | os: [android] 111 | 112 | '@esbuild/android-x64@0.21.5': 113 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 114 | engines: {node: '>=12'} 115 | cpu: [x64] 116 | os: [android] 117 | 118 | '@esbuild/darwin-arm64@0.21.5': 119 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 120 | engines: {node: '>=12'} 121 | cpu: [arm64] 122 | os: [darwin] 123 | 124 | '@esbuild/darwin-x64@0.21.5': 125 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 126 | engines: {node: '>=12'} 127 | cpu: [x64] 128 | os: [darwin] 129 | 130 | '@esbuild/freebsd-arm64@0.21.5': 131 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 132 | engines: {node: '>=12'} 133 | cpu: [arm64] 134 | os: [freebsd] 135 | 136 | '@esbuild/freebsd-x64@0.21.5': 137 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 138 | engines: {node: '>=12'} 139 | cpu: [x64] 140 | os: [freebsd] 141 | 142 | '@esbuild/linux-arm64@0.21.5': 143 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 144 | engines: {node: '>=12'} 145 | cpu: [arm64] 146 | os: [linux] 147 | 148 | '@esbuild/linux-arm@0.21.5': 149 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 150 | engines: {node: '>=12'} 151 | cpu: [arm] 152 | os: [linux] 153 | 154 | '@esbuild/linux-ia32@0.21.5': 155 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 156 | engines: {node: '>=12'} 157 | cpu: [ia32] 158 | os: [linux] 159 | 160 | '@esbuild/linux-loong64@0.21.5': 161 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 162 | engines: {node: '>=12'} 163 | cpu: [loong64] 164 | os: [linux] 165 | 166 | '@esbuild/linux-mips64el@0.21.5': 167 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 168 | engines: {node: '>=12'} 169 | cpu: [mips64el] 170 | os: [linux] 171 | 172 | '@esbuild/linux-ppc64@0.21.5': 173 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 174 | engines: {node: '>=12'} 175 | cpu: [ppc64] 176 | os: [linux] 177 | 178 | '@esbuild/linux-riscv64@0.21.5': 179 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 180 | engines: {node: '>=12'} 181 | cpu: [riscv64] 182 | os: [linux] 183 | 184 | '@esbuild/linux-s390x@0.21.5': 185 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 186 | engines: {node: '>=12'} 187 | cpu: [s390x] 188 | os: [linux] 189 | 190 | '@esbuild/linux-x64@0.21.5': 191 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 192 | engines: {node: '>=12'} 193 | cpu: [x64] 194 | os: [linux] 195 | 196 | '@esbuild/netbsd-x64@0.21.5': 197 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 198 | engines: {node: '>=12'} 199 | cpu: [x64] 200 | os: [netbsd] 201 | 202 | '@esbuild/openbsd-x64@0.21.5': 203 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 204 | engines: {node: '>=12'} 205 | cpu: [x64] 206 | os: [openbsd] 207 | 208 | '@esbuild/sunos-x64@0.21.5': 209 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 210 | engines: {node: '>=12'} 211 | cpu: [x64] 212 | os: [sunos] 213 | 214 | '@esbuild/win32-arm64@0.21.5': 215 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 216 | engines: {node: '>=12'} 217 | cpu: [arm64] 218 | os: [win32] 219 | 220 | '@esbuild/win32-ia32@0.21.5': 221 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 222 | engines: {node: '>=12'} 223 | cpu: [ia32] 224 | os: [win32] 225 | 226 | '@esbuild/win32-x64@0.21.5': 227 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 228 | engines: {node: '>=12'} 229 | cpu: [x64] 230 | os: [win32] 231 | 232 | '@eslint-community/eslint-utils@4.4.1': 233 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 234 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 235 | peerDependencies: 236 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 237 | 238 | '@eslint-community/eslint-utils@4.7.0': 239 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 240 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 241 | peerDependencies: 242 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 243 | 244 | '@eslint-community/regexpp@4.12.1': 245 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 246 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 247 | 248 | '@eslint/config-array@0.21.0': 249 | resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} 250 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 251 | 252 | '@eslint/config-helpers@0.3.0': 253 | resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} 254 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 255 | 256 | '@eslint/core@0.14.0': 257 | resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} 258 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 259 | 260 | '@eslint/core@0.15.1': 261 | resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} 262 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 263 | 264 | '@eslint/eslintrc@3.3.1': 265 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 266 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 267 | 268 | '@eslint/js@9.30.0': 269 | resolution: {integrity: sha512-Wzw3wQwPvc9sHM+NjakWTcPx11mbZyiYHuwWa/QfZ7cIRX7WK54PSk7bdyXDaoaopUcMatv1zaQvOAAO8hCdww==} 270 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 271 | 272 | '@eslint/object-schema@2.1.6': 273 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 274 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 275 | 276 | '@eslint/plugin-kit@0.3.3': 277 | resolution: {integrity: sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==} 278 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 279 | 280 | '@humanfs/core@0.19.1': 281 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 282 | engines: {node: '>=18.18.0'} 283 | 284 | '@humanfs/node@0.16.6': 285 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 286 | engines: {node: '>=18.18.0'} 287 | 288 | '@humanwhocodes/module-importer@1.0.1': 289 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 290 | engines: {node: '>=12.22'} 291 | 292 | '@humanwhocodes/retry@0.3.1': 293 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 294 | engines: {node: '>=18.18'} 295 | 296 | '@humanwhocodes/retry@0.4.3': 297 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 298 | engines: {node: '>=18.18'} 299 | 300 | '@jridgewell/gen-mapping@0.3.5': 301 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 302 | engines: {node: '>=6.0.0'} 303 | 304 | '@jridgewell/resolve-uri@3.1.2': 305 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 306 | engines: {node: '>=6.0.0'} 307 | 308 | '@jridgewell/set-array@1.2.1': 309 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 310 | engines: {node: '>=6.0.0'} 311 | 312 | '@jridgewell/sourcemap-codec@1.5.0': 313 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 314 | 315 | '@jridgewell/trace-mapping@0.3.25': 316 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 317 | 318 | '@nodelib/fs.scandir@2.1.5': 319 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 320 | engines: {node: '>= 8'} 321 | 322 | '@nodelib/fs.stat@2.0.5': 323 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 324 | engines: {node: '>= 8'} 325 | 326 | '@nodelib/fs.walk@1.2.8': 327 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 328 | engines: {node: '>= 8'} 329 | 330 | '@playwright/test@1.48.2': 331 | resolution: {integrity: sha512-54w1xCWfXuax7dz4W2M9uw0gDyh+ti/0K/MxcCUxChFh37kkdxPdfZDw5QBbuPUJHr1CiHJ1hXgSs+GgeQc5Zw==} 332 | engines: {node: '>=18'} 333 | hasBin: true 334 | 335 | '@polka/url@1.0.0-next.28': 336 | resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} 337 | 338 | '@resvg/resvg-js-android-arm-eabi@2.6.2': 339 | resolution: {integrity: sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==} 340 | engines: {node: '>= 10'} 341 | cpu: [arm] 342 | os: [android] 343 | 344 | '@resvg/resvg-js-android-arm64@2.6.2': 345 | resolution: {integrity: sha512-VcOKezEhm2VqzXpcIJoITuvUS/fcjIw5NA/w3tjzWyzmvoCdd+QXIqy3FBGulWdClvp4g+IfUemigrkLThSjAQ==} 346 | engines: {node: '>= 10'} 347 | cpu: [arm64] 348 | os: [android] 349 | 350 | '@resvg/resvg-js-darwin-arm64@2.6.2': 351 | resolution: {integrity: sha512-nmok2LnAd6nLUKI16aEB9ydMC6Lidiiq2m1nEBDR1LaaP7FGs4AJ90qDraxX+CWlVuRlvNjyYJTNv8qFjtL9+A==} 352 | engines: {node: '>= 10'} 353 | cpu: [arm64] 354 | os: [darwin] 355 | 356 | '@resvg/resvg-js-darwin-x64@2.6.2': 357 | resolution: {integrity: sha512-GInyZLjgWDfsVT6+SHxQVRwNzV0AuA1uqGsOAW+0th56J7Nh6bHHKXHBWzUrihxMetcFDmQMAX1tZ1fZDYSRsw==} 358 | engines: {node: '>= 10'} 359 | cpu: [x64] 360 | os: [darwin] 361 | 362 | '@resvg/resvg-js-linux-arm-gnueabihf@2.6.2': 363 | resolution: {integrity: sha512-YIV3u/R9zJbpqTTNwTZM5/ocWetDKGsro0SWp70eGEM9eV2MerWyBRZnQIgzU3YBnSBQ1RcxRZvY/UxwESfZIw==} 364 | engines: {node: '>= 10'} 365 | cpu: [arm] 366 | os: [linux] 367 | 368 | '@resvg/resvg-js-linux-arm64-gnu@2.6.2': 369 | resolution: {integrity: sha512-zc2BlJSim7YR4FZDQ8OUoJg5holYzdiYMeobb9pJuGDidGL9KZUv7SbiD4E8oZogtYY42UZEap7dqkkYuA91pg==} 370 | engines: {node: '>= 10'} 371 | cpu: [arm64] 372 | os: [linux] 373 | 374 | '@resvg/resvg-js-linux-arm64-musl@2.6.2': 375 | resolution: {integrity: sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==} 376 | engines: {node: '>= 10'} 377 | cpu: [arm64] 378 | os: [linux] 379 | 380 | '@resvg/resvg-js-linux-x64-gnu@2.6.2': 381 | resolution: {integrity: sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==} 382 | engines: {node: '>= 10'} 383 | cpu: [x64] 384 | os: [linux] 385 | 386 | '@resvg/resvg-js-linux-x64-musl@2.6.2': 387 | resolution: {integrity: sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==} 388 | engines: {node: '>= 10'} 389 | cpu: [x64] 390 | os: [linux] 391 | 392 | '@resvg/resvg-js-win32-arm64-msvc@2.6.2': 393 | resolution: {integrity: sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==} 394 | engines: {node: '>= 10'} 395 | cpu: [arm64] 396 | os: [win32] 397 | 398 | '@resvg/resvg-js-win32-ia32-msvc@2.6.2': 399 | resolution: {integrity: sha512-har4aPAlvjnLcil40AC77YDIk6loMawuJwFINEM7n0pZviwMkMvjb2W5ZirsNOZY4aDbo5tLx0wNMREp5Brk+w==} 400 | engines: {node: '>= 10'} 401 | cpu: [ia32] 402 | os: [win32] 403 | 404 | '@resvg/resvg-js-win32-x64-msvc@2.6.2': 405 | resolution: {integrity: sha512-ZXtYhtUr5SSaBrUDq7DiyjOFJqBVL/dOBN7N/qmi/pO0IgiWW/f/ue3nbvu9joWE5aAKDoIzy/CxsY0suwGosQ==} 406 | engines: {node: '>= 10'} 407 | cpu: [x64] 408 | os: [win32] 409 | 410 | '@resvg/resvg-js@2.6.2': 411 | resolution: {integrity: sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==} 412 | engines: {node: '>= 10'} 413 | 414 | '@rollup/rollup-android-arm-eabi@4.36.0': 415 | resolution: {integrity: sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==} 416 | cpu: [arm] 417 | os: [android] 418 | 419 | '@rollup/rollup-android-arm64@4.36.0': 420 | resolution: {integrity: sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==} 421 | cpu: [arm64] 422 | os: [android] 423 | 424 | '@rollup/rollup-darwin-arm64@4.36.0': 425 | resolution: {integrity: sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==} 426 | cpu: [arm64] 427 | os: [darwin] 428 | 429 | '@rollup/rollup-darwin-x64@4.36.0': 430 | resolution: {integrity: sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==} 431 | cpu: [x64] 432 | os: [darwin] 433 | 434 | '@rollup/rollup-freebsd-arm64@4.36.0': 435 | resolution: {integrity: sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==} 436 | cpu: [arm64] 437 | os: [freebsd] 438 | 439 | '@rollup/rollup-freebsd-x64@4.36.0': 440 | resolution: {integrity: sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==} 441 | cpu: [x64] 442 | os: [freebsd] 443 | 444 | '@rollup/rollup-linux-arm-gnueabihf@4.36.0': 445 | resolution: {integrity: sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==} 446 | cpu: [arm] 447 | os: [linux] 448 | 449 | '@rollup/rollup-linux-arm-musleabihf@4.36.0': 450 | resolution: {integrity: sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==} 451 | cpu: [arm] 452 | os: [linux] 453 | 454 | '@rollup/rollup-linux-arm64-gnu@4.36.0': 455 | resolution: {integrity: sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==} 456 | cpu: [arm64] 457 | os: [linux] 458 | 459 | '@rollup/rollup-linux-arm64-musl@4.36.0': 460 | resolution: {integrity: sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==} 461 | cpu: [arm64] 462 | os: [linux] 463 | 464 | '@rollup/rollup-linux-loongarch64-gnu@4.36.0': 465 | resolution: {integrity: sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==} 466 | cpu: [loong64] 467 | os: [linux] 468 | 469 | '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': 470 | resolution: {integrity: sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==} 471 | cpu: [ppc64] 472 | os: [linux] 473 | 474 | '@rollup/rollup-linux-riscv64-gnu@4.36.0': 475 | resolution: {integrity: sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==} 476 | cpu: [riscv64] 477 | os: [linux] 478 | 479 | '@rollup/rollup-linux-s390x-gnu@4.36.0': 480 | resolution: {integrity: sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==} 481 | cpu: [s390x] 482 | os: [linux] 483 | 484 | '@rollup/rollup-linux-x64-gnu@4.36.0': 485 | resolution: {integrity: sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==} 486 | cpu: [x64] 487 | os: [linux] 488 | 489 | '@rollup/rollup-linux-x64-musl@4.36.0': 490 | resolution: {integrity: sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==} 491 | cpu: [x64] 492 | os: [linux] 493 | 494 | '@rollup/rollup-win32-arm64-msvc@4.36.0': 495 | resolution: {integrity: sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==} 496 | cpu: [arm64] 497 | os: [win32] 498 | 499 | '@rollup/rollup-win32-ia32-msvc@4.36.0': 500 | resolution: {integrity: sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==} 501 | cpu: [ia32] 502 | os: [win32] 503 | 504 | '@rollup/rollup-win32-x64-msvc@4.36.0': 505 | resolution: {integrity: sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==} 506 | cpu: [x64] 507 | os: [win32] 508 | 509 | '@shuding/opentype.js@1.4.0-beta.0': 510 | resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==} 511 | engines: {node: '>= 8.0.0'} 512 | hasBin: true 513 | 514 | '@sveltejs/adapter-auto@3.3.1': 515 | resolution: {integrity: sha512-5Sc7WAxYdL6q9j/+D0jJKjGREGlfIevDyHSQ2eNETHcB1TKlQWHcAo8AS8H1QdjNvSXpvOwNjykDUHPEAyGgdQ==} 516 | peerDependencies: 517 | '@sveltejs/kit': ^2.0.0 518 | 519 | '@sveltejs/kit@2.8.0': 520 | resolution: {integrity: sha512-HCiWupCuKJQ3aPaC4Xc6lpPdjOOnoGzEiYjOqMqppdtfGtY2ABrx932Vw66ZwS2RGXc0BmZvFvNq5SzqlmDVLg==} 521 | engines: {node: '>=18.13'} 522 | hasBin: true 523 | peerDependencies: 524 | '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 525 | svelte: ^4.0.0 || ^5.0.0-next.0 526 | vite: ^5.0.3 527 | 528 | '@sveltejs/package@2.3.7': 529 | resolution: {integrity: sha512-LYgUkde5GUYqOpXbcoCGUpEH4Ctl3Wj4u4CVZBl56dEeLW5fGHE037ZL1qlK0Ky+QD5uUfwONSeGwIOIighFMQ==} 530 | engines: {node: ^16.14 || >=18} 531 | hasBin: true 532 | peerDependencies: 533 | svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 534 | 535 | '@sveltejs/vite-plugin-svelte-inspector@3.0.1': 536 | resolution: {integrity: sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==} 537 | engines: {node: ^18.0.0 || ^20.0.0 || >=22} 538 | peerDependencies: 539 | '@sveltejs/vite-plugin-svelte': ^4.0.0-next.0||^4.0.0 540 | svelte: ^5.0.0-next.96 || ^5.0.0 541 | vite: ^5.0.0 542 | 543 | '@sveltejs/vite-plugin-svelte@4.0.4': 544 | resolution: {integrity: sha512-0ba1RQ/PHen5FGpdSrW7Y3fAMQjrXantECALeOiOdBdzR5+5vPP6HVZRLmZaQL+W8m++o+haIAKq5qT+MiZ7VA==} 545 | engines: {node: ^18.0.0 || ^20.0.0 || >=22} 546 | peerDependencies: 547 | svelte: ^5.0.0-next.96 || ^5.0.0 548 | vite: ^5.0.0 549 | 550 | '@types/cookie@0.6.0': 551 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} 552 | 553 | '@types/eslint@9.6.1': 554 | resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} 555 | 556 | '@types/estree@1.0.6': 557 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 558 | 559 | '@types/json-schema@7.0.15': 560 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 561 | 562 | '@types/node@22.9.0': 563 | resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} 564 | 565 | '@typescript-eslint/eslint-plugin@8.35.0': 566 | resolution: {integrity: sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==} 567 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 568 | peerDependencies: 569 | '@typescript-eslint/parser': ^8.35.0 570 | eslint: ^8.57.0 || ^9.0.0 571 | typescript: '>=4.8.4 <5.9.0' 572 | 573 | '@typescript-eslint/parser@8.35.0': 574 | resolution: {integrity: sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==} 575 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 576 | peerDependencies: 577 | eslint: ^8.57.0 || ^9.0.0 578 | typescript: '>=4.8.4 <5.9.0' 579 | 580 | '@typescript-eslint/project-service@8.35.0': 581 | resolution: {integrity: sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==} 582 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 583 | peerDependencies: 584 | typescript: '>=4.8.4 <5.9.0' 585 | 586 | '@typescript-eslint/scope-manager@8.35.0': 587 | resolution: {integrity: sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==} 588 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 589 | 590 | '@typescript-eslint/tsconfig-utils@8.35.0': 591 | resolution: {integrity: sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==} 592 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 593 | peerDependencies: 594 | typescript: '>=4.8.4 <5.9.0' 595 | 596 | '@typescript-eslint/type-utils@8.35.0': 597 | resolution: {integrity: sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==} 598 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 599 | peerDependencies: 600 | eslint: ^8.57.0 || ^9.0.0 601 | typescript: '>=4.8.4 <5.9.0' 602 | 603 | '@typescript-eslint/types@8.35.0': 604 | resolution: {integrity: sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==} 605 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 606 | 607 | '@typescript-eslint/typescript-estree@8.35.0': 608 | resolution: {integrity: sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==} 609 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 610 | peerDependencies: 611 | typescript: '>=4.8.4 <5.9.0' 612 | 613 | '@typescript-eslint/utils@8.35.0': 614 | resolution: {integrity: sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==} 615 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 616 | peerDependencies: 617 | eslint: ^8.57.0 || ^9.0.0 618 | typescript: '>=4.8.4 <5.9.0' 619 | 620 | '@typescript-eslint/visitor-keys@8.35.0': 621 | resolution: {integrity: sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==} 622 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 623 | 624 | '@vitest/expect@2.1.9': 625 | resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==} 626 | 627 | '@vitest/mocker@2.1.9': 628 | resolution: {integrity: sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==} 629 | peerDependencies: 630 | msw: ^2.4.9 631 | vite: ^5.0.0 632 | peerDependenciesMeta: 633 | msw: 634 | optional: true 635 | vite: 636 | optional: true 637 | 638 | '@vitest/pretty-format@2.1.9': 639 | resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} 640 | 641 | '@vitest/runner@2.1.9': 642 | resolution: {integrity: sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==} 643 | 644 | '@vitest/snapshot@2.1.9': 645 | resolution: {integrity: sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==} 646 | 647 | '@vitest/spy@2.1.9': 648 | resolution: {integrity: sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==} 649 | 650 | '@vitest/utils@2.1.9': 651 | resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} 652 | 653 | acorn-jsx@5.3.2: 654 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 655 | peerDependencies: 656 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 657 | 658 | acorn-typescript@1.4.13: 659 | resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} 660 | peerDependencies: 661 | acorn: '>=8.9.0' 662 | 663 | acorn@8.14.0: 664 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 665 | engines: {node: '>=0.4.0'} 666 | hasBin: true 667 | 668 | acorn@8.15.0: 669 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 670 | engines: {node: '>=0.4.0'} 671 | hasBin: true 672 | 673 | ajv@6.12.6: 674 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 675 | 676 | ansi-colors@4.1.3: 677 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 678 | engines: {node: '>=6'} 679 | 680 | ansi-styles@4.3.0: 681 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 682 | engines: {node: '>=8'} 683 | 684 | argparse@2.0.1: 685 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 686 | 687 | aria-query@5.3.2: 688 | resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} 689 | engines: {node: '>= 0.4'} 690 | 691 | assertion-error@2.0.1: 692 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 693 | engines: {node: '>=12'} 694 | 695 | axobject-query@4.1.0: 696 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 697 | engines: {node: '>= 0.4'} 698 | 699 | balanced-match@1.0.2: 700 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 701 | 702 | base64-js@0.0.8: 703 | resolution: {integrity: sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==} 704 | engines: {node: '>= 0.4'} 705 | 706 | boolbase@1.0.0: 707 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 708 | 709 | brace-expansion@1.1.11: 710 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 711 | 712 | brace-expansion@2.0.1: 713 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 714 | 715 | braces@3.0.3: 716 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 717 | engines: {node: '>=8'} 718 | 719 | cac@6.7.14: 720 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 721 | engines: {node: '>=8'} 722 | 723 | callsites@3.1.0: 724 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 725 | engines: {node: '>=6'} 726 | 727 | camelize@1.0.1: 728 | resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} 729 | 730 | chai@5.2.0: 731 | resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} 732 | engines: {node: '>=12'} 733 | 734 | chalk@4.1.2: 735 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 736 | engines: {node: '>=10'} 737 | 738 | check-error@2.1.1: 739 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 740 | engines: {node: '>= 16'} 741 | 742 | cheerio-select@2.1.0: 743 | resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} 744 | 745 | cheerio@1.0.0: 746 | resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} 747 | engines: {node: '>=18.17'} 748 | 749 | chokidar@4.0.1: 750 | resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} 751 | engines: {node: '>= 14.16.0'} 752 | 753 | color-convert@2.0.1: 754 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 755 | engines: {node: '>=7.0.0'} 756 | 757 | color-name@1.1.4: 758 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 759 | 760 | commander@12.1.0: 761 | resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} 762 | engines: {node: '>=18'} 763 | 764 | concat-map@0.0.1: 765 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 766 | 767 | cookie@0.6.0: 768 | resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} 769 | engines: {node: '>= 0.6'} 770 | 771 | cross-spawn@7.0.6: 772 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 773 | engines: {node: '>= 8'} 774 | 775 | css-background-parser@0.1.0: 776 | resolution: {integrity: sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==} 777 | 778 | css-box-shadow@1.0.0-3: 779 | resolution: {integrity: sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg==} 780 | 781 | css-color-keywords@1.0.0: 782 | resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} 783 | engines: {node: '>=4'} 784 | 785 | css-gradient-parser@0.0.16: 786 | resolution: {integrity: sha512-3O5QdqgFRUbXvK1x5INf1YkBz1UKSWqrd63vWsum8MNHDBYD5urm3QtxZbKU259OrEXNM26lP/MPY3d1IGkBgA==} 787 | engines: {node: '>=16'} 788 | 789 | css-select@5.1.0: 790 | resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} 791 | 792 | css-to-react-native@3.2.0: 793 | resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} 794 | 795 | css-what@6.1.0: 796 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} 797 | engines: {node: '>= 6'} 798 | 799 | cssesc@3.0.0: 800 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 801 | engines: {node: '>=4'} 802 | hasBin: true 803 | 804 | debug@4.4.0: 805 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 806 | engines: {node: '>=6.0'} 807 | peerDependencies: 808 | supports-color: '*' 809 | peerDependenciesMeta: 810 | supports-color: 811 | optional: true 812 | 813 | dedent-js@1.0.1: 814 | resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} 815 | 816 | deep-eql@5.0.2: 817 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 818 | engines: {node: '>=6'} 819 | 820 | deep-is@0.1.4: 821 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 822 | 823 | deepmerge@4.3.1: 824 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 825 | engines: {node: '>=0.10.0'} 826 | 827 | devalue@5.1.1: 828 | resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} 829 | 830 | dom-serializer@1.4.1: 831 | resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} 832 | 833 | dom-serializer@2.0.0: 834 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 835 | 836 | domelementtype@2.3.0: 837 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 838 | 839 | domhandler@3.3.0: 840 | resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} 841 | engines: {node: '>= 4'} 842 | 843 | domhandler@4.3.1: 844 | resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} 845 | engines: {node: '>= 4'} 846 | 847 | domhandler@5.0.3: 848 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 849 | engines: {node: '>= 4'} 850 | 851 | domutils@2.8.0: 852 | resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} 853 | 854 | domutils@3.1.0: 855 | resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} 856 | 857 | emoji-regex@10.4.0: 858 | resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} 859 | 860 | encoding-sniffer@0.2.0: 861 | resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} 862 | 863 | entities@2.2.0: 864 | resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} 865 | 866 | entities@4.5.0: 867 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 868 | engines: {node: '>=0.12'} 869 | 870 | es-module-lexer@1.7.0: 871 | resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 872 | 873 | esbuild@0.21.5: 874 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 875 | engines: {node: '>=12'} 876 | hasBin: true 877 | 878 | escape-goat@3.0.0: 879 | resolution: {integrity: sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==} 880 | engines: {node: '>=10'} 881 | 882 | escape-html@1.0.3: 883 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 884 | 885 | escape-string-regexp@4.0.0: 886 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 887 | engines: {node: '>=10'} 888 | 889 | eslint-compat-utils@0.5.1: 890 | resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} 891 | engines: {node: '>=12'} 892 | peerDependencies: 893 | eslint: '>=6.0.0' 894 | 895 | eslint-config-prettier@9.1.0: 896 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 897 | hasBin: true 898 | peerDependencies: 899 | eslint: '>=7.0.0' 900 | 901 | eslint-plugin-svelte@2.46.0: 902 | resolution: {integrity: sha512-1A7iEMkzmCZ9/Iz+EAfOGYL8IoIG6zeKEq1SmpxGeM5SXmoQq+ZNnCpXFVJpsxPWYx8jIVGMerQMzX20cqUl0g==} 903 | engines: {node: ^14.17.0 || >=16.0.0} 904 | peerDependencies: 905 | eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 906 | svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 907 | peerDependenciesMeta: 908 | svelte: 909 | optional: true 910 | 911 | eslint-scope@7.2.2: 912 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 913 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 914 | 915 | eslint-scope@8.4.0: 916 | resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} 917 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 918 | 919 | eslint-visitor-keys@3.4.3: 920 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 921 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 922 | 923 | eslint-visitor-keys@4.2.1: 924 | resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 925 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 926 | 927 | eslint@9.30.0: 928 | resolution: {integrity: sha512-iN/SiPxmQu6EVkf+m1qpBxzUhE12YqFLOSySuOyVLJLEF9nzTf+h/1AJYc1JWzCnktggeNrjvQGLngDzXirU6g==} 929 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 930 | hasBin: true 931 | peerDependencies: 932 | jiti: '*' 933 | peerDependenciesMeta: 934 | jiti: 935 | optional: true 936 | 937 | esm-env@1.1.4: 938 | resolution: {integrity: sha512-oO82nKPHKkzIj/hbtuDYy/JHqBHFlMIW36SDiPCVsj87ntDLcWN+sJ1erdVryd4NxODacFTsdrIE3b7IamqbOg==} 939 | 940 | espree@10.4.0: 941 | resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 942 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 943 | 944 | espree@9.6.1: 945 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 946 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 947 | 948 | esquery@1.6.0: 949 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 950 | engines: {node: '>=0.10'} 951 | 952 | esrap@1.2.2: 953 | resolution: {integrity: sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==} 954 | 955 | esrecurse@4.3.0: 956 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 957 | engines: {node: '>=4.0'} 958 | 959 | estraverse@5.3.0: 960 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 961 | engines: {node: '>=4.0'} 962 | 963 | estree-walker@3.0.3: 964 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 965 | 966 | esutils@2.0.3: 967 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 968 | engines: {node: '>=0.10.0'} 969 | 970 | expect-type@1.2.1: 971 | resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} 972 | engines: {node: '>=12.0.0'} 973 | 974 | fast-deep-equal@3.1.3: 975 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 976 | 977 | fast-glob@3.3.2: 978 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 979 | engines: {node: '>=8.6.0'} 980 | 981 | fast-json-stable-stringify@2.1.0: 982 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 983 | 984 | fast-levenshtein@2.0.6: 985 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 986 | 987 | fastq@1.17.1: 988 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 989 | 990 | fdir@6.4.6: 991 | resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} 992 | peerDependencies: 993 | picomatch: ^3 || ^4 994 | peerDependenciesMeta: 995 | picomatch: 996 | optional: true 997 | 998 | fflate@0.7.4: 999 | resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} 1000 | 1001 | file-entry-cache@8.0.0: 1002 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1003 | engines: {node: '>=16.0.0'} 1004 | 1005 | fill-range@7.1.1: 1006 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1007 | engines: {node: '>=8'} 1008 | 1009 | find-up@5.0.0: 1010 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1011 | engines: {node: '>=10'} 1012 | 1013 | flat-cache@4.0.1: 1014 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1015 | engines: {node: '>=16'} 1016 | 1017 | flatted@3.3.1: 1018 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 1019 | 1020 | fsevents@2.3.2: 1021 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1022 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1023 | os: [darwin] 1024 | 1025 | fsevents@2.3.3: 1026 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1027 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1028 | os: [darwin] 1029 | 1030 | glob-parent@5.1.2: 1031 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1032 | engines: {node: '>= 6'} 1033 | 1034 | glob-parent@6.0.2: 1035 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1036 | engines: {node: '>=10.13.0'} 1037 | 1038 | globals@14.0.0: 1039 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1040 | engines: {node: '>=18'} 1041 | 1042 | globals@15.15.0: 1043 | resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} 1044 | engines: {node: '>=18'} 1045 | 1046 | globalyzer@0.1.0: 1047 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 1048 | 1049 | globrex@0.1.2: 1050 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1051 | 1052 | graphemer@1.4.0: 1053 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1054 | 1055 | has-flag@4.0.0: 1056 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1057 | engines: {node: '>=8'} 1058 | 1059 | hex-rgb@4.3.0: 1060 | resolution: {integrity: sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==} 1061 | engines: {node: '>=6'} 1062 | 1063 | htmlparser2@5.0.1: 1064 | resolution: {integrity: sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==} 1065 | 1066 | htmlparser2@9.1.0: 1067 | resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} 1068 | 1069 | iconv-lite@0.6.3: 1070 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 1071 | engines: {node: '>=0.10.0'} 1072 | 1073 | ignore@5.3.2: 1074 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1075 | engines: {node: '>= 4'} 1076 | 1077 | ignore@7.0.5: 1078 | resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 1079 | engines: {node: '>= 4'} 1080 | 1081 | import-fresh@3.3.0: 1082 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1083 | engines: {node: '>=6'} 1084 | 1085 | import-meta-resolve@4.1.0: 1086 | resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} 1087 | 1088 | imurmurhash@0.1.4: 1089 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1090 | engines: {node: '>=0.8.19'} 1091 | 1092 | is-extglob@2.1.1: 1093 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1094 | engines: {node: '>=0.10.0'} 1095 | 1096 | is-glob@4.0.3: 1097 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1098 | engines: {node: '>=0.10.0'} 1099 | 1100 | is-number@7.0.0: 1101 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1102 | engines: {node: '>=0.12.0'} 1103 | 1104 | is-reference@3.0.2: 1105 | resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} 1106 | 1107 | isexe@2.0.0: 1108 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1109 | 1110 | js-yaml@4.1.0: 1111 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1112 | hasBin: true 1113 | 1114 | json-buffer@3.0.1: 1115 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1116 | 1117 | json-schema-traverse@0.4.1: 1118 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1119 | 1120 | json-stable-stringify-without-jsonify@1.0.1: 1121 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1122 | 1123 | juice@11.0.0: 1124 | resolution: {integrity: sha512-sGF8hPz9/Wg+YXbaNDqc1Iuoaw+J/P9lBHNQKXAGc9pPNjCd4fyPai0Zxj7MRtdjMr0lcgk5PjEIkP2b8R9F3w==} 1125 | engines: {node: '>=18.17'} 1126 | hasBin: true 1127 | 1128 | keyv@4.5.4: 1129 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1130 | 1131 | kleur@4.1.5: 1132 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1133 | engines: {node: '>=6'} 1134 | 1135 | known-css-properties@0.35.0: 1136 | resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} 1137 | 1138 | levn@0.4.1: 1139 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1140 | engines: {node: '>= 0.8.0'} 1141 | 1142 | lilconfig@2.1.0: 1143 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1144 | engines: {node: '>=10'} 1145 | 1146 | linebreak@1.1.0: 1147 | resolution: {integrity: sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==} 1148 | 1149 | locate-character@3.0.0: 1150 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 1151 | 1152 | locate-path@6.0.0: 1153 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1154 | engines: {node: '>=10'} 1155 | 1156 | lodash.merge@4.6.2: 1157 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1158 | 1159 | loupe@3.1.4: 1160 | resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} 1161 | 1162 | lower-case@2.0.2: 1163 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 1164 | 1165 | magic-string@0.30.17: 1166 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1167 | 1168 | mensch@0.3.4: 1169 | resolution: {integrity: sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==} 1170 | 1171 | merge2@1.4.1: 1172 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1173 | engines: {node: '>= 8'} 1174 | 1175 | micromatch@4.0.8: 1176 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1177 | engines: {node: '>=8.6'} 1178 | 1179 | mime@2.6.0: 1180 | resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} 1181 | engines: {node: '>=4.0.0'} 1182 | hasBin: true 1183 | 1184 | minimatch@3.1.2: 1185 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1186 | 1187 | minimatch@9.0.5: 1188 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1189 | engines: {node: '>=16 || 14 >=14.17'} 1190 | 1191 | mri@1.2.0: 1192 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1193 | engines: {node: '>=4'} 1194 | 1195 | mrmime@2.0.0: 1196 | resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} 1197 | engines: {node: '>=10'} 1198 | 1199 | ms@2.1.3: 1200 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1201 | 1202 | nanoid@3.3.11: 1203 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1204 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1205 | hasBin: true 1206 | 1207 | natural-compare@1.4.0: 1208 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1209 | 1210 | no-case@3.0.4: 1211 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 1212 | 1213 | nth-check@2.1.1: 1214 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 1215 | 1216 | optionator@0.9.4: 1217 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1218 | engines: {node: '>= 0.8.0'} 1219 | 1220 | p-limit@3.1.0: 1221 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1222 | engines: {node: '>=10'} 1223 | 1224 | p-locate@5.0.0: 1225 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1226 | engines: {node: '>=10'} 1227 | 1228 | pako@0.2.9: 1229 | resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} 1230 | 1231 | parent-module@1.0.1: 1232 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1233 | engines: {node: '>=6'} 1234 | 1235 | parse-css-color@0.2.1: 1236 | resolution: {integrity: sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==} 1237 | 1238 | parse5-htmlparser2-tree-adapter@7.1.0: 1239 | resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} 1240 | 1241 | parse5-parser-stream@7.1.2: 1242 | resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} 1243 | 1244 | parse5@7.2.1: 1245 | resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} 1246 | 1247 | pascal-case@3.1.2: 1248 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} 1249 | 1250 | path-exists@4.0.0: 1251 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1252 | engines: {node: '>=8'} 1253 | 1254 | path-key@3.1.1: 1255 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1256 | engines: {node: '>=8'} 1257 | 1258 | pathe@1.1.2: 1259 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 1260 | 1261 | pathval@2.0.1: 1262 | resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} 1263 | engines: {node: '>= 14.16'} 1264 | 1265 | picocolors@1.1.1: 1266 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1267 | 1268 | picomatch@2.3.1: 1269 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1270 | engines: {node: '>=8.6'} 1271 | 1272 | playwright-core@1.48.2: 1273 | resolution: {integrity: sha512-sjjw+qrLFlriJo64du+EK0kJgZzoQPsabGF4lBvsid+3CNIZIYLgnMj9V6JY5VhM2Peh20DJWIVpVljLLnlawA==} 1274 | engines: {node: '>=18'} 1275 | hasBin: true 1276 | 1277 | playwright@1.48.2: 1278 | resolution: {integrity: sha512-NjYvYgp4BPmiwfe31j4gHLa3J7bD2WiBz8Lk2RoSsmX38SVIARZ18VYjxLjAcDsAhA+F4iSEXTSGgjua0rrlgQ==} 1279 | engines: {node: '>=18'} 1280 | hasBin: true 1281 | 1282 | postcss-load-config@3.1.4: 1283 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1284 | engines: {node: '>= 10'} 1285 | peerDependencies: 1286 | postcss: '>=8.0.9' 1287 | ts-node: '>=9.0.0' 1288 | peerDependenciesMeta: 1289 | postcss: 1290 | optional: true 1291 | ts-node: 1292 | optional: true 1293 | 1294 | postcss-safe-parser@6.0.0: 1295 | resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} 1296 | engines: {node: '>=12.0'} 1297 | peerDependencies: 1298 | postcss: ^8.3.3 1299 | 1300 | postcss-scss@4.0.9: 1301 | resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} 1302 | engines: {node: '>=12.0'} 1303 | peerDependencies: 1304 | postcss: ^8.4.29 1305 | 1306 | postcss-selector-parser@6.1.2: 1307 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 1308 | engines: {node: '>=4'} 1309 | 1310 | postcss-value-parser@4.2.0: 1311 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1312 | 1313 | postcss@8.5.3: 1314 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} 1315 | engines: {node: ^10 || ^12 || >=14} 1316 | 1317 | prelude-ls@1.2.1: 1318 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1319 | engines: {node: '>= 0.8.0'} 1320 | 1321 | prettier-plugin-svelte@3.2.7: 1322 | resolution: {integrity: sha512-/Dswx/ea0lV34If1eDcG3nulQ63YNr5KPDfMsjbdtpSWOxKKJ7nAc2qlVuYwEvCr4raIuredNoR7K4JCkmTGaQ==} 1323 | peerDependencies: 1324 | prettier: ^3.0.0 1325 | svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 1326 | 1327 | prettier@3.3.3: 1328 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 1329 | engines: {node: '>=14'} 1330 | hasBin: true 1331 | 1332 | punycode@2.3.1: 1333 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1334 | engines: {node: '>=6'} 1335 | 1336 | queue-microtask@1.2.3: 1337 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1338 | 1339 | readdirp@4.0.2: 1340 | resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} 1341 | engines: {node: '>= 14.16.0'} 1342 | 1343 | resolve-from@4.0.0: 1344 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1345 | engines: {node: '>=4'} 1346 | 1347 | reusify@1.0.4: 1348 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1349 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1350 | 1351 | rollup@4.36.0: 1352 | resolution: {integrity: sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==} 1353 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1354 | hasBin: true 1355 | 1356 | run-parallel@1.2.0: 1357 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1358 | 1359 | sade@1.8.1: 1360 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 1361 | engines: {node: '>=6'} 1362 | 1363 | safer-buffer@2.1.2: 1364 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1365 | 1366 | satori-html@0.3.2: 1367 | resolution: {integrity: sha512-wjTh14iqADFKDK80e51/98MplTGfxz2RmIzh0GqShlf4a67+BooLywF17TvJPD6phO0Hxm7Mf1N5LtRYvdkYRA==} 1368 | 1369 | satori@0.11.3: 1370 | resolution: {integrity: sha512-Wg7sls0iYAEETzi9YYcY16QVIqXjZT06XjkwondC5CGhw1mhmgKBCub8cCmkxdl/naXXQD+m29CFgn8pwtYCnA==} 1371 | engines: {node: '>=16'} 1372 | 1373 | semver@7.6.3: 1374 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1375 | engines: {node: '>=10'} 1376 | hasBin: true 1377 | 1378 | set-cookie-parser@2.7.1: 1379 | resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} 1380 | 1381 | shebang-command@2.0.0: 1382 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1383 | engines: {node: '>=8'} 1384 | 1385 | shebang-regex@3.0.0: 1386 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1387 | engines: {node: '>=8'} 1388 | 1389 | siginfo@2.0.0: 1390 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1391 | 1392 | sirv@3.0.0: 1393 | resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} 1394 | engines: {node: '>=18'} 1395 | 1396 | slick@1.12.2: 1397 | resolution: {integrity: sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==} 1398 | 1399 | source-map-js@1.2.1: 1400 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1401 | engines: {node: '>=0.10.0'} 1402 | 1403 | stackback@0.0.2: 1404 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1405 | 1406 | std-env@3.8.0: 1407 | resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} 1408 | 1409 | string.prototype.codepointat@0.2.1: 1410 | resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} 1411 | 1412 | strip-json-comments@3.1.1: 1413 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1414 | engines: {node: '>=8'} 1415 | 1416 | supports-color@7.2.0: 1417 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1418 | engines: {node: '>=8'} 1419 | 1420 | svelte-check@4.2.2: 1421 | resolution: {integrity: sha512-1+31EOYZ7NKN0YDMKusav2hhEoA51GD9Ws6o//0SphMT0ve9mBTsTUEX7OmDMadUP3KjNHsSKtJrqdSaD8CrGQ==} 1422 | engines: {node: '>= 18.0.0'} 1423 | hasBin: true 1424 | peerDependencies: 1425 | svelte: ^4.0.0 || ^5.0.0-next.0 1426 | typescript: '>=5.0.0' 1427 | 1428 | svelte-eslint-parser@0.43.0: 1429 | resolution: {integrity: sha512-GpU52uPKKcVnh8tKN5P4UZpJ/fUDndmq7wfsvoVXsyP+aY0anol7Yqo01fyrlaWGMFfm4av5DyrjlaXdLRJvGA==} 1430 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1431 | peerDependencies: 1432 | svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 1433 | peerDependenciesMeta: 1434 | svelte: 1435 | optional: true 1436 | 1437 | svelte2tsx@0.7.23: 1438 | resolution: {integrity: sha512-LUVKEHlblBYvzOXdpMHhyMle7iSZ/qr71gGhf1AIrsk1j0FjwTLXp9QuSmPop4C4IlL5BSGFS95Kr78Rb9Eyuw==} 1439 | peerDependencies: 1440 | svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 1441 | typescript: ^4.9.4 || ^5.0.0 1442 | 1443 | svelte@5.1.13: 1444 | resolution: {integrity: sha512-xVNk8yLsZNfkyqWzVg8+nfU9ewiSjVW0S4qyTxfKa6Y7P5ZBhA+LDsh2cHWIXJQMltikQAk6W3sqGdQZSH58PA==} 1445 | engines: {node: '>=18'} 1446 | 1447 | tiny-glob@0.2.9: 1448 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 1449 | 1450 | tiny-inflate@1.0.3: 1451 | resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} 1452 | 1453 | tinybench@2.9.0: 1454 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1455 | 1456 | tinyexec@0.3.2: 1457 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1458 | 1459 | tinypool@1.1.1: 1460 | resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} 1461 | engines: {node: ^18.0.0 || >=20.0.0} 1462 | 1463 | tinyrainbow@1.2.0: 1464 | resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} 1465 | engines: {node: '>=14.0.0'} 1466 | 1467 | tinyspy@3.0.2: 1468 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 1469 | engines: {node: '>=14.0.0'} 1470 | 1471 | to-regex-range@5.0.1: 1472 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1473 | engines: {node: '>=8.0'} 1474 | 1475 | totalist@3.0.1: 1476 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 1477 | engines: {node: '>=6'} 1478 | 1479 | ts-api-utils@2.1.0: 1480 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1481 | engines: {node: '>=18.12'} 1482 | peerDependencies: 1483 | typescript: '>=4.8.4' 1484 | 1485 | tslib@2.8.1: 1486 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1487 | 1488 | type-check@0.4.0: 1489 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1490 | engines: {node: '>= 0.8.0'} 1491 | 1492 | typescript-eslint@8.35.0: 1493 | resolution: {integrity: sha512-uEnz70b7kBz6eg/j0Czy6K5NivaYopgxRjsnAJ2Fx5oTLo3wefTHIbL7AkQr1+7tJCRVpTs/wiM8JR/11Loq9A==} 1494 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1495 | peerDependencies: 1496 | eslint: ^8.57.0 || ^9.0.0 1497 | typescript: '>=4.8.4 <5.9.0' 1498 | 1499 | typescript@5.6.3: 1500 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} 1501 | engines: {node: '>=14.17'} 1502 | hasBin: true 1503 | 1504 | ultrahtml@1.5.3: 1505 | resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==} 1506 | 1507 | undici-types@6.19.8: 1508 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 1509 | 1510 | undici@6.20.1: 1511 | resolution: {integrity: sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==} 1512 | engines: {node: '>=18.17'} 1513 | 1514 | unicode-trie@2.0.0: 1515 | resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} 1516 | 1517 | uri-js@4.4.1: 1518 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1519 | 1520 | util-deprecate@1.0.2: 1521 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1522 | 1523 | valid-data-url@3.0.1: 1524 | resolution: {integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==} 1525 | engines: {node: '>=10'} 1526 | 1527 | vite-node@2.1.9: 1528 | resolution: {integrity: sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==} 1529 | engines: {node: ^18.0.0 || >=20.0.0} 1530 | hasBin: true 1531 | 1532 | vite@5.4.14: 1533 | resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==} 1534 | engines: {node: ^18.0.0 || >=20.0.0} 1535 | hasBin: true 1536 | peerDependencies: 1537 | '@types/node': ^18.0.0 || >=20.0.0 1538 | less: '*' 1539 | lightningcss: ^1.21.0 1540 | sass: '*' 1541 | sass-embedded: '*' 1542 | stylus: '*' 1543 | sugarss: '*' 1544 | terser: ^5.4.0 1545 | peerDependenciesMeta: 1546 | '@types/node': 1547 | optional: true 1548 | less: 1549 | optional: true 1550 | lightningcss: 1551 | optional: true 1552 | sass: 1553 | optional: true 1554 | sass-embedded: 1555 | optional: true 1556 | stylus: 1557 | optional: true 1558 | sugarss: 1559 | optional: true 1560 | terser: 1561 | optional: true 1562 | 1563 | vitefu@1.0.6: 1564 | resolution: {integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==} 1565 | peerDependencies: 1566 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 1567 | peerDependenciesMeta: 1568 | vite: 1569 | optional: true 1570 | 1571 | vitest@2.1.9: 1572 | resolution: {integrity: sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==} 1573 | engines: {node: ^18.0.0 || >=20.0.0} 1574 | hasBin: true 1575 | peerDependencies: 1576 | '@edge-runtime/vm': '*' 1577 | '@types/node': ^18.0.0 || >=20.0.0 1578 | '@vitest/browser': 2.1.9 1579 | '@vitest/ui': 2.1.9 1580 | happy-dom: '*' 1581 | jsdom: '*' 1582 | peerDependenciesMeta: 1583 | '@edge-runtime/vm': 1584 | optional: true 1585 | '@types/node': 1586 | optional: true 1587 | '@vitest/browser': 1588 | optional: true 1589 | '@vitest/ui': 1590 | optional: true 1591 | happy-dom: 1592 | optional: true 1593 | jsdom: 1594 | optional: true 1595 | 1596 | web-resource-inliner@7.0.0: 1597 | resolution: {integrity: sha512-NlfnGF8MY9ZUwFjyq3vOUBx7KwF8bmE+ywR781SB0nWB6MoMxN4BA8gtgP1KGTZo/O/AyWJz7HZpR704eaj4mg==} 1598 | engines: {node: '>=10.0.0'} 1599 | 1600 | whatwg-encoding@3.1.1: 1601 | resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} 1602 | engines: {node: '>=18'} 1603 | 1604 | whatwg-mimetype@4.0.0: 1605 | resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} 1606 | engines: {node: '>=18'} 1607 | 1608 | which@2.0.2: 1609 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1610 | engines: {node: '>= 8'} 1611 | hasBin: true 1612 | 1613 | why-is-node-running@2.3.0: 1614 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1615 | engines: {node: '>=8'} 1616 | hasBin: true 1617 | 1618 | word-wrap@1.2.5: 1619 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1620 | engines: {node: '>=0.10.0'} 1621 | 1622 | yaml@1.10.2: 1623 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1624 | engines: {node: '>= 6'} 1625 | 1626 | yocto-queue@0.1.0: 1627 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1628 | engines: {node: '>=10'} 1629 | 1630 | yoga-wasm-web@0.3.3: 1631 | resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} 1632 | 1633 | zimmerframe@1.1.2: 1634 | resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} 1635 | 1636 | snapshots: 1637 | 1638 | '@ampproject/remapping@2.3.0': 1639 | dependencies: 1640 | '@jridgewell/gen-mapping': 0.3.5 1641 | '@jridgewell/trace-mapping': 0.3.25 1642 | 1643 | '@esbuild/aix-ppc64@0.21.5': 1644 | optional: true 1645 | 1646 | '@esbuild/android-arm64@0.21.5': 1647 | optional: true 1648 | 1649 | '@esbuild/android-arm@0.21.5': 1650 | optional: true 1651 | 1652 | '@esbuild/android-x64@0.21.5': 1653 | optional: true 1654 | 1655 | '@esbuild/darwin-arm64@0.21.5': 1656 | optional: true 1657 | 1658 | '@esbuild/darwin-x64@0.21.5': 1659 | optional: true 1660 | 1661 | '@esbuild/freebsd-arm64@0.21.5': 1662 | optional: true 1663 | 1664 | '@esbuild/freebsd-x64@0.21.5': 1665 | optional: true 1666 | 1667 | '@esbuild/linux-arm64@0.21.5': 1668 | optional: true 1669 | 1670 | '@esbuild/linux-arm@0.21.5': 1671 | optional: true 1672 | 1673 | '@esbuild/linux-ia32@0.21.5': 1674 | optional: true 1675 | 1676 | '@esbuild/linux-loong64@0.21.5': 1677 | optional: true 1678 | 1679 | '@esbuild/linux-mips64el@0.21.5': 1680 | optional: true 1681 | 1682 | '@esbuild/linux-ppc64@0.21.5': 1683 | optional: true 1684 | 1685 | '@esbuild/linux-riscv64@0.21.5': 1686 | optional: true 1687 | 1688 | '@esbuild/linux-s390x@0.21.5': 1689 | optional: true 1690 | 1691 | '@esbuild/linux-x64@0.21.5': 1692 | optional: true 1693 | 1694 | '@esbuild/netbsd-x64@0.21.5': 1695 | optional: true 1696 | 1697 | '@esbuild/openbsd-x64@0.21.5': 1698 | optional: true 1699 | 1700 | '@esbuild/sunos-x64@0.21.5': 1701 | optional: true 1702 | 1703 | '@esbuild/win32-arm64@0.21.5': 1704 | optional: true 1705 | 1706 | '@esbuild/win32-ia32@0.21.5': 1707 | optional: true 1708 | 1709 | '@esbuild/win32-x64@0.21.5': 1710 | optional: true 1711 | 1712 | '@eslint-community/eslint-utils@4.4.1(eslint@9.30.0)': 1713 | dependencies: 1714 | eslint: 9.30.0 1715 | eslint-visitor-keys: 3.4.3 1716 | 1717 | '@eslint-community/eslint-utils@4.7.0(eslint@9.30.0)': 1718 | dependencies: 1719 | eslint: 9.30.0 1720 | eslint-visitor-keys: 3.4.3 1721 | 1722 | '@eslint-community/regexpp@4.12.1': {} 1723 | 1724 | '@eslint/config-array@0.21.0': 1725 | dependencies: 1726 | '@eslint/object-schema': 2.1.6 1727 | debug: 4.4.0 1728 | minimatch: 3.1.2 1729 | transitivePeerDependencies: 1730 | - supports-color 1731 | 1732 | '@eslint/config-helpers@0.3.0': {} 1733 | 1734 | '@eslint/core@0.14.0': 1735 | dependencies: 1736 | '@types/json-schema': 7.0.15 1737 | 1738 | '@eslint/core@0.15.1': 1739 | dependencies: 1740 | '@types/json-schema': 7.0.15 1741 | 1742 | '@eslint/eslintrc@3.3.1': 1743 | dependencies: 1744 | ajv: 6.12.6 1745 | debug: 4.4.0 1746 | espree: 10.4.0 1747 | globals: 14.0.0 1748 | ignore: 5.3.2 1749 | import-fresh: 3.3.0 1750 | js-yaml: 4.1.0 1751 | minimatch: 3.1.2 1752 | strip-json-comments: 3.1.1 1753 | transitivePeerDependencies: 1754 | - supports-color 1755 | 1756 | '@eslint/js@9.30.0': {} 1757 | 1758 | '@eslint/object-schema@2.1.6': {} 1759 | 1760 | '@eslint/plugin-kit@0.3.3': 1761 | dependencies: 1762 | '@eslint/core': 0.15.1 1763 | levn: 0.4.1 1764 | 1765 | '@humanfs/core@0.19.1': {} 1766 | 1767 | '@humanfs/node@0.16.6': 1768 | dependencies: 1769 | '@humanfs/core': 0.19.1 1770 | '@humanwhocodes/retry': 0.3.1 1771 | 1772 | '@humanwhocodes/module-importer@1.0.1': {} 1773 | 1774 | '@humanwhocodes/retry@0.3.1': {} 1775 | 1776 | '@humanwhocodes/retry@0.4.3': {} 1777 | 1778 | '@jridgewell/gen-mapping@0.3.5': 1779 | dependencies: 1780 | '@jridgewell/set-array': 1.2.1 1781 | '@jridgewell/sourcemap-codec': 1.5.0 1782 | '@jridgewell/trace-mapping': 0.3.25 1783 | 1784 | '@jridgewell/resolve-uri@3.1.2': {} 1785 | 1786 | '@jridgewell/set-array@1.2.1': {} 1787 | 1788 | '@jridgewell/sourcemap-codec@1.5.0': {} 1789 | 1790 | '@jridgewell/trace-mapping@0.3.25': 1791 | dependencies: 1792 | '@jridgewell/resolve-uri': 3.1.2 1793 | '@jridgewell/sourcemap-codec': 1.5.0 1794 | 1795 | '@nodelib/fs.scandir@2.1.5': 1796 | dependencies: 1797 | '@nodelib/fs.stat': 2.0.5 1798 | run-parallel: 1.2.0 1799 | 1800 | '@nodelib/fs.stat@2.0.5': {} 1801 | 1802 | '@nodelib/fs.walk@1.2.8': 1803 | dependencies: 1804 | '@nodelib/fs.scandir': 2.1.5 1805 | fastq: 1.17.1 1806 | 1807 | '@playwright/test@1.48.2': 1808 | dependencies: 1809 | playwright: 1.48.2 1810 | 1811 | '@polka/url@1.0.0-next.28': {} 1812 | 1813 | '@resvg/resvg-js-android-arm-eabi@2.6.2': 1814 | optional: true 1815 | 1816 | '@resvg/resvg-js-android-arm64@2.6.2': 1817 | optional: true 1818 | 1819 | '@resvg/resvg-js-darwin-arm64@2.6.2': 1820 | optional: true 1821 | 1822 | '@resvg/resvg-js-darwin-x64@2.6.2': 1823 | optional: true 1824 | 1825 | '@resvg/resvg-js-linux-arm-gnueabihf@2.6.2': 1826 | optional: true 1827 | 1828 | '@resvg/resvg-js-linux-arm64-gnu@2.6.2': 1829 | optional: true 1830 | 1831 | '@resvg/resvg-js-linux-arm64-musl@2.6.2': 1832 | optional: true 1833 | 1834 | '@resvg/resvg-js-linux-x64-gnu@2.6.2': 1835 | optional: true 1836 | 1837 | '@resvg/resvg-js-linux-x64-musl@2.6.2': 1838 | optional: true 1839 | 1840 | '@resvg/resvg-js-win32-arm64-msvc@2.6.2': 1841 | optional: true 1842 | 1843 | '@resvg/resvg-js-win32-ia32-msvc@2.6.2': 1844 | optional: true 1845 | 1846 | '@resvg/resvg-js-win32-x64-msvc@2.6.2': 1847 | optional: true 1848 | 1849 | '@resvg/resvg-js@2.6.2': 1850 | optionalDependencies: 1851 | '@resvg/resvg-js-android-arm-eabi': 2.6.2 1852 | '@resvg/resvg-js-android-arm64': 2.6.2 1853 | '@resvg/resvg-js-darwin-arm64': 2.6.2 1854 | '@resvg/resvg-js-darwin-x64': 2.6.2 1855 | '@resvg/resvg-js-linux-arm-gnueabihf': 2.6.2 1856 | '@resvg/resvg-js-linux-arm64-gnu': 2.6.2 1857 | '@resvg/resvg-js-linux-arm64-musl': 2.6.2 1858 | '@resvg/resvg-js-linux-x64-gnu': 2.6.2 1859 | '@resvg/resvg-js-linux-x64-musl': 2.6.2 1860 | '@resvg/resvg-js-win32-arm64-msvc': 2.6.2 1861 | '@resvg/resvg-js-win32-ia32-msvc': 2.6.2 1862 | '@resvg/resvg-js-win32-x64-msvc': 2.6.2 1863 | 1864 | '@rollup/rollup-android-arm-eabi@4.36.0': 1865 | optional: true 1866 | 1867 | '@rollup/rollup-android-arm64@4.36.0': 1868 | optional: true 1869 | 1870 | '@rollup/rollup-darwin-arm64@4.36.0': 1871 | optional: true 1872 | 1873 | '@rollup/rollup-darwin-x64@4.36.0': 1874 | optional: true 1875 | 1876 | '@rollup/rollup-freebsd-arm64@4.36.0': 1877 | optional: true 1878 | 1879 | '@rollup/rollup-freebsd-x64@4.36.0': 1880 | optional: true 1881 | 1882 | '@rollup/rollup-linux-arm-gnueabihf@4.36.0': 1883 | optional: true 1884 | 1885 | '@rollup/rollup-linux-arm-musleabihf@4.36.0': 1886 | optional: true 1887 | 1888 | '@rollup/rollup-linux-arm64-gnu@4.36.0': 1889 | optional: true 1890 | 1891 | '@rollup/rollup-linux-arm64-musl@4.36.0': 1892 | optional: true 1893 | 1894 | '@rollup/rollup-linux-loongarch64-gnu@4.36.0': 1895 | optional: true 1896 | 1897 | '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': 1898 | optional: true 1899 | 1900 | '@rollup/rollup-linux-riscv64-gnu@4.36.0': 1901 | optional: true 1902 | 1903 | '@rollup/rollup-linux-s390x-gnu@4.36.0': 1904 | optional: true 1905 | 1906 | '@rollup/rollup-linux-x64-gnu@4.36.0': 1907 | optional: true 1908 | 1909 | '@rollup/rollup-linux-x64-musl@4.36.0': 1910 | optional: true 1911 | 1912 | '@rollup/rollup-win32-arm64-msvc@4.36.0': 1913 | optional: true 1914 | 1915 | '@rollup/rollup-win32-ia32-msvc@4.36.0': 1916 | optional: true 1917 | 1918 | '@rollup/rollup-win32-x64-msvc@4.36.0': 1919 | optional: true 1920 | 1921 | '@shuding/opentype.js@1.4.0-beta.0': 1922 | dependencies: 1923 | fflate: 0.7.4 1924 | string.prototype.codepointat: 0.2.1 1925 | 1926 | '@sveltejs/adapter-auto@3.3.1(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)))(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)))': 1927 | dependencies: 1928 | '@sveltejs/kit': 2.8.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)))(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)) 1929 | import-meta-resolve: 4.1.0 1930 | 1931 | '@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)))(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0))': 1932 | dependencies: 1933 | '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)) 1934 | '@types/cookie': 0.6.0 1935 | cookie: 0.6.0 1936 | devalue: 5.1.1 1937 | esm-env: 1.1.4 1938 | import-meta-resolve: 4.1.0 1939 | kleur: 4.1.5 1940 | magic-string: 0.30.17 1941 | mrmime: 2.0.0 1942 | sade: 1.8.1 1943 | set-cookie-parser: 2.7.1 1944 | sirv: 3.0.0 1945 | svelte: 5.1.13 1946 | tiny-glob: 0.2.9 1947 | vite: 5.4.14(@types/node@22.9.0) 1948 | 1949 | '@sveltejs/package@2.3.7(svelte@5.1.13)(typescript@5.6.3)': 1950 | dependencies: 1951 | chokidar: 4.0.1 1952 | kleur: 4.1.5 1953 | sade: 1.8.1 1954 | semver: 7.6.3 1955 | svelte: 5.1.13 1956 | svelte2tsx: 0.7.23(svelte@5.1.13)(typescript@5.6.3) 1957 | transitivePeerDependencies: 1958 | - typescript 1959 | 1960 | '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)))(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0))': 1961 | dependencies: 1962 | '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)) 1963 | debug: 4.4.0 1964 | svelte: 5.1.13 1965 | vite: 5.4.14(@types/node@22.9.0) 1966 | transitivePeerDependencies: 1967 | - supports-color 1968 | 1969 | '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0))': 1970 | dependencies: 1971 | '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)))(svelte@5.1.13)(vite@5.4.14(@types/node@22.9.0)) 1972 | debug: 4.4.0 1973 | deepmerge: 4.3.1 1974 | kleur: 4.1.5 1975 | magic-string: 0.30.17 1976 | svelte: 5.1.13 1977 | vite: 5.4.14(@types/node@22.9.0) 1978 | vitefu: 1.0.6(vite@5.4.14(@types/node@22.9.0)) 1979 | transitivePeerDependencies: 1980 | - supports-color 1981 | 1982 | '@types/cookie@0.6.0': {} 1983 | 1984 | '@types/eslint@9.6.1': 1985 | dependencies: 1986 | '@types/estree': 1.0.6 1987 | '@types/json-schema': 7.0.15 1988 | 1989 | '@types/estree@1.0.6': {} 1990 | 1991 | '@types/json-schema@7.0.15': {} 1992 | 1993 | '@types/node@22.9.0': 1994 | dependencies: 1995 | undici-types: 6.19.8 1996 | optional: true 1997 | 1998 | '@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.6.3))(eslint@9.30.0)(typescript@5.6.3)': 1999 | dependencies: 2000 | '@eslint-community/regexpp': 4.12.1 2001 | '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.6.3) 2002 | '@typescript-eslint/scope-manager': 8.35.0 2003 | '@typescript-eslint/type-utils': 8.35.0(eslint@9.30.0)(typescript@5.6.3) 2004 | '@typescript-eslint/utils': 8.35.0(eslint@9.30.0)(typescript@5.6.3) 2005 | '@typescript-eslint/visitor-keys': 8.35.0 2006 | eslint: 9.30.0 2007 | graphemer: 1.4.0 2008 | ignore: 7.0.5 2009 | natural-compare: 1.4.0 2010 | ts-api-utils: 2.1.0(typescript@5.6.3) 2011 | typescript: 5.6.3 2012 | transitivePeerDependencies: 2013 | - supports-color 2014 | 2015 | '@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.6.3)': 2016 | dependencies: 2017 | '@typescript-eslint/scope-manager': 8.35.0 2018 | '@typescript-eslint/types': 8.35.0 2019 | '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.6.3) 2020 | '@typescript-eslint/visitor-keys': 8.35.0 2021 | debug: 4.4.0 2022 | eslint: 9.30.0 2023 | typescript: 5.6.3 2024 | transitivePeerDependencies: 2025 | - supports-color 2026 | 2027 | '@typescript-eslint/project-service@8.35.0(typescript@5.6.3)': 2028 | dependencies: 2029 | '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.6.3) 2030 | '@typescript-eslint/types': 8.35.0 2031 | debug: 4.4.0 2032 | typescript: 5.6.3 2033 | transitivePeerDependencies: 2034 | - supports-color 2035 | 2036 | '@typescript-eslint/scope-manager@8.35.0': 2037 | dependencies: 2038 | '@typescript-eslint/types': 8.35.0 2039 | '@typescript-eslint/visitor-keys': 8.35.0 2040 | 2041 | '@typescript-eslint/tsconfig-utils@8.35.0(typescript@5.6.3)': 2042 | dependencies: 2043 | typescript: 5.6.3 2044 | 2045 | '@typescript-eslint/type-utils@8.35.0(eslint@9.30.0)(typescript@5.6.3)': 2046 | dependencies: 2047 | '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.6.3) 2048 | '@typescript-eslint/utils': 8.35.0(eslint@9.30.0)(typescript@5.6.3) 2049 | debug: 4.4.0 2050 | eslint: 9.30.0 2051 | ts-api-utils: 2.1.0(typescript@5.6.3) 2052 | typescript: 5.6.3 2053 | transitivePeerDependencies: 2054 | - supports-color 2055 | 2056 | '@typescript-eslint/types@8.35.0': {} 2057 | 2058 | '@typescript-eslint/typescript-estree@8.35.0(typescript@5.6.3)': 2059 | dependencies: 2060 | '@typescript-eslint/project-service': 8.35.0(typescript@5.6.3) 2061 | '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.6.3) 2062 | '@typescript-eslint/types': 8.35.0 2063 | '@typescript-eslint/visitor-keys': 8.35.0 2064 | debug: 4.4.0 2065 | fast-glob: 3.3.2 2066 | is-glob: 4.0.3 2067 | minimatch: 9.0.5 2068 | semver: 7.6.3 2069 | ts-api-utils: 2.1.0(typescript@5.6.3) 2070 | typescript: 5.6.3 2071 | transitivePeerDependencies: 2072 | - supports-color 2073 | 2074 | '@typescript-eslint/utils@8.35.0(eslint@9.30.0)(typescript@5.6.3)': 2075 | dependencies: 2076 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0) 2077 | '@typescript-eslint/scope-manager': 8.35.0 2078 | '@typescript-eslint/types': 8.35.0 2079 | '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.6.3) 2080 | eslint: 9.30.0 2081 | typescript: 5.6.3 2082 | transitivePeerDependencies: 2083 | - supports-color 2084 | 2085 | '@typescript-eslint/visitor-keys@8.35.0': 2086 | dependencies: 2087 | '@typescript-eslint/types': 8.35.0 2088 | eslint-visitor-keys: 4.2.1 2089 | 2090 | '@vitest/expect@2.1.9': 2091 | dependencies: 2092 | '@vitest/spy': 2.1.9 2093 | '@vitest/utils': 2.1.9 2094 | chai: 5.2.0 2095 | tinyrainbow: 1.2.0 2096 | 2097 | '@vitest/mocker@2.1.9(vite@5.4.14(@types/node@22.9.0))': 2098 | dependencies: 2099 | '@vitest/spy': 2.1.9 2100 | estree-walker: 3.0.3 2101 | magic-string: 0.30.17 2102 | optionalDependencies: 2103 | vite: 5.4.14(@types/node@22.9.0) 2104 | 2105 | '@vitest/pretty-format@2.1.9': 2106 | dependencies: 2107 | tinyrainbow: 1.2.0 2108 | 2109 | '@vitest/runner@2.1.9': 2110 | dependencies: 2111 | '@vitest/utils': 2.1.9 2112 | pathe: 1.1.2 2113 | 2114 | '@vitest/snapshot@2.1.9': 2115 | dependencies: 2116 | '@vitest/pretty-format': 2.1.9 2117 | magic-string: 0.30.17 2118 | pathe: 1.1.2 2119 | 2120 | '@vitest/spy@2.1.9': 2121 | dependencies: 2122 | tinyspy: 3.0.2 2123 | 2124 | '@vitest/utils@2.1.9': 2125 | dependencies: 2126 | '@vitest/pretty-format': 2.1.9 2127 | loupe: 3.1.4 2128 | tinyrainbow: 1.2.0 2129 | 2130 | acorn-jsx@5.3.2(acorn@8.14.0): 2131 | dependencies: 2132 | acorn: 8.14.0 2133 | 2134 | acorn-jsx@5.3.2(acorn@8.15.0): 2135 | dependencies: 2136 | acorn: 8.15.0 2137 | 2138 | acorn-typescript@1.4.13(acorn@8.14.0): 2139 | dependencies: 2140 | acorn: 8.14.0 2141 | 2142 | acorn@8.14.0: {} 2143 | 2144 | acorn@8.15.0: {} 2145 | 2146 | ajv@6.12.6: 2147 | dependencies: 2148 | fast-deep-equal: 3.1.3 2149 | fast-json-stable-stringify: 2.1.0 2150 | json-schema-traverse: 0.4.1 2151 | uri-js: 4.4.1 2152 | 2153 | ansi-colors@4.1.3: {} 2154 | 2155 | ansi-styles@4.3.0: 2156 | dependencies: 2157 | color-convert: 2.0.1 2158 | 2159 | argparse@2.0.1: {} 2160 | 2161 | aria-query@5.3.2: {} 2162 | 2163 | assertion-error@2.0.1: {} 2164 | 2165 | axobject-query@4.1.0: {} 2166 | 2167 | balanced-match@1.0.2: {} 2168 | 2169 | base64-js@0.0.8: {} 2170 | 2171 | boolbase@1.0.0: {} 2172 | 2173 | brace-expansion@1.1.11: 2174 | dependencies: 2175 | balanced-match: 1.0.2 2176 | concat-map: 0.0.1 2177 | 2178 | brace-expansion@2.0.1: 2179 | dependencies: 2180 | balanced-match: 1.0.2 2181 | 2182 | braces@3.0.3: 2183 | dependencies: 2184 | fill-range: 7.1.1 2185 | 2186 | cac@6.7.14: {} 2187 | 2188 | callsites@3.1.0: {} 2189 | 2190 | camelize@1.0.1: {} 2191 | 2192 | chai@5.2.0: 2193 | dependencies: 2194 | assertion-error: 2.0.1 2195 | check-error: 2.1.1 2196 | deep-eql: 5.0.2 2197 | loupe: 3.1.4 2198 | pathval: 2.0.1 2199 | 2200 | chalk@4.1.2: 2201 | dependencies: 2202 | ansi-styles: 4.3.0 2203 | supports-color: 7.2.0 2204 | 2205 | check-error@2.1.1: {} 2206 | 2207 | cheerio-select@2.1.0: 2208 | dependencies: 2209 | boolbase: 1.0.0 2210 | css-select: 5.1.0 2211 | css-what: 6.1.0 2212 | domelementtype: 2.3.0 2213 | domhandler: 5.0.3 2214 | domutils: 3.1.0 2215 | 2216 | cheerio@1.0.0: 2217 | dependencies: 2218 | cheerio-select: 2.1.0 2219 | dom-serializer: 2.0.0 2220 | domhandler: 5.0.3 2221 | domutils: 3.1.0 2222 | encoding-sniffer: 0.2.0 2223 | htmlparser2: 9.1.0 2224 | parse5: 7.2.1 2225 | parse5-htmlparser2-tree-adapter: 7.1.0 2226 | parse5-parser-stream: 7.1.2 2227 | undici: 6.20.1 2228 | whatwg-mimetype: 4.0.0 2229 | 2230 | chokidar@4.0.1: 2231 | dependencies: 2232 | readdirp: 4.0.2 2233 | 2234 | color-convert@2.0.1: 2235 | dependencies: 2236 | color-name: 1.1.4 2237 | 2238 | color-name@1.1.4: {} 2239 | 2240 | commander@12.1.0: {} 2241 | 2242 | concat-map@0.0.1: {} 2243 | 2244 | cookie@0.6.0: {} 2245 | 2246 | cross-spawn@7.0.6: 2247 | dependencies: 2248 | path-key: 3.1.1 2249 | shebang-command: 2.0.0 2250 | which: 2.0.2 2251 | 2252 | css-background-parser@0.1.0: {} 2253 | 2254 | css-box-shadow@1.0.0-3: {} 2255 | 2256 | css-color-keywords@1.0.0: {} 2257 | 2258 | css-gradient-parser@0.0.16: {} 2259 | 2260 | css-select@5.1.0: 2261 | dependencies: 2262 | boolbase: 1.0.0 2263 | css-what: 6.1.0 2264 | domhandler: 5.0.3 2265 | domutils: 3.1.0 2266 | nth-check: 2.1.1 2267 | 2268 | css-to-react-native@3.2.0: 2269 | dependencies: 2270 | camelize: 1.0.1 2271 | css-color-keywords: 1.0.0 2272 | postcss-value-parser: 4.2.0 2273 | 2274 | css-what@6.1.0: {} 2275 | 2276 | cssesc@3.0.0: {} 2277 | 2278 | debug@4.4.0: 2279 | dependencies: 2280 | ms: 2.1.3 2281 | 2282 | dedent-js@1.0.1: {} 2283 | 2284 | deep-eql@5.0.2: {} 2285 | 2286 | deep-is@0.1.4: {} 2287 | 2288 | deepmerge@4.3.1: {} 2289 | 2290 | devalue@5.1.1: {} 2291 | 2292 | dom-serializer@1.4.1: 2293 | dependencies: 2294 | domelementtype: 2.3.0 2295 | domhandler: 4.3.1 2296 | entities: 2.2.0 2297 | 2298 | dom-serializer@2.0.0: 2299 | dependencies: 2300 | domelementtype: 2.3.0 2301 | domhandler: 5.0.3 2302 | entities: 4.5.0 2303 | 2304 | domelementtype@2.3.0: {} 2305 | 2306 | domhandler@3.3.0: 2307 | dependencies: 2308 | domelementtype: 2.3.0 2309 | 2310 | domhandler@4.3.1: 2311 | dependencies: 2312 | domelementtype: 2.3.0 2313 | 2314 | domhandler@5.0.3: 2315 | dependencies: 2316 | domelementtype: 2.3.0 2317 | 2318 | domutils@2.8.0: 2319 | dependencies: 2320 | dom-serializer: 1.4.1 2321 | domelementtype: 2.3.0 2322 | domhandler: 4.3.1 2323 | 2324 | domutils@3.1.0: 2325 | dependencies: 2326 | dom-serializer: 2.0.0 2327 | domelementtype: 2.3.0 2328 | domhandler: 5.0.3 2329 | 2330 | emoji-regex@10.4.0: {} 2331 | 2332 | encoding-sniffer@0.2.0: 2333 | dependencies: 2334 | iconv-lite: 0.6.3 2335 | whatwg-encoding: 3.1.1 2336 | 2337 | entities@2.2.0: {} 2338 | 2339 | entities@4.5.0: {} 2340 | 2341 | es-module-lexer@1.7.0: {} 2342 | 2343 | esbuild@0.21.5: 2344 | optionalDependencies: 2345 | '@esbuild/aix-ppc64': 0.21.5 2346 | '@esbuild/android-arm': 0.21.5 2347 | '@esbuild/android-arm64': 0.21.5 2348 | '@esbuild/android-x64': 0.21.5 2349 | '@esbuild/darwin-arm64': 0.21.5 2350 | '@esbuild/darwin-x64': 0.21.5 2351 | '@esbuild/freebsd-arm64': 0.21.5 2352 | '@esbuild/freebsd-x64': 0.21.5 2353 | '@esbuild/linux-arm': 0.21.5 2354 | '@esbuild/linux-arm64': 0.21.5 2355 | '@esbuild/linux-ia32': 0.21.5 2356 | '@esbuild/linux-loong64': 0.21.5 2357 | '@esbuild/linux-mips64el': 0.21.5 2358 | '@esbuild/linux-ppc64': 0.21.5 2359 | '@esbuild/linux-riscv64': 0.21.5 2360 | '@esbuild/linux-s390x': 0.21.5 2361 | '@esbuild/linux-x64': 0.21.5 2362 | '@esbuild/netbsd-x64': 0.21.5 2363 | '@esbuild/openbsd-x64': 0.21.5 2364 | '@esbuild/sunos-x64': 0.21.5 2365 | '@esbuild/win32-arm64': 0.21.5 2366 | '@esbuild/win32-ia32': 0.21.5 2367 | '@esbuild/win32-x64': 0.21.5 2368 | 2369 | escape-goat@3.0.0: {} 2370 | 2371 | escape-html@1.0.3: {} 2372 | 2373 | escape-string-regexp@4.0.0: {} 2374 | 2375 | eslint-compat-utils@0.5.1(eslint@9.30.0): 2376 | dependencies: 2377 | eslint: 9.30.0 2378 | semver: 7.6.3 2379 | 2380 | eslint-config-prettier@9.1.0(eslint@9.30.0): 2381 | dependencies: 2382 | eslint: 9.30.0 2383 | 2384 | eslint-plugin-svelte@2.46.0(eslint@9.30.0)(svelte@5.1.13): 2385 | dependencies: 2386 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.30.0) 2387 | '@jridgewell/sourcemap-codec': 1.5.0 2388 | eslint: 9.30.0 2389 | eslint-compat-utils: 0.5.1(eslint@9.30.0) 2390 | esutils: 2.0.3 2391 | known-css-properties: 0.35.0 2392 | postcss: 8.5.3 2393 | postcss-load-config: 3.1.4(postcss@8.5.3) 2394 | postcss-safe-parser: 6.0.0(postcss@8.5.3) 2395 | postcss-selector-parser: 6.1.2 2396 | semver: 7.6.3 2397 | svelte-eslint-parser: 0.43.0(svelte@5.1.13) 2398 | optionalDependencies: 2399 | svelte: 5.1.13 2400 | transitivePeerDependencies: 2401 | - ts-node 2402 | 2403 | eslint-scope@7.2.2: 2404 | dependencies: 2405 | esrecurse: 4.3.0 2406 | estraverse: 5.3.0 2407 | 2408 | eslint-scope@8.4.0: 2409 | dependencies: 2410 | esrecurse: 4.3.0 2411 | estraverse: 5.3.0 2412 | 2413 | eslint-visitor-keys@3.4.3: {} 2414 | 2415 | eslint-visitor-keys@4.2.1: {} 2416 | 2417 | eslint@9.30.0: 2418 | dependencies: 2419 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.30.0) 2420 | '@eslint-community/regexpp': 4.12.1 2421 | '@eslint/config-array': 0.21.0 2422 | '@eslint/config-helpers': 0.3.0 2423 | '@eslint/core': 0.14.0 2424 | '@eslint/eslintrc': 3.3.1 2425 | '@eslint/js': 9.30.0 2426 | '@eslint/plugin-kit': 0.3.3 2427 | '@humanfs/node': 0.16.6 2428 | '@humanwhocodes/module-importer': 1.0.1 2429 | '@humanwhocodes/retry': 0.4.3 2430 | '@types/estree': 1.0.6 2431 | '@types/json-schema': 7.0.15 2432 | ajv: 6.12.6 2433 | chalk: 4.1.2 2434 | cross-spawn: 7.0.6 2435 | debug: 4.4.0 2436 | escape-string-regexp: 4.0.0 2437 | eslint-scope: 8.4.0 2438 | eslint-visitor-keys: 4.2.1 2439 | espree: 10.4.0 2440 | esquery: 1.6.0 2441 | esutils: 2.0.3 2442 | fast-deep-equal: 3.1.3 2443 | file-entry-cache: 8.0.0 2444 | find-up: 5.0.0 2445 | glob-parent: 6.0.2 2446 | ignore: 5.3.2 2447 | imurmurhash: 0.1.4 2448 | is-glob: 4.0.3 2449 | json-stable-stringify-without-jsonify: 1.0.1 2450 | lodash.merge: 4.6.2 2451 | minimatch: 3.1.2 2452 | natural-compare: 1.4.0 2453 | optionator: 0.9.4 2454 | transitivePeerDependencies: 2455 | - supports-color 2456 | 2457 | esm-env@1.1.4: {} 2458 | 2459 | espree@10.4.0: 2460 | dependencies: 2461 | acorn: 8.15.0 2462 | acorn-jsx: 5.3.2(acorn@8.15.0) 2463 | eslint-visitor-keys: 4.2.1 2464 | 2465 | espree@9.6.1: 2466 | dependencies: 2467 | acorn: 8.14.0 2468 | acorn-jsx: 5.3.2(acorn@8.14.0) 2469 | eslint-visitor-keys: 3.4.3 2470 | 2471 | esquery@1.6.0: 2472 | dependencies: 2473 | estraverse: 5.3.0 2474 | 2475 | esrap@1.2.2: 2476 | dependencies: 2477 | '@jridgewell/sourcemap-codec': 1.5.0 2478 | '@types/estree': 1.0.6 2479 | 2480 | esrecurse@4.3.0: 2481 | dependencies: 2482 | estraverse: 5.3.0 2483 | 2484 | estraverse@5.3.0: {} 2485 | 2486 | estree-walker@3.0.3: 2487 | dependencies: 2488 | '@types/estree': 1.0.6 2489 | 2490 | esutils@2.0.3: {} 2491 | 2492 | expect-type@1.2.1: {} 2493 | 2494 | fast-deep-equal@3.1.3: {} 2495 | 2496 | fast-glob@3.3.2: 2497 | dependencies: 2498 | '@nodelib/fs.stat': 2.0.5 2499 | '@nodelib/fs.walk': 1.2.8 2500 | glob-parent: 5.1.2 2501 | merge2: 1.4.1 2502 | micromatch: 4.0.8 2503 | 2504 | fast-json-stable-stringify@2.1.0: {} 2505 | 2506 | fast-levenshtein@2.0.6: {} 2507 | 2508 | fastq@1.17.1: 2509 | dependencies: 2510 | reusify: 1.0.4 2511 | 2512 | fdir@6.4.6: {} 2513 | 2514 | fflate@0.7.4: {} 2515 | 2516 | file-entry-cache@8.0.0: 2517 | dependencies: 2518 | flat-cache: 4.0.1 2519 | 2520 | fill-range@7.1.1: 2521 | dependencies: 2522 | to-regex-range: 5.0.1 2523 | 2524 | find-up@5.0.0: 2525 | dependencies: 2526 | locate-path: 6.0.0 2527 | path-exists: 4.0.0 2528 | 2529 | flat-cache@4.0.1: 2530 | dependencies: 2531 | flatted: 3.3.1 2532 | keyv: 4.5.4 2533 | 2534 | flatted@3.3.1: {} 2535 | 2536 | fsevents@2.3.2: 2537 | optional: true 2538 | 2539 | fsevents@2.3.3: 2540 | optional: true 2541 | 2542 | glob-parent@5.1.2: 2543 | dependencies: 2544 | is-glob: 4.0.3 2545 | 2546 | glob-parent@6.0.2: 2547 | dependencies: 2548 | is-glob: 4.0.3 2549 | 2550 | globals@14.0.0: {} 2551 | 2552 | globals@15.15.0: {} 2553 | 2554 | globalyzer@0.1.0: {} 2555 | 2556 | globrex@0.1.2: {} 2557 | 2558 | graphemer@1.4.0: {} 2559 | 2560 | has-flag@4.0.0: {} 2561 | 2562 | hex-rgb@4.3.0: {} 2563 | 2564 | htmlparser2@5.0.1: 2565 | dependencies: 2566 | domelementtype: 2.3.0 2567 | domhandler: 3.3.0 2568 | domutils: 2.8.0 2569 | entities: 2.2.0 2570 | 2571 | htmlparser2@9.1.0: 2572 | dependencies: 2573 | domelementtype: 2.3.0 2574 | domhandler: 5.0.3 2575 | domutils: 3.1.0 2576 | entities: 4.5.0 2577 | 2578 | iconv-lite@0.6.3: 2579 | dependencies: 2580 | safer-buffer: 2.1.2 2581 | 2582 | ignore@5.3.2: {} 2583 | 2584 | ignore@7.0.5: {} 2585 | 2586 | import-fresh@3.3.0: 2587 | dependencies: 2588 | parent-module: 1.0.1 2589 | resolve-from: 4.0.0 2590 | 2591 | import-meta-resolve@4.1.0: {} 2592 | 2593 | imurmurhash@0.1.4: {} 2594 | 2595 | is-extglob@2.1.1: {} 2596 | 2597 | is-glob@4.0.3: 2598 | dependencies: 2599 | is-extglob: 2.1.1 2600 | 2601 | is-number@7.0.0: {} 2602 | 2603 | is-reference@3.0.2: 2604 | dependencies: 2605 | '@types/estree': 1.0.6 2606 | 2607 | isexe@2.0.0: {} 2608 | 2609 | js-yaml@4.1.0: 2610 | dependencies: 2611 | argparse: 2.0.1 2612 | 2613 | json-buffer@3.0.1: {} 2614 | 2615 | json-schema-traverse@0.4.1: {} 2616 | 2617 | json-stable-stringify-without-jsonify@1.0.1: {} 2618 | 2619 | juice@11.0.0: 2620 | dependencies: 2621 | cheerio: 1.0.0 2622 | commander: 12.1.0 2623 | mensch: 0.3.4 2624 | slick: 1.12.2 2625 | web-resource-inliner: 7.0.0 2626 | 2627 | keyv@4.5.4: 2628 | dependencies: 2629 | json-buffer: 3.0.1 2630 | 2631 | kleur@4.1.5: {} 2632 | 2633 | known-css-properties@0.35.0: {} 2634 | 2635 | levn@0.4.1: 2636 | dependencies: 2637 | prelude-ls: 1.2.1 2638 | type-check: 0.4.0 2639 | 2640 | lilconfig@2.1.0: {} 2641 | 2642 | linebreak@1.1.0: 2643 | dependencies: 2644 | base64-js: 0.0.8 2645 | unicode-trie: 2.0.0 2646 | 2647 | locate-character@3.0.0: {} 2648 | 2649 | locate-path@6.0.0: 2650 | dependencies: 2651 | p-locate: 5.0.0 2652 | 2653 | lodash.merge@4.6.2: {} 2654 | 2655 | loupe@3.1.4: {} 2656 | 2657 | lower-case@2.0.2: 2658 | dependencies: 2659 | tslib: 2.8.1 2660 | 2661 | magic-string@0.30.17: 2662 | dependencies: 2663 | '@jridgewell/sourcemap-codec': 1.5.0 2664 | 2665 | mensch@0.3.4: {} 2666 | 2667 | merge2@1.4.1: {} 2668 | 2669 | micromatch@4.0.8: 2670 | dependencies: 2671 | braces: 3.0.3 2672 | picomatch: 2.3.1 2673 | 2674 | mime@2.6.0: {} 2675 | 2676 | minimatch@3.1.2: 2677 | dependencies: 2678 | brace-expansion: 1.1.11 2679 | 2680 | minimatch@9.0.5: 2681 | dependencies: 2682 | brace-expansion: 2.0.1 2683 | 2684 | mri@1.2.0: {} 2685 | 2686 | mrmime@2.0.0: {} 2687 | 2688 | ms@2.1.3: {} 2689 | 2690 | nanoid@3.3.11: {} 2691 | 2692 | natural-compare@1.4.0: {} 2693 | 2694 | no-case@3.0.4: 2695 | dependencies: 2696 | lower-case: 2.0.2 2697 | tslib: 2.8.1 2698 | 2699 | nth-check@2.1.1: 2700 | dependencies: 2701 | boolbase: 1.0.0 2702 | 2703 | optionator@0.9.4: 2704 | dependencies: 2705 | deep-is: 0.1.4 2706 | fast-levenshtein: 2.0.6 2707 | levn: 0.4.1 2708 | prelude-ls: 1.2.1 2709 | type-check: 0.4.0 2710 | word-wrap: 1.2.5 2711 | 2712 | p-limit@3.1.0: 2713 | dependencies: 2714 | yocto-queue: 0.1.0 2715 | 2716 | p-locate@5.0.0: 2717 | dependencies: 2718 | p-limit: 3.1.0 2719 | 2720 | pako@0.2.9: {} 2721 | 2722 | parent-module@1.0.1: 2723 | dependencies: 2724 | callsites: 3.1.0 2725 | 2726 | parse-css-color@0.2.1: 2727 | dependencies: 2728 | color-name: 1.1.4 2729 | hex-rgb: 4.3.0 2730 | 2731 | parse5-htmlparser2-tree-adapter@7.1.0: 2732 | dependencies: 2733 | domhandler: 5.0.3 2734 | parse5: 7.2.1 2735 | 2736 | parse5-parser-stream@7.1.2: 2737 | dependencies: 2738 | parse5: 7.2.1 2739 | 2740 | parse5@7.2.1: 2741 | dependencies: 2742 | entities: 4.5.0 2743 | 2744 | pascal-case@3.1.2: 2745 | dependencies: 2746 | no-case: 3.0.4 2747 | tslib: 2.8.1 2748 | 2749 | path-exists@4.0.0: {} 2750 | 2751 | path-key@3.1.1: {} 2752 | 2753 | pathe@1.1.2: {} 2754 | 2755 | pathval@2.0.1: {} 2756 | 2757 | picocolors@1.1.1: {} 2758 | 2759 | picomatch@2.3.1: {} 2760 | 2761 | playwright-core@1.48.2: {} 2762 | 2763 | playwright@1.48.2: 2764 | dependencies: 2765 | playwright-core: 1.48.2 2766 | optionalDependencies: 2767 | fsevents: 2.3.2 2768 | 2769 | postcss-load-config@3.1.4(postcss@8.5.3): 2770 | dependencies: 2771 | lilconfig: 2.1.0 2772 | yaml: 1.10.2 2773 | optionalDependencies: 2774 | postcss: 8.5.3 2775 | 2776 | postcss-safe-parser@6.0.0(postcss@8.5.3): 2777 | dependencies: 2778 | postcss: 8.5.3 2779 | 2780 | postcss-scss@4.0.9(postcss@8.5.3): 2781 | dependencies: 2782 | postcss: 8.5.3 2783 | 2784 | postcss-selector-parser@6.1.2: 2785 | dependencies: 2786 | cssesc: 3.0.0 2787 | util-deprecate: 1.0.2 2788 | 2789 | postcss-value-parser@4.2.0: {} 2790 | 2791 | postcss@8.5.3: 2792 | dependencies: 2793 | nanoid: 3.3.11 2794 | picocolors: 1.1.1 2795 | source-map-js: 1.2.1 2796 | 2797 | prelude-ls@1.2.1: {} 2798 | 2799 | prettier-plugin-svelte@3.2.7(prettier@3.3.3)(svelte@5.1.13): 2800 | dependencies: 2801 | prettier: 3.3.3 2802 | svelte: 5.1.13 2803 | 2804 | prettier@3.3.3: {} 2805 | 2806 | punycode@2.3.1: {} 2807 | 2808 | queue-microtask@1.2.3: {} 2809 | 2810 | readdirp@4.0.2: {} 2811 | 2812 | resolve-from@4.0.0: {} 2813 | 2814 | reusify@1.0.4: {} 2815 | 2816 | rollup@4.36.0: 2817 | dependencies: 2818 | '@types/estree': 1.0.6 2819 | optionalDependencies: 2820 | '@rollup/rollup-android-arm-eabi': 4.36.0 2821 | '@rollup/rollup-android-arm64': 4.36.0 2822 | '@rollup/rollup-darwin-arm64': 4.36.0 2823 | '@rollup/rollup-darwin-x64': 4.36.0 2824 | '@rollup/rollup-freebsd-arm64': 4.36.0 2825 | '@rollup/rollup-freebsd-x64': 4.36.0 2826 | '@rollup/rollup-linux-arm-gnueabihf': 4.36.0 2827 | '@rollup/rollup-linux-arm-musleabihf': 4.36.0 2828 | '@rollup/rollup-linux-arm64-gnu': 4.36.0 2829 | '@rollup/rollup-linux-arm64-musl': 4.36.0 2830 | '@rollup/rollup-linux-loongarch64-gnu': 4.36.0 2831 | '@rollup/rollup-linux-powerpc64le-gnu': 4.36.0 2832 | '@rollup/rollup-linux-riscv64-gnu': 4.36.0 2833 | '@rollup/rollup-linux-s390x-gnu': 4.36.0 2834 | '@rollup/rollup-linux-x64-gnu': 4.36.0 2835 | '@rollup/rollup-linux-x64-musl': 4.36.0 2836 | '@rollup/rollup-win32-arm64-msvc': 4.36.0 2837 | '@rollup/rollup-win32-ia32-msvc': 4.36.0 2838 | '@rollup/rollup-win32-x64-msvc': 4.36.0 2839 | fsevents: 2.3.3 2840 | 2841 | run-parallel@1.2.0: 2842 | dependencies: 2843 | queue-microtask: 1.2.3 2844 | 2845 | sade@1.8.1: 2846 | dependencies: 2847 | mri: 1.2.0 2848 | 2849 | safer-buffer@2.1.2: {} 2850 | 2851 | satori-html@0.3.2: 2852 | dependencies: 2853 | ultrahtml: 1.5.3 2854 | 2855 | satori@0.11.3: 2856 | dependencies: 2857 | '@shuding/opentype.js': 1.4.0-beta.0 2858 | css-background-parser: 0.1.0 2859 | css-box-shadow: 1.0.0-3 2860 | css-gradient-parser: 0.0.16 2861 | css-to-react-native: 3.2.0 2862 | emoji-regex: 10.4.0 2863 | escape-html: 1.0.3 2864 | linebreak: 1.1.0 2865 | parse-css-color: 0.2.1 2866 | postcss-value-parser: 4.2.0 2867 | yoga-wasm-web: 0.3.3 2868 | 2869 | semver@7.6.3: {} 2870 | 2871 | set-cookie-parser@2.7.1: {} 2872 | 2873 | shebang-command@2.0.0: 2874 | dependencies: 2875 | shebang-regex: 3.0.0 2876 | 2877 | shebang-regex@3.0.0: {} 2878 | 2879 | siginfo@2.0.0: {} 2880 | 2881 | sirv@3.0.0: 2882 | dependencies: 2883 | '@polka/url': 1.0.0-next.28 2884 | mrmime: 2.0.0 2885 | totalist: 3.0.1 2886 | 2887 | slick@1.12.2: {} 2888 | 2889 | source-map-js@1.2.1: {} 2890 | 2891 | stackback@0.0.2: {} 2892 | 2893 | std-env@3.8.0: {} 2894 | 2895 | string.prototype.codepointat@0.2.1: {} 2896 | 2897 | strip-json-comments@3.1.1: {} 2898 | 2899 | supports-color@7.2.0: 2900 | dependencies: 2901 | has-flag: 4.0.0 2902 | 2903 | svelte-check@4.2.2(svelte@5.1.13)(typescript@5.6.3): 2904 | dependencies: 2905 | '@jridgewell/trace-mapping': 0.3.25 2906 | chokidar: 4.0.1 2907 | fdir: 6.4.6 2908 | picocolors: 1.1.1 2909 | sade: 1.8.1 2910 | svelte: 5.1.13 2911 | typescript: 5.6.3 2912 | transitivePeerDependencies: 2913 | - picomatch 2914 | 2915 | svelte-eslint-parser@0.43.0(svelte@5.1.13): 2916 | dependencies: 2917 | eslint-scope: 7.2.2 2918 | eslint-visitor-keys: 3.4.3 2919 | espree: 9.6.1 2920 | postcss: 8.5.3 2921 | postcss-scss: 4.0.9(postcss@8.5.3) 2922 | optionalDependencies: 2923 | svelte: 5.1.13 2924 | 2925 | svelte2tsx@0.7.23(svelte@5.1.13)(typescript@5.6.3): 2926 | dependencies: 2927 | dedent-js: 1.0.1 2928 | pascal-case: 3.1.2 2929 | svelte: 5.1.13 2930 | typescript: 5.6.3 2931 | 2932 | svelte@5.1.13: 2933 | dependencies: 2934 | '@ampproject/remapping': 2.3.0 2935 | '@jridgewell/sourcemap-codec': 1.5.0 2936 | '@types/estree': 1.0.6 2937 | acorn: 8.14.0 2938 | acorn-typescript: 1.4.13(acorn@8.14.0) 2939 | aria-query: 5.3.2 2940 | axobject-query: 4.1.0 2941 | esm-env: 1.1.4 2942 | esrap: 1.2.2 2943 | is-reference: 3.0.2 2944 | locate-character: 3.0.0 2945 | magic-string: 0.30.17 2946 | zimmerframe: 1.1.2 2947 | 2948 | tiny-glob@0.2.9: 2949 | dependencies: 2950 | globalyzer: 0.1.0 2951 | globrex: 0.1.2 2952 | 2953 | tiny-inflate@1.0.3: {} 2954 | 2955 | tinybench@2.9.0: {} 2956 | 2957 | tinyexec@0.3.2: {} 2958 | 2959 | tinypool@1.1.1: {} 2960 | 2961 | tinyrainbow@1.2.0: {} 2962 | 2963 | tinyspy@3.0.2: {} 2964 | 2965 | to-regex-range@5.0.1: 2966 | dependencies: 2967 | is-number: 7.0.0 2968 | 2969 | totalist@3.0.1: {} 2970 | 2971 | ts-api-utils@2.1.0(typescript@5.6.3): 2972 | dependencies: 2973 | typescript: 5.6.3 2974 | 2975 | tslib@2.8.1: {} 2976 | 2977 | type-check@0.4.0: 2978 | dependencies: 2979 | prelude-ls: 1.2.1 2980 | 2981 | typescript-eslint@8.35.0(eslint@9.30.0)(typescript@5.6.3): 2982 | dependencies: 2983 | '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.6.3))(eslint@9.30.0)(typescript@5.6.3) 2984 | '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.6.3) 2985 | '@typescript-eslint/utils': 8.35.0(eslint@9.30.0)(typescript@5.6.3) 2986 | eslint: 9.30.0 2987 | typescript: 5.6.3 2988 | transitivePeerDependencies: 2989 | - supports-color 2990 | 2991 | typescript@5.6.3: {} 2992 | 2993 | ultrahtml@1.5.3: {} 2994 | 2995 | undici-types@6.19.8: 2996 | optional: true 2997 | 2998 | undici@6.20.1: {} 2999 | 3000 | unicode-trie@2.0.0: 3001 | dependencies: 3002 | pako: 0.2.9 3003 | tiny-inflate: 1.0.3 3004 | 3005 | uri-js@4.4.1: 3006 | dependencies: 3007 | punycode: 2.3.1 3008 | 3009 | util-deprecate@1.0.2: {} 3010 | 3011 | valid-data-url@3.0.1: {} 3012 | 3013 | vite-node@2.1.9(@types/node@22.9.0): 3014 | dependencies: 3015 | cac: 6.7.14 3016 | debug: 4.4.0 3017 | es-module-lexer: 1.7.0 3018 | pathe: 1.1.2 3019 | vite: 5.4.14(@types/node@22.9.0) 3020 | transitivePeerDependencies: 3021 | - '@types/node' 3022 | - less 3023 | - lightningcss 3024 | - sass 3025 | - sass-embedded 3026 | - stylus 3027 | - sugarss 3028 | - supports-color 3029 | - terser 3030 | 3031 | vite@5.4.14(@types/node@22.9.0): 3032 | dependencies: 3033 | esbuild: 0.21.5 3034 | postcss: 8.5.3 3035 | rollup: 4.36.0 3036 | optionalDependencies: 3037 | '@types/node': 22.9.0 3038 | fsevents: 2.3.3 3039 | 3040 | vitefu@1.0.6(vite@5.4.14(@types/node@22.9.0)): 3041 | optionalDependencies: 3042 | vite: 5.4.14(@types/node@22.9.0) 3043 | 3044 | vitest@2.1.9(@types/node@22.9.0): 3045 | dependencies: 3046 | '@vitest/expect': 2.1.9 3047 | '@vitest/mocker': 2.1.9(vite@5.4.14(@types/node@22.9.0)) 3048 | '@vitest/pretty-format': 2.1.9 3049 | '@vitest/runner': 2.1.9 3050 | '@vitest/snapshot': 2.1.9 3051 | '@vitest/spy': 2.1.9 3052 | '@vitest/utils': 2.1.9 3053 | chai: 5.2.0 3054 | debug: 4.4.0 3055 | expect-type: 1.2.1 3056 | magic-string: 0.30.17 3057 | pathe: 1.1.2 3058 | std-env: 3.8.0 3059 | tinybench: 2.9.0 3060 | tinyexec: 0.3.2 3061 | tinypool: 1.1.1 3062 | tinyrainbow: 1.2.0 3063 | vite: 5.4.14(@types/node@22.9.0) 3064 | vite-node: 2.1.9(@types/node@22.9.0) 3065 | why-is-node-running: 2.3.0 3066 | optionalDependencies: 3067 | '@types/node': 22.9.0 3068 | transitivePeerDependencies: 3069 | - less 3070 | - lightningcss 3071 | - msw 3072 | - sass 3073 | - sass-embedded 3074 | - stylus 3075 | - sugarss 3076 | - supports-color 3077 | - terser 3078 | 3079 | web-resource-inliner@7.0.0: 3080 | dependencies: 3081 | ansi-colors: 4.1.3 3082 | escape-goat: 3.0.0 3083 | htmlparser2: 5.0.1 3084 | mime: 2.6.0 3085 | valid-data-url: 3.0.1 3086 | 3087 | whatwg-encoding@3.1.1: 3088 | dependencies: 3089 | iconv-lite: 0.6.3 3090 | 3091 | whatwg-mimetype@4.0.0: {} 3092 | 3093 | which@2.0.2: 3094 | dependencies: 3095 | isexe: 2.0.0 3096 | 3097 | why-is-node-running@2.3.0: 3098 | dependencies: 3099 | siginfo: 2.0.0 3100 | stackback: 0.0.2 3101 | 3102 | word-wrap@1.2.5: {} 3103 | 3104 | yaml@1.10.2: {} 3105 | 3106 | yocto-queue@0.1.0: {} 3107 | 3108 | yoga-wasm-web@0.3.3: {} 3109 | 3110 | zimmerframe@1.1.2: {} 3111 | --------------------------------------------------------------------------------