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