├── static ├── robots.txt └── favicon.png ├── src ├── routes │ ├── +layout.ts │ ├── CopyTextExample.svelte │ ├── +layout.svelte │ ├── GitHub.svelte │ ├── Example.svelte │ ├── +page.svelte │ └── +page.server.ts ├── global.d.ts ├── lib │ ├── index.ts │ ├── types.ts │ └── copy.ts └── app.html ├── tsconfig.json ├── .github ├── FUNDING.yml └── workflows │ ├── tests.yml │ └── release.yml ├── .gitignore ├── .vscode ├── extensions.json └── settings.json ├── vite.config.js ├── svelte.config.js ├── .prettierrc ├── LICENSE ├── package.json ├── README.md ├── tests └── svelte-copy.test.ts └── pnpm-lock.yaml /static/robots.txt: -------------------------------------------------------------------------------- 1 | User-Agent: * 2 | Allow: / 3 | -------------------------------------------------------------------------------- /src/routes/+layout.ts: -------------------------------------------------------------------------------- 1 | export const prerender = true; 2 | -------------------------------------------------------------------------------- /src/global.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json" 3 | } -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | patreon: onlyspaceghost 2 | custom: https://ghostdev.xyz/donate -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghostdevv/svelte-copy/HEAD/static/favicon.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | .vercel_build_output 9 | .vercel 10 | dist 11 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | export { copy, copyText } from './copy'; 2 | export type { 3 | Options, 4 | ErrorCallback, 5 | ErrorCallbackParams, 6 | CopyCallback, 7 | CopyCallbackParams, 8 | } from './types'; 9 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "esbenp.prettier-vscode", 4 | "formulahendry.auto-rename-tag", 5 | "svelte.svelte-vscode", 6 | "christian-kohler.npm-intellisense", 7 | "zignd.html-css-class-completion" 8 | ] 9 | } -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | /// 2 | import { sveltekit } from '@sveltejs/kit/vite'; 3 | import { defineConfig } from 'vite'; 4 | 5 | const config = defineConfig({ 6 | plugins: [sveltekit()], 7 | 8 | test: { 9 | environment: 'happy-dom', 10 | }, 11 | }); 12 | 13 | export default config; 14 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 2 | import adapter from '@sveltejs/adapter-static'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | preprocess: vitePreprocess(), 7 | 8 | kit: { 9 | adapter: adapter(), 10 | }, 11 | }; 12 | 13 | export default config; 14 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | svelte-copy demo 9 | %sveltekit.head% 10 | 11 | 12 |
%sveltekit.body%
13 | 14 | 15 | -------------------------------------------------------------------------------- /src/routes/CopyTextExample.svelte: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "quoteProps": "as-needed", 4 | "trailingComma": "all", 5 | "bracketSpacing": true, 6 | "arrowParens": "always", 7 | "semi": true, 8 | "useTabs": true, 9 | "tabWidth": 4, 10 | "svelteAllowShorthand": true, 11 | "svelteBracketNewLine": false, 12 | "svelteIndentScriptAndStyle": true, 13 | "plugins": ["prettier-plugin-svelte"], 14 | "overrides": [ 15 | { 16 | "files": "*.svelte", 17 | "options": { 18 | "parser": "svelte" 19 | } 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 | {@render children()} 14 |
15 | 16 | 28 | -------------------------------------------------------------------------------- /src/routes/GitHub.svelte: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "[javascript]": { 3 | "editor.defaultFormatter": "esbenp.prettier-vscode", 4 | "editor.formatOnSave": true 5 | }, 6 | "[typescript]": { 7 | "editor.defaultFormatter": "esbenp.prettier-vscode", 8 | "editor.formatOnSave": true 9 | }, 10 | "[svelte]": { 11 | "editor.defaultFormatter": "svelte.svelte-vscode", 12 | "editor.formatOnSave": true 13 | }, 14 | "[markdown]": { 15 | "editor.defaultFormatter": "vscode.markdown-language-features", 16 | "editor.formatOnSave": true 17 | }, 18 | "[scss]": { 19 | "editor.defaultFormatter": "esbenp.prettier-vscode", 20 | "editor.formatOnSave": true 21 | }, 22 | "files.associations": { 23 | "*.svx": "markdown" 24 | } 25 | } -------------------------------------------------------------------------------- /.github/workflows/tests.yml: -------------------------------------------------------------------------------- 1 | name: Tests 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: 7 | - main 8 | 9 | jobs: 10 | tests: 11 | name: Tests 12 | runs-on: ubuntu-latest 13 | strategy: 14 | matrix: 15 | node-version: [20, 22] 16 | steps: 17 | - name: Checkout Repo 18 | uses: actions/checkout@v4 19 | 20 | - name: Setup Node.js ${{ matrix.node-version }} 21 | uses: actions/setup-node@v4 22 | with: 23 | node-version: ${{ matrix.node-version }} 24 | 25 | - name: Setup PNPM 26 | uses: pnpm/action-setup@v4.0.0 27 | with: 28 | version: 9.12.2 29 | 30 | - name: Install Dependencies 31 | run: pnpm install --frozen-lockfile 32 | 33 | - name: Tests 34 | run: pnpm test 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright © 2022 - Present GHOST 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /src/lib/types.ts: -------------------------------------------------------------------------------- 1 | export interface CopyCallbackParams { 2 | /** 3 | * The text that was copied to clipboard 4 | */ 5 | text: string; 6 | 7 | /** 8 | * The event that triggered the copy 9 | */ 10 | event: Event; 11 | } 12 | 13 | export type CopyCallback = (params: CopyCallbackParams) => void; 14 | 15 | export interface ErrorCallbackParams { 16 | /** 17 | * The error that was thrown 18 | */ 19 | error: Error; 20 | 21 | /** 22 | * The event that triggered the copy, and subsequent error 23 | */ 24 | event: Event; 25 | } 26 | 27 | export type ErrorCallback = (params: ErrorCallbackParams) => void; 28 | 29 | export interface Options { 30 | /** 31 | * The text to copy to clipboard 32 | */ 33 | text: string; 34 | 35 | /** 36 | * The events that will cause the copy to occur. 37 | * @default 'click' 38 | */ 39 | events?: string[]; 40 | 41 | /** 42 | * This callback fires when text is successfully copied 43 | */ 44 | onCopy?: CopyCallback; 45 | 46 | /** 47 | * This callback fires when an error occurs with copying 48 | */ 49 | onError?: ErrorCallback; 50 | } 51 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release Package 2 | 3 | on: 4 | release: 5 | types: [created] 6 | 7 | jobs: 8 | publish-npm: 9 | runs-on: ubuntu-latest 10 | permissions: 11 | id-token: write 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v4 15 | 16 | - name: Setup Node 22 17 | uses: actions/setup-node@v4 18 | with: 19 | node-version: 22 20 | registry-url: https://registry.npmjs.org/ 21 | 22 | - name: Setup PNPM 23 | uses: pnpm/action-setup@v4.0.0 24 | with: 25 | version: 9.12.2 26 | 27 | - name: Install 28 | run: pnpm install --frozen-lockfile 29 | 30 | - name: Package 31 | run: pnpm package 32 | 33 | - name: Publish 34 | run: | 35 | pnpm config set "//registry.npmjs.org/:_authToken" "${NPM_TOKEN}" 36 | pnpm publish --no-git-checks 37 | env: 38 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 39 | NPM_CONFIG_PROVENANCE: true 40 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-copy", 3 | "version": "2.0.0", 4 | "repository": { 5 | "type": "git", 6 | "url": "git+https://github.com/ghostdevv/svelte-copy.git" 7 | }, 8 | "license": "MIT", 9 | "bugs": { 10 | "url": "https://github.com/ghostdevv/svelte-copy/issues" 11 | }, 12 | "author": "Willow GHOST (https://ghostdev.xyz)", 13 | "scripts": { 14 | "dev": "vite dev", 15 | "build": "vite build", 16 | "package": "svelte-kit sync && svelte-package && publint", 17 | "test": "vitest" 18 | }, 19 | "devDependencies": { 20 | "@sveltejs/adapter-static": "^3.0.5", 21 | "@sveltejs/kit": "2.7.2", 22 | "@sveltejs/package": "^2.3.5", 23 | "@sveltejs/vite-plugin-svelte": "^4.0.0", 24 | "dedent": "^1.5.3", 25 | "ghostsui": "2.0.0-beta.1", 26 | "happy-dom": "^15.7.4", 27 | "prettier": "^3.3.3", 28 | "prettier-plugin-svelte": "^3.2.7", 29 | "publint": "^0.2.11", 30 | "runed": "^0.15.3", 31 | "sass": "^1.80.3", 32 | "shiki": "^1.22.0", 33 | "svelte": "^5.0.2", 34 | "typescript": "^5.6.3", 35 | "vite": "^5.4.9", 36 | "vitest": "^2.1.3" 37 | }, 38 | "peerDependencies": { 39 | "svelte": "^5.0.0" 40 | }, 41 | "type": "module", 42 | "types": "./dist/index.d.ts", 43 | "svelte": "./dist/index.js", 44 | "sideEffects": false, 45 | "exports": { 46 | "./package.json": "./package.json", 47 | ".": { 48 | "types": "./dist/index.d.ts", 49 | "svelte": "./dist/index.js", 50 | "default": "./dist/index.js" 51 | } 52 | }, 53 | "files": [ 54 | "dist" 55 | ] 56 | } 57 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Svelte Copy 2 | 3 | A svelte action to copy text to clipboard. It uses the `navigator.clipboard` api, with a fallback to the legacy method. 4 | 5 | # Installing 6 | 7 | ```sh 8 | npm install svelte-copy -D 9 | ``` 10 | 11 | This library only works with Svelte 5, checkout [svelte-copy@1](https://www.npmjs.com/package/svelte-copy/v/1.4.2) for Svelte 3/4 support. 12 | 13 | # Usage 14 | 15 | The simplest use is to just pass the text you want to copy: 16 | 17 | ```svelte 18 | 21 | 22 | 25 | ``` 26 | 27 | You can expand that with an options object: 28 | 29 | ```svelte 30 | 33 | 34 | 48 | ``` 49 | 50 | [Read the full docs here](https://svelte-copy.willow.codes). 51 | 52 | # Migrating from v1 to v2 53 | 54 | - The `on:svelte-copy` event is now a `onCopy` param to the action options. 55 | - The `on:svelte-copy:error` event is now a `onError` param to the action options. 56 | - The `events` option now only accepts `string[]`, rather than `string | string[]` 57 | - Svelte 5 is now required 58 | 59 | # Support 60 | 61 | - Join the [discord](https://discord.gg/2Vd4wAjJnm)
62 | - Create a issue on the [github](https://github.com/ghostdevv/svelte-copy) 63 | -------------------------------------------------------------------------------- /src/routes/Example.svelte: -------------------------------------------------------------------------------- 1 | 27 | 28 |
29 |
30 | {@html code} 31 |
32 | 33 |
34 | {@render children?.(text)} 35 |
36 |
37 | 38 | 77 | -------------------------------------------------------------------------------- /src/lib/copy.ts: -------------------------------------------------------------------------------- 1 | import type { Action } from 'svelte/action'; 2 | import type { Options } from './types'; 3 | 4 | export async function copyText(text: string) { 5 | if ('clipboard' in navigator) { 6 | await navigator.clipboard.writeText(text); 7 | } else { 8 | //? This is the fallback deprecated way of copying text to the clipboard. 9 | //? Only runs if it can't find the clipboard API. 10 | 11 | const element = document.createElement('input'); 12 | 13 | element.type = 'text'; 14 | element.disabled = true; 15 | 16 | element.style.setProperty('position', 'fixed'); 17 | element.style.setProperty('z-index', '-100'); 18 | element.style.setProperty('pointer-events', 'none'); 19 | element.style.setProperty('opacity', '0'); 20 | 21 | element.value = text; 22 | 23 | document.body.appendChild(element); 24 | 25 | element.click(); 26 | element.select(); 27 | document.execCommand('copy'); 28 | 29 | document.body.removeChild(element); 30 | } 31 | } 32 | 33 | function parseOptions(options: string | Options): Options { 34 | return typeof options == 'string' ? { text: options } : options; 35 | } 36 | 37 | function addListeners( 38 | element: Element, 39 | cb: (event: Event) => void, 40 | events = ['click'], 41 | ) { 42 | for (const event of events) { 43 | element.addEventListener(event, cb, true); 44 | } 45 | } 46 | 47 | function removeListeners( 48 | element: Element, 49 | cb: (event: Event) => void, 50 | events = ['click'], 51 | ) { 52 | for (const event of events) { 53 | element.removeEventListener(event, cb, true); 54 | } 55 | } 56 | 57 | /** 58 | * A svelte action to copy text to clipboard. 59 | * 60 | * @see https://svelte-copy.willow.codes 61 | * 62 | * @example 63 | * 64 | * 67 | * 68 | * 71 | */ 72 | export const copy: Action = ( 73 | element: Element, 74 | initialOptions: string | Options, 75 | ) => { 76 | let options = parseOptions(initialOptions); 77 | 78 | const handle = async (event: Event) => { 79 | const text = options.text; 80 | 81 | try { 82 | await copyText(text); 83 | options.onCopy?.({ text, event }); 84 | } catch (e) { 85 | const error = new Error(`${e instanceof Error ? e.message : e}`, { 86 | cause: e, 87 | }); 88 | 89 | options.onError?.({ error, event }); 90 | } 91 | }; 92 | 93 | addListeners(element, handle, options.events); 94 | 95 | return { 96 | update(newOptions: string | Options) { 97 | removeListeners(element, handle, options.events); 98 | 99 | options = parseOptions(newOptions); 100 | 101 | addListeners(element, handle, options.events); 102 | }, 103 | destroy() { 104 | removeListeners(element, handle, options.events); 105 | }, 106 | }; 107 | }; 108 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 |

Svelte Copy

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

Usage

20 | 21 |

The simplest use is to just pass the text you want to copy

22 | 23 | 24 | {#snippet children(text)} 25 | 26 | {/snippet} 27 | 28 | 29 |

We could pass this as an object

30 | 31 | 32 | {#snippet children(text)} 33 | 34 | {/snippet} 35 | 36 | 37 |

Let's alert the user if the text was copied

38 | 39 | 40 | {#snippet children(text)} 41 | 51 | {/snippet} 52 | 53 | 54 |

We could tell the user what was copied

55 | 56 | 57 | {#snippet children(text)} 58 | 68 | {/snippet} 69 | 70 | 71 |

If there was an error, we can check for that too

72 | 73 | 74 | {#snippet children(text)} 75 | 88 | {/snippet} 89 | 90 | 91 |

We can trigger the copy on custom events

92 | 93 | 94 | {#snippet children(text)} 95 | 111 | {/snippet} 112 | 113 |
114 | 115 |
116 |

Extra

117 | 118 |

copyText()

119 | 120 |

121 | We expose the underlying copyText function. It uses the 122 | navigator.clipboard API by default, with a fallback to the legacy 123 | method. 124 |

125 | 126 | 127 | {#snippet children(text)} 128 | 129 | {/snippet} 130 | 131 |
132 | 133 | 145 | -------------------------------------------------------------------------------- /src/routes/+page.server.ts: -------------------------------------------------------------------------------- 1 | import { codeToHtml } from 'shiki'; 2 | import dedent from 'dedent'; 3 | 4 | async function highlight(code: string) { 5 | return await codeToHtml(code, { 6 | lang: 'svelte', 7 | theme: 'nord', 8 | }); 9 | } 10 | 11 | export async function load() { 12 | return { 13 | examples: { 14 | simple: await highlight(dedent` 15 | 18 | 19 | 22 | `), 23 | simpleObject: await highlight(dedent` 24 | 27 | `), 28 | simpleCopyAlert: await highlight(dedent` 29 | 39 | `), 40 | copyAlert: await highlight(dedent` 41 | 51 | `), 52 | errorAlert: await highlight(dedent` 53 | 63 | `), 64 | customEvents: await highlight(dedent` 65 | 79 | `), 80 | copyText: await highlight(dedent` 81 | 96 | 97 | 101 | `), 102 | }, 103 | }; 104 | } 105 | -------------------------------------------------------------------------------- /tests/svelte-copy.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect, beforeEach, vi } from 'vitest'; 2 | import { copy as copyAction, copyText } from '$lib/index'; 3 | import type { Options } from '$lib/types'; 4 | 5 | type ActionReturn = import('svelte/action').ActionReturn; 6 | 7 | async function tick() { 8 | await new Promise((resolve) => setTimeout(resolve, 0)); 9 | } 10 | 11 | describe('copyText', () => { 12 | beforeEach(async () => { 13 | await navigator.clipboard.writeText(''); 14 | }); 15 | 16 | it('copies text', async () => { 17 | const text = crypto.randomUUID(); 18 | 19 | await copyText(text); 20 | 21 | expect(await navigator.clipboard.readText()).toBe(text); 22 | }); 23 | }); 24 | 25 | describe('copy action', () => { 26 | beforeEach(async () => { 27 | await navigator.clipboard.writeText(''); 28 | }); 29 | 30 | it('fires on click', async () => { 31 | const element = document.createElement('button'); 32 | const text = crypto.randomUUID(); 33 | 34 | copyAction(element, text); 35 | element.click(); 36 | 37 | expect(await navigator.clipboard.readText()).toBe(text); 38 | }); 39 | 40 | it('only triggers on an event', async () => { 41 | const element = document.createElement('button'); 42 | const text = crypto.randomUUID(); 43 | 44 | copyAction(element, text); 45 | 46 | expect(await navigator.clipboard.readText()).toEqual(''); 47 | }); 48 | 49 | it('works with an options object', async () => { 50 | const element = document.createElement('button'); 51 | const text = crypto.randomUUID(); 52 | 53 | copyAction(element, { text }); 54 | element.click(); 55 | 56 | expect(await navigator.clipboard.readText()).toBe(text); 57 | }); 58 | 59 | it('works with custom events', async () => { 60 | const element = document.createElement('button'); 61 | const text = crypto.randomUUID(); 62 | 63 | copyAction(element, { text, events: ['pointerover'] }); 64 | element.dispatchEvent(new PointerEvent('pointerover')); 65 | 66 | expect(await navigator.clipboard.readText()).toBe(text); 67 | }); 68 | 69 | it('calls the onCopy callback with the correct text', async () => { 70 | const element = document.createElement('button'); 71 | const text = crypto.randomUUID(); 72 | const onCopy = vi.fn(); 73 | 74 | copyAction(element, { text, onCopy }); 75 | 76 | element.click(); 77 | expect(await navigator.clipboard.readText()).toBe(text); 78 | expect(onCopy).toHaveBeenCalledOnce(); 79 | expect(onCopy).toHaveBeenCalledWith(expect.objectContaining({ text })); 80 | }); 81 | 82 | it('calls the onCopy callback with the click event', async () => { 83 | const element = document.createElement('button'); 84 | const text = crypto.randomUUID(); 85 | const onCopy = vi.fn(); 86 | 87 | copyAction(element, { text, onCopy, events: ['pointerover'] }); 88 | 89 | element.dispatchEvent(new PointerEvent('pointerover')); 90 | expect(await navigator.clipboard.readText()).toBe(text); 91 | expect(onCopy).toHaveBeenCalledOnce(); 92 | expect(onCopy).toHaveBeenCalledWith( 93 | expect.objectContaining({ 94 | text, 95 | event: expect.objectContaining({ type: 'pointerover' }), 96 | }), 97 | ); 98 | }); 99 | 100 | it('calls the onCopy callback with a custom event', async () => { 101 | const element = document.createElement('button'); 102 | const text = crypto.randomUUID(); 103 | const onCopy = vi.fn(); 104 | 105 | copyAction(element, { text, onCopy }); 106 | 107 | element.click(); 108 | expect(await navigator.clipboard.readText()).toBe(text); 109 | expect(onCopy).toHaveBeenCalledOnce(); 110 | expect(onCopy).toHaveBeenCalledWith( 111 | expect.objectContaining({ 112 | text, 113 | event: expect.objectContaining({ type: 'click' }), 114 | }), 115 | ); 116 | }); 117 | 118 | it('sets updated text correctly with string option', async () => { 119 | const element = document.createElement('button'); 120 | const originalText = crypto.randomUUID(); 121 | 122 | const { update } = copyAction(element, { 123 | text: originalText, 124 | }) as ActionReturn; 125 | 126 | element.click(); 127 | expect(await navigator.clipboard.readText()).toBe(originalText); 128 | 129 | const newText = crypto.randomUUID(); 130 | update(newText); 131 | element.click(); 132 | 133 | expect(await navigator.clipboard.readText()).toBe(newText); 134 | }); 135 | 136 | it('sets updated text correctly with options object', async () => { 137 | const element = document.createElement('button'); 138 | const originalText = crypto.randomUUID(); 139 | 140 | const { update } = copyAction(element, { 141 | text: originalText, 142 | }) as ActionReturn; 143 | 144 | element.click(); 145 | expect(await navigator.clipboard.readText()).toBe(originalText); 146 | 147 | const newText = crypto.randomUUID(); 148 | update({ text: newText }); 149 | 150 | element.click(); 151 | expect(await navigator.clipboard.readText()).toBe(newText); 152 | }); 153 | 154 | it('sets updated event listeners', async () => { 155 | const element = document.createElement('button'); 156 | const originalText = crypto.randomUUID(); 157 | 158 | const { update } = copyAction(element, { 159 | text: originalText, 160 | }) as ActionReturn; 161 | 162 | element.click(); 163 | expect(await navigator.clipboard.readText()).toBe(originalText); 164 | 165 | const newText = crypto.randomUUID(); 166 | update({ text: newText, events: ['pointerover'] }); 167 | 168 | element.click(); 169 | expect(await navigator.clipboard.readText()).toBe(originalText); 170 | 171 | element.dispatchEvent(new PointerEvent('pointerover')); 172 | expect(await navigator.clipboard.readText()).toBe(newText); 173 | }); 174 | 175 | it('sets updated event listeners', async () => { 176 | const element = document.createElement('button'); 177 | const text = crypto.randomUUID(); 178 | const onCopy = vi.fn(); 179 | 180 | const { update } = copyAction(element, { 181 | text, 182 | onCopy, 183 | }) as ActionReturn; 184 | 185 | element.click(); 186 | expect(await navigator.clipboard.readText()).toBe(text); 187 | expect(onCopy).toHaveBeenCalledOnce(); 188 | expect(onCopy).toHaveBeenCalledWith(expect.objectContaining({ text })); 189 | 190 | const newOnCopy = vi.fn(); 191 | update({ text, onCopy: newOnCopy }); 192 | 193 | element.click(); 194 | await tick(); 195 | expect(onCopy).toHaveBeenCalledOnce(); 196 | expect(newOnCopy).toHaveBeenCalledOnce(); 197 | expect(newOnCopy).toHaveBeenCalledWith( 198 | expect.objectContaining({ text }), 199 | ); 200 | }); 201 | }); 202 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@sveltejs/adapter-static': 12 | specifier: ^3.0.5 13 | version: 3.0.5(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)))(svelte@5.0.2)(vite@5.4.9(sass@1.80.3))) 14 | '@sveltejs/kit': 15 | specifier: 2.7.2 16 | version: 2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)))(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)) 17 | '@sveltejs/package': 18 | specifier: ^2.3.5 19 | version: 2.3.5(svelte@5.0.2)(typescript@5.6.3) 20 | '@sveltejs/vite-plugin-svelte': 21 | specifier: ^4.0.0 22 | version: 4.0.0(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)) 23 | dedent: 24 | specifier: ^1.5.3 25 | version: 1.5.3 26 | ghostsui: 27 | specifier: 2.0.0-beta.1 28 | version: 2.0.0-beta.1 29 | happy-dom: 30 | specifier: ^15.7.4 31 | version: 15.7.4 32 | prettier: 33 | specifier: ^3.3.3 34 | version: 3.3.3 35 | prettier-plugin-svelte: 36 | specifier: ^3.2.7 37 | version: 3.2.7(prettier@3.3.3)(svelte@5.0.2) 38 | publint: 39 | specifier: ^0.2.11 40 | version: 0.2.11 41 | runed: 42 | specifier: ^0.15.3 43 | version: 0.15.3(svelte@5.0.2) 44 | sass: 45 | specifier: ^1.80.3 46 | version: 1.80.3 47 | shiki: 48 | specifier: ^1.22.0 49 | version: 1.22.0 50 | svelte: 51 | specifier: ^5.0.2 52 | version: 5.0.2 53 | typescript: 54 | specifier: ^5.6.3 55 | version: 5.6.3 56 | vite: 57 | specifier: ^5.4.9 58 | version: 5.4.9(sass@1.80.3) 59 | vitest: 60 | specifier: ^2.1.3 61 | version: 2.1.3(happy-dom@15.7.4)(sass@1.80.3) 62 | 63 | packages: 64 | 65 | '@ampproject/remapping@2.3.0': 66 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 67 | engines: {node: '>=6.0.0'} 68 | 69 | '@esbuild/aix-ppc64@0.21.5': 70 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 71 | engines: {node: '>=12'} 72 | cpu: [ppc64] 73 | os: [aix] 74 | 75 | '@esbuild/android-arm64@0.21.5': 76 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 77 | engines: {node: '>=12'} 78 | cpu: [arm64] 79 | os: [android] 80 | 81 | '@esbuild/android-arm@0.21.5': 82 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 83 | engines: {node: '>=12'} 84 | cpu: [arm] 85 | os: [android] 86 | 87 | '@esbuild/android-x64@0.21.5': 88 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 89 | engines: {node: '>=12'} 90 | cpu: [x64] 91 | os: [android] 92 | 93 | '@esbuild/darwin-arm64@0.21.5': 94 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 95 | engines: {node: '>=12'} 96 | cpu: [arm64] 97 | os: [darwin] 98 | 99 | '@esbuild/darwin-x64@0.21.5': 100 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 101 | engines: {node: '>=12'} 102 | cpu: [x64] 103 | os: [darwin] 104 | 105 | '@esbuild/freebsd-arm64@0.21.5': 106 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 107 | engines: {node: '>=12'} 108 | cpu: [arm64] 109 | os: [freebsd] 110 | 111 | '@esbuild/freebsd-x64@0.21.5': 112 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 113 | engines: {node: '>=12'} 114 | cpu: [x64] 115 | os: [freebsd] 116 | 117 | '@esbuild/linux-arm64@0.21.5': 118 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 119 | engines: {node: '>=12'} 120 | cpu: [arm64] 121 | os: [linux] 122 | 123 | '@esbuild/linux-arm@0.21.5': 124 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 125 | engines: {node: '>=12'} 126 | cpu: [arm] 127 | os: [linux] 128 | 129 | '@esbuild/linux-ia32@0.21.5': 130 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 131 | engines: {node: '>=12'} 132 | cpu: [ia32] 133 | os: [linux] 134 | 135 | '@esbuild/linux-loong64@0.21.5': 136 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 137 | engines: {node: '>=12'} 138 | cpu: [loong64] 139 | os: [linux] 140 | 141 | '@esbuild/linux-mips64el@0.21.5': 142 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 143 | engines: {node: '>=12'} 144 | cpu: [mips64el] 145 | os: [linux] 146 | 147 | '@esbuild/linux-ppc64@0.21.5': 148 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 149 | engines: {node: '>=12'} 150 | cpu: [ppc64] 151 | os: [linux] 152 | 153 | '@esbuild/linux-riscv64@0.21.5': 154 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 155 | engines: {node: '>=12'} 156 | cpu: [riscv64] 157 | os: [linux] 158 | 159 | '@esbuild/linux-s390x@0.21.5': 160 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 161 | engines: {node: '>=12'} 162 | cpu: [s390x] 163 | os: [linux] 164 | 165 | '@esbuild/linux-x64@0.21.5': 166 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 167 | engines: {node: '>=12'} 168 | cpu: [x64] 169 | os: [linux] 170 | 171 | '@esbuild/netbsd-x64@0.21.5': 172 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 173 | engines: {node: '>=12'} 174 | cpu: [x64] 175 | os: [netbsd] 176 | 177 | '@esbuild/openbsd-x64@0.21.5': 178 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 179 | engines: {node: '>=12'} 180 | cpu: [x64] 181 | os: [openbsd] 182 | 183 | '@esbuild/sunos-x64@0.21.5': 184 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 185 | engines: {node: '>=12'} 186 | cpu: [x64] 187 | os: [sunos] 188 | 189 | '@esbuild/win32-arm64@0.21.5': 190 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 191 | engines: {node: '>=12'} 192 | cpu: [arm64] 193 | os: [win32] 194 | 195 | '@esbuild/win32-ia32@0.21.5': 196 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 197 | engines: {node: '>=12'} 198 | cpu: [ia32] 199 | os: [win32] 200 | 201 | '@esbuild/win32-x64@0.21.5': 202 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 203 | engines: {node: '>=12'} 204 | cpu: [x64] 205 | os: [win32] 206 | 207 | '@jridgewell/gen-mapping@0.3.5': 208 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 209 | engines: {node: '>=6.0.0'} 210 | 211 | '@jridgewell/resolve-uri@3.1.2': 212 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 213 | engines: {node: '>=6.0.0'} 214 | 215 | '@jridgewell/set-array@1.2.1': 216 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 217 | engines: {node: '>=6.0.0'} 218 | 219 | '@jridgewell/sourcemap-codec@1.5.0': 220 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 221 | 222 | '@jridgewell/trace-mapping@0.3.25': 223 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 224 | 225 | '@parcel/watcher-android-arm64@2.4.1': 226 | resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} 227 | engines: {node: '>= 10.0.0'} 228 | cpu: [arm64] 229 | os: [android] 230 | 231 | '@parcel/watcher-darwin-arm64@2.4.1': 232 | resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} 233 | engines: {node: '>= 10.0.0'} 234 | cpu: [arm64] 235 | os: [darwin] 236 | 237 | '@parcel/watcher-darwin-x64@2.4.1': 238 | resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} 239 | engines: {node: '>= 10.0.0'} 240 | cpu: [x64] 241 | os: [darwin] 242 | 243 | '@parcel/watcher-freebsd-x64@2.4.1': 244 | resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} 245 | engines: {node: '>= 10.0.0'} 246 | cpu: [x64] 247 | os: [freebsd] 248 | 249 | '@parcel/watcher-linux-arm-glibc@2.4.1': 250 | resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} 251 | engines: {node: '>= 10.0.0'} 252 | cpu: [arm] 253 | os: [linux] 254 | 255 | '@parcel/watcher-linux-arm64-glibc@2.4.1': 256 | resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} 257 | engines: {node: '>= 10.0.0'} 258 | cpu: [arm64] 259 | os: [linux] 260 | 261 | '@parcel/watcher-linux-arm64-musl@2.4.1': 262 | resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} 263 | engines: {node: '>= 10.0.0'} 264 | cpu: [arm64] 265 | os: [linux] 266 | 267 | '@parcel/watcher-linux-x64-glibc@2.4.1': 268 | resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} 269 | engines: {node: '>= 10.0.0'} 270 | cpu: [x64] 271 | os: [linux] 272 | 273 | '@parcel/watcher-linux-x64-musl@2.4.1': 274 | resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} 275 | engines: {node: '>= 10.0.0'} 276 | cpu: [x64] 277 | os: [linux] 278 | 279 | '@parcel/watcher-win32-arm64@2.4.1': 280 | resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} 281 | engines: {node: '>= 10.0.0'} 282 | cpu: [arm64] 283 | os: [win32] 284 | 285 | '@parcel/watcher-win32-ia32@2.4.1': 286 | resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} 287 | engines: {node: '>= 10.0.0'} 288 | cpu: [ia32] 289 | os: [win32] 290 | 291 | '@parcel/watcher-win32-x64@2.4.1': 292 | resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} 293 | engines: {node: '>= 10.0.0'} 294 | cpu: [x64] 295 | os: [win32] 296 | 297 | '@parcel/watcher@2.4.1': 298 | resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} 299 | engines: {node: '>= 10.0.0'} 300 | 301 | '@polka/url@1.0.0-next.28': 302 | resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} 303 | 304 | '@rollup/rollup-android-arm-eabi@4.24.0': 305 | resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} 306 | cpu: [arm] 307 | os: [android] 308 | 309 | '@rollup/rollup-android-arm64@4.24.0': 310 | resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} 311 | cpu: [arm64] 312 | os: [android] 313 | 314 | '@rollup/rollup-darwin-arm64@4.24.0': 315 | resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} 316 | cpu: [arm64] 317 | os: [darwin] 318 | 319 | '@rollup/rollup-darwin-x64@4.24.0': 320 | resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} 321 | cpu: [x64] 322 | os: [darwin] 323 | 324 | '@rollup/rollup-linux-arm-gnueabihf@4.24.0': 325 | resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} 326 | cpu: [arm] 327 | os: [linux] 328 | 329 | '@rollup/rollup-linux-arm-musleabihf@4.24.0': 330 | resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} 331 | cpu: [arm] 332 | os: [linux] 333 | 334 | '@rollup/rollup-linux-arm64-gnu@4.24.0': 335 | resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} 336 | cpu: [arm64] 337 | os: [linux] 338 | 339 | '@rollup/rollup-linux-arm64-musl@4.24.0': 340 | resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} 341 | cpu: [arm64] 342 | os: [linux] 343 | 344 | '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': 345 | resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} 346 | cpu: [ppc64] 347 | os: [linux] 348 | 349 | '@rollup/rollup-linux-riscv64-gnu@4.24.0': 350 | resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} 351 | cpu: [riscv64] 352 | os: [linux] 353 | 354 | '@rollup/rollup-linux-s390x-gnu@4.24.0': 355 | resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} 356 | cpu: [s390x] 357 | os: [linux] 358 | 359 | '@rollup/rollup-linux-x64-gnu@4.24.0': 360 | resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} 361 | cpu: [x64] 362 | os: [linux] 363 | 364 | '@rollup/rollup-linux-x64-musl@4.24.0': 365 | resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} 366 | cpu: [x64] 367 | os: [linux] 368 | 369 | '@rollup/rollup-win32-arm64-msvc@4.24.0': 370 | resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} 371 | cpu: [arm64] 372 | os: [win32] 373 | 374 | '@rollup/rollup-win32-ia32-msvc@4.24.0': 375 | resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} 376 | cpu: [ia32] 377 | os: [win32] 378 | 379 | '@rollup/rollup-win32-x64-msvc@4.24.0': 380 | resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} 381 | cpu: [x64] 382 | os: [win32] 383 | 384 | '@shikijs/core@1.22.0': 385 | resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==} 386 | 387 | '@shikijs/engine-javascript@1.22.0': 388 | resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==} 389 | 390 | '@shikijs/engine-oniguruma@1.22.0': 391 | resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==} 392 | 393 | '@shikijs/types@1.22.0': 394 | resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==} 395 | 396 | '@shikijs/vscode-textmate@9.3.0': 397 | resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} 398 | 399 | '@sveltejs/adapter-static@3.0.5': 400 | resolution: {integrity: sha512-kFJR7RxeB6FBvrKZWAEzIALatgy11ISaaZbcPup8JdWUdrmmfUHHTJ738YHJTEfnCiiXi6aX8Q6ePY7tnSMD6Q==} 401 | peerDependencies: 402 | '@sveltejs/kit': ^2.0.0 403 | 404 | '@sveltejs/kit@2.7.2': 405 | resolution: {integrity: sha512-bFwrl+0bNr0/DHQZM0INwwSPNYqDjfsKRhUoa6rj9d8tDZzszBrJ3La6/HVFxWGONEigtG+SzHXa1BEa1BLdwA==} 406 | engines: {node: '>=18.13'} 407 | hasBin: true 408 | peerDependencies: 409 | '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 410 | svelte: ^4.0.0 || ^5.0.0-next.0 411 | vite: ^5.0.3 412 | 413 | '@sveltejs/package@2.3.5': 414 | resolution: {integrity: sha512-fxWSG+pJHxWwcKltG+JoQ+P1CPO7NHVuZD1Gchi/1mNN6C60yD/voHeeXlqr0HHGkvIrpAjRIHLjsavI77Qsiw==} 415 | engines: {node: ^16.14 || >=18} 416 | hasBin: true 417 | peerDependencies: 418 | svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 419 | 420 | '@sveltejs/vite-plugin-svelte-inspector@3.0.0': 421 | resolution: {integrity: sha512-hBxSYW/66989cq9dN248omD/ziskSdIV1NqfuueuAI1z6jGcg14k9Zd98pDIEnoA6wC9kWUGuQ6adzBbWwQyRg==} 422 | engines: {node: ^18.0.0 || ^20.0.0 || >=22} 423 | peerDependencies: 424 | '@sveltejs/vite-plugin-svelte': ^4.0.0-next.0||^4.0.0 425 | svelte: ^5.0.0-next.96 || ^5.0.0 426 | vite: ^5.0.0 427 | 428 | '@sveltejs/vite-plugin-svelte@4.0.0': 429 | resolution: {integrity: sha512-kpVJwF+gNiMEsoHaw+FJL76IYiwBikkxYU83+BpqQLdVMff19KeRKLd2wisS8niNBMJ2omv5gG+iGDDwd8jzag==} 430 | engines: {node: ^18.0.0 || ^20.0.0 || >=22} 431 | peerDependencies: 432 | svelte: ^5.0.0-next.96 || ^5.0.0 433 | vite: ^5.0.0 434 | 435 | '@types/cookie@0.6.0': 436 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} 437 | 438 | '@types/estree@1.0.6': 439 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 440 | 441 | '@types/hast@3.0.4': 442 | resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} 443 | 444 | '@types/mdast@4.0.4': 445 | resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} 446 | 447 | '@types/unist@3.0.3': 448 | resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} 449 | 450 | '@ungap/structured-clone@1.2.0': 451 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 452 | 453 | '@vitest/expect@2.1.3': 454 | resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} 455 | 456 | '@vitest/mocker@2.1.3': 457 | resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} 458 | peerDependencies: 459 | '@vitest/spy': 2.1.3 460 | msw: ^2.3.5 461 | vite: ^5.0.0 462 | peerDependenciesMeta: 463 | msw: 464 | optional: true 465 | vite: 466 | optional: true 467 | 468 | '@vitest/pretty-format@2.1.3': 469 | resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} 470 | 471 | '@vitest/runner@2.1.3': 472 | resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} 473 | 474 | '@vitest/snapshot@2.1.3': 475 | resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} 476 | 477 | '@vitest/spy@2.1.3': 478 | resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} 479 | 480 | '@vitest/utils@2.1.3': 481 | resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} 482 | 483 | acorn-typescript@1.4.13: 484 | resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} 485 | peerDependencies: 486 | acorn: '>=8.9.0' 487 | 488 | acorn@8.13.0: 489 | resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} 490 | engines: {node: '>=0.4.0'} 491 | hasBin: true 492 | 493 | aria-query@5.3.2: 494 | resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} 495 | engines: {node: '>= 0.4'} 496 | 497 | assertion-error@2.0.1: 498 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 499 | engines: {node: '>=12'} 500 | 501 | axobject-query@4.1.0: 502 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 503 | engines: {node: '>= 0.4'} 504 | 505 | balanced-match@1.0.2: 506 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 507 | 508 | brace-expansion@2.0.1: 509 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 510 | 511 | braces@3.0.3: 512 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 513 | engines: {node: '>=8'} 514 | 515 | cac@6.7.14: 516 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 517 | engines: {node: '>=8'} 518 | 519 | ccount@2.0.1: 520 | resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 521 | 522 | chai@5.1.1: 523 | resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} 524 | engines: {node: '>=12'} 525 | 526 | character-entities-html4@2.1.0: 527 | resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} 528 | 529 | character-entities-legacy@3.0.0: 530 | resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} 531 | 532 | check-error@2.1.1: 533 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 534 | engines: {node: '>= 16'} 535 | 536 | chokidar@4.0.1: 537 | resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} 538 | engines: {node: '>= 14.16.0'} 539 | 540 | comma-separated-tokens@2.0.3: 541 | resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} 542 | 543 | cookie@0.6.0: 544 | resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} 545 | engines: {node: '>= 0.6'} 546 | 547 | debug@4.3.7: 548 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 549 | engines: {node: '>=6.0'} 550 | peerDependencies: 551 | supports-color: '*' 552 | peerDependenciesMeta: 553 | supports-color: 554 | optional: true 555 | 556 | dedent-js@1.0.1: 557 | resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} 558 | 559 | dedent@1.5.3: 560 | resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} 561 | peerDependencies: 562 | babel-plugin-macros: ^3.1.0 563 | peerDependenciesMeta: 564 | babel-plugin-macros: 565 | optional: true 566 | 567 | deep-eql@5.0.2: 568 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 569 | engines: {node: '>=6'} 570 | 571 | deepmerge@4.3.1: 572 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 573 | engines: {node: '>=0.10.0'} 574 | 575 | dequal@2.0.3: 576 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 577 | engines: {node: '>=6'} 578 | 579 | detect-libc@1.0.3: 580 | resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} 581 | engines: {node: '>=0.10'} 582 | hasBin: true 583 | 584 | devalue@5.1.1: 585 | resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} 586 | 587 | devlop@1.1.0: 588 | resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} 589 | 590 | entities@4.5.0: 591 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 592 | engines: {node: '>=0.12'} 593 | 594 | esbuild@0.21.5: 595 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 596 | engines: {node: '>=12'} 597 | hasBin: true 598 | 599 | esm-env@1.0.0: 600 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 601 | 602 | esrap@1.2.2: 603 | resolution: {integrity: sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==} 604 | 605 | estree-walker@3.0.3: 606 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 607 | 608 | fill-range@7.1.1: 609 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 610 | engines: {node: '>=8'} 611 | 612 | fs.realpath@1.0.0: 613 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 614 | 615 | fsevents@2.3.3: 616 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 617 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 618 | os: [darwin] 619 | 620 | ghostsui@2.0.0-beta.1: 621 | resolution: {integrity: sha512-T11BXPTNbrje4PS3hDIAAsdMW5yfxqfS43C7d1uwpMSi80HmzyBqbH4gLWzrweAFbEu90QDirLQLbnzyG6txUg==} 622 | 623 | glob@8.1.0: 624 | resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} 625 | engines: {node: '>=12'} 626 | deprecated: Glob versions prior to v9 are no longer supported 627 | 628 | globalyzer@0.1.0: 629 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 630 | 631 | globrex@0.1.2: 632 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 633 | 634 | happy-dom@15.7.4: 635 | resolution: {integrity: sha512-r1vadDYGMtsHAAsqhDuk4IpPvr6N8MGKy5ntBo7tSdim+pWDxus2PNqOcOt8LuDZ4t3KJHE+gCuzupcx/GKnyQ==} 636 | engines: {node: '>=18.0.0'} 637 | 638 | hast-util-to-html@9.0.3: 639 | resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} 640 | 641 | hast-util-whitespace@3.0.0: 642 | resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} 643 | 644 | html-void-elements@3.0.0: 645 | resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} 646 | 647 | ignore-walk@5.0.1: 648 | resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} 649 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 650 | 651 | immutable@4.3.7: 652 | resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} 653 | 654 | import-meta-resolve@4.1.0: 655 | resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} 656 | 657 | inflight@1.0.6: 658 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 659 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 660 | 661 | inherits@2.0.4: 662 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 663 | 664 | is-extglob@2.1.1: 665 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 666 | engines: {node: '>=0.10.0'} 667 | 668 | is-glob@4.0.3: 669 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 670 | engines: {node: '>=0.10.0'} 671 | 672 | is-number@7.0.0: 673 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 674 | engines: {node: '>=0.12.0'} 675 | 676 | is-reference@3.0.2: 677 | resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} 678 | 679 | kleur@4.1.5: 680 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 681 | engines: {node: '>=6'} 682 | 683 | locate-character@3.0.0: 684 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 685 | 686 | loupe@3.1.2: 687 | resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} 688 | 689 | lower-case@2.0.2: 690 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 691 | 692 | magic-string@0.30.12: 693 | resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} 694 | 695 | mdast-util-to-hast@13.2.0: 696 | resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} 697 | 698 | micromark-util-character@2.1.0: 699 | resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} 700 | 701 | micromark-util-encode@2.0.0: 702 | resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} 703 | 704 | micromark-util-sanitize-uri@2.0.0: 705 | resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} 706 | 707 | micromark-util-symbol@2.0.0: 708 | resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} 709 | 710 | micromark-util-types@2.0.0: 711 | resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} 712 | 713 | micromatch@4.0.8: 714 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 715 | engines: {node: '>=8.6'} 716 | 717 | minimatch@5.1.6: 718 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 719 | engines: {node: '>=10'} 720 | 721 | mri@1.2.0: 722 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 723 | engines: {node: '>=4'} 724 | 725 | mrmime@2.0.0: 726 | resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} 727 | engines: {node: '>=10'} 728 | 729 | ms@2.1.3: 730 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 731 | 732 | nanoid@3.3.7: 733 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 734 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 735 | hasBin: true 736 | 737 | no-case@3.0.4: 738 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 739 | 740 | node-addon-api@7.1.1: 741 | resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} 742 | 743 | npm-bundled@2.0.1: 744 | resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} 745 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 746 | 747 | npm-normalize-package-bin@2.0.0: 748 | resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} 749 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 750 | 751 | npm-packlist@5.1.3: 752 | resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} 753 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 754 | hasBin: true 755 | 756 | once@1.4.0: 757 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 758 | 759 | oniguruma-to-js@0.4.3: 760 | resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} 761 | 762 | pascal-case@3.1.2: 763 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} 764 | 765 | pathe@1.1.2: 766 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 767 | 768 | pathval@2.0.0: 769 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 770 | engines: {node: '>= 14.16'} 771 | 772 | picocolors@1.1.1: 773 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 774 | 775 | picomatch@2.3.1: 776 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 777 | engines: {node: '>=8.6'} 778 | 779 | postcss@8.4.47: 780 | resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} 781 | engines: {node: ^10 || ^12 || >=14} 782 | 783 | prettier-plugin-svelte@3.2.7: 784 | resolution: {integrity: sha512-/Dswx/ea0lV34If1eDcG3nulQ63YNr5KPDfMsjbdtpSWOxKKJ7nAc2qlVuYwEvCr4raIuredNoR7K4JCkmTGaQ==} 785 | peerDependencies: 786 | prettier: ^3.0.0 787 | svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 788 | 789 | prettier@3.3.3: 790 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 791 | engines: {node: '>=14'} 792 | hasBin: true 793 | 794 | property-information@6.5.0: 795 | resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} 796 | 797 | publint@0.2.11: 798 | resolution: {integrity: sha512-/kxbd+sD/uEG515N/ZYpC6gYs8h89cQ4UIsAq1y6VT4qlNh8xmiSwcP2xU2MbzXFl8J0l2IdONKFweLfYoqhcA==} 799 | engines: {node: '>=16'} 800 | hasBin: true 801 | 802 | readdirp@4.0.2: 803 | resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} 804 | engines: {node: '>= 14.16.0'} 805 | 806 | regex@4.3.3: 807 | resolution: {integrity: sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==} 808 | 809 | rollup@4.24.0: 810 | resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} 811 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 812 | hasBin: true 813 | 814 | runed@0.15.3: 815 | resolution: {integrity: sha512-HtayB+loDcGdqJDHW8JFdsZzGQMyVzim6+s3052MkjZnwmwDstmF+cusMeTssBe6TCdt5i9D/Tb+KYXN3L0kXA==} 816 | peerDependencies: 817 | svelte: ^5.0.0-next.1 818 | 819 | sade@1.8.1: 820 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 821 | engines: {node: '>=6'} 822 | 823 | sass@1.80.3: 824 | resolution: {integrity: sha512-ptDWyVmDMVielpz/oWy3YP3nfs7LpJTHIJZboMVs8GEC9eUmtZTZhMHlTW98wY4aEorDfjN38+Wr/XjskFWcfA==} 825 | engines: {node: '>=14.0.0'} 826 | hasBin: true 827 | 828 | semver@7.6.3: 829 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 830 | engines: {node: '>=10'} 831 | hasBin: true 832 | 833 | set-cookie-parser@2.7.0: 834 | resolution: {integrity: sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==} 835 | 836 | shiki@1.22.0: 837 | resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} 838 | 839 | siginfo@2.0.0: 840 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 841 | 842 | sirv@3.0.0: 843 | resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} 844 | engines: {node: '>=18'} 845 | 846 | source-map-js@1.2.1: 847 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 848 | engines: {node: '>=0.10.0'} 849 | 850 | space-separated-tokens@2.0.2: 851 | resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} 852 | 853 | stackback@0.0.2: 854 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 855 | 856 | std-env@3.7.0: 857 | resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} 858 | 859 | stringify-entities@4.0.4: 860 | resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} 861 | 862 | svelte2tsx@0.7.22: 863 | resolution: {integrity: sha512-hf55ujq17ufVpDQlJzaQfRr9EjlLIwGmFlpKq4uYrQAQFw/99q1OcVYyBT6568iJySgBUY9PdccURrORmfetmQ==} 864 | peerDependencies: 865 | svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 866 | typescript: ^4.9.4 || ^5.0.0 867 | 868 | svelte@5.0.2: 869 | resolution: {integrity: sha512-TIqp5kjyTMa45L0McUvVfjuvlF/hyxVolyAc9APY3/FeF5aqYpt+Y1PckPQ7DlsDkthxNeq2+ystop8GlIV3kw==} 870 | engines: {node: '>=18'} 871 | 872 | tiny-glob@0.2.9: 873 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 874 | 875 | tinybench@2.9.0: 876 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 877 | 878 | tinyexec@0.3.1: 879 | resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} 880 | 881 | tinypool@1.0.1: 882 | resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} 883 | engines: {node: ^18.0.0 || >=20.0.0} 884 | 885 | tinyrainbow@1.2.0: 886 | resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} 887 | engines: {node: '>=14.0.0'} 888 | 889 | tinyspy@3.0.2: 890 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 891 | engines: {node: '>=14.0.0'} 892 | 893 | to-regex-range@5.0.1: 894 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 895 | engines: {node: '>=8.0'} 896 | 897 | totalist@3.0.1: 898 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 899 | engines: {node: '>=6'} 900 | 901 | trim-lines@3.0.1: 902 | resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} 903 | 904 | tslib@2.8.0: 905 | resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} 906 | 907 | typescript@5.6.3: 908 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} 909 | engines: {node: '>=14.17'} 910 | hasBin: true 911 | 912 | unist-util-is@6.0.0: 913 | resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} 914 | 915 | unist-util-position@5.0.0: 916 | resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} 917 | 918 | unist-util-stringify-position@4.0.0: 919 | resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} 920 | 921 | unist-util-visit-parents@6.0.1: 922 | resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} 923 | 924 | unist-util-visit@5.0.0: 925 | resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} 926 | 927 | vfile-message@4.0.2: 928 | resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} 929 | 930 | vfile@6.0.3: 931 | resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} 932 | 933 | vite-node@2.1.3: 934 | resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} 935 | engines: {node: ^18.0.0 || >=20.0.0} 936 | hasBin: true 937 | 938 | vite@5.4.9: 939 | resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} 940 | engines: {node: ^18.0.0 || >=20.0.0} 941 | hasBin: true 942 | peerDependencies: 943 | '@types/node': ^18.0.0 || >=20.0.0 944 | less: '*' 945 | lightningcss: ^1.21.0 946 | sass: '*' 947 | sass-embedded: '*' 948 | stylus: '*' 949 | sugarss: '*' 950 | terser: ^5.4.0 951 | peerDependenciesMeta: 952 | '@types/node': 953 | optional: true 954 | less: 955 | optional: true 956 | lightningcss: 957 | optional: true 958 | sass: 959 | optional: true 960 | sass-embedded: 961 | optional: true 962 | stylus: 963 | optional: true 964 | sugarss: 965 | optional: true 966 | terser: 967 | optional: true 968 | 969 | vitefu@1.0.3: 970 | resolution: {integrity: sha512-iKKfOMBHob2WxEJbqbJjHAkmYgvFDPhuqrO82om83S8RLk+17FtyMBfcyeH8GqD0ihShtkMW/zzJgiA51hCNCQ==} 971 | peerDependencies: 972 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0-beta.0 973 | peerDependenciesMeta: 974 | vite: 975 | optional: true 976 | 977 | vitest@2.1.3: 978 | resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} 979 | engines: {node: ^18.0.0 || >=20.0.0} 980 | hasBin: true 981 | peerDependencies: 982 | '@edge-runtime/vm': '*' 983 | '@types/node': ^18.0.0 || >=20.0.0 984 | '@vitest/browser': 2.1.3 985 | '@vitest/ui': 2.1.3 986 | happy-dom: '*' 987 | jsdom: '*' 988 | peerDependenciesMeta: 989 | '@edge-runtime/vm': 990 | optional: true 991 | '@types/node': 992 | optional: true 993 | '@vitest/browser': 994 | optional: true 995 | '@vitest/ui': 996 | optional: true 997 | happy-dom: 998 | optional: true 999 | jsdom: 1000 | optional: true 1001 | 1002 | webidl-conversions@7.0.0: 1003 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} 1004 | engines: {node: '>=12'} 1005 | 1006 | whatwg-mimetype@3.0.0: 1007 | resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} 1008 | engines: {node: '>=12'} 1009 | 1010 | why-is-node-running@2.3.0: 1011 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1012 | engines: {node: '>=8'} 1013 | hasBin: true 1014 | 1015 | wrappy@1.0.2: 1016 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1017 | 1018 | zimmerframe@1.1.2: 1019 | resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} 1020 | 1021 | zwitch@2.0.4: 1022 | resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} 1023 | 1024 | snapshots: 1025 | 1026 | '@ampproject/remapping@2.3.0': 1027 | dependencies: 1028 | '@jridgewell/gen-mapping': 0.3.5 1029 | '@jridgewell/trace-mapping': 0.3.25 1030 | 1031 | '@esbuild/aix-ppc64@0.21.5': 1032 | optional: true 1033 | 1034 | '@esbuild/android-arm64@0.21.5': 1035 | optional: true 1036 | 1037 | '@esbuild/android-arm@0.21.5': 1038 | optional: true 1039 | 1040 | '@esbuild/android-x64@0.21.5': 1041 | optional: true 1042 | 1043 | '@esbuild/darwin-arm64@0.21.5': 1044 | optional: true 1045 | 1046 | '@esbuild/darwin-x64@0.21.5': 1047 | optional: true 1048 | 1049 | '@esbuild/freebsd-arm64@0.21.5': 1050 | optional: true 1051 | 1052 | '@esbuild/freebsd-x64@0.21.5': 1053 | optional: true 1054 | 1055 | '@esbuild/linux-arm64@0.21.5': 1056 | optional: true 1057 | 1058 | '@esbuild/linux-arm@0.21.5': 1059 | optional: true 1060 | 1061 | '@esbuild/linux-ia32@0.21.5': 1062 | optional: true 1063 | 1064 | '@esbuild/linux-loong64@0.21.5': 1065 | optional: true 1066 | 1067 | '@esbuild/linux-mips64el@0.21.5': 1068 | optional: true 1069 | 1070 | '@esbuild/linux-ppc64@0.21.5': 1071 | optional: true 1072 | 1073 | '@esbuild/linux-riscv64@0.21.5': 1074 | optional: true 1075 | 1076 | '@esbuild/linux-s390x@0.21.5': 1077 | optional: true 1078 | 1079 | '@esbuild/linux-x64@0.21.5': 1080 | optional: true 1081 | 1082 | '@esbuild/netbsd-x64@0.21.5': 1083 | optional: true 1084 | 1085 | '@esbuild/openbsd-x64@0.21.5': 1086 | optional: true 1087 | 1088 | '@esbuild/sunos-x64@0.21.5': 1089 | optional: true 1090 | 1091 | '@esbuild/win32-arm64@0.21.5': 1092 | optional: true 1093 | 1094 | '@esbuild/win32-ia32@0.21.5': 1095 | optional: true 1096 | 1097 | '@esbuild/win32-x64@0.21.5': 1098 | optional: true 1099 | 1100 | '@jridgewell/gen-mapping@0.3.5': 1101 | dependencies: 1102 | '@jridgewell/set-array': 1.2.1 1103 | '@jridgewell/sourcemap-codec': 1.5.0 1104 | '@jridgewell/trace-mapping': 0.3.25 1105 | 1106 | '@jridgewell/resolve-uri@3.1.2': {} 1107 | 1108 | '@jridgewell/set-array@1.2.1': {} 1109 | 1110 | '@jridgewell/sourcemap-codec@1.5.0': {} 1111 | 1112 | '@jridgewell/trace-mapping@0.3.25': 1113 | dependencies: 1114 | '@jridgewell/resolve-uri': 3.1.2 1115 | '@jridgewell/sourcemap-codec': 1.5.0 1116 | 1117 | '@parcel/watcher-android-arm64@2.4.1': 1118 | optional: true 1119 | 1120 | '@parcel/watcher-darwin-arm64@2.4.1': 1121 | optional: true 1122 | 1123 | '@parcel/watcher-darwin-x64@2.4.1': 1124 | optional: true 1125 | 1126 | '@parcel/watcher-freebsd-x64@2.4.1': 1127 | optional: true 1128 | 1129 | '@parcel/watcher-linux-arm-glibc@2.4.1': 1130 | optional: true 1131 | 1132 | '@parcel/watcher-linux-arm64-glibc@2.4.1': 1133 | optional: true 1134 | 1135 | '@parcel/watcher-linux-arm64-musl@2.4.1': 1136 | optional: true 1137 | 1138 | '@parcel/watcher-linux-x64-glibc@2.4.1': 1139 | optional: true 1140 | 1141 | '@parcel/watcher-linux-x64-musl@2.4.1': 1142 | optional: true 1143 | 1144 | '@parcel/watcher-win32-arm64@2.4.1': 1145 | optional: true 1146 | 1147 | '@parcel/watcher-win32-ia32@2.4.1': 1148 | optional: true 1149 | 1150 | '@parcel/watcher-win32-x64@2.4.1': 1151 | optional: true 1152 | 1153 | '@parcel/watcher@2.4.1': 1154 | dependencies: 1155 | detect-libc: 1.0.3 1156 | is-glob: 4.0.3 1157 | micromatch: 4.0.8 1158 | node-addon-api: 7.1.1 1159 | optionalDependencies: 1160 | '@parcel/watcher-android-arm64': 2.4.1 1161 | '@parcel/watcher-darwin-arm64': 2.4.1 1162 | '@parcel/watcher-darwin-x64': 2.4.1 1163 | '@parcel/watcher-freebsd-x64': 2.4.1 1164 | '@parcel/watcher-linux-arm-glibc': 2.4.1 1165 | '@parcel/watcher-linux-arm64-glibc': 2.4.1 1166 | '@parcel/watcher-linux-arm64-musl': 2.4.1 1167 | '@parcel/watcher-linux-x64-glibc': 2.4.1 1168 | '@parcel/watcher-linux-x64-musl': 2.4.1 1169 | '@parcel/watcher-win32-arm64': 2.4.1 1170 | '@parcel/watcher-win32-ia32': 2.4.1 1171 | '@parcel/watcher-win32-x64': 2.4.1 1172 | 1173 | '@polka/url@1.0.0-next.28': {} 1174 | 1175 | '@rollup/rollup-android-arm-eabi@4.24.0': 1176 | optional: true 1177 | 1178 | '@rollup/rollup-android-arm64@4.24.0': 1179 | optional: true 1180 | 1181 | '@rollup/rollup-darwin-arm64@4.24.0': 1182 | optional: true 1183 | 1184 | '@rollup/rollup-darwin-x64@4.24.0': 1185 | optional: true 1186 | 1187 | '@rollup/rollup-linux-arm-gnueabihf@4.24.0': 1188 | optional: true 1189 | 1190 | '@rollup/rollup-linux-arm-musleabihf@4.24.0': 1191 | optional: true 1192 | 1193 | '@rollup/rollup-linux-arm64-gnu@4.24.0': 1194 | optional: true 1195 | 1196 | '@rollup/rollup-linux-arm64-musl@4.24.0': 1197 | optional: true 1198 | 1199 | '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': 1200 | optional: true 1201 | 1202 | '@rollup/rollup-linux-riscv64-gnu@4.24.0': 1203 | optional: true 1204 | 1205 | '@rollup/rollup-linux-s390x-gnu@4.24.0': 1206 | optional: true 1207 | 1208 | '@rollup/rollup-linux-x64-gnu@4.24.0': 1209 | optional: true 1210 | 1211 | '@rollup/rollup-linux-x64-musl@4.24.0': 1212 | optional: true 1213 | 1214 | '@rollup/rollup-win32-arm64-msvc@4.24.0': 1215 | optional: true 1216 | 1217 | '@rollup/rollup-win32-ia32-msvc@4.24.0': 1218 | optional: true 1219 | 1220 | '@rollup/rollup-win32-x64-msvc@4.24.0': 1221 | optional: true 1222 | 1223 | '@shikijs/core@1.22.0': 1224 | dependencies: 1225 | '@shikijs/engine-javascript': 1.22.0 1226 | '@shikijs/engine-oniguruma': 1.22.0 1227 | '@shikijs/types': 1.22.0 1228 | '@shikijs/vscode-textmate': 9.3.0 1229 | '@types/hast': 3.0.4 1230 | hast-util-to-html: 9.0.3 1231 | 1232 | '@shikijs/engine-javascript@1.22.0': 1233 | dependencies: 1234 | '@shikijs/types': 1.22.0 1235 | '@shikijs/vscode-textmate': 9.3.0 1236 | oniguruma-to-js: 0.4.3 1237 | 1238 | '@shikijs/engine-oniguruma@1.22.0': 1239 | dependencies: 1240 | '@shikijs/types': 1.22.0 1241 | '@shikijs/vscode-textmate': 9.3.0 1242 | 1243 | '@shikijs/types@1.22.0': 1244 | dependencies: 1245 | '@shikijs/vscode-textmate': 9.3.0 1246 | '@types/hast': 3.0.4 1247 | 1248 | '@shikijs/vscode-textmate@9.3.0': {} 1249 | 1250 | '@sveltejs/adapter-static@3.0.5(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)))(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)))': 1251 | dependencies: 1252 | '@sveltejs/kit': 2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)))(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)) 1253 | 1254 | '@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)))(svelte@5.0.2)(vite@5.4.9(sass@1.80.3))': 1255 | dependencies: 1256 | '@sveltejs/vite-plugin-svelte': 4.0.0(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)) 1257 | '@types/cookie': 0.6.0 1258 | cookie: 0.6.0 1259 | devalue: 5.1.1 1260 | esm-env: 1.0.0 1261 | import-meta-resolve: 4.1.0 1262 | kleur: 4.1.5 1263 | magic-string: 0.30.12 1264 | mrmime: 2.0.0 1265 | sade: 1.8.1 1266 | set-cookie-parser: 2.7.0 1267 | sirv: 3.0.0 1268 | svelte: 5.0.2 1269 | tiny-glob: 0.2.9 1270 | vite: 5.4.9(sass@1.80.3) 1271 | 1272 | '@sveltejs/package@2.3.5(svelte@5.0.2)(typescript@5.6.3)': 1273 | dependencies: 1274 | chokidar: 4.0.1 1275 | kleur: 4.1.5 1276 | sade: 1.8.1 1277 | semver: 7.6.3 1278 | svelte: 5.0.2 1279 | svelte2tsx: 0.7.22(svelte@5.0.2)(typescript@5.6.3) 1280 | transitivePeerDependencies: 1281 | - typescript 1282 | 1283 | '@sveltejs/vite-plugin-svelte-inspector@3.0.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)))(svelte@5.0.2)(vite@5.4.9(sass@1.80.3))': 1284 | dependencies: 1285 | '@sveltejs/vite-plugin-svelte': 4.0.0(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)) 1286 | debug: 4.3.7 1287 | svelte: 5.0.2 1288 | vite: 5.4.9(sass@1.80.3) 1289 | transitivePeerDependencies: 1290 | - supports-color 1291 | 1292 | '@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.2)(vite@5.4.9(sass@1.80.3))': 1293 | dependencies: 1294 | '@sveltejs/vite-plugin-svelte-inspector': 3.0.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)))(svelte@5.0.2)(vite@5.4.9(sass@1.80.3)) 1295 | debug: 4.3.7 1296 | deepmerge: 4.3.1 1297 | kleur: 4.1.5 1298 | magic-string: 0.30.12 1299 | svelte: 5.0.2 1300 | vite: 5.4.9(sass@1.80.3) 1301 | vitefu: 1.0.3(vite@5.4.9(sass@1.80.3)) 1302 | transitivePeerDependencies: 1303 | - supports-color 1304 | 1305 | '@types/cookie@0.6.0': {} 1306 | 1307 | '@types/estree@1.0.6': {} 1308 | 1309 | '@types/hast@3.0.4': 1310 | dependencies: 1311 | '@types/unist': 3.0.3 1312 | 1313 | '@types/mdast@4.0.4': 1314 | dependencies: 1315 | '@types/unist': 3.0.3 1316 | 1317 | '@types/unist@3.0.3': {} 1318 | 1319 | '@ungap/structured-clone@1.2.0': {} 1320 | 1321 | '@vitest/expect@2.1.3': 1322 | dependencies: 1323 | '@vitest/spy': 2.1.3 1324 | '@vitest/utils': 2.1.3 1325 | chai: 5.1.1 1326 | tinyrainbow: 1.2.0 1327 | 1328 | '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.9(sass@1.80.3))': 1329 | dependencies: 1330 | '@vitest/spy': 2.1.3 1331 | estree-walker: 3.0.3 1332 | magic-string: 0.30.12 1333 | optionalDependencies: 1334 | vite: 5.4.9(sass@1.80.3) 1335 | 1336 | '@vitest/pretty-format@2.1.3': 1337 | dependencies: 1338 | tinyrainbow: 1.2.0 1339 | 1340 | '@vitest/runner@2.1.3': 1341 | dependencies: 1342 | '@vitest/utils': 2.1.3 1343 | pathe: 1.1.2 1344 | 1345 | '@vitest/snapshot@2.1.3': 1346 | dependencies: 1347 | '@vitest/pretty-format': 2.1.3 1348 | magic-string: 0.30.12 1349 | pathe: 1.1.2 1350 | 1351 | '@vitest/spy@2.1.3': 1352 | dependencies: 1353 | tinyspy: 3.0.2 1354 | 1355 | '@vitest/utils@2.1.3': 1356 | dependencies: 1357 | '@vitest/pretty-format': 2.1.3 1358 | loupe: 3.1.2 1359 | tinyrainbow: 1.2.0 1360 | 1361 | acorn-typescript@1.4.13(acorn@8.13.0): 1362 | dependencies: 1363 | acorn: 8.13.0 1364 | 1365 | acorn@8.13.0: {} 1366 | 1367 | aria-query@5.3.2: {} 1368 | 1369 | assertion-error@2.0.1: {} 1370 | 1371 | axobject-query@4.1.0: {} 1372 | 1373 | balanced-match@1.0.2: {} 1374 | 1375 | brace-expansion@2.0.1: 1376 | dependencies: 1377 | balanced-match: 1.0.2 1378 | 1379 | braces@3.0.3: 1380 | dependencies: 1381 | fill-range: 7.1.1 1382 | 1383 | cac@6.7.14: {} 1384 | 1385 | ccount@2.0.1: {} 1386 | 1387 | chai@5.1.1: 1388 | dependencies: 1389 | assertion-error: 2.0.1 1390 | check-error: 2.1.1 1391 | deep-eql: 5.0.2 1392 | loupe: 3.1.2 1393 | pathval: 2.0.0 1394 | 1395 | character-entities-html4@2.1.0: {} 1396 | 1397 | character-entities-legacy@3.0.0: {} 1398 | 1399 | check-error@2.1.1: {} 1400 | 1401 | chokidar@4.0.1: 1402 | dependencies: 1403 | readdirp: 4.0.2 1404 | 1405 | comma-separated-tokens@2.0.3: {} 1406 | 1407 | cookie@0.6.0: {} 1408 | 1409 | debug@4.3.7: 1410 | dependencies: 1411 | ms: 2.1.3 1412 | 1413 | dedent-js@1.0.1: {} 1414 | 1415 | dedent@1.5.3: {} 1416 | 1417 | deep-eql@5.0.2: {} 1418 | 1419 | deepmerge@4.3.1: {} 1420 | 1421 | dequal@2.0.3: {} 1422 | 1423 | detect-libc@1.0.3: {} 1424 | 1425 | devalue@5.1.1: {} 1426 | 1427 | devlop@1.1.0: 1428 | dependencies: 1429 | dequal: 2.0.3 1430 | 1431 | entities@4.5.0: {} 1432 | 1433 | esbuild@0.21.5: 1434 | optionalDependencies: 1435 | '@esbuild/aix-ppc64': 0.21.5 1436 | '@esbuild/android-arm': 0.21.5 1437 | '@esbuild/android-arm64': 0.21.5 1438 | '@esbuild/android-x64': 0.21.5 1439 | '@esbuild/darwin-arm64': 0.21.5 1440 | '@esbuild/darwin-x64': 0.21.5 1441 | '@esbuild/freebsd-arm64': 0.21.5 1442 | '@esbuild/freebsd-x64': 0.21.5 1443 | '@esbuild/linux-arm': 0.21.5 1444 | '@esbuild/linux-arm64': 0.21.5 1445 | '@esbuild/linux-ia32': 0.21.5 1446 | '@esbuild/linux-loong64': 0.21.5 1447 | '@esbuild/linux-mips64el': 0.21.5 1448 | '@esbuild/linux-ppc64': 0.21.5 1449 | '@esbuild/linux-riscv64': 0.21.5 1450 | '@esbuild/linux-s390x': 0.21.5 1451 | '@esbuild/linux-x64': 0.21.5 1452 | '@esbuild/netbsd-x64': 0.21.5 1453 | '@esbuild/openbsd-x64': 0.21.5 1454 | '@esbuild/sunos-x64': 0.21.5 1455 | '@esbuild/win32-arm64': 0.21.5 1456 | '@esbuild/win32-ia32': 0.21.5 1457 | '@esbuild/win32-x64': 0.21.5 1458 | 1459 | esm-env@1.0.0: {} 1460 | 1461 | esrap@1.2.2: 1462 | dependencies: 1463 | '@jridgewell/sourcemap-codec': 1.5.0 1464 | '@types/estree': 1.0.6 1465 | 1466 | estree-walker@3.0.3: 1467 | dependencies: 1468 | '@types/estree': 1.0.6 1469 | 1470 | fill-range@7.1.1: 1471 | dependencies: 1472 | to-regex-range: 5.0.1 1473 | 1474 | fs.realpath@1.0.0: {} 1475 | 1476 | fsevents@2.3.3: 1477 | optional: true 1478 | 1479 | ghostsui@2.0.0-beta.1: {} 1480 | 1481 | glob@8.1.0: 1482 | dependencies: 1483 | fs.realpath: 1.0.0 1484 | inflight: 1.0.6 1485 | inherits: 2.0.4 1486 | minimatch: 5.1.6 1487 | once: 1.4.0 1488 | 1489 | globalyzer@0.1.0: {} 1490 | 1491 | globrex@0.1.2: {} 1492 | 1493 | happy-dom@15.7.4: 1494 | dependencies: 1495 | entities: 4.5.0 1496 | webidl-conversions: 7.0.0 1497 | whatwg-mimetype: 3.0.0 1498 | 1499 | hast-util-to-html@9.0.3: 1500 | dependencies: 1501 | '@types/hast': 3.0.4 1502 | '@types/unist': 3.0.3 1503 | ccount: 2.0.1 1504 | comma-separated-tokens: 2.0.3 1505 | hast-util-whitespace: 3.0.0 1506 | html-void-elements: 3.0.0 1507 | mdast-util-to-hast: 13.2.0 1508 | property-information: 6.5.0 1509 | space-separated-tokens: 2.0.2 1510 | stringify-entities: 4.0.4 1511 | zwitch: 2.0.4 1512 | 1513 | hast-util-whitespace@3.0.0: 1514 | dependencies: 1515 | '@types/hast': 3.0.4 1516 | 1517 | html-void-elements@3.0.0: {} 1518 | 1519 | ignore-walk@5.0.1: 1520 | dependencies: 1521 | minimatch: 5.1.6 1522 | 1523 | immutable@4.3.7: {} 1524 | 1525 | import-meta-resolve@4.1.0: {} 1526 | 1527 | inflight@1.0.6: 1528 | dependencies: 1529 | once: 1.4.0 1530 | wrappy: 1.0.2 1531 | 1532 | inherits@2.0.4: {} 1533 | 1534 | is-extglob@2.1.1: {} 1535 | 1536 | is-glob@4.0.3: 1537 | dependencies: 1538 | is-extglob: 2.1.1 1539 | 1540 | is-number@7.0.0: {} 1541 | 1542 | is-reference@3.0.2: 1543 | dependencies: 1544 | '@types/estree': 1.0.6 1545 | 1546 | kleur@4.1.5: {} 1547 | 1548 | locate-character@3.0.0: {} 1549 | 1550 | loupe@3.1.2: {} 1551 | 1552 | lower-case@2.0.2: 1553 | dependencies: 1554 | tslib: 2.8.0 1555 | 1556 | magic-string@0.30.12: 1557 | dependencies: 1558 | '@jridgewell/sourcemap-codec': 1.5.0 1559 | 1560 | mdast-util-to-hast@13.2.0: 1561 | dependencies: 1562 | '@types/hast': 3.0.4 1563 | '@types/mdast': 4.0.4 1564 | '@ungap/structured-clone': 1.2.0 1565 | devlop: 1.1.0 1566 | micromark-util-sanitize-uri: 2.0.0 1567 | trim-lines: 3.0.1 1568 | unist-util-position: 5.0.0 1569 | unist-util-visit: 5.0.0 1570 | vfile: 6.0.3 1571 | 1572 | micromark-util-character@2.1.0: 1573 | dependencies: 1574 | micromark-util-symbol: 2.0.0 1575 | micromark-util-types: 2.0.0 1576 | 1577 | micromark-util-encode@2.0.0: {} 1578 | 1579 | micromark-util-sanitize-uri@2.0.0: 1580 | dependencies: 1581 | micromark-util-character: 2.1.0 1582 | micromark-util-encode: 2.0.0 1583 | micromark-util-symbol: 2.0.0 1584 | 1585 | micromark-util-symbol@2.0.0: {} 1586 | 1587 | micromark-util-types@2.0.0: {} 1588 | 1589 | micromatch@4.0.8: 1590 | dependencies: 1591 | braces: 3.0.3 1592 | picomatch: 2.3.1 1593 | 1594 | minimatch@5.1.6: 1595 | dependencies: 1596 | brace-expansion: 2.0.1 1597 | 1598 | mri@1.2.0: {} 1599 | 1600 | mrmime@2.0.0: {} 1601 | 1602 | ms@2.1.3: {} 1603 | 1604 | nanoid@3.3.7: {} 1605 | 1606 | no-case@3.0.4: 1607 | dependencies: 1608 | lower-case: 2.0.2 1609 | tslib: 2.8.0 1610 | 1611 | node-addon-api@7.1.1: {} 1612 | 1613 | npm-bundled@2.0.1: 1614 | dependencies: 1615 | npm-normalize-package-bin: 2.0.0 1616 | 1617 | npm-normalize-package-bin@2.0.0: {} 1618 | 1619 | npm-packlist@5.1.3: 1620 | dependencies: 1621 | glob: 8.1.0 1622 | ignore-walk: 5.0.1 1623 | npm-bundled: 2.0.1 1624 | npm-normalize-package-bin: 2.0.0 1625 | 1626 | once@1.4.0: 1627 | dependencies: 1628 | wrappy: 1.0.2 1629 | 1630 | oniguruma-to-js@0.4.3: 1631 | dependencies: 1632 | regex: 4.3.3 1633 | 1634 | pascal-case@3.1.2: 1635 | dependencies: 1636 | no-case: 3.0.4 1637 | tslib: 2.8.0 1638 | 1639 | pathe@1.1.2: {} 1640 | 1641 | pathval@2.0.0: {} 1642 | 1643 | picocolors@1.1.1: {} 1644 | 1645 | picomatch@2.3.1: {} 1646 | 1647 | postcss@8.4.47: 1648 | dependencies: 1649 | nanoid: 3.3.7 1650 | picocolors: 1.1.1 1651 | source-map-js: 1.2.1 1652 | 1653 | prettier-plugin-svelte@3.2.7(prettier@3.3.3)(svelte@5.0.2): 1654 | dependencies: 1655 | prettier: 3.3.3 1656 | svelte: 5.0.2 1657 | 1658 | prettier@3.3.3: {} 1659 | 1660 | property-information@6.5.0: {} 1661 | 1662 | publint@0.2.11: 1663 | dependencies: 1664 | npm-packlist: 5.1.3 1665 | picocolors: 1.1.1 1666 | sade: 1.8.1 1667 | 1668 | readdirp@4.0.2: {} 1669 | 1670 | regex@4.3.3: {} 1671 | 1672 | rollup@4.24.0: 1673 | dependencies: 1674 | '@types/estree': 1.0.6 1675 | optionalDependencies: 1676 | '@rollup/rollup-android-arm-eabi': 4.24.0 1677 | '@rollup/rollup-android-arm64': 4.24.0 1678 | '@rollup/rollup-darwin-arm64': 4.24.0 1679 | '@rollup/rollup-darwin-x64': 4.24.0 1680 | '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 1681 | '@rollup/rollup-linux-arm-musleabihf': 4.24.0 1682 | '@rollup/rollup-linux-arm64-gnu': 4.24.0 1683 | '@rollup/rollup-linux-arm64-musl': 4.24.0 1684 | '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 1685 | '@rollup/rollup-linux-riscv64-gnu': 4.24.0 1686 | '@rollup/rollup-linux-s390x-gnu': 4.24.0 1687 | '@rollup/rollup-linux-x64-gnu': 4.24.0 1688 | '@rollup/rollup-linux-x64-musl': 4.24.0 1689 | '@rollup/rollup-win32-arm64-msvc': 4.24.0 1690 | '@rollup/rollup-win32-ia32-msvc': 4.24.0 1691 | '@rollup/rollup-win32-x64-msvc': 4.24.0 1692 | fsevents: 2.3.3 1693 | 1694 | runed@0.15.3(svelte@5.0.2): 1695 | dependencies: 1696 | esm-env: 1.0.0 1697 | svelte: 5.0.2 1698 | 1699 | sade@1.8.1: 1700 | dependencies: 1701 | mri: 1.2.0 1702 | 1703 | sass@1.80.3: 1704 | dependencies: 1705 | '@parcel/watcher': 2.4.1 1706 | chokidar: 4.0.1 1707 | immutable: 4.3.7 1708 | source-map-js: 1.2.1 1709 | 1710 | semver@7.6.3: {} 1711 | 1712 | set-cookie-parser@2.7.0: {} 1713 | 1714 | shiki@1.22.0: 1715 | dependencies: 1716 | '@shikijs/core': 1.22.0 1717 | '@shikijs/engine-javascript': 1.22.0 1718 | '@shikijs/engine-oniguruma': 1.22.0 1719 | '@shikijs/types': 1.22.0 1720 | '@shikijs/vscode-textmate': 9.3.0 1721 | '@types/hast': 3.0.4 1722 | 1723 | siginfo@2.0.0: {} 1724 | 1725 | sirv@3.0.0: 1726 | dependencies: 1727 | '@polka/url': 1.0.0-next.28 1728 | mrmime: 2.0.0 1729 | totalist: 3.0.1 1730 | 1731 | source-map-js@1.2.1: {} 1732 | 1733 | space-separated-tokens@2.0.2: {} 1734 | 1735 | stackback@0.0.2: {} 1736 | 1737 | std-env@3.7.0: {} 1738 | 1739 | stringify-entities@4.0.4: 1740 | dependencies: 1741 | character-entities-html4: 2.1.0 1742 | character-entities-legacy: 3.0.0 1743 | 1744 | svelte2tsx@0.7.22(svelte@5.0.2)(typescript@5.6.3): 1745 | dependencies: 1746 | dedent-js: 1.0.1 1747 | pascal-case: 3.1.2 1748 | svelte: 5.0.2 1749 | typescript: 5.6.3 1750 | 1751 | svelte@5.0.2: 1752 | dependencies: 1753 | '@ampproject/remapping': 2.3.0 1754 | '@jridgewell/sourcemap-codec': 1.5.0 1755 | '@types/estree': 1.0.6 1756 | acorn: 8.13.0 1757 | acorn-typescript: 1.4.13(acorn@8.13.0) 1758 | aria-query: 5.3.2 1759 | axobject-query: 4.1.0 1760 | esm-env: 1.0.0 1761 | esrap: 1.2.2 1762 | is-reference: 3.0.2 1763 | locate-character: 3.0.0 1764 | magic-string: 0.30.12 1765 | zimmerframe: 1.1.2 1766 | 1767 | tiny-glob@0.2.9: 1768 | dependencies: 1769 | globalyzer: 0.1.0 1770 | globrex: 0.1.2 1771 | 1772 | tinybench@2.9.0: {} 1773 | 1774 | tinyexec@0.3.1: {} 1775 | 1776 | tinypool@1.0.1: {} 1777 | 1778 | tinyrainbow@1.2.0: {} 1779 | 1780 | tinyspy@3.0.2: {} 1781 | 1782 | to-regex-range@5.0.1: 1783 | dependencies: 1784 | is-number: 7.0.0 1785 | 1786 | totalist@3.0.1: {} 1787 | 1788 | trim-lines@3.0.1: {} 1789 | 1790 | tslib@2.8.0: {} 1791 | 1792 | typescript@5.6.3: {} 1793 | 1794 | unist-util-is@6.0.0: 1795 | dependencies: 1796 | '@types/unist': 3.0.3 1797 | 1798 | unist-util-position@5.0.0: 1799 | dependencies: 1800 | '@types/unist': 3.0.3 1801 | 1802 | unist-util-stringify-position@4.0.0: 1803 | dependencies: 1804 | '@types/unist': 3.0.3 1805 | 1806 | unist-util-visit-parents@6.0.1: 1807 | dependencies: 1808 | '@types/unist': 3.0.3 1809 | unist-util-is: 6.0.0 1810 | 1811 | unist-util-visit@5.0.0: 1812 | dependencies: 1813 | '@types/unist': 3.0.3 1814 | unist-util-is: 6.0.0 1815 | unist-util-visit-parents: 6.0.1 1816 | 1817 | vfile-message@4.0.2: 1818 | dependencies: 1819 | '@types/unist': 3.0.3 1820 | unist-util-stringify-position: 4.0.0 1821 | 1822 | vfile@6.0.3: 1823 | dependencies: 1824 | '@types/unist': 3.0.3 1825 | vfile-message: 4.0.2 1826 | 1827 | vite-node@2.1.3(sass@1.80.3): 1828 | dependencies: 1829 | cac: 6.7.14 1830 | debug: 4.3.7 1831 | pathe: 1.1.2 1832 | vite: 5.4.9(sass@1.80.3) 1833 | transitivePeerDependencies: 1834 | - '@types/node' 1835 | - less 1836 | - lightningcss 1837 | - sass 1838 | - sass-embedded 1839 | - stylus 1840 | - sugarss 1841 | - supports-color 1842 | - terser 1843 | 1844 | vite@5.4.9(sass@1.80.3): 1845 | dependencies: 1846 | esbuild: 0.21.5 1847 | postcss: 8.4.47 1848 | rollup: 4.24.0 1849 | optionalDependencies: 1850 | fsevents: 2.3.3 1851 | sass: 1.80.3 1852 | 1853 | vitefu@1.0.3(vite@5.4.9(sass@1.80.3)): 1854 | optionalDependencies: 1855 | vite: 5.4.9(sass@1.80.3) 1856 | 1857 | vitest@2.1.3(happy-dom@15.7.4)(sass@1.80.3): 1858 | dependencies: 1859 | '@vitest/expect': 2.1.3 1860 | '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.9(sass@1.80.3)) 1861 | '@vitest/pretty-format': 2.1.3 1862 | '@vitest/runner': 2.1.3 1863 | '@vitest/snapshot': 2.1.3 1864 | '@vitest/spy': 2.1.3 1865 | '@vitest/utils': 2.1.3 1866 | chai: 5.1.1 1867 | debug: 4.3.7 1868 | magic-string: 0.30.12 1869 | pathe: 1.1.2 1870 | std-env: 3.7.0 1871 | tinybench: 2.9.0 1872 | tinyexec: 0.3.1 1873 | tinypool: 1.0.1 1874 | tinyrainbow: 1.2.0 1875 | vite: 5.4.9(sass@1.80.3) 1876 | vite-node: 2.1.3(sass@1.80.3) 1877 | why-is-node-running: 2.3.0 1878 | optionalDependencies: 1879 | happy-dom: 15.7.4 1880 | transitivePeerDependencies: 1881 | - less 1882 | - lightningcss 1883 | - msw 1884 | - sass 1885 | - sass-embedded 1886 | - stylus 1887 | - sugarss 1888 | - supports-color 1889 | - terser 1890 | 1891 | webidl-conversions@7.0.0: {} 1892 | 1893 | whatwg-mimetype@3.0.0: {} 1894 | 1895 | why-is-node-running@2.3.0: 1896 | dependencies: 1897 | siginfo: 2.0.0 1898 | stackback: 0.0.2 1899 | 1900 | wrappy@1.0.2: {} 1901 | 1902 | zimmerframe@1.1.2: {} 1903 | 1904 | zwitch@2.0.4: {} 1905 | --------------------------------------------------------------------------------